@praxisui/dynamic-fields 9.0.0-beta.4 → 9.0.0-beta.40

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 (22) hide show
  1. package/README.md +9 -1
  2. package/ai/component-registry.json +266480 -0
  3. package/docs/dynamic-fields-field-catalog.md +2 -3
  4. package/docs/dynamic-fields-field-selection-guide.md +27 -3
  5. package/docs/dynamic-fields-inline-components-guide.md +26 -6
  6. package/docs/dynamic-fields-inline-filter-runtime-contract.md +11 -0
  7. package/fesm2022/praxisui-dynamic-fields.mjs +1752 -573
  8. package/package.json +8 -4
  9. package/src/lib/base/pdx-base-input-runtime-contract.json-api.md +16 -0
  10. package/src/lib/components/field-shell/praxis-field-shell.json-api.md +33 -3
  11. package/src/lib/components/inline-color-label/pdx-inline-color-label.json-api.md +1 -1
  12. package/src/lib/components/inline-currency-range/pdx-inline-currency-range.json-api.md +49 -17
  13. package/src/lib/components/inline-date/pdx-inline-date.json-api.md +1 -1
  14. package/src/lib/components/inline-number/pdx-inline-number.json-api.md +1 -0
  15. package/src/lib/components/inline-range-slider/pdx-inline-range-slider.json-api.md +52 -13
  16. package/src/lib/components/inline-relative-period/pdx-inline-relative-period.json-api.md +103 -103
  17. package/src/lib/components/inline-sentiment/pdx-inline-sentiment.json-api.md +84 -84
  18. package/src/lib/components/inline-time-range/pdx-inline-time-range.json-api.md +2 -2
  19. package/src/lib/components/material-async-select/pdx-material-async-select.json-api.md +3 -2
  20. package/src/lib/components/material-checkbox-group/pdx-material-checkbox-group.json-api.md +5 -3
  21. package/src/lib/components/material-file-upload/pdx-material-file-upload.json-api.md +58 -27
  22. package/types/praxisui-dynamic-fields.d.ts +138 -8
@@ -7,7 +7,7 @@ document_kind: "json-api-canonical"
7
7
  reference_mode: "canonical"
8
8
  contract_format: "json"
9
9
  contract_source: "runtime-and-code"
10
- description: "Referencia canonica do contrato JSON do componente pdx-inline-sentiment."
10
+ description: "Referência canônica do contrato JSON do componente pdx-inline-sentiment."
11
11
  category: "components"
12
12
  sub_category: "dynamic-fields"
13
13
  audience:
@@ -44,60 +44,60 @@ related_components:
44
44
 
45
45
  # pdx-inline-sentiment
46
46
 
47
- Este documento e a referencia canonica da API JSON de pdx-inline-sentiment.
47
+ Este documento e a referência canônica da API JSON de pdx-inline-sentiment.
48
48
 
49
49
  ## Summary
50
50
 
51
- - Tipo documental: API reference canonica de contrato JSON.
51
+ - Tipo documental: API reference canônica de contrato JSON.
52
52
  - Source of truth: runtime e codigo declarados no frontmatter.
53
- - Objetivo operacional: consulta rapida, auditavel e deterministica sob pressao.
53
+ - Objetivo operacional: consulta rápida, auditável e determinística sob pressão.
54
54
  - Resumo funcional: Contrato JSON metadata-driven com comportamento definido por runtime e schema associado.
55
55
 
56
56
  ## Purpose and scope
57
57
 
58
- - O componente consome payload JSON metadata-driven e expoe comportamento runtime configuravel por contrato.
59
- - Esta referencia cobre contrato publico, classificacao de paths e semantica de cobertura (runtime/schema/editor).
60
- - Fora de escopo: quickstart, tutorial narrativo e notas arquiteturais que nao alteram contrato publico.
58
+ - O componente consome payload JSON metadata-driven e expõe comportamento runtime configurável por contrato.
59
+ - Esta referência cobre contrato público, classificação de paths e semântica de cobertura (runtime/schema/editor).
60
+ - Fora de escopo: quickstart, tutorial narrativo e notas arquiteturais que não alteram contrato público.
61
61
 
62
- ## Consulta rapida (obrigatorio)
62
+ ## Consulta rápida (obrigatorio)
63
63
 
64
64
  | Regra/tema | Observado | Canonico desejado | Status | Evidencia |
65
65
  | --- | --- | --- | --- | --- |
66
- | Component id | `pdx-inline-sentiment` | Manter ID canonico estavel e versionado por contrato | Active | frontmatter.component |
67
- | Primary contract source | `runtime-and-code` | Runtime, schema e docs devem permanecer rastreaveis | Partial | frontmatter.contract_source + source_of_truth |
68
- | Runtime coverage | `true` | Comportamentos runtime criticos devem ficar explicitamente verificados | Active | `projects/praxis-dynamic-fields/src/lib/components/inline-sentiment/inline-sentiment.component.ts`, `projects/praxis-dynamic-fields/src/lib/base/simple-base-select.component.ts` |
69
- | Schema/type coverage | `true` | Tipos e schema devem refletir paths publicos do contrato | Active | source_of_truth + Detailed API reference |
70
- | Editor/tooling coverage | `false` | Editor/tooling deve espelhar somente contrato publico suportado | Partial | `projects/praxis-core/src/lib/utils/inline-filter-controls.util.ts`, `projects/praxis-dynamic-fields/src/lib/services/component-registry/component-registry.service.ts` |
71
- | Path hygiene | `false` | Manter consistencia entre contrato canonico e caminhos documentados | Active | frontmatter.legacy_paths_present |
72
- | Known mismatches | `false` | Registrar observed vs desired de forma auditavel | Active | frontmatter.has_known_mismatches |
66
+ | Component id | `pdx-inline-sentiment` | Manter ID canônico estável e versionado por contrato | Active | frontmatter.component |
67
+ | Primary contract source | `runtime-and-code` | Runtime, schema e docs devem permanecer rastreáveis | Partial | frontmatter.contract_source + source_of_truth |
68
+ | Runtime coverage | `true` | Comportamentos runtime críticos devem ficar explicitamente verificados | Active | `projects/praxis-dynamic-fields/src/lib/components/inline-sentiment/inline-sentiment.component.ts`, `projects/praxis-dynamic-fields/src/lib/base/simple-base-select.component.ts` |
69
+ | Schema/type coverage | `true` | Tipos e schema devem refletir paths públicos do contrato | Active | source_of_truth + Detailed API reference |
70
+ | Editor/tooling coverage | `false` | Editor/tooling deve espelhar somente contrato público suportado | Partial | `projects/praxis-core/src/lib/utils/inline-filter-controls.util.ts`, `projects/praxis-dynamic-fields/src/lib/services/component-registry/component-registry.service.ts` |
71
+ | Path hygiene | `false` | Manter consistência entre contrato canônico e caminhos documentados | Active | frontmatter.legacy_paths_present |
72
+ | Known mismatches | `false` | Registrar observed vs desired de forma auditável | Active | frontmatter.has_known_mismatches |
73
73
 
74
74
  ## Source of truth
75
75
 
76
76
  | Source | Kind | Notes |
77
77
  | --- | --- | --- |
78
- | projects/praxis-dynamic-fields/src/lib/components/inline-sentiment/inline-sentiment.component.ts | runtime-code | Arquivo presente no repositorio e usado como evidencia de contrato. |
79
- | projects/praxis-dynamic-fields/src/lib/base/simple-base-select.component.ts | runtime-code | Arquivo presente no repositorio e usado como evidencia de contrato. |
80
- | projects/praxis-core/src/lib/models/material-field-metadata.interface.ts | schema-types | Arquivo presente no repositorio e usado como evidencia de contrato. |
78
+ | projects/praxis-dynamic-fields/src/lib/components/inline-sentiment/inline-sentiment.component.ts | runtime-code | Arquivo presente no repositorio e usado como evidência de contrato. |
79
+ | projects/praxis-dynamic-fields/src/lib/base/simple-base-select.component.ts | runtime-code | Arquivo presente no repositorio e usado como evidência de contrato. |
80
+ | projects/praxis-core/src/lib/models/material-field-metadata.interface.ts | schema-types | Arquivo presente no repositorio e usado como evidência de contrato. |
81
81
 
82
82
  ## Support legend
83
83
 
84
84
  - **Active**: suportado em runtime e liberado para uso externo.
85
- - **Partial**: suporte parcial, com restricoes, lacunas ou validacao incompleta.
86
- - **Declared-only**: declarado em tipos/schema sem evidencia operacional completa.
85
+ - **Partial**: suporte parcial, com restricoes, lacunas ou validação incompleta.
86
+ - **Declared-only**: declarado em tipos/schema sem evidência operacional completa.
87
87
  - **Schema-only**: presente em schema/tipos sem cobertura runtime confirmada.
88
88
 
89
89
  ## Contract status snapshot
90
90
 
91
91
  | Item | Value | Notes |
92
92
  | --- | --- | --- |
93
- | Reference mode | `canonical` | Deve permanecer canonico |
93
+ | Reference mode | `canonical` | Deve permanecer canônico |
94
94
  | Contract format | `json` | Contrato metadata-driven |
95
95
  | Contract source | `runtime-and-code` | Alinhar com source_of_truth |
96
96
  | Runtime scope | `public` | Escopo publicado para consumidores |
97
- | Runtime verified | `true` | Revisar sempre com evidencia de runtime |
98
- | Schema verified | `true` | Revisar sempre com evidencia de tipos/schema |
99
- | Editor coverage verified | `false` | Revisar sempre com evidencia de editor/tooling |
100
- | Current path hygiene | `false` | Segregar consistencia do contrato canonico |
97
+ | Runtime verified | `true` | Revisar sempre com evidência de runtime |
98
+ | Schema verified | `true` | Revisar sempre com evidência de tipos/schema |
99
+ | Editor coverage verified | `false` | Revisar sempre com evidência de editor/tooling |
100
+ | Current path hygiene | `false` | Segregar consistência do contrato canônico |
101
101
  | Has known mismatches | `false` | Divergencias devem aparecer em secao dedicada |
102
102
 
103
103
  ## Contract classification (obrigatorio)
@@ -117,15 +117,15 @@ Este documento e a referencia canonica da API JSON de pdx-inline-sentiment.
117
117
 
118
118
  ### Path audit
119
119
 
120
- Nenhum desvio de caminho foi identificado nesta revisao.
120
+ Nenhum desvio de caminho foi identificado nesta revisão.
121
121
 
122
122
  ### Internal-only paths
123
123
 
124
- Nao ha paths internal-only confirmados no contrato publico desta revisao.
124
+ Não ha paths internal-only confirmados no contrato público desta revisão.
125
125
 
126
126
  ### Experimental paths
127
127
 
128
- Nao ha paths experimentais confirmados no contrato publico desta revisao.
128
+ Não ha paths experimentais confirmados no contrato público desta revisão.
129
129
 
130
130
  ## Public contract surface (obrigatorio)
131
131
 
@@ -134,11 +134,11 @@ Nao ha paths experimentais confirmados no contrato publico desta revisao.
134
134
  | Block | Purpose | Required | Merge strategy | Notes |
135
135
  | --- | --- | --- | --- | --- |
136
136
  | `metadata` | Payload declarativo principal do componente | true | deep-merge | runtime linkage verified for core flows (component specs, 2026-03-16). |
137
- | `selectOptions` | Configuracao especifica de runtime | false | override | runtime linkage verified for core flows (component specs, 2026-03-16). |
137
+ | `selectOptions` | Configuração especifica de runtime | false | override | runtime linkage verified for core flows (component specs, 2026-03-16). |
138
138
  | `readonlyMode` | Override de readonly no host/runtime | false | override | runtime linkage verified for core flows (component specs, 2026-03-16). |
139
139
  | `disabledMode` | Override de disabled no host/runtime | false | override | runtime linkage verified for core flows (component specs, 2026-03-16). |
140
140
  | `visible` | Override de visibilidade no host/runtime | false | override | runtime linkage verified for core flows (component specs, 2026-03-16). |
141
- | `presentationMode` | Renderizacao de apresentacao sem interacao | false | override | runtime linkage verified for core flows (component specs, 2026-03-16). |
141
+ | `presentationMode` | Renderização de apresentação sem interação | false | override | runtime linkage verified for core flows (component specs, 2026-03-16). |
142
142
 
143
143
  ### Nested configuration blocks
144
144
 
@@ -203,15 +203,15 @@ Nao ha paths experimentais confirmados no contrato publico desta revisao.
203
203
  ### Runtime coverage boundaries
204
204
 
205
205
  - Ambientes suportados: browser/dev/prod; SSR/hydration appears to be component-dependent unless explicitly verified.
206
- - Pre-condicoes: payload JSON valido, bindings de host consistentes e dependencias descritas no source_of_truth.
207
- - Fora de cobertura confirmada: caminhos internos, experimentais ou aliases nao enumerados formalmente.
206
+ - Pre-condicoes: payload JSON válido, bindings de host consistentes e dependencias descritas no source_of_truth.
207
+ - Fora de cobertura confirmada: caminhos internos, experimentais ou aliases não enumerados formalmente.
208
208
 
209
209
  ### Editor and tooling notes
210
210
 
211
211
  - Evidencia de tooling: aliases `pdx-inline-*` resolvidos por `inline-filter-controls.util.ts` e consumidos no `ComponentRegistryService`; editor visual E2E permanece not-yet-verified.
212
- - O que esta exposto no editor visual depende da cobertura real do workspace e nao deve ser inferido como suporte runtime total.
213
- - Campos disponiveis apenas via JSON/manual devem continuar no contrato, com rotulo explicito de cobertura parcial.
214
- - Quando houver divergencia entre editor e runtime, manter mismatch rastreavel em secao dedicada.
212
+ - O que esta exposto no editor visual depende da cobertura real do workspace e não deve ser inferido como suporte runtime total.
213
+ - Campos disponíveis apenas via JSON/manual devem continuar no contrato, com rótulo explícito de cobertura parcial.
214
+ - Quando houver divergencia entre editor e runtime, manter mismatch rastreável em secao dedicada.
215
215
 
216
216
  ## Resolution and precedence model (obrigatorio)
217
217
 
@@ -224,21 +224,21 @@ Nao ha paths experimentais confirmados no contrato publico desta revisao.
224
224
 
225
225
  ### Fallback order
226
226
 
227
- contrato explicito -> aliases historicos (quando suportados) -> defaults internos -> comportamento seguro
227
+ contrato explicito -> aliases históricos (quando suportados) -> defaults internos -> comportamento seguro
228
228
 
229
229
  ### Override points
230
230
 
231
231
  - inputs publicos do componente
232
- - configuracao JSON de runtime
233
- - integracoes de host (servicos/tokens/adapters)
232
+ - configuração JSON de runtime
233
+ - integracoes de host (serviços/tokens/adapters)
234
234
 
235
235
  ### Runtime normalization
236
236
 
237
- Alias e defaults devem convergir para paths canonicos; onde nao houver evidencia, manter not-yet-verified de forma explicita.
237
+ Alias e defaults devem convergir para paths canônicos; onde não houver evidência, manter not-yet-verified de forma explícita.
238
238
 
239
239
  ### Precedence rules
240
240
 
241
- Em conflito entre caminho historico e path canonico, priorizar path canonico e registrar janela de migracao do historico.
241
+ Em conflito entre caminho histórico e path canônico, priorizar path canônico e registrar janela de migração do histórico.
242
242
 
243
243
  ## Validation and error semantics (obrigatorio)
244
244
 
@@ -246,7 +246,7 @@ Em conflito entre caminho historico e path canonico, priorizar path canonico e r
246
246
 
247
247
  | Path/Rule | Validation phase | Behavior on fail | Error code / warning | Notes |
248
248
  | --- | --- | --- | --- | --- |
249
- | canonical-paths | parse/runtime | component-defined (warn/reject/default) | not-yet-standardized | Semantica detalhada preservada na referencia tecnica por componente. |
249
+ | canonical-paths | parse/runtime | component-defined (warn/reject/default) | not-yet-standardized | Semantica detalhada preservada na referência técnica por componente. |
250
250
 
251
251
  ### Invalid and unknown field handling
252
252
 
@@ -264,66 +264,66 @@ Em conflito entre caminho historico e path canonico, priorizar path canonico e r
264
264
 
265
265
  | Condition | Severity | Observability | Consumer action |
266
266
  | --- | --- | --- | --- |
267
- | partial-or-declared-only-coverage | warning | logs/eventos do componente | Confirmar ligacao runtime antes de uso critico. |
268
- | mismatch-confirmed | error-or-warning | componente/host observability | Planejar migracao e corrigir contrato/runtime. |
267
+ | partial-or-declared-only-coverage | warning | logs/eventos do componente | Confirmar ligação runtime antes de uso crítico. |
268
+ | mismatch-confirmed | error-or-warning | componente/host observability | Planejar migração e corrigir contrato/runtime. |
269
269
 
270
270
  ## Detailed API reference
271
271
  ### Preserved technical reference (normalized from previous revision)
272
272
 
273
- ### 1. Visao Geral e Quando Usar
274
- `pdx-inline-sentiment` e um filtro inline de sentimento com emojis, barra de gradiente e cards selecionaveis.
273
+ ### 1. Visão Geral e Quando Usar
274
+ `pdx-inline-sentiment` é um filtro inline de sentimento com emojis, barra de gradiente e cards selecionáveis.
275
275
 
276
276
  Use quando precisar:
277
277
  - classificar feedback por polaridade (negativo/neutro/positivo);
278
- - expor leitura visual rapida via emoji + cor;
279
- - permitir single ou multipla selecao com pills de resumo.
278
+ - expor leitura visual rápida via emoji + cor;
279
+ - permitir single ou múltipla seleção com pills de resumo.
280
280
 
281
281
  ### 2. API do Componente (Inputs/Outputs)
282
- | Propriedade | Tipo | Padrao | Obrigatorio | Comportamento |
282
+ | Propriedade | Tipo | Padrão | Obrigatório | Comportamento |
283
283
  | --- | --- | --- | --- | --- |
284
284
  | `metadata` | `MaterialSelectMetadata` | - | Sim | Contrato principal de sentimento inline. |
285
- | `readonlyMode/disabledMode/visible/presentationMode` | `boolean` | `false/false/true/false` | Nao | Estados de host do campo inline. |
285
+ | `readonlyMode/disabledMode/visible/presentationMode` | `boolean` | `false/false/true/false` | Não | Estados de host do campo inline. |
286
286
  | `selectionChange` | `T \| T[]` | - | Output herdado | Valor(es) de sentimento selecionado(s). |
287
- | `optionSelected` | `SelectOption` | - | Output herdado | Opcao escolhida no card de sentimento. |
287
+ | `optionSelected` | `SelectOption` | - | Output herdado | Opção escolhida no card de sentimento. |
288
288
 
289
289
  ### 3. Matriz de Cobertura JSON (Completa)
290
- #### 3.1 Campos especificos do componente
290
+ #### 3.1 Campos específicos do componente
291
291
  | Caminho JSON | Tipo | Status | Comportamento em runtime |
292
292
  | --- | --- | --- | --- |
293
293
  | `metadata.sentimentOptions` | `array \| string(JSON)` | Ativo | Fonte principal dos cards de sentimento. |
294
294
  | `metadata.sentimentMultiple` / `multiple` | `boolean` | Ativo | Define single/multiple selection. |
295
295
  | `metadata.sentimentShowBar` | `boolean` | Ativo | Exibe barra visual de sentimento. |
296
296
  | `metadata.sentimentShowSelectionPills` | `boolean` | Ativo | Exibe pills dos itens selecionados. |
297
- | `metadata.sentimentAnimatedEmoji` | `boolean` | Ativo | Ativa animacao de emoji em hover/select. |
298
- | `metadata.sentimentCloseOnSelect` | `boolean` | Ativo | Fecha painel apos selecao (single). |
299
- | `metadata.sentimentEmojiKey/optionEmojiKey` | `string` | Ativo | Chave do emoji por opcao. |
300
- | `metadata.sentimentColorKey/optionColorKey` | `string` | Ativo | Chave da cor por opcao. |
301
- | `metadata.sentimentPalette/palette` | `array \| string` | Ativo | Paleta fallback para opcoes sem cor. |
302
- | `metadata.sentimentGradientLowColor/midColor/highColor` | `string` | Ativo | Gradiente semantico fallback para barra e opcoes sem cor explicita. |
303
- | `metadata.sentimentTexts` / `inlineTexts` | `object \| string(JSON)` | Ativo | Textos de subtitulo, aria, labels de grupo/pills e empty state; templates canonicos devem usar `{{label}}` e `{{value}}` quando houver interpolacao. |
304
- | `metadata.inlineOverlay.applyMode` | `"auto" \| "explicit"` | Ativo | Define se cards de sentimento comitam imediatamente ou ficam em rascunho ate `Aplicar`. |
305
- | `metadata.inlineOverlay.actions.apply` | `object` | Ativo | Configura label, aria-label, icone, `appearance` e `colorRole` da acao de commit. |
306
- | `metadata.inlineOverlay.actions.cancel` | `object` | Ativo | Configura a acao que descarta rascunho e fecha o painel. |
307
- | `metadata.inlineOverlay.actions.clear` | `object` | Ativo | Configura a acao que remove a selecao aplicada/rascunho usando tokens do tema. |
308
- | `metadata.sentimentIcon` / `prefixIcon` | `string` | Ativo | Icone do trigger/painel. |
297
+ | `metadata.sentimentAnimatedEmoji` | `boolean` | Ativo | Ativa animação de emoji em hover/select. |
298
+ | `metadata.sentimentCloseOnSelect` | `boolean` | Ativo | Fecha painel após seleção (single). |
299
+ | `metadata.sentimentEmojiKey/optionEmojiKey` | `string` | Ativo | Chave do emoji por opção. |
300
+ | `metadata.sentimentColorKey/optionColorKey` | `string` | Ativo | Chave da cor por opção. |
301
+ | `metadata.sentimentPalette/palette` | `array \| string` | Ativo | Paleta fallback para opções sem cor. |
302
+ | `metadata.sentimentGradientLowColor/midColor/highColor` | `string` | Ativo | Gradiente semântico fallback para barra e opções sem cor explícita. |
303
+ | `metadata.sentimentTexts` / `inlineTexts` | `object \| string(JSON)` | Ativo | Textos de subtítulo, aria, labels de grupo/pills e empty state; templates canônicos devem usar `{{label}}` e `{{value}}` quando houver interpolação. |
304
+ | `metadata.inlineOverlay.applyMode` | `"auto" \| "explicit"` | Ativo | Define se cards de sentimento comitam imediatamente ou ficam em rascunho até `Aplicar`. |
305
+ | `metadata.inlineOverlay.actions.apply` | `object` | Ativo | Configura label, aria-label, ícone, `appearance` e `colorRole` da ação de commit. |
306
+ | `metadata.inlineOverlay.actions.cancel` | `object` | Ativo | Configura a ação que descarta rascunho e fecha o painel. |
307
+ | `metadata.inlineOverlay.actions.clear` | `object` | Ativo | Configura a ação que remove a seleção aplicada/rascunho usando tokens do tema. |
308
+ | `metadata.sentimentIcon` / `prefixIcon` | `string` | Ativo | Ícone do trigger/painel. |
309
309
  | `metadata.inlineAutoSize.*` | `object` | Ativo | Largura da pill e painel. |
310
310
 
311
311
  #### 3.2 Campos herdados compartilhados (exaustivo)
312
312
  - `projects/praxis-dynamic-fields/src/lib/components/material-select/pdx-material-select.json-api.md`
313
313
  - `projects/praxis-dynamic-fields/src/lib/base/pdx-base-select-runtime-contract.json-api.md`
314
314
 
315
- Resumo de composicao deste componente:
315
+ Resumo de composição deste componente:
316
316
  - `Ativo`: cards de sentimento com emoji/cor, barra e pills de resumo.
317
- - `Extensao de runtime`: namespace `sentiment*` com fallback para chaves genericas.
317
+ - `Extensão de runtime`: namespace `sentiment*` com fallback para chaves genéricas.
318
318
 
319
319
  ### 4. Mapeamento de Comportamento
320
- - Opcoes podem ser carregadas de `sentimentOptions`, `selectOptions` ou `options`.
320
+ - Opções podem ser carregadas de `sentimentOptions`, `selectOptions` ou `options`.
321
321
  - Cor/emoji de cada item segue ordem de chaves custom -> payload -> paleta fallback.
322
- - Em multiplo, respeita `maxSelections` herdado.
322
+ - Em múltiplo, respeita `maxSelections` herdado.
323
323
  - Aria labels, labels de grupo/pills e textos operacionais podem ser centralizados em `sentimentTexts`.
324
- - Quando `inlineOverlay.applyMode` e `"explicit"`, selecoes no painel alteram apenas o rascunho; `Aplicar` comita, `Cancelar`, `Esc` e clique externo descartam, e `Limpar` remove a selecao.
324
+ - Quando `inlineOverlay.applyMode` e `"explicit"`, seleções no painel alteram apenas o rascunho; `Aplicar` comita, `Cancelar`, `Esc` e clique externo descartam, e `Limpar` remove a seleção.
325
325
 
326
- ### 5. Exemplo Minimo (JSON + Uso)
326
+ ### 5. Exemplo Mínimo (JSON + Uso)
327
327
  ```json
328
328
  {
329
329
  "componentId": "pdx-inline-sentiment",
@@ -338,7 +338,7 @@ Resumo de composicao deste componente:
338
338
  }
339
339
  }
340
340
  ```
341
- Uso: classificacao simples de sentimento.
341
+ Uso: classificação simples de sentimento.
342
342
 
343
343
  ### 6. Exemplo Corporativo (JSON + Uso)
344
344
  ```json
@@ -378,34 +378,34 @@ Uso: classificacao simples de sentimento.
378
378
  }
379
379
  }
380
380
  ```
381
- Uso: analise de CX com semantica visual direta e confirmacao explicita antes de aplicar.
381
+ Uso: análise de CX com semântica visual direta e confirmação explícita antes de aplicar.
382
382
 
383
383
  ### 7. Troubleshooting e Armadilhas Comuns
384
- 1. Emoji nao renderiza.
385
- Correcao: ajustar `sentimentEmojiKey` ou o campo de payload.
384
+ 1. Emoji não renderiza.
385
+ Correção: ajustar `sentimentEmojiKey` ou o campo de payload.
386
386
 
387
387
  2. Cores repetidas sem intencao.
388
- Correcao: revisar `sentimentColorKey` e `sentimentPalette`.
388
+ Correção: revisar `sentimentColorKey` e `sentimentPalette`.
389
389
 
390
- 3. Painel nao fecha no single.
391
- Correcao: habilitar `sentimentCloseOnSelect=true`.
390
+ 3. Painel não fecha no single.
391
+ Correção: habilitar `sentimentCloseOnSelect=true`.
392
392
 
393
- 4. Pills nao aparecem no multiplo.
394
- Correcao: verificar `sentimentShowSelectionPills`.
393
+ 4. Pills não aparecem no múltiplo.
394
+ Correção: verificar `sentimentShowSelectionPills`.
395
395
 
396
- 5. Animacao de emoji nao ocorre.
397
- Correcao: validar `sentimentAnimatedEmoji`.
396
+ 5. Animação de emoji não ocorre.
397
+ Correção: validar `sentimentAnimatedEmoji`.
398
398
 
399
399
  ### 8. Cross-links
400
400
  - `projects/praxis-dynamic-fields/src/lib/components/material-select/pdx-material-select.json-api.md`
401
401
  - `projects/praxis-dynamic-fields/src/lib/base/pdx-base-select-runtime-contract.json-api.md`
402
402
 
403
- ### 9. Relatorio de Validacao Estrutural
404
- - Visao geral: PASS
403
+ ### 9. Relatório de Validação Estrutural
404
+ - Visão geral: PASS
405
405
  - API (inputs/outputs): PASS
406
406
  - Cobertura JSON completa (especifico + herdado): PASS
407
407
  - Mapeamento de comportamento: PASS
408
- - Exemplo minimo: PASS
408
+ - Exemplo mínimo: PASS
409
409
  - Exemplo corporativo: PASS
410
410
  - Troubleshooting: PASS
411
411
 
@@ -668,7 +668,7 @@ Correcao: validar `sentimentAnimatedEmoji`.
668
668
 
669
669
  | Path/Behavior | Observed behavior (runtime) | Desired behavior | Impact | Tracking issue | Target fix |
670
670
  | --- | --- | --- | --- | --- | --- |
671
- | Canonical contract parity | Runtime e exemplos desta referencia foram atualizados em 2026-03-16 para refletir a migracao do componente para o catalogo shared de i18n e o uso de templates `{{...}}` | Manter exemplos e host overrides no formato canonico `{{...}}` | Low | n/a | Monitor in periodic audit |
671
+ | Canonical contract parity | Runtime e exemplos desta referência foram atualizados em 2026-03-16 para refletir a migração do componente para o catálogo shared de i18n e o uso de templates `{{...}}` | Manter exemplos e host overrides no formato canônico `{{...}}` | Low | n/a | Monitor in periodic audit |
672
672
 
673
673
  ## Source references (obrigatorio)
674
674
 
@@ -299,7 +299,7 @@ Use quando precisar:
299
299
  | `metadata.validators.rangeMessage` | `string` | Ativo | Mensagem para erro de ordem do intervalo. |
300
300
  | `metadata.validators.minDistanceMessage` | `string` | Ativo | Mensagem para distancia minima. |
301
301
  | `metadata.validators.maxDistanceMessage` | `string` | Ativo | Mensagem para distancia maxima. |
302
- | `metadata.inlineOverlay.applyMode` | `"auto" \| "explicit" \| "confirm"` | Ativo | Quando `explicit`/`confirm`, slider, inputs e presets ficam em rascunho ate `Aplicar`. |
302
+ | `metadata.inlineOverlay.applyMode` | `"auto" \| "explicit"` | Ativo | Quando `explicit`, slider, inputs e presets ficam em rascunho ate `Aplicar`. |
303
303
  | `metadata.inlineOverlay.actions.apply.*` | `object` | Ativo | Label, aria, icon, appearance e colorRole do commit. |
304
304
  | `metadata.inlineOverlay.actions.cancel.*` | `object` | Ativo | Label, aria, icon, appearance e colorRole do descarte. |
305
305
  | `metadata.inlineOverlay.actions.clear.*` | `object` | Ativo | Label, aria, icon, appearance, colorRole e visibilidade da limpeza explicita. |
@@ -318,7 +318,7 @@ Resumo de composicao deste componente:
318
318
  - `quickPresets` podem ser declarados ou gerados por defaults internos.
319
319
  - Slider e inputs textuais permanecem sincronizados (`timeRangeForm` + `sliderRangeForm`).
320
320
  - `timeInputStepSeconds()` deriva de `stepMinute` para entrada `type=time`.
321
- - Com `inlineOverlay.applyMode: "explicit"` ou `"confirm"`, alteracoes no painel nao emitem valor externo ate `Aplicar`; `Cancelar`, `Esc`, detach ou clique externo restauram o valor confirmado anterior.
321
+ - Com `inlineOverlay.applyMode: "explicit"`, alteracoes no painel nao emitem valor externo ate `Aplicar`; `Cancelar`, `Esc`, detach ou clique externo restauram o valor confirmado anterior.
322
322
 
323
323
  ### 5. Exemplo Minimo (JSON + Uso)
324
324
  ```json
@@ -393,7 +393,8 @@ Precedencia de comportamento:
393
393
 
394
394
  Notas de runtime:
395
395
 
396
- - em remoto, `loadOptions` usa filtro com include de selecionados na pagina 0.
396
+ - em remoto generico, `loadOptions` pode usar `includeIds` na pagina 0.
397
+ - em `optionSource`, o filtro envia `includeIds` somente quando `optionSource.includeIds=true`; quando ausente ou `false`, valores selecionados sao reidratados por `/option-sources/{sourceKey}/options/by-ids`.
397
398
  - `onSearch` limpa estado local e reinicia pagina para novo termo.
398
399
 
399
400
  Contrato compartilhado completo:
@@ -417,7 +418,7 @@ Correcao: revise `loadOn`, `resourcePath` e permissao de endpoint.
417
418
  Correcao: alinhe `optionLabelKey` e `optionValueKey` ao payload real.
418
419
 
419
420
  4. Item selecionado some apos nova busca.
420
- Correcao: backend deve suportar include de ids selecionados na pagina inicial.
421
+ Correcao: para `optionSource.includeIds=false`, backend deve suportar reidratacao por `/by-ids`; para remoto generico ou `optionSource.includeIds=true`, pode suportar include de ids selecionados na pagina inicial.
421
422
 
422
423
  5. Cascata nao atualiza automaticamente.
423
424
  Correcao: use `dependencyLoadOnChange='immediate'` ou dispare recarga no host.
@@ -22,8 +22,8 @@ source_of_truth:
22
22
  - "projects/praxis-dynamic-fields/src/lib/components/material-checkbox-group/material-checkbox-group.component.ts"
23
23
  - "projects/praxis-dynamic-fields/src/lib/base/simple-base-select.component.ts"
24
24
  - "projects/praxis-core/src/lib/models/material-field-metadata.interface.ts"
25
- source_of_truth_last_verified: "2026-04-27"
26
- last_updated: "2026-04-27"
25
+ source_of_truth_last_verified: "2026-06-25"
26
+ last_updated: "2026-06-25"
27
27
  toc: true
28
28
  sidebar: true
29
29
  tags:
@@ -133,6 +133,7 @@ Este documento e a referencia canonica da API JSON de pdx-material-checkbox-grou
133
133
  | --- | --- | --- | --- | --- |
134
134
  | `metadata.options` | `metadata.checkboxOptions` | not-yet-defined | accepted for backward compatibility | Alias legado para opcoes do grupo. |
135
135
  | ausencia de `metadata.selectionMode` | `metadata.selectionMode` explicito | not-yet-defined | runtime infere `boolean` sem opcoes e `multiple` com opcoes | Fallback legado preservado para migracao. |
136
+ | valores booleanos legados `S`/`N`, `1`/`0`, `true`/`false` no `FormControl` | `boolean` real | not-yet-defined | em `selectionMode: 'boolean'`, o runtime normaliza antes de renderizar e emitir eventos | Compatibilidade para telas migradas que recebem flags legadas do backend. |
136
137
 
137
138
  ### Internal-only paths
138
139
 
@@ -197,6 +198,7 @@ Nao ha paths experimentais confirmados no contrato publico desta revisao.
197
198
  ### Runtime semantics addendum
198
199
 
199
200
  - `selectionMode` explicito governa a semantica interna de selecao; heuristica por presenca de opcoes so vale quando `selectionMode` nao e informado.
201
+ - Em `selectionMode: 'boolean'`, o valor de entrada aceita `boolean` real e flags legadas textuais/numéricas (`S`/`N`, `T`/`F`, `1`/`0`, `true`/`false`, `sim`/`não`) e normaliza para `boolean` antes da interação.
200
202
  - `required`/`requiredChecked` propagam sinalizacao acessivel (`aria-required`) para o checkbox renderizado.
201
203
  - No modo boolean, cliques no shell de conteudo tambem emitem `selectionChange` e `optionSelected` para alinhamento operacional com o runtime base de selecao.
202
204
  - Estados governados (`disabledMode`, `readonlyMode`, `presentationMode`, `metadata.readonly` e `FormControl.disabled`) bloqueiam mutacoes em modo boolean, option e select-all.
@@ -224,7 +226,7 @@ Nao ha paths experimentais confirmados no contrato publico desta revisao.
224
226
 
225
227
  | Surface | Verified | Coverage status | Evidence | Notes |
226
228
  | --- | --- | --- | --- | --- |
227
- | Runtime | `true` | Active | `projects/praxis-dynamic-fields/src/lib/components/material-checkbox-group/material-checkbox-group.metadata.ts`, `projects/praxis-dynamic-fields/src/lib/components/material-checkbox-group/material-checkbox-group.component.ts` | Core runtime flows and governed states verified via focused component specs on 2026-04-27; editor/tooling coverage remains independent. |
229
+ | Runtime | `true` | Active | `projects/praxis-dynamic-fields/src/lib/components/material-checkbox-group/material-checkbox-group.metadata.ts`, `projects/praxis-dynamic-fields/src/lib/components/material-checkbox-group/material-checkbox-group.component.ts` | Core runtime flows, governed states and legacy boolean value normalization verified via focused component specs on 2026-06-25; editor/tooling coverage remains independent. |
228
230
  | Schema/Types | `true` | Active | source_of_truth + Detailed API reference | Reconcile schema/types with canonical paths during follow-up when needed. |
229
231
  | Editor/Tooling | `false` | Partial | `projects/praxis-core/src/lib/metadata/field-selector-control-type.constants.ts`, `projects/praxis-dynamic-fields/src/lib/services/component-registry/component-registry.service.ts` | Selector/control-type tooling linkage verified via default selector map and registry seeding; visual editor end-to-end coverage remains not-yet-verified. |
230
232
 
@@ -21,8 +21,8 @@ source_of_truth:
21
21
  - "projects/praxis-dynamic-fields/src/lib/components/material-file-upload/material-file-upload.metadata.ts"
22
22
  - "projects/praxis-dynamic-fields/src/lib/components/material-file-upload/material-file-upload.component.ts"
23
23
  - "projects/praxis-dynamic-fields/src/lib/base/simple-base-input.component.ts"
24
- source_of_truth_last_verified: "2026-03-06"
25
- last_updated: "2026-03-06"
24
+ source_of_truth_last_verified: "2026-06-24"
25
+ last_updated: "2026-06-24"
26
26
  toc: true
27
27
  sidebar: true
28
28
  tags:
@@ -149,10 +149,14 @@ Nao ha paths experimentais confirmados no contrato publico desta revisao.
149
149
  | `metadata.hint` | string | false | n/a | component-defined | Partial; verify per source_of_truth. |
150
150
  | `metadata.placeholder` | string | false | n/a | component-defined | Partial; verify per source_of_truth. |
151
151
  | `metadata.validators.*` | object | false | n/a | component-defined | Partial; verify per source_of_truth. |
152
- | `metadata.accept` | string | false | n/a | component-defined | Partial; verify per source_of_truth. |
153
- | `metadata.multiple` | boolean | false | n/a | component-defined | Partial; verify per source_of_truth. |
154
- | `metadata.maxFileSize` | number | false | n/a | component-defined | Partial; verify per source_of_truth. |
152
+ | `metadata.accept` | string | false | n/a | comma-separated extensions or MIME patterns | Active; applied to native input and local file validation. |
153
+ | `metadata.multiple` | boolean | false | `false` | boolean | Active; selected value is `File[]` when true and `File | null` otherwise. |
154
+ | `metadata.maxFileSize` | number | false | n/a | positive byte count | Active; rejects selected files above the configured limit. |
155
+ | `metadata.maxFiles` | number | false | n/a | positive integer | Active; rejects selections above the configured number of files. |
155
156
  | `metadata.allowedTypes` | string[] | false | n/a | component-defined | Partial; verify per source_of_truth. |
157
+ | `metadata.imagePreview` | boolean | false | `false` | boolean | Active; renders local image preview for selected image files. |
158
+ | `metadata.preview` | string | false | n/a | `image` | Active; `image` is an alias for local image preview. |
159
+ | `metadata.previewAlt` | string | false | localized fallback | component-defined | Active; accessible alt text for the local preview image. |
156
160
 
157
161
  ### Input bindings (inbound data)
158
162
 
@@ -268,12 +272,13 @@ Em conflito entre alias legado e path canonico, priorizar path canonico e regist
268
272
  ### Preserved technical reference (normalized from previous revision)
269
273
 
270
274
  ### 1. Visao Geral e Quando Usar
271
- `pdx-material-file-upload` e um upload basico (placeholder funcional) com `<input type="file">` simples e integracao CVA.
275
+ `pdx-material-file-upload` e um upload basico de campo com `<input type="file">`, integracao CVA, validacao local de tipo/tamanho e preview local de imagem.
272
276
 
273
277
  Use quando precisar:
274
278
  - prototipar upload rapido no form;
275
- - capturar um unico arquivo selecionado;
276
- - evoluir depois para fluxo corporativo completo (preview/chunk/validacoes avancadas).
279
+ - capturar um arquivo selecionado ou uma lista curta de arquivos;
280
+ - mostrar preview local para fluxos de foto/avatar antes da persistencia;
281
+ - delegar persistencia, presign, progresso, conflito e storage governado para a camada canonica de upload.
277
282
 
278
283
  ### 2. API do Componente (Inputs/Outputs)
279
284
  | Propriedade | Tipo | Padrao | Obrigatorio | Comportamento |
@@ -283,7 +288,7 @@ Use quando precisar:
283
288
  | `disabledMode` | `boolean` | `false` | Nao | Sobrescreve disabled no host. |
284
289
  | `visible` | `boolean` | `true` | Nao | Controla exibicao no host. |
285
290
  | `presentationMode` | `boolean` | `false` | Nao | Modo apresentacao sem edicao. |
286
- | `valueChange` | `File \| null` | - | Output base input | Arquivo selecionado no input. |
291
+ | `valueChange` | `File \| File[] \| null` | - | Output base input | Arquivo selecionado no input; quando `multiple=true`, emite array. |
287
292
 
288
293
  ### 3. Matriz de Cobertura JSON (Completa)
289
294
  #### 3.1 Campos especificos do componente
@@ -294,25 +299,29 @@ Use quando precisar:
294
299
  | `metadata.hint` | `string` | Ativo | Mensagem de apoio quando sem erro. |
295
300
  | `metadata.placeholder` | `string` | Parcial | `setFileUploadMetadata` remove placeholder do estado efetivo. |
296
301
  | `metadata.validators.*` | `object` | Parcial | Validacoes basicas do `SimpleBaseInput` podem atuar no control, sem parser de arquivo dedicado. |
297
- | `metadata.accept` | `string` | Declared-only | Nao aplicado ao atributo `accept` no input atual. |
298
- | `metadata.multiple` | `boolean` | Declared-only | Input atual usa apenas o primeiro arquivo selecionado. |
299
- | `metadata.maxFileSize` | `number` | Declared-only | Nao ha validacao de tamanho especifica no componente. |
302
+ | `metadata.accept` | `string` | Ativo | Aplicado ao atributo `accept` e validado localmente por extensao/MIME antes de atualizar o control. |
303
+ | `metadata.multiple` | `boolean` | Ativo | Permite selecionar varios arquivos e atualiza o valor como `File[]`. |
304
+ | `metadata.maxFileSize` | `number` | Ativo | Rejeita arquivos acima do limite em bytes antes de atualizar o control. |
305
+ | `metadata.maxFiles` | `number` | Ativo | Rejeita selecoes acima da quantidade maxima configurada. |
300
306
  | `metadata.allowedTypes` | `string[]` | Declared-only | Nao ha filtro dedicado por tipo no componente atual. |
307
+ | `metadata.imagePreview` | `boolean` | Ativo | Mostra preview local para o primeiro arquivo de imagem selecionado. |
308
+ | `metadata.preview` | `'image'` | Ativo | Alias declarativo para habilitar preview local de imagem. |
309
+ | `metadata.previewAlt` | `string` | Ativo | Texto alternativo do preview local. |
301
310
 
302
311
  #### 3.2 Campos herdados compartilhados (exaustivo)
303
312
  Contrato compartilhado de input base:
304
313
  - [pdx-base-input-runtime-contract.json-api.md](projects/praxis-dynamic-fields/src/lib/base/pdx-base-input-runtime-contract.json-api.md)
305
314
 
306
315
  Resumo de composicao deste componente:
307
- - `Ativo`: fluxo basico de selecao de um arquivo e bind no control.
316
+ - `Ativo`: fluxo basico de selecao, bind no control, preview local de imagem e validacao local de tipo/tamanho/quantidade.
308
317
  - `Parcial`: placeholder e validacoes genericas do base.
309
- - `Declared-only`: capacidade avancada de upload ainda nao implementada.
318
+ - `Declared-only`: politica avancada por `allowedTypes`.
310
319
 
311
320
  ### 4. Mapeamento de Comportamento
312
- - Selecao: ao `change`, pega `files[0]` e grava no control.
313
- - Valor: tipo `File | null`.
314
- - Renderizacao: label + input file + erro/hint.
315
- - Estado corporativo: componente se declara "placeholder" no proprio codigo.
321
+ - Selecao: ao `change`, valida arquivos e grava `File` ou `File[]` no control.
322
+ - Valor: `File | null` quando `multiple` esta ausente/falso; `File[]` quando `multiple=true`.
323
+ - Renderizacao: label, input file, resumo da selecao, preview local de imagem, erro/hint e acao de limpar.
324
+ - Persistencia corporativa: fora deste componente. Use `@praxisui/files-upload` para presign, progresso, conflito, retry e storage governado.
316
325
 
317
326
  ### 5. Exemplo Minimo (JSON + Uso)
318
327
  ```json
@@ -345,12 +354,30 @@ Uso: captura um arquivo unico para envio posterior.
345
354
  ```
346
355
  Uso: etapa inicial de upload, deixando validacoes profundas para API backend.
347
356
 
357
+ ### 6.1 Exemplo para troca de avatar (JSON + Uso)
358
+ ```json
359
+ {
360
+ "componentId": "pdx-material-file-upload",
361
+ "metadata": {
362
+ "name": "profileImageFile",
363
+ "label": "Foto de perfil",
364
+ "controlType": "upload",
365
+ "accept": "image/*",
366
+ "maxFileSize": 4194304,
367
+ "maxFiles": 1,
368
+ "imagePreview": true,
369
+ "hint": "Escolha uma imagem para revisar antes de salvar a foto do perfil."
370
+ }
371
+ }
372
+ ```
373
+ Uso: combine este campo com `pdx-material-avatar` para preview/display e com a capability canonica de persistencia de arquivo para publicar a URL final consumida pelo avatar.
374
+
348
375
  ### 7. Troubleshooting e Armadilhas Comuns
349
- 1. Esperar upload multiplo.
350
- Correcao: componente atual captura somente o primeiro arquivo.
376
+ 1. Esperar persistencia automatica.
377
+ Correcao: este componente escolhe e valida localmente; persistencia pertence ao host ou a `@praxisui/files-upload`.
351
378
 
352
- 2. Esperar filtro automatico por tipo/tamanho.
353
- Correcao: nao ha `accept`/validacao dedicada implementada nesta versao.
379
+ 2. Esperar crop/zoom.
380
+ Correcao: preview local nao e editor de imagem. Crop deve nascer em contrato proprio de avatar/image authoring.
354
381
 
355
382
  3. Placeholder nao aparece.
356
383
  Correcao: `setFileUploadMetadata` remove placeholder explicitamente.
@@ -358,8 +385,8 @@ Correcao: `setFileUploadMetadata` remove placeholder explicitamente.
358
385
  4. Arquivo nao persiste no payload final.
359
386
  Correcao: verificar serializacao de `File` no host e estrategia de envio multipart.
360
387
 
361
- 5. Necessidade de preview/progresso/chunk.
362
- Correcao: esse renderer e baseline; implementar camada avancada para cenarios enterprise.
388
+ 5. Necessidade de progresso/chunk/presign.
389
+ Correcao: usar `@praxisui/files-upload`, que e a fronteira canonica de upload operacional.
363
390
 
364
391
  ### 8. Cross-links
365
392
  - `projects/praxis-dynamic-fields/src/lib/base/pdx-base-input-runtime-contract.json-api.md`
@@ -388,10 +415,14 @@ Correcao: esse renderer e baseline; implementar camada avancada para cenarios en
388
415
  | `metadata.hint` | string | false | n/a | Partial | See Detailed API reference. |
389
416
  | `metadata.placeholder` | string | false | n/a | Partial | See Detailed API reference. |
390
417
  | `metadata.validators.*` | object | false | n/a | Partial | See Detailed API reference. |
391
- | `metadata.accept` | string | false | n/a | Partial | See Detailed API reference. |
392
- | `metadata.multiple` | boolean | false | n/a | Partial | See Detailed API reference. |
393
- | `metadata.maxFileSize` | number | false | n/a | Partial | See Detailed API reference. |
418
+ | `metadata.accept` | string | false | n/a | Active | Applied to native input and local type validation. |
419
+ | `metadata.multiple` | boolean | false | `false` | Active | Emits `File[]` when true. |
420
+ | `metadata.maxFileSize` | number | false | n/a | Active | Rejects files above the byte limit. |
421
+ | `metadata.maxFiles` | number | false | n/a | Active | Rejects selections above the configured number of files. |
394
422
  | `metadata.allowedTypes` | string[] | false | n/a | Partial | See Detailed API reference. |
423
+ | `metadata.imagePreview` | boolean | false | `false` | Active | Enables local image preview. |
424
+ | `metadata.preview` | string | false | n/a | Active | `image` enables local image preview. |
425
+ | `metadata.previewAlt` | string | false | localized fallback | Active | Accessible alt text for preview image. |
395
426
 
396
427
  ## Events reference (obrigatorio)
397
428