@praxisui/dynamic-fields 3.0.0-beta.6 → 3.0.0-beta.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -64,6 +64,18 @@ last_updated: "2026-03-07"
64
64
  - Headless UI and design systems
65
65
  - Data-driven forms
66
66
 
67
+ ## Value Presentation
68
+
69
+ Em estados read-only/display, `dynamic-fields` prefere o contrato canônico `valuePresentation` quando ele existir no metadata do campo.
70
+
71
+ Regras práticas:
72
+ - use `valuePresentation` para valores escalares de display, como `currency`, `number`, `date`, `datetime`, `time`, `percentage` e `boolean`
73
+ - mantenha `format`, `numericFormat`, `currency`, `numberFormat` e `locale` apenas como bridge legado quando necessário
74
+ - `valuePresentation` não é o contrato certo para ranges, selections e IDs semânticos
75
+ - precedência prática: `field.valuePresentation` -> hints legados mapeáveis -> `localization` da superfície/campo -> `LOCALE_ID`
76
+ - `controlType` ajuda o runtime a inferir fallback quando o metadata antigo ainda é usado, mas não substitui a semântica de apresentação
77
+ - em `presentationMode` puro, o runtime renderiza o valor formatado no shell e evita instanciar o componente interativo escondido, reduzindo side effects e deriva de valor
78
+
67
79
  Biblioteca de campos dinâmicos para aplicações Angular (v20+) com Material Design. Renderiza campos a partir de metadados, com carregamento lazy e integração com Reactive Forms.
68
80
 
69
81
  ## Instalação
@@ -152,6 +164,23 @@ const isRegistered = registry.isRegistered(FieldControlType.INPUT);
152
164
  - `projects/praxis-dynamic-fields/docs/dynamic-fields-inline-components-guide.md` (slug: `dynamic-fields-inline-components-guide`)
153
165
  - `projects/praxis-dynamic-fields/docs/generic-crud-service.md`
154
166
 
167
+ ## Editorial governance
168
+
169
+ Para fields mantidos pela propria lib, a semantica editorial canonica nasce em `src/lib/editorial/**`.
170
+
171
+ Fronteira oficial:
172
+
173
+ - `ComponentMetadataEditorialDescriptor`: fonte canonica de `friendlyName`, `description`, `tooltip`, `icon`, bindings e i18n para familias governadas.
174
+ - `ComponentDocMeta`: artefato derivado para builders, discovery e compatibilidade de runtime; nao deve redefinir copy editorial da mesma familia governada.
175
+ - `dynamic-fields-playground.catalog.ts`: camada derivada para showcase/discovery; pode adicionar `recommendedWhen`, `avoidWhen`, estados e snippets, mas nao deve reinventar copy canonica.
176
+ - `@praxisui/dynamic-form`: consumidor; resolve nome/icone/descricao via `ComponentMetadataRegistry.resolveEditorial(..., { namespace: 'dynamicFields' })`.
177
+
178
+ Estado atual da trilha:
179
+
180
+ - a governanca editorial canonica cobre a wave 1 registrada em `dynamic-fields-wave-1.registry.ts`;
181
+ - familias fora da wave 1 ainda podem expor `ComponentDocMeta` proprio, mas isso nao as transforma em nova fonte canonica;
182
+ - ao promover uma nova familia para a trilha canonica, a ordem correta e: descriptor editorial -> metadata derivado -> catalogo derivado -> consumo no `dynamic-form`.
183
+
155
184
  ### Componentes Suportados
156
185
 
157
186
  A fonte de verdade do suporte default e o `ComponentRegistryService`.