@praxisui/dynamic-fields 8.0.0-beta.6 → 8.0.0-beta.60

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 (97) hide show
  1. package/README.md +19 -0
  2. package/docs/dynamic-fields-field-catalog.md +217 -0
  3. package/docs/dynamic-fields-field-selection-guide.md +204 -0
  4. package/docs/dynamic-fields-host-custom-field-guide.md +252 -0
  5. package/docs/dynamic-fields-host-custom-field-troubleshooting.md +160 -0
  6. package/docs/dynamic-fields-inline-components-guide.md +582 -0
  7. package/docs/dynamic-fields-inline-filter-catalog.md +502 -0
  8. package/docs/dynamic-fields-inline-filter-custom-component-guide.md +241 -0
  9. package/docs/dynamic-fields-inline-filter-inventory.md +247 -0
  10. package/docs/dynamic-fields-inline-filter-runtime-contract.md +391 -0
  11. package/docs/dynamic-fields-inline-filter-selection-guide.md +419 -0
  12. package/docs/dynamic-fields-inline-filter-troubleshooting.md +201 -0
  13. package/docs/dynamic-fields-inventory.md +206 -0
  14. package/docs/dynamic-fields-playground-catalog-plan.md +243 -0
  15. package/docs/generic-crud-service.md +152 -0
  16. package/fesm2022/praxisui-dynamic-fields-index-CBogy3si.mjs +1 -0
  17. package/fesm2022/praxisui-dynamic-fields-index-CWPZdn1Y.mjs +6 -0
  18. package/fesm2022/praxisui-dynamic-fields-index-CrHhyUMO.mjs +1 -0
  19. package/fesm2022/praxisui-dynamic-fields-index-DhGo5In4.mjs +6 -0
  20. package/fesm2022/praxisui-dynamic-fields.mjs +19551 -10669
  21. package/package.json +14 -13
  22. package/src/lib/base/pdx-base-input-runtime-contract.json-api.md +526 -0
  23. package/src/lib/base/pdx-base-select-runtime-contract.json-api.md +474 -0
  24. package/src/lib/components/color-input/pdx-color-input.json-api.md +573 -0
  25. package/src/lib/components/color-picker/pdx-color-picker.json-api.md +686 -0
  26. package/src/lib/components/date-input/pdx-date-input.json-api.md +581 -0
  27. package/src/lib/components/datetime-local-input/pdx-datetime-local-input.json-api.md +560 -0
  28. package/src/lib/components/email-input/pdx-email-input.json-api.md +546 -0
  29. package/src/lib/components/field-shell/praxis-field-shell.json-api.md +523 -0
  30. package/src/lib/components/inline-async-select/pdx-inline-async-select.json-api.md +566 -0
  31. package/src/lib/components/inline-autocomplete/pdx-inline-autocomplete.json-api.md +554 -0
  32. package/src/lib/components/inline-color-label/pdx-inline-color-label.json-api.md +615 -0
  33. package/src/lib/components/inline-currency/pdx-inline-currency.json-api.md +542 -0
  34. package/src/lib/components/inline-currency-range/pdx-inline-currency-range.json-api.md +630 -0
  35. package/src/lib/components/inline-date/pdx-inline-date.json-api.md +529 -0
  36. package/src/lib/components/inline-date-range/pdx-inline-date-range.json-api.md +592 -0
  37. package/src/lib/components/inline-distance-radius/pdx-inline-distance-radius.json-api.md +649 -0
  38. package/src/lib/components/inline-entity-lookup/pdx-inline-entity-lookup.json-api.md +656 -0
  39. package/src/lib/components/inline-input/pdx-inline-input.json-api.md +538 -0
  40. package/src/lib/components/inline-multi-select/pdx-inline-multi-select.json-api.md +566 -0
  41. package/src/lib/components/inline-number/pdx-inline-number.json-api.md +533 -0
  42. package/src/lib/components/inline-pipeline-status/pdx-inline-pipeline-status.json-api.md +619 -0
  43. package/src/lib/components/inline-range-slider/pdx-inline-range-slider.json-api.md +605 -0
  44. package/src/lib/components/inline-rating/pdx-inline-rating.json-api.md +594 -0
  45. package/src/lib/components/inline-relative-period/pdx-inline-relative-period.json-api.md +623 -0
  46. package/src/lib/components/inline-score-priority/pdx-inline-score-priority.json-api.md +632 -0
  47. package/src/lib/components/inline-searchable-select/pdx-inline-searchable-select.json-api.md +564 -0
  48. package/src/lib/components/inline-select/pdx-inline-select.json-api.md +571 -0
  49. package/src/lib/components/inline-sentiment/pdx-inline-sentiment.json-api.md +661 -0
  50. package/src/lib/components/inline-time/pdx-inline-time.json-api.md +573 -0
  51. package/src/lib/components/inline-time-range/pdx-inline-time-range.json-api.md +635 -0
  52. package/src/lib/components/inline-toggle/pdx-inline-toggle.json-api.md +516 -0
  53. package/src/lib/components/inline-tree-select/pdx-inline-tree-select.json-api.md +637 -0
  54. package/src/lib/components/material-async-select/pdx-material-async-select.json-api.md +566 -0
  55. package/src/lib/components/material-autocomplete/pdx-material-autocomplete.json-api.md +561 -0
  56. package/src/lib/components/material-avatar/pdx-material-avatar.json-api.md +670 -0
  57. package/src/lib/components/material-button/pdx-material-button.json-api.md +572 -0
  58. package/src/lib/components/material-button-toggle/pdx-material-button-toggle.json-api.md +577 -0
  59. package/src/lib/components/material-checkbox-group/pdx-material-checkbox-group.json-api.md +611 -0
  60. package/src/lib/components/material-chips/pdx-material-chips.json-api.md +601 -0
  61. package/src/lib/components/material-colorpicker/pdx-material-colorpicker.json-api.md +545 -0
  62. package/src/lib/components/material-cpf-cnpj-input/pdx-material-cpf-cnpj-input.json-api.md +531 -0
  63. package/src/lib/components/material-currency/pdx-material-currency.json-api.md +569 -0
  64. package/src/lib/components/material-date-range/pdx-material-date-range.json-api.md +636 -0
  65. package/src/lib/components/material-datepicker/pdx-material-datepicker.json-api.md +551 -0
  66. package/src/lib/components/material-file-upload/pdx-material-file-upload.json-api.md +511 -0
  67. package/src/lib/components/material-multi-select/pdx-material-multi-select.json-api.md +596 -0
  68. package/src/lib/components/material-multi-select-tree/pdx-material-multi-select-tree.json-api.md +623 -0
  69. package/src/lib/components/material-price-range/pdx-material-price-range.json-api.md +619 -0
  70. package/src/lib/components/material-radio-group/pdx-material-radio-group.json-api.md +585 -0
  71. package/src/lib/components/material-range-slider/pdx-material-range-slider.json-api.md +664 -0
  72. package/src/lib/components/material-rating/pdx-material-rating.json-api.md +551 -0
  73. package/src/lib/components/material-searchable-select/pdx-material-searchable-select.json-api.md +602 -0
  74. package/src/lib/components/material-select/pdx-material-select.json-api.md +601 -0
  75. package/src/lib/components/material-selection-list/pdx-material-selection-list.json-api.md +607 -0
  76. package/src/lib/components/material-slide-toggle/pdx-material-slide-toggle.json-api.md +522 -0
  77. package/src/lib/components/material-slider/pdx-material-slider.json-api.md +602 -0
  78. package/src/lib/components/material-textarea/pdx-material-textarea.json-api.md +598 -0
  79. package/src/lib/components/material-timepicker/pdx-material-timepicker.json-api.md +554 -0
  80. package/src/lib/components/material-transfer-list/pdx-material-transfer-list.json-api.md +614 -0
  81. package/src/lib/components/material-tree-select/pdx-material-tree-select.json-api.md +649 -0
  82. package/src/lib/components/month-input/pdx-month-input.json-api.md +527 -0
  83. package/src/lib/components/number-input/pdx-number-input.json-api.md +594 -0
  84. package/src/lib/components/password-input/pdx-password-input.json-api.md +574 -0
  85. package/src/lib/components/pdx-material-time-range/pdx-material-time-range.json-api.md +592 -0
  86. package/src/lib/components/pdx-year-input/pdx-year-input.json-api.md +543 -0
  87. package/src/lib/components/phone-input/pdx-phone-input.json-api.md +583 -0
  88. package/src/lib/components/preload-status/pdx-preload-status.json-api.md +455 -0
  89. package/src/lib/components/search-input/pdx-search-input.json-api.md +536 -0
  90. package/src/lib/components/text-input/pdx-text-input.json-api.md +600 -0
  91. package/src/lib/components/time-input/pdx-time-input.json-api.md +546 -0
  92. package/src/lib/components/url-input/pdx-url-input.json-api.md +542 -0
  93. package/src/lib/components/week-input/pdx-week-input.json-api.md +533 -0
  94. package/{index.d.ts → types/praxisui-dynamic-fields.d.ts} +874 -440
  95. package/fesm2022/praxisui-dynamic-fields-index-C9IUU4lo.mjs +0 -1
  96. package/fesm2022/praxisui-dynamic-fields-index-GJtthzkD.mjs +0 -1
  97. package/fesm2022/praxisui-dynamic-fields-index-XvVS6lAQ.mjs +0 -1
@@ -0,0 +1,686 @@
1
+ ---
2
+ title: "pdx-color-picker JSON API (Canonical)"
3
+ slug: "pdx-color-picker-json-api"
4
+ doc_type: "api-reference"
5
+ component: "pdx-color-picker"
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 pdx-color-picker."
11
+ category: "components"
12
+ sub_category: "dynamic-fields"
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-dynamic-fields/src/lib/components/color-picker/pdx-color-picker.metadata.ts"
22
+ - "projects/praxis-dynamic-fields/src/lib/components/color-picker/pdx-color-picker.component.ts"
23
+ - "projects/praxis-core/src/lib/models/material-field-metadata.interface.ts"
24
+ - "projects/praxis-dynamic-fields/src/lib/base/simple-base-input.component.ts"
25
+ source_of_truth_last_verified: "2026-03-06"
26
+ last_updated: "2026-03-06"
27
+ toc: true
28
+ sidebar: true
29
+ tags:
30
+ - "json-api"
31
+ - "canonical-contract"
32
+ - "pdx-color-picker"
33
+ api_stability: "canonical"
34
+ schema_verified: true
35
+ runtime_verified: true
36
+ editor_coverage_verified: false
37
+ runtime_scope: "public"
38
+ legacy_paths_present: true
39
+ has_known_mismatches: false
40
+ related_components:
41
+ - "praxis-table"
42
+ - "pdx-base-input-runtime-contract"
43
+ - "pdx-color-input"
44
+ ---
45
+
46
+ # pdx-color-picker
47
+
48
+ Este documento e a referencia canonica da API JSON de pdx-color-picker.
49
+
50
+ ## Summary
51
+
52
+ - Tipo documental: API reference canonica de contrato JSON.
53
+ - Source of truth: runtime e codigo declarados no frontmatter.
54
+ - Objetivo operacional: consulta rapida, auditavel e deterministica sob pressao.
55
+ - Resumo funcional: Contrato JSON metadata-driven com comportamento definido por runtime e schema associado.
56
+
57
+ ## Purpose and scope
58
+
59
+ - O componente consome payload JSON metadata-driven e expoe comportamento runtime configuravel por contrato.
60
+ - Esta referencia cobre contrato publico, classificacao de paths e semantica de cobertura (runtime/schema/editor).
61
+ - Fora de escopo: quickstart, tutorial narrativo e notas arquiteturais que nao alteram contrato publico.
62
+
63
+ ## Consulta rapida (obrigatorio)
64
+
65
+ | Regra/tema | Observado | Canonico desejado | Status | Evidencia |
66
+ | --- | --- | --- | --- | --- |
67
+ | Component id | `pdx-color-picker` | Manter ID canonico estavel e versionado por contrato | Active | frontmatter.component |
68
+ | Primary contract source | `runtime-and-code` | Runtime, schema e docs devem permanecer rastreaveis | Partial | frontmatter.contract_source + source_of_truth |
69
+ | Runtime coverage | `true` | Comportamentos runtime criticos devem ficar explicitamente verificados | Active | `projects/praxis-dynamic-fields/src/lib/components/color-picker/pdx-color-picker.metadata.ts`, `projects/praxis-dynamic-fields/src/lib/components/color-picker/pdx-color-picker.component.ts` |
70
+ | Schema/type coverage | `true` | Tipos e schema devem refletir paths publicos do contrato | Active | source_of_truth + Detailed API reference |
71
+ | Editor/tooling coverage | `false` | Editor/tooling deve espelhar somente contrato publico suportado | 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` |
72
+ | Legacy paths | `true` | Segregar legado de caminhos canonicos com janela de migracao | Partial | frontmatter.legacy_paths_present |
73
+ | Known mismatches | `false` | Registrar observed vs desired de forma auditavel | Active | frontmatter.has_known_mismatches |
74
+
75
+ ## Source of truth
76
+
77
+ | Source | Kind | Notes |
78
+ | --- | --- | --- |
79
+ | projects/praxis-dynamic-fields/src/lib/components/color-picker/pdx-color-picker.metadata.ts | schema-metadata | Arquivo presente no repositorio e usado como evidencia de contrato. |
80
+ | projects/praxis-dynamic-fields/src/lib/components/color-picker/pdx-color-picker.component.ts | runtime-code | Arquivo presente no repositorio e usado como evidencia de contrato. |
81
+ | projects/praxis-core/src/lib/models/material-field-metadata.interface.ts | schema-types | Arquivo presente no repositorio e usado como evidencia de contrato. |
82
+ | projects/praxis-dynamic-fields/src/lib/base/simple-base-input.component.ts | runtime-code | Arquivo presente no repositorio e usado como evidencia de contrato. |
83
+
84
+ ## Support legend
85
+
86
+ - **Active**: suportado em runtime e liberado para uso externo.
87
+ - **Partial**: suporte parcial, com restricoes, lacunas ou validacao incompleta.
88
+ - **Declared-only**: declarado em tipos/schema sem evidencia operacional completa.
89
+ - **Schema-only**: presente em schema/tipos sem cobertura runtime confirmada.
90
+ - **Deprecated**: legado suportado por janela de migracao definida.
91
+
92
+ ## Contract status snapshot
93
+
94
+ | Item | Value | Notes |
95
+ | --- | --- | --- |
96
+ | Reference mode | `canonical` | Deve permanecer canonico |
97
+ | Contract format | `json` | Contrato metadata-driven |
98
+ | Contract source | `runtime-and-code` | Alinhar com source_of_truth |
99
+ | Runtime scope | `public` | Escopo publicado para consumidores |
100
+ | Runtime verified | `true` | Revisar sempre com evidencia de runtime |
101
+ | Schema verified | `true` | Revisar sempre com evidencia de tipos/schema |
102
+ | Editor coverage verified | `false` | Revisar sempre com evidencia de editor/tooling |
103
+ | Legacy paths present | `true` | Segregar legado de contrato canonico |
104
+ | Has known mismatches | `false` | Divergencias devem aparecer em secao dedicada |
105
+
106
+ ## Contract classification (obrigatorio)
107
+
108
+ ### Canonical paths (public contract)
109
+
110
+ | Path | Type | Required | Default | Status | Notes |
111
+ | --- | --- | --- | --- | --- | --- |
112
+ | `metadata` | object | true | n/a | Partial | See Detailed API reference for runtime semantics. |
113
+ | `readonlyMode` | boolean | false | n/a | Partial | See Detailed API reference for runtime semantics. |
114
+ | `disabledMode` | boolean | false | n/a | Partial | See Detailed API reference for runtime semantics. |
115
+ | `visible` | boolean | false | n/a | Partial | See Detailed API reference for runtime semantics. |
116
+ | `presentationMode` | boolean | false | n/a | Partial | See Detailed API reference for runtime semantics. |
117
+ | `metadata.controlType` | string | false | n/a | Partial | See Detailed API reference for runtime semantics. |
118
+ | `metadata.format` | string | false | n/a | Partial | See Detailed API reference for runtime semantics. |
119
+ | `metadata.views` | array | false | n/a | Partial | See Detailed API reference for runtime semantics. |
120
+
121
+ ### Supported legacy paths
122
+
123
+ | Legacy path | Canonical replacement | Support window | Runtime behavior | Notes |
124
+ | --- | --- | --- | --- | --- |
125
+ | `metadata.showPreview` | `metadata.boolean` | not-yet-defined | accepted for backward compatibility | Alias inferido da evidencia preservada; validar em runtime. |
126
+ | `metadata.showAlpha` | `metadata.boolean` | not-yet-defined | accepted for backward compatibility | Alias inferido da evidencia preservada; validar em runtime. |
127
+ | `metadata.showPreview` | `metadata.preview` | not-yet-defined | accepted for backward compatibility | Alias inferido da evidencia preservada; validar em runtime. |
128
+
129
+ ### Internal-only paths
130
+
131
+ Nao ha paths internal-only confirmados no contrato publico desta revisao.
132
+
133
+ ### Experimental paths
134
+
135
+ Nao ha paths experimentais confirmados no contrato publico desta revisao.
136
+
137
+ ## Public contract surface (obrigatorio)
138
+
139
+ ### Top-level configuration blocks
140
+
141
+ | Block | Purpose | Required | Merge strategy | Notes |
142
+ | --- | --- | --- | --- | --- |
143
+ | `metadata` | Payload declarativo principal do componente | true | deep-merge | runtime linkage verified for core flows (component specs, 2026-03-06). |
144
+ | `readonlyMode` | Override de readonly no host/runtime | false | override | runtime linkage verified for core flows (component specs, 2026-03-06). |
145
+ | `disabledMode` | Override de disabled no host/runtime | false | override | runtime linkage verified for core flows (component specs, 2026-03-06). |
146
+ | `visible` | Override de visibilidade no host/runtime | false | override | runtime linkage verified for core flows (component specs, 2026-03-06). |
147
+ | `presentationMode` | Renderizacao de apresentacao sem interacao | false | override | runtime linkage verified for core flows (component specs, 2026-03-06). |
148
+ | `gradientSettings` | Configuracao especifica de runtime | false | override | runtime linkage verified for core flows (component specs, 2026-03-06). |
149
+
150
+ ### Nested configuration blocks
151
+
152
+ | Path | Type | Required | Default | Constraints | Notes |
153
+ | --- | --- | --- | --- | --- | --- |
154
+ | `metadata.controlType` | string | false | n/a | component-defined | Partial; verify per source_of_truth. |
155
+ | `metadata.format` | string | false | n/a | component-defined | Partial; verify per source_of_truth. |
156
+ | `metadata.views` | array | false | n/a | component-defined | Partial; verify per source_of_truth. |
157
+ | `metadata.activeView` | string | false | n/a | component-defined | Partial; verify per source_of_truth. |
158
+ | `metadata.preview` | boolean | false | n/a | component-defined | Partial; verify per source_of_truth. |
159
+ | `metadata.showPreview` | boolean | false | n/a | component-defined | Partial; verify per source_of_truth. |
160
+ | `metadata.clearButton` | object | false | n/a | component-defined | Partial; verify per source_of_truth. |
161
+ | `metadata.actionsLayout` | string | false | n/a | component-defined | Partial; verify per source_of_truth. |
162
+ | `metadata.showAlpha` | boolean | false | n/a | component-defined | Partial; verify per source_of_truth. |
163
+ | `gradientSettings.showOpacity` | boolean | false | n/a | component-defined | Partial; verify per source_of_truth. |
164
+
165
+ ### Input bindings (inbound data)
166
+
167
+ | Binding/Path | Type | Required | Source | Runtime normalization | Notes |
168
+ | --- | --- | --- | --- | --- | --- |
169
+ | `metadata` | object | true | host-json | component-defined | Primary inbound contract payload. |
170
+ | `readonlyMode` | boolean | false | host-runtime | not-yet-verified | Host-level behavioral override. |
171
+ | `disabledMode` | boolean | false | host-runtime | not-yet-verified | Host-level behavioral override. |
172
+ | `visible` | boolean | false | host-runtime | not-yet-verified | Host-level behavioral override. |
173
+ | `presentationMode` | boolean | false | host-runtime | not-yet-verified | Host-level behavioral override. |
174
+
175
+ ### Output events
176
+
177
+ | Event | Payload | Trigger | Stability | Notes |
178
+ | --- | --- | --- | --- | --- |
179
+ | `valueChange` | unknown | runtime-event | Experimental | Validate payload shape against source_of_truth. |
180
+ | `open` | unknown | runtime-event | Experimental | Validate payload shape against source_of_truth. |
181
+ | `close` | unknown | runtime-event | Experimental | Validate payload shape against source_of_truth. |
182
+ | `cancel` | unknown | runtime-event | Experimental | Validate payload shape against source_of_truth. |
183
+ | `activeViewChange` | unknown | runtime-event | Experimental | Validate payload shape against source_of_truth. |
184
+ | `activeColorClick` | unknown | runtime-event | Experimental | Validate payload shape against source_of_truth. |
185
+ | `focusEvent` | unknown | runtime-event | Experimental | Validate payload shape against source_of_truth. |
186
+ | `blurEvent` | unknown | runtime-event | Experimental | Validate payload shape against source_of_truth. |
187
+ | `focusChange` | unknown | runtime-event | Experimental | Validate payload shape against source_of_truth. |
188
+ | `nativeBlur` | unknown | runtime-event | Experimental | Validate payload shape against source_of_truth. |
189
+ | `nativeChange` | unknown | runtime-event | Experimental | Validate payload shape against source_of_truth. |
190
+
191
+ ### External side channels
192
+
193
+ | Channel | Direction | Contract | Failure mode | Notes |
194
+ | --- | --- | --- | --- | --- |
195
+ | `host/services/storage` | bidirectional | component-defined | component-defined | Side channels variam por componente e host; verificar em source_of_truth. |
196
+
197
+ ### Host/runtime dependencies
198
+
199
+ | Dependency | Required | Environment | Purpose | Notes |
200
+ | --- | --- | --- | --- | --- |
201
+ | `pdx-color-picker.metadata.ts` | true | browser/dev/prod/ssr | contract resolution | Refer to `projects/praxis-dynamic-fields/src/lib/components/color-picker/pdx-color-picker.metadata.ts`. |
202
+ | `pdx-color-picker.component.ts` | true | browser/dev/prod/ssr | contract resolution | Refer to `projects/praxis-dynamic-fields/src/lib/components/color-picker/pdx-color-picker.component.ts`. |
203
+ | `material-field-metadata.interface.ts` | true | browser/dev/prod/ssr | contract resolution | Refer to `projects/praxis-core/src/lib/models/material-field-metadata.interface.ts`. |
204
+ | `simple-base-input.component.ts` | true | browser/dev/prod/ssr | contract resolution | Refer to `projects/praxis-dynamic-fields/src/lib/base/simple-base-input.component.ts`. |
205
+
206
+ ## Coverage by surface (obrigatorio)
207
+
208
+ ### Coverage matrix (runtime, schema/type, editor/tooling)
209
+
210
+ | Surface | Verified | Coverage status | Evidence | Notes |
211
+ | --- | --- | --- | --- | --- |
212
+ | Runtime | `true` | Active | `projects/praxis-dynamic-fields/src/lib/components/color-picker/pdx-color-picker.metadata.ts`, `projects/praxis-dynamic-fields/src/lib/components/color-picker/pdx-color-picker.component.ts` | Core runtime flows verified via focused component specs on 2026-03-06; editor/tooling coverage remains independent. |
213
+ | Schema/Types | `true` | Active | source_of_truth + Detailed API reference | Reconcile schema/types with canonical paths during follow-up when needed. |
214
+ | 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. |
215
+
216
+ ### Runtime coverage boundaries
217
+
218
+ - Ambientes suportados: browser/dev/prod; SSR/hydration appears to be component-dependent unless explicitly verified.
219
+ - Pre-condicoes: payload JSON valido, bindings de host consistentes e dependencias descritas no source_of_truth.
220
+ - Fora de cobertura confirmada: caminhos internos, experimentais ou aliases nao enumerados formalmente.
221
+
222
+ ### Editor and tooling notes
223
+
224
+ - Evidencia de tooling: selector `pdx-*` mapeado em `DEFAULT_FIELD_SELECTOR_CONTROL_TYPE_MAP` e semeado no `ComponentRegistryService`; editor visual E2E permanece not-yet-verified.
225
+ - O que esta exposto no editor visual depende da cobertura real do workspace e nao deve ser inferido como suporte runtime total.
226
+ - Campos disponiveis apenas via JSON/manual devem continuar no contrato, com rotulo explicito de cobertura parcial.
227
+ - Quando houver divergencia entre editor e runtime, manter mismatch rastreavel em secao dedicada.
228
+
229
+ ## Resolution and precedence model (obrigatorio)
230
+
231
+ ### Merge order
232
+
233
+ 1. defaults do componente
234
+ 2. contrato JSON recebido
235
+ 3. overrides de host/runtime
236
+ 4. normalizacoes internas
237
+
238
+ ### Fallback order
239
+
240
+ contrato explicito -> aliases legados (quando suportados) -> defaults internos -> comportamento seguro
241
+
242
+ ### Override points
243
+
244
+ - inputs publicos do componente
245
+ - configuracao JSON de runtime
246
+ - integracoes de host (servicos/tokens/adapters)
247
+
248
+ ### Runtime normalization
249
+
250
+ Alias e defaults devem convergir para paths canonicos; onde nao houver evidencia, manter not-yet-verified de forma explicita.
251
+
252
+ ### Precedence rules
253
+
254
+ Em conflito entre alias legado e path canonico, priorizar path canonico e registrar janela de migracao do legado.
255
+
256
+ ## Validation and error semantics (obrigatorio)
257
+
258
+ ### Validation model
259
+
260
+ | Path/Rule | Validation phase | Behavior on fail | Error code / warning | Notes |
261
+ | --- | --- | --- | --- | --- |
262
+ | canonical-paths | parse/runtime | component-defined (warn/reject/default) | not-yet-standardized | Semantica detalhada preservada na referencia tecnica por componente. |
263
+
264
+ ### Invalid and unknown field handling
265
+
266
+ - Campos desconhecidos: comportamento component-defined (ignore, warn ou reject).
267
+ - Tipos invalidos: pode haver fallback, warning ou falha, conforme runtime especifico.
268
+ - Valores fora de dominio: registrar observed vs desired em Known limitations and mismatches.
269
+
270
+ ### Fail-open / fail-closed behavior
271
+
272
+ | Condition | Mode | Runtime behavior | Consumer impact |
273
+ | --- | --- | --- | --- |
274
+ | invalid-or-unknown-field | component-defined | not-yet-verified | Pode gerar warning, fallback silencioso ou rejeicao; validar por componente. |
275
+
276
+ ### Runtime warnings vs hard failures
277
+
278
+ | Condition | Severity | Observability | Consumer action |
279
+ | --- | --- | --- | --- |
280
+ | partial-or-declared-only-coverage | warning | logs/eventos do componente | Confirmar ligacao runtime antes de uso critico. |
281
+ | mismatch-confirmed | error-or-warning | componente/host observability | Planejar migracao e corrigir contrato/runtime. |
282
+
283
+ ## Detailed API reference
284
+ ### Preserved technical reference (normalized from previous revision)
285
+
286
+ ### 1. Visao Geral e Quando Usar
287
+ `pdx-color-picker` e o color picker avancado orientado por JSON em `@praxisui/dynamic-fields`.
288
+
289
+ Use quando precisar:
290
+ - selecao de cor com abas (gradiente e paleta);
291
+ - fluxo de `Aplicar` / `Cancelar` / `Limpar`;
292
+ - persistencia local de cores customizadas e recentes;
293
+ - conversao de formato (`hex`, `rgb`, `rgba`, `hsl`) e preview.
294
+
295
+ ### 2. API do Componente (Inputs/Outputs)
296
+ | Propriedade | Tipo | Padrao | Obrigatorio | Comportamento |
297
+ | --- | --- | --- | --- | --- |
298
+ | `metadata` | `any` | - | Sim | Payload principal do componente. |
299
+ | `readonlyMode` | `boolean` | `false` | Nao | Sobrescreve leitura no host. |
300
+ | `disabledMode` | `boolean` | `false` | Nao | Sobrescreve estado disabled no host. |
301
+ | `visible` | `boolean` | `true` | Nao | Controla exibicao no host. |
302
+ | `presentationMode` | `boolean` | `false` | Nao | Modo apresentacao (sem edicao). |
303
+ | `valueChange` | `string \| null` | - | Output | Emite valor final ao aplicar alteracao. |
304
+ | `open` | `void` | - | Output | Emite ao abrir fluxo de selecao. |
305
+ | `close` | `void` | - | Output | Emite ao fechar painel. |
306
+ | `cancel` | `void` | - | Output | Emite ao cancelar alteracoes. |
307
+ | `activeViewChange` | `'gradient' \| 'palette'` | - | Output | Emite troca de aba ativa. |
308
+ | `activeColorClick` | `string` | - | Output | Emite clique em swatch da paleta. |
309
+ | `focusEvent` | `void` | - | Output | Emite ao receber foco. |
310
+ | `blurEvent` | `void` | - | Output | Emite ao perder foco. |
311
+
312
+ ### 3. Matriz de Cobertura JSON (Completa)
313
+ #### 3.1 Campos especificos do componente
314
+ | Caminho JSON | Tipo | Status | Comportamento em runtime |
315
+ | --- | --- | --- | --- |
316
+ | `metadata.controlType` | `'colorPicker'` | Ativo | Identifica contrato do componente no host. |
317
+ | `metadata.format` | `'hex' \| 'rgb' \| 'rgba' \| 'hsl'` | Ativo | Define formato final em `onApply()`. |
318
+ | `metadata.views` | `Array<'gradient' \| 'palette'>` | Extensao de runtime | Define abas habilitadas. |
319
+ | `metadata.activeView` | `'gradient' \| 'palette'` | Extensao de runtime | Define aba inicial ativa. |
320
+ | `metadata.preview` | `boolean` | Extensao de runtime | Exibe/oculta preview superior do painel. |
321
+ | `metadata.showPreview` | `boolean` | Ativo | Alias legado de `preview`. |
322
+ | `metadata.clearButton` | `boolean \| object` | Ativo | Configura botao de limpar (icone/tooltip/aria). |
323
+ | `metadata.actionsLayout` | `'start' \| 'end'` | Extensao de runtime | Posiciona botoes de acao no rodape. |
324
+ | `metadata.showAlpha` | `boolean` | Ativo | Alias legado para `gradientSettings.showOpacity`. |
325
+ | `metadata.gradientSettings.showOpacity` | `boolean` | Extensao de runtime | Exibe slider de opacidade. |
326
+ | `metadata.gradientSettings.channel` | `'hsv' \| 'hsl'` | Extensao de runtime | Campo aceito no contrato atual (sem variacao visual completa no MVP). |
327
+ | `metadata.paletteSettings.preset` | `string` | Extensao de runtime | Seleciona preset de paleta (`basic`, `office`, `material`). |
328
+ | `metadata.paletteSettings.colors` | `string[]` | Extensao de runtime | Sobrescreve cores base da paleta. |
329
+ | `metadata.paletteSettings.columns` | `number` | Extensao de runtime | Define colunas da grade de swatches. |
330
+ | `metadata.popupSettings.width` | `number \| string` | Extensao de runtime | Define largura do painel popup. |
331
+ | `metadata.popupSettings.anchor` | `Element` | Extensao de runtime | Campo aceito para evolucao de ancoragem. |
332
+ | `metadata.popupSettings.appendTo` | `Element \| ViewContainerRef` | Extensao de runtime | Campo aceito para evolucao de portal/append. |
333
+ | `metadata.adaptiveMode` | `boolean` | Extensao de runtime | Marca intencao adaptive (MVP ainda usa menu). |
334
+ | `metadata.adaptiveTitle` | `string` | Extensao de runtime | Campo aceito para fluxo adaptive. |
335
+ | `metadata.adaptiveSubtitle` | `any` | Extensao de runtime | Campo aceito para fluxo adaptive. |
336
+ | `metadata.fillMode` | `'solid' \| 'flat' \| 'outline'` | Extensao de runtime | Campo aceito para theming do trigger. |
337
+ | `metadata.rounded` | `'none' \| 'small' \| 'medium' \| 'large' \| 'full'` | Extensao de runtime | Campo aceito para theming do trigger. |
338
+ | `metadata.size` | `'small' \| 'medium' \| 'large'` | Extensao de runtime | Campo aceito para theming do trigger. |
339
+ | `metadata.icon` | `string` | Extensao de runtime | Icone do botao de abrir picker. |
340
+ | `metadata.iconClass` | `string \| string[] \| object` | Extensao de runtime | Campo aceito para classes de icone. |
341
+ | `metadata.svgIcon` | `SVGIcon` | Extensao de runtime | Campo aceito para icone SVG. |
342
+ | `metadata.tabindex` | `number` | Extensao de runtime | Tab order do input. |
343
+ | `metadata.disabled` | `boolean` | Extensao de runtime | Sobrescreve `disabledMode` localmente. |
344
+ | `metadata.readonly` | `boolean` | Extensao de runtime | Sobrescreve `readonlyMode` localmente. |
345
+ | `metadata.visible` | `boolean` | Extensao de runtime | Sobrescreve visibilidade local. |
346
+ | `metadata.presentationMode` | `boolean` | Extensao de runtime | Sobrescreve modo apresentacao local. |
347
+ | `metadata.presetColors` | `string[]` | Declared-only | Declarado na interface de core, sem consumo direto neste componente. |
348
+ | `metadata.allowCustomColors` | `boolean` | Declared-only | Declarado na interface de core, sem flag dedicada no runtime atual. |
349
+ | `metadata.variant` | `'compact' \| 'default' \| 'block'` | Declared-only | Declarado na interface de core, sem template dedicado. |
350
+ | `metadata.showInput` | `boolean` | Declared-only | Declarado na interface de core, sem toggle especifico do input. |
351
+
352
+ #### 3.2 Campos herdados compartilhados (exaustivo)
353
+ Contrato completo dos campos herdados consumidos por `SimpleBaseInput`:
354
+ - [pdx-base-input-runtime-contract.json-api.md](projects/praxis-dynamic-fields/src/lib/base/pdx-base-input-runtime-contract.json-api.md)
355
+
356
+ Resumo de composicao deste componente:
357
+ - `Ativo`: campos legado/compativeis de `MaterialColorPickerMetadata` + clear.
358
+ - `Extensao de runtime`: contrato avancado de views/palette/popup/theming.
359
+ - `Declared-only`: parte da interface de core ainda sem efeito no template atual.
360
+
361
+ ### 4. Mapeamento de Comportamento
362
+ - Paginacao: nao se aplica.
363
+ - Ordenacao: nao se aplica.
364
+ - Selecao: valor de cor em string, aplicado apenas ao confirmar (`Aplicar`).
365
+ - Eventos: `open`, `close`, `cancel`, `activeViewChange`, `activeColorClick`, `valueChange`.
366
+ - Renderizacao: `mat-form-field` + painel com tabs, preview, swatches e acoes.
367
+
368
+ ### 5. Exemplo Minimo (JSON + Uso)
369
+ ```json
370
+ {
371
+ "componentId": "pdx-color-picker",
372
+ "metadata": {
373
+ "name": "brandColor",
374
+ "label": "Cor da marca",
375
+ "controlType": "colorPicker",
376
+ "format": "hex"
377
+ }
378
+ }
379
+ ```
380
+ Uso: abre seletor de cor e retorna valor no formato hexadecimal ao clicar em `Aplicar`.
381
+
382
+ ### 6. Exemplo Corporativo (JSON + Uso)
383
+ ```json
384
+ {
385
+ "componentId": "pdx-color-picker",
386
+ "metadata": {
387
+ "name": "statusColor",
388
+ "label": "Cor do status",
389
+ "controlType": "colorPicker",
390
+ "format": "rgba",
391
+ "views": ["gradient", "palette"],
392
+ "activeView": "palette",
393
+ "preview": true,
394
+ "clearButton": {
395
+ "enabled": true,
396
+ "showOnlyWhenFilled": true,
397
+ "tooltip": "Limpar cor"
398
+ },
399
+ "actionsLayout": "end",
400
+ "showAlpha": true,
401
+ "paletteSettings": {
402
+ "preset": "office",
403
+ "columns": 6,
404
+ "colors": ["#0057B8", "#F28C00", "#009739", "#E30613"]
405
+ },
406
+ "popupSettings": {
407
+ "width": 420
408
+ },
409
+ "adaptiveMode": true,
410
+ "adaptiveTitle": "Escolher cor",
411
+ "rounded": "medium",
412
+ "size": "medium",
413
+ "icon": "mi:palette",
414
+ "tabindex": 0,
415
+ "hint": "Use apenas cores homologadas de branding."
416
+ }
417
+ }
418
+ ```
419
+ Uso: configura fluxo corporativo completo de escolha de cor com alpha, paleta padronizada e controles de UX.
420
+
421
+ ### 7. Troubleshooting e Armadilhas Comuns
422
+ 1. Esperar que `adaptiveMode=true` troque automaticamente para bottom sheet.
423
+ Correcao: no runtime atual o fluxo principal ainda usa `mat-menu`; `adaptiveMode` e preparatorio.
424
+
425
+ 2. Definir `presetColors` e nao ver efeito.
426
+ Correcao: o componente usa `paletteSettings.colors`; `presetColors` da interface de core nao e consumido diretamente.
427
+
428
+ 3. Esperar atualizacao de valor sem clicar `Aplicar`.
429
+ Correcao: mudancas ficam em rascunho (`draft`) ate confirmar com `Aplicar`.
430
+
431
+ 4. Preencher `showInput` ou `variant` e nao notar mudanca visual.
432
+ Correcao: esses campos estao declarados na interface, mas ainda sem comportamento dedicado no template atual.
433
+
434
+ 5. Perder historico de cores recentes/customizadas.
435
+ Correcao: persistencia usa `localStorage`; verificar politica corporativa do navegador/sandbox.
436
+
437
+ ### 8. Cross-links
438
+ - `projects/praxis-dynamic-fields/src/lib/base/pdx-base-input-runtime-contract.json-api.md`
439
+ - `projects/praxis-dynamic-fields/src/lib/components/color-input/pdx-color-input.json-api.md`
440
+ - `projects/praxis-dynamic-fields/src/lib/components/material-colorpicker/material-colorpicker.component.ts`
441
+
442
+ ### 9. Relatorio de Validacao Estrutural
443
+ - Visao geral: PASS
444
+ - API (inputs/outputs): PASS
445
+ - Cobertura JSON completa (especifico + herdado): PASS
446
+ - Mapeamento de comportamento: PASS
447
+ - Exemplo minimo: PASS
448
+ - Exemplo corporativo: PASS
449
+ - Troubleshooting: PASS
450
+
451
+ ## JSON path index (obrigatorio)
452
+
453
+ | Path | Type | Required | Default | Status | Notes |
454
+ | --- | --- | --- | --- | --- | --- |
455
+ | `metadata` | object | true | n/a | Partial | See Detailed API reference. |
456
+ | `readonlyMode` | boolean | false | n/a | Partial | See Detailed API reference. |
457
+ | `disabledMode` | boolean | false | n/a | Partial | See Detailed API reference. |
458
+ | `visible` | boolean | false | n/a | Partial | See Detailed API reference. |
459
+ | `presentationMode` | boolean | false | n/a | Partial | See Detailed API reference. |
460
+ | `metadata.controlType` | string | false | n/a | Partial | See Detailed API reference. |
461
+ | `metadata.format` | string | false | n/a | Partial | See Detailed API reference. |
462
+ | `metadata.views` | array | false | n/a | Partial | See Detailed API reference. |
463
+ | `metadata.activeView` | string | false | n/a | Partial | See Detailed API reference. |
464
+ | `metadata.preview` | boolean | false | n/a | Partial | See Detailed API reference. |
465
+ | `metadata.showPreview` | boolean | false | n/a | Partial | See Detailed API reference. |
466
+ | `metadata.clearButton` | object | false | n/a | Partial | See Detailed API reference. |
467
+ | `metadata.actionsLayout` | string | false | n/a | Partial | See Detailed API reference. |
468
+ | `metadata.showAlpha` | boolean | false | n/a | Partial | See Detailed API reference. |
469
+ | `gradientSettings.showOpacity` | boolean | false | n/a | Partial | See Detailed API reference. |
470
+ | `metadata.gradientSettings.showOpacity` | boolean | false | n/a | Partial | See Detailed API reference. |
471
+ | `metadata.gradientSettings.channel` | string | false | n/a | Partial | See Detailed API reference. |
472
+ | `metadata.paletteSettings.preset` | string | false | n/a | Partial | See Detailed API reference. |
473
+ | `metadata.paletteSettings.colors` | array | false | n/a | Partial | See Detailed API reference. |
474
+ | `metadata.paletteSettings.columns` | array | false | n/a | Partial | See Detailed API reference. |
475
+
476
+ ## Events reference (obrigatorio)
477
+
478
+ | Event | Payload | Trigger | Stability | Notes |
479
+ | --- | --- | --- | --- | --- |
480
+ | `valueChange` | unknown | runtime-event | Experimental | Check component/runtime implementation. |
481
+ | `open` | unknown | runtime-event | Experimental | Check component/runtime implementation. |
482
+ | `close` | unknown | runtime-event | Experimental | Check component/runtime implementation. |
483
+ | `cancel` | unknown | runtime-event | Experimental | Check component/runtime implementation. |
484
+ | `activeViewChange` | unknown | runtime-event | Experimental | Check component/runtime implementation. |
485
+ | `activeColorClick` | unknown | runtime-event | Experimental | Check component/runtime implementation. |
486
+ | `focusEvent` | unknown | runtime-event | Experimental | Check component/runtime implementation. |
487
+ | `blurEvent` | unknown | runtime-event | Experimental | Check component/runtime implementation. |
488
+ | `focusChange` | unknown | runtime-event | Experimental | Check component/runtime implementation. |
489
+ | `nativeBlur` | unknown | runtime-event | Experimental | Check component/runtime implementation. |
490
+ | `nativeChange` | unknown | runtime-event | Experimental | Check component/runtime implementation. |
491
+
492
+ ## Styling API (obrigatorio quando aplicavel)
493
+
494
+ | Token/Class | Scope | Purpose | Notes |
495
+ | --- | --- | --- | --- |
496
+ | `metadata.paletteSettings.colors` | component | Styling-related JSON path | Validate against runtime implementation. |
497
+
498
+ ## Examples (obrigatorio)
499
+
500
+ | Example | Scenario | Validates | Notes |
501
+ | --- | --- | --- | --- |
502
+ | `Minimal valid` | baseline payload | required contract blocks | Extracted from preserved technical reference when available. |
503
+ | `Common setup` | common component usage | standard runtime behavior | Validate against host integration path. |
504
+ | `Advanced setup` | richer config with overrides | precedence and normalization | Requires runtime confirmation for edge cases. |
505
+ | `Enterprise scenario` | governance/legacy/migration context | auditability and compatibility boundaries | Include tenant-specific constraints when applicable. |
506
+
507
+ ### Minimal valid
508
+
509
+ ```json
510
+ {
511
+ "componentId": "pdx-color-picker",
512
+ "metadata": {
513
+ "name": "brandColor",
514
+ "label": "Cor da marca",
515
+ "controlType": "colorPicker",
516
+ "format": "hex"
517
+ },
518
+ "readonlyMode": false
519
+ }
520
+ ```
521
+
522
+ ### Common setup
523
+
524
+ ```json
525
+ {
526
+ "componentId": "pdx-color-picker",
527
+ "metadata": {
528
+ "name": "statusColor",
529
+ "label": "Cor do status",
530
+ "controlType": "pdx-color-picker-common",
531
+ "format": "rgba",
532
+ "views": [
533
+ "gradient",
534
+ "palette"
535
+ ],
536
+ "activeView": "palette",
537
+ "preview": true,
538
+ "clearButton": {
539
+ "enabled": true,
540
+ "showOnlyWhenFilled": true,
541
+ "tooltip": "Limpar cor"
542
+ },
543
+ "actionsLayout": "end",
544
+ "showAlpha": true,
545
+ "paletteSettings": {
546
+ "preset": "office",
547
+ "columns": 6,
548
+ "colors": [
549
+ "#0057B8",
550
+ "#F28C00",
551
+ "#009739",
552
+ "#E30613"
553
+ ]
554
+ },
555
+ "popupSettings": {
556
+ "width": 420
557
+ },
558
+ "adaptiveMode": true,
559
+ "adaptiveTitle": "Escolher cor",
560
+ "rounded": "medium",
561
+ "size": "medium",
562
+ "icon": "mi:palette",
563
+ "tabindex": 0,
564
+ "hint": "Use apenas cores homologadas de branding."
565
+ }
566
+ }
567
+ ```
568
+
569
+ ### Advanced setup
570
+
571
+ ```json
572
+ {
573
+ "componentId": "pdx-color-picker",
574
+ "metadata": {
575
+ "name": "statusColor",
576
+ "label": "Cor do status",
577
+ "controlType": "colorPicker",
578
+ "format": "rgba",
579
+ "views": [
580
+ "gradient",
581
+ "palette"
582
+ ],
583
+ "activeView": "palette",
584
+ "preview": true,
585
+ "clearButton": {
586
+ "enabled": true,
587
+ "showOnlyWhenFilled": true,
588
+ "tooltip": "Limpar cor"
589
+ },
590
+ "actionsLayout": "end",
591
+ "showAlpha": true,
592
+ "paletteSettings": {
593
+ "preset": "office",
594
+ "columns": 6,
595
+ "colors": [
596
+ "#0057B8",
597
+ "#F28C00",
598
+ "#009739",
599
+ "#E30613"
600
+ ]
601
+ },
602
+ "popupSettings": {
603
+ "width": 5
604
+ },
605
+ "adaptiveMode": true,
606
+ "adaptiveTitle": "Escolher cor",
607
+ "rounded": "medium",
608
+ "size": "medium",
609
+ "icon": "mi:palette",
610
+ "tabindex": 0,
611
+ "hint": "Use apenas cores homologadas de branding."
612
+ },
613
+ "readonlyMode": false,
614
+ "disabledMode": false
615
+ }
616
+ ```
617
+
618
+ ### Enterprise scenario
619
+
620
+ ```json
621
+ {
622
+ "componentId": "pdx-color-picker",
623
+ "metadata": {
624
+ "name": "statusColor",
625
+ "label": "Cor do status",
626
+ "controlType": "colorPicker",
627
+ "format": "rgba",
628
+ "views": [
629
+ "gradient",
630
+ "palette"
631
+ ],
632
+ "activeView": "palette",
633
+ "preview": true,
634
+ "clearButton": {
635
+ "enabled": true,
636
+ "showOnlyWhenFilled": true,
637
+ "tooltip": "Limpar cor"
638
+ },
639
+ "actionsLayout": "end",
640
+ "showAlpha": true,
641
+ "paletteSettings": {
642
+ "preset": "office",
643
+ "columns": 6,
644
+ "colors": [
645
+ "#0057B8",
646
+ "#F28C00",
647
+ "#009739",
648
+ "#E30613"
649
+ ]
650
+ },
651
+ "popupSettings": {
652
+ "width": 420
653
+ },
654
+ "adaptiveMode": true,
655
+ "adaptiveTitle": "Escolher cor",
656
+ "rounded": "medium",
657
+ "size": "medium",
658
+ "icon": "mi:palette",
659
+ "tabindex": 0,
660
+ "hint": "Use apenas cores homologadas de branding."
661
+ },
662
+ "presentationMode": true,
663
+ "visible": true
664
+ }
665
+ ```
666
+
667
+ ## Compatibility and migration notes (recomendado)
668
+
669
+ | Concern | Affected versions | Migration action | Deadline | Notes |
670
+ | --- | --- | --- | --- | --- |
671
+ | Legacy aliases coexist with canonical paths | Active consumers using legacy JSON keys | Keep canonical paths for new usage and map aliases in migration backlog | not-yet-defined | Track via component-level migration issue |
672
+
673
+ ## Known limitations and mismatches (recomendado)
674
+
675
+ | Path/Behavior | Observed behavior (runtime) | Desired behavior | Impact | Tracking issue | Target fix |
676
+ | --- | --- | --- | --- | --- | --- |
677
+ | Canonical contract parity | No confirmed mismatch in this revision; runtime linkage verified for core flows (2026-03-06), with editor/tooling coverage pending | Keep runtime/schema/editor alignment evidence updated | Low | n/a | Monitor in periodic audit |
678
+
679
+ ## Source references (obrigatorio)
680
+
681
+ | Source type | Path/URL | Why it is source of truth | Last verified (YYYY-MM-DD) | Notes |
682
+ | --- | --- | --- | --- | --- |
683
+ | schema-metadata | projects/praxis-dynamic-fields/src/lib/components/color-picker/pdx-color-picker.metadata.ts | Primary source of truth for contract and behavior. | 2026-03-06 | verified-path |
684
+ | runtime-code | projects/praxis-dynamic-fields/src/lib/components/color-picker/pdx-color-picker.component.ts | Primary source of truth for contract and behavior. | 2026-03-06 | verified-path |
685
+ | schema-types | projects/praxis-core/src/lib/models/material-field-metadata.interface.ts | Primary source of truth for contract and behavior. | 2026-03-06 | verified-path |
686
+ | runtime-code | projects/praxis-dynamic-fields/src/lib/base/simple-base-input.component.ts | Primary source of truth for contract and behavior. | 2026-03-06 | verified-path |