@praxisui/tabs 8.0.0-beta.2 → 8.0.0-beta.21

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.
@@ -0,0 +1,491 @@
1
+ ---
2
+ title: "tabs-quick-setup JSON API (Canonical)"
3
+ slug: "tabs-quick-setup-json-api"
4
+ doc_type: "api-reference"
5
+ component: "tabs-quick-setup"
6
+ document_kind: "json-api-canonical"
7
+ reference_mode: "canonical"
8
+ contract_format: "json"
9
+ contract_source: "runtime-and-code"
10
+ description: "Referencia canonica do contrato JSON do componente tabs-quick-setup."
11
+ category: "components"
12
+ sub_category: "tabs"
13
+ audience:
14
+ - "frontend"
15
+ - "architect"
16
+ - "platform-team"
17
+ level: "advanced"
18
+ status: "active"
19
+ owner: "praxis-ui"
20
+ source_of_truth:
21
+ - "projects/praxis-tabs/src/lib/quick-setup/tabs-quick-setup.component.ts"
22
+ - "projects/praxis-tabs/src/lib/praxis-tabs.ts"
23
+ source_of_truth_last_verified: "2026-03-05"
24
+ last_updated: "2026-03-05"
25
+ toc: true
26
+ sidebar: true
27
+ tags:
28
+ - "json-api"
29
+ - "canonical-contract"
30
+ - "tabs-quick-setup"
31
+ api_stability: "canonical"
32
+ schema_verified: true
33
+ runtime_verified: false
34
+ editor_coverage_verified: false
35
+ runtime_scope: "public"
36
+ legacy_paths_present: false
37
+ has_known_mismatches: true
38
+ related_components: []
39
+ ---
40
+
41
+ # tabs-quick-setup
42
+
43
+ Este documento e a referencia canonica da API JSON de tabs-quick-setup.
44
+
45
+ ## Summary
46
+
47
+ - Tipo documental: API reference canonica de contrato JSON.
48
+ - Source of truth: runtime e codigo declarados no frontmatter.
49
+ - Objetivo operacional: consulta rapida, auditavel e deterministica sob pressao.
50
+ - Resumo funcional herdado: `tabs-quick-setup` e o acelerador de bootstrap do `praxis-tabs`: ele gera um contrato inicial valido em segundos para `group mode` ou `nav mode`. Nao substitui o editor completo; ele reduz tempo de partida com um payload limpo e previsivel.
51
+
52
+ ## Scope and positioning
53
+
54
+ - Escopo: contrato JSON publico e limites de comportamento observavel.
55
+ - Fora de escopo: tutorial de adocao e walkthrough operacional detalhado.
56
+ - Posicionamento: referencia canonicamente governada para consumidores, arquitetos e mantenedores.
57
+
58
+ ## Source of truth
59
+
60
+ | Source | Kind | Notes |
61
+ | --- | --- | --- |
62
+ | projects/praxis-tabs/src/lib/quick-setup/tabs-quick-setup.component.ts | runtime-code | Source de implementacao declarado no repositorio. |
63
+ | projects/praxis-tabs/src/lib/praxis-tabs.ts | runtime-code | Source de implementacao declarado no repositorio. |
64
+
65
+ ## Support legend
66
+
67
+ - Active: suportado e observado no runtime atual.
68
+ - Partial: suporte parcial, com restricoes conhecidas.
69
+ - Declared-only: declarado em tipos/schema sem ligacao runtime confirmada.
70
+ - Schema-only: presente em schema/modelo sem confirmacao de execucao.
71
+ - Deprecated: mantido por compatibilidade legada com migracao prevista.
72
+
73
+ ## Contract classification
74
+
75
+ ### Canonical paths (public contract)
76
+
77
+ | Path | Type | Required | Default | Status | Notes |
78
+ | --- | --- | --- | --- | --- | --- |
79
+ | `group mode` | not-specified | not-specified | n/a | Active | Preservado da documentação anterior. |
80
+ | `nav mode` | not-specified | not-specified | n/a | Active | Preservado da documentação anterior. |
81
+ | `tabs[].id/textLabel` | not-specified | not-specified | n/a | Active | Preservado da documentação anterior. |
82
+ | `nav.links[].id/label` | not-specified | not-specified | n/a | Active | Preservado da documentação anterior. |
83
+ | `behavior.*` | not-specified | not-specified | n/a | Partial | Preservado da documentação anterior. |
84
+ | `appearance.*` | not-specified | not-specified | n/a | Partial | Preservado da documentação anterior. |
85
+ | `widgets/content` | not-specified | not-specified | n/a | Partial | Preservado da documentação anterior. |
86
+ | `events/accessibility/meta` | not-specified | not-specified | n/a | Partial | Preservado da documentação anterior. |
87
+
88
+ ### Supported legacy paths
89
+
90
+ Nenhum path legado suportado foi identificado nesta revisão baseada em evidência textual preservada.
91
+
92
+ ### Internal-only paths
93
+
94
+ | Path | Internal consumer | Runtime presence | Public support | Notes |
95
+ | --- | --- | --- | --- | --- |
96
+ | not-yet-mapped | not-yet-verified | not-yet-verified | No | Caminhos internos nao mapeados explicitamente nesta revisao automatizada. |
97
+
98
+ ### Experimental paths
99
+
100
+ | Path | Enablement (flag/guard) | Stability | Rollout notes | Notes |
101
+ | --- | --- | --- | --- | --- |
102
+ | not-yet-mapped | not-yet-verified | Experimental | not-yet-verified | Registrar somente quando houver evidencia em runtime/codigo. |
103
+
104
+ ## Overview
105
+
106
+ Este arquivo foi adaptado para o padrao canonico atual sem remover conteudo tecnico existente. O conteudo detalhado anterior foi preservado para manter rastreabilidade historica e reduzir perda de contexto.
107
+
108
+ ## Public contract surface
109
+
110
+ ### Top-level configuration blocks
111
+
112
+ | Block | Purpose | Required | Merge strategy | Notes |
113
+ | --- | --- | --- | --- | --- |
114
+ | tabs[] | Configuração top-level identificada na referência preservada. | not-yet-verified | component-defined | 1 path(s) mapeado(s), status predominante Active. |
115
+ | nav | Configuração top-level identificada na referência preservada. | not-yet-verified | component-defined | 1 path(s) mapeado(s), status predominante Active. |
116
+ | behavior | Configuração top-level identificada na referência preservada. | not-yet-verified | component-defined | 1 path(s) mapeado(s), status predominante Partial. |
117
+ | appearance | Configuração top-level identificada na referência preservada. | not-yet-verified | component-defined | 1 path(s) mapeado(s), status predominante Partial. |
118
+ | widgets/content | Configuração top-level identificada na referência preservada. | not-yet-verified | component-defined | 1 path(s) mapeado(s), status predominante Partial. |
119
+ | events/accessibility/meta | Configuração top-level identificada na referência preservada. | not-yet-verified | component-defined | 1 path(s) mapeado(s), status predominante Partial. |
120
+
121
+ ### Nested configuration blocks
122
+
123
+ | Path | Type | Required | Default | Constraints | Notes |
124
+ | --- | --- | --- | --- | --- | --- |
125
+ | `group mode` | not-specified | not-specified | n/a | component-defined | Preservado da documentação anterior. |
126
+ | `nav mode` | not-specified | not-specified | n/a | component-defined | Preservado da documentação anterior. |
127
+ | `tabs[].id/textLabel` | not-specified | not-specified | n/a | component-defined | Preservado da documentação anterior. |
128
+ | `nav.links[].id/label` | not-specified | not-specified | n/a | component-defined | Preservado da documentação anterior. |
129
+ | `behavior.*` | not-specified | not-specified | n/a | component-defined | Preservado da documentação anterior. |
130
+ | `appearance.*` | not-specified | not-specified | n/a | component-defined | Preservado da documentação anterior. |
131
+ | `widgets/content` | not-specified | not-specified | n/a | component-defined | Preservado da documentação anterior. |
132
+ | `events/accessibility/meta` | not-specified | not-specified | n/a | component-defined | Preservado da documentação anterior. |
133
+
134
+ ### Input bindings
135
+
136
+ | Binding/Path | Type | Required | Source | Runtime normalization | Notes |
137
+ | --- | --- | --- | --- | --- | --- |
138
+ | `config` | `TabsMetadata` | opcional | component-input | not-yet-verified | Preservado da documentação anterior. |
139
+
140
+ ### Output events
141
+
142
+ | Event | Payload | Trigger | Stability | Notes |
143
+ | --- | --- | --- | --- | --- |
144
+ | component-outputs | see-detailed-api | runtime-event | Partial | Eventos preservados na referência detalhada. |
145
+
146
+ ### External side channels
147
+
148
+ | Channel | Direction | Contract | Failure mode | Notes |
149
+ | --- | --- | --- | --- | --- |
150
+ | host/services/storage | bidirectional | see-detailed-api | not-yet-verified | Side channels dependem do componente e do host consumidor. |
151
+
152
+ ### Host/runtime dependencies
153
+
154
+ | Dependency | Required | Environment | Purpose | Notes |
155
+ | --- | --- | --- | --- | --- |
156
+ | see-source-of-truth | true | browser/dev/prod/ssr | runtime linkage | Confirmar por componente quando necessario. |
157
+
158
+ ## Coverage matrix
159
+
160
+ | Surface | Verified | Coverage status | Evidence | Notes |
161
+ | --- | --- | --- | --- | --- |
162
+ | Runtime | false | Partial | source_of_truth + conteudo preservado | Revisao estrutural concluida; validacao comportamental fina pode exigir follow-up. |
163
+ | Schema/Types | true | Partial | interfaces/modelos citados | Mapeamento formal de todos os campos ainda pode requerer refinamento. |
164
+ | Editor/Tooling | false | Partial | secoes de editor quando presentes | Cobertura de editor/tooling nem sempre confirmada por evidencia direta. |
165
+
166
+ ## Runtime coverage boundaries
167
+
168
+ - Cobertura consolidada com base em documentacao existente e source of truth declarado.
169
+ - Comportamentos fora de evidencia direta foram marcados como not-yet-verified ou Partial.
170
+ - Compatibilidade legada, quando detectada, foi separada em classificacao explicita.
171
+
172
+ ## Resolution model
173
+
174
+ ### Merge order
175
+
176
+ 1. defaults do componente
177
+ 2. contrato JSON recebido
178
+ 3. overrides de host/runtime
179
+ 4. normalizacoes internas
180
+
181
+ ### Fallback order
182
+
183
+ contrato explicito -> aliases legados (quando suportados) -> defaults internos -> comportamento seguro
184
+
185
+ ### Override points
186
+
187
+ - inputs publicos do componente
188
+ - configuracao JSON de runtime
189
+ - integracoes de host (servicos/tokens/adapters)
190
+
191
+ ### Runtime normalization
192
+
193
+ Campos e aliases preservados do documento anterior devem convergir progressivamente para paths canonicos declarados.
194
+
195
+ ### Precedence rules
196
+
197
+ Quando houver conflito entre alias e path canonico, priorizar path canonico e manter alias apenas para backward compatibility.
198
+
199
+ ## Validation and error semantics
200
+
201
+ ### Validation model
202
+
203
+ | Path/Rule | Validation phase | Behavior on fail | Error code / warning | Notes |
204
+ | --- | --- | --- | --- | --- |
205
+ | see-detailed-api | runtime | warn-or-reject | not-yet-standardized | Semantica de validacao preservada do documento anterior. |
206
+
207
+ ### Error semantics
208
+
209
+ Erros devem ser classificados em warnings recuperaveis versus falhas bloqueantes. Quando a evidencia nao estiver explicita, tratar como not yet verified.
210
+
211
+ ### Fail-open / fail-closed behavior
212
+
213
+ | Condition | Mode | Runtime behavior | Consumer impact |
214
+ | --- | --- | --- | --- |
215
+ | invalid-or-unknown-field | component-defined | not-yet-verified | Variavel por componente; requer verificacao em runtime. |
216
+
217
+ ### Invalid or unknown field handling
218
+
219
+ - Campos desconhecidos: comportamento depende da estrategia do componente (ignore, warn ou reject).
220
+ - Campos invalidos: podem gerar fallback, warning ou falha conforme implementacao.
221
+ - Registrar divergencias observadas em Known limitations and mismatches.
222
+
223
+ ### Runtime warnings vs hard failures
224
+
225
+ | Condition | Severity | Observability | Consumer action |
226
+ | --- | --- | --- | --- |
227
+ | partial-or-declared-only-coverage | warning | logs/eventos do componente | confirmar ligacao runtime antes de uso critico |
228
+
229
+ ## Detailed API
230
+
231
+ ### Preserved technical reference (normalized from previous revision)
232
+
233
+ `tabs-quick-setup` e o acelerador de bootstrap do `praxis-tabs`: ele gera um contrato inicial valido em segundos para `group mode` ou `nav mode`. Nao substitui o editor completo; ele reduz tempo de partida com um payload limpo e previsivel.
234
+
235
+ ### Prova em 20 segundos
236
+
237
+ Defina modo e labels e gere automaticamente a base de configuracao:
238
+
239
+ ```json
240
+ {
241
+ "mode": "group",
242
+ "labels": ["Dados Gerais", "Historico"],
243
+ "dynamicHeight": true,
244
+ "stretchTabs": true
245
+ }
246
+ ```
247
+
248
+ Saida gerada pelo quick setup:
249
+
250
+ ```json
251
+ {
252
+ "config": {
253
+ "group": {
254
+ "dynamicHeight": true,
255
+ "stretchTabs": true,
256
+ "selectedIndex": 0
257
+ },
258
+ "tabs": [
259
+ { "id": "tab1", "textLabel": "Dados Gerais" },
260
+ { "id": "tab2", "textLabel": "Historico" }
261
+ ]
262
+ }
263
+ }
264
+ ```
265
+
266
+ ### Table of contents
267
+
268
+ - [Start here](#start-here)
269
+ - [Promessa e limites](#promessa-e-limites)
270
+ - [Status model](#status-model)
271
+ - [Checklist de uso rapido](#checklist-de-uso-rapido)
272
+ - [Guia operacional (produto)](#guia-operacional-produto)
273
+ - [Entrada e saida](#entrada-e-saida)
274
+ - [Fluxo operacional](#fluxo-operacional)
275
+ - [Regras de geracao](#regras-de-geracao)
276
+ - [Cobertura do contrato](#cobertura-do-contrato)
277
+ - [Contrato tecnico completo (referencia)](#contrato-tecnico-completo-referencia)
278
+ - [Modelo interno (`QuickSetupModel`)](#modelo-interno-quicksetupmodel)
279
+ - [Coverage matrix](#coverage-matrix)
280
+ - [Examples](#examples)
281
+ - [Known limitations and mismatches](#known-limitations-and-mismatches)
282
+ - [Source references](#source-references)
283
+
284
+ ### Start here
285
+
286
+ #### Promessa e limites
287
+
288
+ **O que isso habilita:** criacao imediata de estrutura de tabs com contrato valido para runtime.
289
+
290
+ **Quando usar:** no inicio de uma tela nova ou quando o usuario precisa sair do zero rapidamente.
291
+
292
+ **Exemplo minimo:** 2 labels + modo `group`.
293
+
294
+ Garantias (hoje):
295
+
296
+ - gera payload consistente no formato `{ config }`.
297
+ - normaliza labels (trim + descarte de vazios).
298
+ - define `selectedIndex=0` no modo escolhido.
299
+
300
+ Limites (hoje):
301
+
302
+ - nao gera `widgets`, `content`, `appearance` ou `behavior`.
303
+ - nao cobre ajustes finos de acessibilidade/eventos.
304
+ - nao valida colisoes avancadas de id apos merges externos.
305
+
306
+ #### Status model
307
+
308
+ Padrao oficial neste documento:
309
+
310
+ - `Status: Active` - comportamento efetivo do assistente.
311
+ - `Status: Stored-only` - dado existente no contrato, mas nao gerado aqui.
312
+ - `Status: Planned` - reservado para evolucao futura.
313
+
314
+ #### Checklist de uso rapido
315
+
316
+ - Escolha `mode` antes de cadastrar labels.
317
+ - Cadastre pelo menos 1 label valido.
318
+ - Use o output como base e refine no `praxis-tabs-config-editor`.
319
+ - Renomeie ids tecnicos (`tab1`, `link1`) quando houver regra de negocio.
320
+
321
+ ### Guia operacional (produto)
322
+
323
+ #### Entrada e saida
324
+
325
+ **O que isso habilita:** integracao objetiva com `SettingsPanelService`.
326
+
327
+ **Quando usar:** em fluxo de quick start com apply/save imediato.
328
+
329
+ **Exemplo minimo:** `content.component = TabsQuickSetupComponent`.
330
+
331
+ `Status: Active`.
332
+
333
+ ##### Entrada (`SETTINGS_PANEL_DATA`)
334
+
335
+ | Campo | Tipo | Required | Status | Observacao |
336
+ | --- | --- | --- | --- | --- |
337
+ | `config` | `TabsMetadata` | opcional | Active | seed para `mode`, labels e toggles |
338
+
339
+ ##### Saida (`SettingsValueProvider`)
340
+
341
+ | Superficie | Tipo | Status | Observacao |
342
+ | --- | --- | --- | --- |
343
+ | `isDirty$` | `BehaviorSubject<boolean>` | Active | compara model atual com snapshot inicial |
344
+ | `isValid$` | `BehaviorSubject<boolean>` | Active | true quando existe ao menos 1 label valido |
345
+ | `isBusy$` | `BehaviorSubject<boolean>` | Active | reservado para fluxo async |
346
+ | `getSettingsValue()` | `() => { config: TabsMetadata }` | Active | usado em `applied$` |
347
+ | `onSave()` | `() => { config: TabsMetadata }` | Active | usado em `saved$` |
348
+
349
+ #### Fluxo operacional
350
+
351
+ **O que isso habilita:** bootstrap com poucos passos e baixo risco.
352
+
353
+ **Quando usar:** para desbloquear rapidamente a primeira versao da tela.
354
+
355
+ **Exemplo minimo:** labels + toggles basicos + salvar.
356
+
357
+ `Status: Active`.
358
+
359
+ 1. Recebe seed opcional (`config`).
360
+ 2. Normaliza labels iniciais (trim e remove vazios).
361
+ 3. Permite editar `mode`, labels e toggles basicos.
362
+ 4. Valida formulario (`isValid$`).
363
+ 5. Retorna `{ config }` para apply/save.
364
+
365
+ #### Regras de geracao
366
+
367
+ **O que isso habilita:** previsibilidade de output entre squads e ambientes.
368
+
369
+ **Quando usar:** para padronizar bootstrap em produto enterprise.
370
+
371
+ **Exemplo minimo:** `mode='nav'` gera `nav.links[]` com ids tecnicos sequenciais.
372
+
373
+ `Status: Active`.
374
+
375
+ 1. `mode='group'`:
376
+ - gera `group.selectedIndex=0`
377
+ - respeita `dynamicHeight` e `stretchTabs`
378
+ - gera `tabs[]` por labels normalizados
379
+
380
+ 2. `mode='nav'`:
381
+ - gera `nav.selectedIndex=0`
382
+ - respeita `stretchTabs`
383
+ - gera `links[]` por labels normalizados
384
+
385
+ 3. IDs:
386
+ - `tab1..N` / `link1..N`
387
+ - host pode substituir por ids de negocio
388
+
389
+ 4. Validacao:
390
+ - labels invalidos nao entram no payload
391
+
392
+ #### Cobertura do contrato
393
+
394
+ **O que isso habilita:** entendimento rapido de ate onde vai o quick setup.
395
+
396
+ **Quando usar:** antes de prometer cobertura total do `TabsMetadata`.
397
+
398
+ **Exemplo minimo:** saber que `widgets` nao sao gerados aqui.
399
+
400
+ `Status: Partial`.
401
+
402
+ - Coberto: estrutura base de `group/tabs` ou `nav/links`.
403
+ - Nao coberto: `behavior`, `appearance`, `widgets`, `content`, `events`, `accessibility` avancada.
404
+
405
+ ### Contrato tecnico completo (referencia)
406
+
407
+ #### Modelo interno (`QuickSetupModel`)
408
+
409
+ ```ts
410
+ interface QuickSetupModel {
411
+ mode: 'group' | 'nav';
412
+ labels: string[];
413
+ dynamicHeight?: boolean;
414
+ stretchTabs?: boolean;
415
+ }
416
+ ```
417
+
418
+ #### Coverage matrix
419
+
420
+ | Geracao | Status | Regra |
421
+ | --- | --- | --- |
422
+ | `group mode` | Active | gera `group.selectedIndex=0`, `group.dynamicHeight`, `group.stretchTabs`, `tabs[]` |
423
+ | `nav mode` | Active | gera `nav.selectedIndex=0`, `nav.stretchTabs`, `links[]` |
424
+ | `tabs[].id/textLabel` | Active | ids sequenciais `tab1..N` |
425
+ | `nav.links[].id/label` | Active | ids sequenciais `link1..N` |
426
+ | `behavior.*` | Stored-only | quick setup nao gera esse bloco |
427
+ | `appearance.*` | Stored-only | quick setup nao gera esse bloco |
428
+ | `widgets/content` | Stored-only | quick setup nao gera widgets nem fields |
429
+ | `events/accessibility/meta` | Stored-only | nao gerados pelo assistente |
430
+
431
+ ### Examples
432
+
433
+ ### Minimal valid
434
+
435
+ ```json
436
+ {
437
+ "mode": "group",
438
+ "labels": ["Dados Gerais", "Historico"],
439
+ "dynamicHeight": true,
440
+ "stretchTabs": true
441
+ }
442
+ ```
443
+
444
+ ### Typical/common
445
+
446
+ ```json
447
+ {
448
+ "config": {
449
+ "group": {
450
+ "dynamicHeight": true,
451
+ "stretchTabs": true,
452
+ "selectedIndex": 0
453
+ },
454
+ "tabs": [
455
+ { "id": "tab1", "textLabel": "Dados Gerais" },
456
+ { "id": "tab2", "textLabel": "Historico" }
457
+ ]
458
+ }
459
+ }
460
+ ```
461
+
462
+ ### Advanced
463
+
464
+ ```json
465
+ {}
466
+ ```
467
+
468
+ ### Enterprise scenario
469
+
470
+ ```json
471
+ {}
472
+ ```
473
+
474
+ ## Known limitations and mismatches
475
+
476
+ | Path/Behavior | Observed behavior (runtime) | Desired behavior | Impact | Tracking issue | Target fix |
477
+ | --- | --- | --- | --- | --- | --- |
478
+ | coverage/mapping | Evidência textual preservada indica itens Partial/Declared-only. | Cobertura confirmada por evidência runtime + schema + editor. | Pode gerar uso de paths não totalmente ligados. | to-be-linked | next-doc-cycle |
479
+
480
+ ## Compatibility and migration notes
481
+
482
+ | Concern | Affected versions | Migration action | Deadline | Notes |
483
+ | --- | --- | --- | --- | --- |
484
+ | legacy aliases and mixed status vocabulary | pre-canonical docs | unificar para taxonomia canonica (Active/Partial/Declared-only/...) | next-doc-cycle | manter backward compatibility documentada |
485
+
486
+ ## Source references
487
+
488
+ | Source type | Path/URL | Why it is source of truth | Last verified (YYYY-MM-DD) | Notes |
489
+ | --- | --- | --- | --- | --- |
490
+ | local-file | projects/praxis-tabs/src/lib/quick-setup/tabs-quick-setup.component.ts | Evidencia de implementacao e contrato. | 2026-03-05 | referencia preservada da versao anterior |
491
+ | local-file | projects/praxis-tabs/src/lib/praxis-tabs.ts | Evidencia de implementacao e contrato. | 2026-03-05 | referencia preservada da versao anterior |