@praxisui/dynamic-fields 8.0.0-beta.19 → 8.0.0-beta.20

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 (91) hide show
  1. package/docs/dynamic-fields-field-catalog.md +217 -0
  2. package/docs/dynamic-fields-field-selection-guide.md +181 -0
  3. package/docs/dynamic-fields-host-custom-field-guide.md +252 -0
  4. package/docs/dynamic-fields-host-custom-field-troubleshooting.md +160 -0
  5. package/docs/dynamic-fields-inline-components-guide.md +580 -0
  6. package/docs/dynamic-fields-inline-filter-catalog.md +497 -0
  7. package/docs/dynamic-fields-inline-filter-custom-component-guide.md +241 -0
  8. package/docs/dynamic-fields-inline-filter-inventory.md +247 -0
  9. package/docs/dynamic-fields-inline-filter-runtime-contract.md +367 -0
  10. package/docs/dynamic-fields-inline-filter-selection-guide.md +419 -0
  11. package/docs/dynamic-fields-inline-filter-troubleshooting.md +201 -0
  12. package/docs/dynamic-fields-inventory.md +206 -0
  13. package/docs/dynamic-fields-playground-catalog-plan.md +243 -0
  14. package/docs/generic-crud-service.md +152 -0
  15. package/fesm2022/praxisui-dynamic-fields-index-CrHhyUMO.mjs +1 -0
  16. package/fesm2022/praxisui-dynamic-fields.mjs +6343 -673
  17. package/index.d.ts +564 -36
  18. package/package.json +4 -4
  19. package/src/lib/base/pdx-base-input-runtime-contract.json-api.md +497 -0
  20. package/src/lib/base/pdx-base-select-runtime-contract.json-api.md +474 -0
  21. package/src/lib/components/color-input/pdx-color-input.json-api.md +573 -0
  22. package/src/lib/components/color-picker/pdx-color-picker.json-api.md +686 -0
  23. package/src/lib/components/date-input/pdx-date-input.json-api.md +581 -0
  24. package/src/lib/components/datetime-local-input/pdx-datetime-local-input.json-api.md +560 -0
  25. package/src/lib/components/email-input/pdx-email-input.json-api.md +546 -0
  26. package/src/lib/components/field-shell/praxis-field-shell.json-api.md +522 -0
  27. package/src/lib/components/inline-async-select/pdx-inline-async-select.json-api.md +566 -0
  28. package/src/lib/components/inline-autocomplete/pdx-inline-autocomplete.json-api.md +554 -0
  29. package/src/lib/components/inline-color-label/pdx-inline-color-label.json-api.md +615 -0
  30. package/src/lib/components/inline-currency/pdx-inline-currency.json-api.md +542 -0
  31. package/src/lib/components/inline-currency-range/pdx-inline-currency-range.json-api.md +630 -0
  32. package/src/lib/components/inline-date/pdx-inline-date.json-api.md +529 -0
  33. package/src/lib/components/inline-date-range/pdx-inline-date-range.json-api.md +589 -0
  34. package/src/lib/components/inline-distance-radius/pdx-inline-distance-radius.json-api.md +649 -0
  35. package/src/lib/components/inline-entity-lookup/pdx-inline-entity-lookup.json-api.md +617 -0
  36. package/src/lib/components/inline-input/pdx-inline-input.json-api.md +538 -0
  37. package/src/lib/components/inline-multi-select/pdx-inline-multi-select.json-api.md +566 -0
  38. package/src/lib/components/inline-number/pdx-inline-number.json-api.md +533 -0
  39. package/src/lib/components/inline-pipeline-status/pdx-inline-pipeline-status.json-api.md +619 -0
  40. package/src/lib/components/inline-range-slider/pdx-inline-range-slider.json-api.md +605 -0
  41. package/src/lib/components/inline-rating/pdx-inline-rating.json-api.md +594 -0
  42. package/src/lib/components/inline-relative-period/pdx-inline-relative-period.json-api.md +623 -0
  43. package/src/lib/components/inline-score-priority/pdx-inline-score-priority.json-api.md +632 -0
  44. package/src/lib/components/inline-searchable-select/pdx-inline-searchable-select.json-api.md +564 -0
  45. package/src/lib/components/inline-select/pdx-inline-select.json-api.md +571 -0
  46. package/src/lib/components/inline-sentiment/pdx-inline-sentiment.json-api.md +661 -0
  47. package/src/lib/components/inline-time/pdx-inline-time.json-api.md +573 -0
  48. package/src/lib/components/inline-time-range/pdx-inline-time-range.json-api.md +635 -0
  49. package/src/lib/components/inline-toggle/pdx-inline-toggle.json-api.md +516 -0
  50. package/src/lib/components/inline-tree-select/pdx-inline-tree-select.json-api.md +637 -0
  51. package/src/lib/components/material-async-select/pdx-material-async-select.json-api.md +566 -0
  52. package/src/lib/components/material-autocomplete/pdx-material-autocomplete.json-api.md +561 -0
  53. package/src/lib/components/material-avatar/pdx-material-avatar.json-api.md +666 -0
  54. package/src/lib/components/material-button/pdx-material-button.json-api.md +572 -0
  55. package/src/lib/components/material-button-toggle/pdx-material-button-toggle.json-api.md +577 -0
  56. package/src/lib/components/material-checkbox-group/pdx-material-checkbox-group.json-api.md +611 -0
  57. package/src/lib/components/material-chips/pdx-material-chips.json-api.md +601 -0
  58. package/src/lib/components/material-colorpicker/pdx-material-colorpicker.json-api.md +545 -0
  59. package/src/lib/components/material-cpf-cnpj-input/pdx-material-cpf-cnpj-input.json-api.md +531 -0
  60. package/src/lib/components/material-currency/pdx-material-currency.json-api.md +569 -0
  61. package/src/lib/components/material-date-range/pdx-material-date-range.json-api.md +623 -0
  62. package/src/lib/components/material-datepicker/pdx-material-datepicker.json-api.md +537 -0
  63. package/src/lib/components/material-file-upload/pdx-material-file-upload.json-api.md +511 -0
  64. package/src/lib/components/material-multi-select/pdx-material-multi-select.json-api.md +596 -0
  65. package/src/lib/components/material-multi-select-tree/pdx-material-multi-select-tree.json-api.md +623 -0
  66. package/src/lib/components/material-price-range/pdx-material-price-range.json-api.md +616 -0
  67. package/src/lib/components/material-radio-group/pdx-material-radio-group.json-api.md +585 -0
  68. package/src/lib/components/material-range-slider/pdx-material-range-slider.json-api.md +664 -0
  69. package/src/lib/components/material-rating/pdx-material-rating.json-api.md +551 -0
  70. package/src/lib/components/material-searchable-select/pdx-material-searchable-select.json-api.md +602 -0
  71. package/src/lib/components/material-select/pdx-material-select.json-api.md +601 -0
  72. package/src/lib/components/material-selection-list/pdx-material-selection-list.json-api.md +607 -0
  73. package/src/lib/components/material-slide-toggle/pdx-material-slide-toggle.json-api.md +522 -0
  74. package/src/lib/components/material-slider/pdx-material-slider.json-api.md +602 -0
  75. package/src/lib/components/material-textarea/pdx-material-textarea.json-api.md +598 -0
  76. package/src/lib/components/material-timepicker/pdx-material-timepicker.json-api.md +554 -0
  77. package/src/lib/components/material-transfer-list/pdx-material-transfer-list.json-api.md +614 -0
  78. package/src/lib/components/material-tree-select/pdx-material-tree-select.json-api.md +649 -0
  79. package/src/lib/components/month-input/pdx-month-input.json-api.md +527 -0
  80. package/src/lib/components/number-input/pdx-number-input.json-api.md +594 -0
  81. package/src/lib/components/password-input/pdx-password-input.json-api.md +574 -0
  82. package/src/lib/components/pdx-material-time-range/pdx-material-time-range.json-api.md +592 -0
  83. package/src/lib/components/pdx-year-input/pdx-year-input.json-api.md +543 -0
  84. package/src/lib/components/phone-input/pdx-phone-input.json-api.md +583 -0
  85. package/src/lib/components/preload-status/pdx-preload-status.json-api.md +455 -0
  86. package/src/lib/components/search-input/pdx-search-input.json-api.md +536 -0
  87. package/src/lib/components/text-input/pdx-text-input.json-api.md +600 -0
  88. package/src/lib/components/time-input/pdx-time-input.json-api.md +546 -0
  89. package/src/lib/components/url-input/pdx-url-input.json-api.md +542 -0
  90. package/src/lib/components/week-input/pdx-week-input.json-api.md +533 -0
  91. package/fesm2022/praxisui-dynamic-fields-index-CIk5K3rF.mjs +0 -1
@@ -0,0 +1,497 @@
1
+ ---
2
+ title: "Dynamic Fields Inline Filter Catalog"
3
+ slug: "dynamic-fields-inline-filter-catalog"
4
+ description: "Catalogo especializado dos inline filter components do dynamic-fields, com criterios de uso, shape de valor e notas de UX para a trilha de filtro em table."
5
+ doc_type: "reference"
6
+ document_kind: "host-guide"
7
+ component: "dynamic-fields"
8
+ category: "components"
9
+ audience:
10
+ - "frontend"
11
+ - "host"
12
+ - "designer"
13
+ - "architect"
14
+ level: "advanced"
15
+ status: "active"
16
+ owner: "praxis-ui"
17
+ tags:
18
+ - "dynamic-fields"
19
+ - "dynamic-filter"
20
+ - "inline"
21
+ - "catalog"
22
+ order: 42
23
+ icon: "view_compact_alt"
24
+ toc: true
25
+ sidebar: true
26
+ search_boost: 1.2
27
+ reading_time: 24
28
+ estimated_setup_time: 25
29
+ version: "1.0"
30
+ related_docs:
31
+ - "dynamic-fields-inline-filter-selection-guide"
32
+ - "dynamic-fields-inline-filter-runtime-contract"
33
+ - "dynamic-fields-inline-filter-custom-component-guide"
34
+ - "dynamic-inline-filter-catalog"
35
+ - "dynamic-filter-range-filters-guide"
36
+ keywords:
37
+ - "inlineSelect"
38
+ - "inlineDateRange"
39
+ - "inlineTreeSelect"
40
+ - "inlineRelativePeriod"
41
+ last_updated: "2026-03-26"
42
+ ---
43
+
44
+ # Dynamic Fields Inline Filter Catalog
45
+
46
+ ## Objetivo
47
+
48
+ Catalogar os inline components reais usados pela trilha de filtro em `praxis-table`, sem misturar com o catalogo geral de fields do formulario.
49
+
50
+ ## Superficie publicada para hosts
51
+
52
+ Este documento continua sendo a referencia editorial da trilha inline.
53
+
54
+ Para consumo operacional por hosts oficiais, landing page e playground, a superficie canonica e o catalogo exportado pela lib de dynamic-fields. Nele, os inline filters aparecem em `track: inline-filter`, separados dos fields de formulario comuns e validados contra o registry default.
55
+
56
+ Nesse catalogo exportado, a trilha inline tambem publica:
57
+
58
+ - `family`, para agrupar a natureza funcional do filtro;
59
+ - `interactionPattern`, para resumir se o caso e `lookup`, `range`, `single-choice`, `multi-choice`, `visual` ou outro padrao dominante;
60
+ - `icon.key` + `icon.tone`, para identidade visual canonica em menus, playgrounds e vitrines derivadas;
61
+ - `dataSourceKind`, para explicitar o custo de integracao do filtro.
62
+
63
+ ## Pre-requisitos
64
+
65
+ - Entendimento basico de toolbar compacta vs filtro avancado
66
+ - Leitura recomendada do inventario runtime e do guia de payload do filtro
67
+
68
+ ## Como usar este catalogo
69
+
70
+ Para cada item, leia em conjunto:
71
+
72
+ - **quando usar**: cenarios em que a variante inline agrega produtividade
73
+ - **quando evitar**: quando a compactacao piora a UX
74
+ - **shape do valor**: valor do componente dentro do form do filtro
75
+ - **UX note**: restricoes de densidade, acessibilidade e leitura na toolbar
76
+
77
+ Para hosts oficiais:
78
+
79
+ - a narrativa continua vindo deste markdown;
80
+ - a navegacao, os cues e a iconografia devem ser derivados do catalogo exportado da lib;
81
+ - nao mantenha uma tabela paralela de `interactionPattern` ou `icon` dentro do host.
82
+
83
+ ## Tiers editoriais
84
+
85
+ - `core compact`: controles universais, previsiveis e de alta recorrencia
86
+ - `advanced compact`: controles validos em toolbar, mas que exigem criterio adicional de densidade
87
+ - `graphic specialized`: controles semanticos ou visuais que entram apenas por decisao explicita de produto
88
+
89
+ ## 1. Texto
90
+
91
+ ### <span id="inline-input"></span>`inlineInput`
92
+
93
+ - Quando usar: busca textual curta, identificador, nome, codigo, termo livre
94
+ - Quando evitar: texto longo, mascara pesada, validacao complexa
95
+ - Shape do valor: `string`
96
+ - Snippet:
97
+
98
+ ```json
99
+ { "name": "name", "controlType": "inlineInput", "label": "Nome" }
100
+ ```
101
+
102
+ - UX note: mantenha placeholder curto e `clearButton` habilitado
103
+ - Docs relacionadas: `dynamic-fields-inline-filter-runtime-contract`, `dynamic-filter-payload-contract`
104
+
105
+ ## 2. Selecao simples e multipla
106
+
107
+ ### <span id="inline-select"></span>`inlineSelect`
108
+
109
+ - Quando usar: lista local pequena ou media
110
+ - Quando evitar: catalogo remoto grande ou lookup rico
111
+ - Shape do valor: valor simples
112
+ - Snippet:
113
+
114
+ ```json
115
+ { "name": "status", "controlType": "inlineSelect", "options": [{ "label": "Ativo", "value": "ACTIVE" }] }
116
+ ```
117
+
118
+ - UX note: o valor precisa continuar legivel dentro da pill
119
+ - Docs relacionadas: `dynamic-fields-inline-filter-selection-guide`, `dynamic-inline-filter-catalog`
120
+
121
+ ### <span id="inline-multiselect"></span>`inlineMultiSelect`
122
+
123
+ - Quando usar: poucas selecoes simultaneas com resumo `primeiro +N`
124
+ - Quando evitar: selecao grande ou dependencia de leitura integral
125
+ - Shape do valor: `unknown[]`
126
+ - Snippet:
127
+
128
+ ```json
129
+ { "name": "status", "controlType": "inlineMultiSelect", "multiple": true }
130
+ ```
131
+
132
+ - UX note: degrade para filtro avancado quando o resumo deixa de ser informativo
133
+ - Docs relacionadas: `dynamic-fields-inline-filter-selection-guide`
134
+
135
+ ### <span id="inline-searchable-select"></span>`inlineSearchableSelect`
136
+
137
+ - Quando usar: lista media/grande com busca
138
+ - Quando evitar: se `select` simples ja resolve
139
+ - Shape do valor: valor simples ou option object, conforme metadata
140
+ - Snippet:
141
+
142
+ ```json
143
+ { "name": "departmentId", "controlType": "inlineSearchableSelect", "resourcePath": "/departments/options" }
144
+ ```
145
+
146
+ - UX note: so use quando a busca realmente reduz friccao
147
+ - Docs relacionadas: `dynamic-fields-inline-filter-runtime-contract`, `dynamic-filter-backend-contract-cheatsheet`
148
+
149
+ ### <span id="inline-async-select"></span>`inlineAsyncSelect`
150
+
151
+ - Quando usar: fonte remota com busca sob demanda ou paginacao
152
+ - Quando evitar: se o custo cognitivo de abrir painel remoto na toolbar for alto
153
+ - Shape do valor: valor simples ou option object
154
+ - Snippet:
155
+
156
+ ```json
157
+ { "name": "ownerId", "controlType": "inlineAsyncSelect", "resourcePath": "/users/options" }
158
+ ```
159
+
160
+ - UX note: valide loading, empty state e reset de termo na reabertura
161
+ - Docs relacionadas: `dynamic-fields-inline-filter-troubleshooting`
162
+
163
+ ## 3. Lookup e autocomplete
164
+
165
+ ### <span id="inline-entity-lookup"></span>`inlineEntityLookup`
166
+
167
+ - Quando usar: entidade com `id + descricao`, busca operacional, confirmacao de identidade
168
+ - Quando evitar: simples select local
169
+ - Shape do valor: objeto ou id final, conforme `optionValueKey`
170
+ - Snippet:
171
+
172
+ ```json
173
+ { "name": "customerId", "controlType": "inlineEntityLookup", "resourcePath": "/customers/options" }
174
+ ```
175
+
176
+ - UX note: sempre explicite `optionLabelKey` e `optionValueKey`
177
+ - Docs relacionadas: `dynamic-fields-inline-filter-runtime-contract`, `dynamic-filter-payload-contract`
178
+
179
+ ### <span id="inline-autocomplete"></span>`inlineAutocomplete`
180
+
181
+ - Quando usar: sugestao incremental com escolha unica
182
+ - Quando evitar: lookup rico com mais de um identificador
183
+ - Shape do valor: valor simples ou option object
184
+ - Snippet:
185
+
186
+ ```json
187
+ { "name": "city", "controlType": "inlineAutocomplete", "resourcePath": "/cities/options" }
188
+ ```
189
+
190
+ - UX note: autocomplete inline exige placeholder claro e feedback de carregamento
191
+ - Docs relacionadas: `dynamic-fields-inline-filter-selection-guide`
192
+
193
+ ## 4. Numero e moeda
194
+
195
+ ### <span id="inline-number"></span>`inlineNumber`
196
+
197
+ - Quando usar: valor numerico unico, score absoluto, quantidade
198
+ - Quando evitar: quando o dominio e intervalo, nao valor pontual
199
+ - Shape do valor: `number`
200
+ - Snippet:
201
+
202
+ ```json
203
+ { "name": "attempts", "controlType": "inlineNumber", "min": 0, "max": 100 }
204
+ ```
205
+
206
+ - UX note: use `suffix` ou `%` quando o numero isolado puder ser ambiguo
207
+ - Docs relacionadas: `dynamic-fields-inline-filter-runtime-contract`
208
+
209
+ ### <span id="inline-currency"></span>`inlineCurrency`
210
+
211
+ - Quando usar: valor monetario unico
212
+ - Quando evitar: faixa monetaria
213
+ - Shape do valor: `number`
214
+ - Snippet:
215
+
216
+ ```json
217
+ { "name": "ticket", "controlType": "inlineCurrency", "currency": "BRL", "locale": "pt-BR" }
218
+ ```
219
+
220
+ - UX note: compacte moeda, mas nao esconda contexto de locale
221
+ - Docs relacionadas: `dynamic-filter-backend-contract-cheatsheet`
222
+
223
+ ## 5. Range
224
+
225
+ ### <span id="inline-currency-range"></span>`inlineCurrencyRange`
226
+
227
+ - Quando usar: preco, budget, ticket medio, contrato
228
+ - Quando evitar: valor pontual
229
+ - Shape do valor: `{ minPrice?, maxPrice?, currency? }`
230
+ - Snippet:
231
+
232
+ ```json
233
+ { "name": "salaryRange", "controlType": "inlineCurrencyRange", "currency": "BRL" }
234
+ ```
235
+
236
+ - UX note: resumo na pill deve deixar claro lower/upper bound
237
+ - Docs relacionadas: `dynamic-filter-range-filters-guide`
238
+
239
+ ### <span id="inline-range"></span>`inlineRange`
240
+
241
+ - Quando usar: range numerico generico, slider simples ou duplo
242
+ - Quando evitar: data, hora ou semantica monetaria
243
+ - Shape do valor: `number` em modo simples; `{ start?, end? }` em `mode: "range"`
244
+ - Snippet:
245
+
246
+ ```json
247
+ { "name": "scoreRange", "controlType": "inlineRange", "min": 0, "max": 10, "mode": "range" }
248
+ ```
249
+
250
+ - UX note: use presets apenas quando houver ganho real de velocidade
251
+ - Docs relacionadas: `dynamic-filter-range-filters-guide`
252
+
253
+ ### <span id="inline-rating"></span>`inlineRating`
254
+
255
+ - Tier editorial: `graphic specialized`
256
+ - Quando usar: score visual, rating, classificacao por estrelas
257
+ - Quando evitar: se o backend so entende numero bruto sem ganho semantico ou se o usuario pensa em faixa numerica simples
258
+ - Shape do valor: `{ start?, end? }`
259
+ - Snippet:
260
+
261
+ ```json
262
+ { "name": "rating", "controlType": "inlineRating", "max": 5 }
263
+ ```
264
+
265
+ - UX note: explicite se a leitura eh valor unico ou faixa e mantenha fallback textual claro na pill
266
+ - Docs relacionadas: `dynamic-filter-range-filters-guide`
267
+
268
+ ### <span id="inline-distance-radius"></span>`inlineDistanceRadius`
269
+
270
+ - Tier editorial: `graphic specialized`
271
+ - Quando usar: raio de busca, distancia operacional, proximidade
272
+ - Quando evitar: range numerico generico sem semantica espacial ou quando a unidade varia por contexto
273
+ - Shape do valor: `number` em modo simples; `{ start?, end? }` em `mode: "range"`
274
+ - Snippet:
275
+
276
+ ```json
277
+ { "name": "radius", "controlType": "inlineDistanceRadius", "unit": "km" }
278
+ ```
279
+
280
+ - UX note: sempre mostre unidade e evite esse inline quando o usuario precisar comparar varios sistemas de medida
281
+ - Docs relacionadas: `dynamic-filter-range-filters-guide`
282
+
283
+ ### <span id="inline-score-priority"></span>`inlineScorePriority`
284
+
285
+ - Tier editorial: `graphic specialized`
286
+ - Quando usar: score com bandas, prioridade, criticidade
287
+ - Quando evitar: numero simples sem valor visual
288
+ - Shape do valor: `number` em modo simples; `{ start?, end? }` em `mode: "range"`
289
+ - Snippet:
290
+
291
+ ```json
292
+ { "name": "priority", "controlType": "inlineScorePriority", "min": 1, "max": 10 }
293
+ ```
294
+
295
+ - UX note: a legenda visual precisa bater com a semantica do dominio; sem legenda confiavel, prefira `inlineRange`
296
+ - Docs relacionadas: `dynamic-fields-inline-filter-selection-guide`
297
+
298
+ ## 6. Data e tempo
299
+
300
+ ### <span id="inline-date"></span>`inlineDate`
301
+
302
+ - Quando usar: data unica
303
+ - Quando evitar: periodo completo
304
+ - Shape do valor: `Date`
305
+ - Snippet:
306
+
307
+ ```json
308
+ { "name": "createdAt", "controlType": "inlineDate", "label": "Criado em" }
309
+ ```
310
+
311
+ - UX note: o host precisa serializar e alinhar timezone com backend
312
+ - Docs relacionadas: `dynamic-fields-inline-filter-runtime-contract`, `dynamic-filter-payload-contract`
313
+
314
+ ### <span id="inline-date-range"></span>`inlineDateRange`
315
+
316
+ - Quando usar: janela temporal, periodo de analise, atalhos como hoje/7 dias
317
+ - Quando evitar: quando a toolbar ja esta saturada
318
+ - Shape do valor: `{ startDate?, endDate? }`
319
+ - Snippet:
320
+
321
+ ```json
322
+ { "name": "period", "controlType": "inlineDateRange", "showShortcuts": true }
323
+ ```
324
+
325
+ - UX note: shortcuts nao podem mascarar o shape final enviado ao backend
326
+ - Docs relacionadas: `dynamic-filter-range-filters-guide`
327
+
328
+ ### <span id="inline-time"></span>`inlineTime`
329
+
330
+ - Quando usar: horario unico
331
+ - Quando evitar: se o usuario pensa em data ou periodo relativo
332
+ - Shape do valor: string `HH:mm`
333
+ - Snippet:
334
+
335
+ ```json
336
+ { "name": "hour", "controlType": "inlineTime" }
337
+ ```
338
+
339
+ - UX note: sempre mantenha estado vazio claramente distinguivel
340
+ - Docs relacionadas: `dynamic-fields-inline-filter-runtime-contract`
341
+
342
+ ### <span id="inline-time-range"></span>`inlineTimeRange`
343
+
344
+ - Quando usar: turno, janela operacional, horario de atendimento
345
+ - Quando evitar: quando o backend espera `LocalDateTime`
346
+ - Shape do valor: `{ start?, end? }` com strings `HH:mm`
347
+ - Snippet:
348
+
349
+ ```json
350
+ { "name": "workHour", "controlType": "inlineTimeRange" }
351
+ ```
352
+
353
+ - UX note: valide bound invertido e fallback de clear
354
+ - Docs relacionadas: `dynamic-filter-range-filters-guide`
355
+
356
+ ## 7. Arvore
357
+
358
+ ### <span id="inline-tree-select"></span>`inlineTreeSelect`
359
+
360
+ - Tier editorial: `advanced compact`
361
+ - Quando usar: taxonomia, estrutura hierarquica ou unidade organizacional com selecao de no unico e profundidade curta
362
+ - Quando evitar: arvore profunda demais para toolbar, necessidade de expandir varios ramos ou revisao visual da estrutura completa
363
+ - Shape do valor: valor simples do no
364
+ - Snippet:
365
+
366
+ ```json
367
+ { "name": "orgUnit", "controlType": "inlineTreeSelect", "nodes": [] }
368
+ ```
369
+
370
+ - UX note: preserve contraste, foco e navegacao por teclado no popover; se o usuario precisar "navegar a arvore para pensar", mova o caso para o filtro avancado
371
+ - Docs relacionadas: `dynamic-fields-inline-filter-troubleshooting`
372
+
373
+ ## 8. Semanticos especializados
374
+
375
+ ### <span id="inline-pipeline-status"></span>`inlinePipelineStatus`
376
+
377
+ - Tier editorial: `graphic specialized`
378
+ - Quando usar: pipeline comercial, esteira, estado operacional
379
+ - Quando evitar: status simples de enum
380
+ - Shape do valor: valor simples ou `unknown[]`
381
+ - Snippet:
382
+
383
+ ```json
384
+ { "name": "pipelineStatus", "controlType": "inlinePipelineStatus", "options": [] }
385
+ ```
386
+
387
+ - UX note: nao use se o desenho visual nao agrega mais do que um select; esse componente precisa representar uma jornada operacional reconhecivel
388
+ - Docs relacionadas: `dynamic-fields-inline-filter-selection-guide`
389
+
390
+ ### <span id="inline-relative-period"></span>`inlineRelativePeriod`
391
+
392
+ - Tier editorial: `graphic specialized`
393
+ - Quando usar: hoje, ontem, ultimos 7 dias, este mes
394
+ - Quando evitar: quando a API nao usa a trilha canonica de filtros da plataforma, nao normaliza presets relativos ou quando o time precisa de rastreabilidade exata por data
395
+ - Shape do valor: `string`
396
+ - Snippet:
397
+
398
+ ```json
399
+ { "name": "periodPreset", "controlType": "inlineRelativePeriod" }
400
+ ```
401
+
402
+ - UX note: com `praxis-metadata-starter`, presets suportados sao normalizados automaticamente para `onDate`, `lastDays` ou `between`; fora dessa trilha, documente a semantica HTTP equivalente e prefira `inlineDateRange`
403
+ - Docs relacionadas: `dynamic-fields-inline-filter-runtime-contract`
404
+
405
+ ### <span id="inline-sentiment"></span>`inlineSentiment`
406
+
407
+ - Tier editorial: `graphic specialized`
408
+ - Quando usar: sentimento, humor, polaridade
409
+ - Quando evitar: quando o backend ja usa enum simples sem ganho visual
410
+ - Shape do valor: `string`
411
+ - Snippet:
412
+
413
+ ```json
414
+ { "name": "sentiment", "controlType": "inlineSentiment" }
415
+ ```
416
+
417
+ - UX note: contraste e rotulagem textual continuam obrigatorios; se a leitura final depender de cor ou emoji, o componente esta mal curado
418
+ - Docs relacionadas: `dynamic-fields-inline-filter-troubleshooting`
419
+
420
+ ### <span id="inline-color-label"></span>`inlineColorLabel`
421
+
422
+ - Tier editorial: `graphic specialized`
423
+ - Quando usar: tags coloridas, labels semanticas, squads, categorias visuais
424
+ - Quando evitar: quando a cor eh o unico canal de significado
425
+ - Shape do valor: valor simples ou `unknown[]`
426
+ - Snippet:
427
+
428
+ ```json
429
+ { "name": "labels", "controlType": "inlineColorLabel", "options": [] }
430
+ ```
431
+
432
+ - UX note: siga WCAG AA e nao dependa apenas de cor; sem texto curto e consistente, prefira `inlineMultiSelect`
433
+ - Docs relacionadas: `dynamic-fields-inline-filter-troubleshooting`
434
+
435
+ ## 9. Toggle
436
+
437
+ ### <span id="inline-toggle"></span>`inlineToggle`
438
+
439
+ - Quando usar: booleano com estado neutro
440
+ - Quando evitar: quando `false` e `null` significam coisas diferentes e nao estao documentadas
441
+ - Shape do valor: `boolean | null`
442
+ - Snippet:
443
+
444
+ ```json
445
+ { "name": "active", "controlType": "inlineToggle" }
446
+ ```
447
+
448
+ - UX note: `clear` deve voltar para neutro, nao para `false`
449
+ - Docs relacionadas: `dynamic-fields-inline-filter-runtime-contract`
450
+
451
+ ## Nota editorial importante
452
+
453
+ `praxis-table/docs/dynamic-inline-filter-catalog.md` continua sendo a visao de feature e jornada.
454
+
455
+ Este documento eh a visao de componente e implementacao.
456
+
457
+ Regra de governanca:
458
+
459
+ - `praxis-table`: documenta jornada, payload e operacao da feature de filtro;
460
+ - `@praxisui/dynamic-fields`: documenta e publica os componentes inline reutilizaveis;
461
+ - hosts oficiais devem consumir o catalogo exportado da lib, nao reconstruir uma lista inline paralela.
462
+
463
+ Regra para ranges Java:
464
+
465
+ - quando o backend usar operacoes `BETWEEN`, `BETWEEN_EXCLUSIVE`, `NOT_BETWEEN` ou `OUTSIDE_RANGE`, o valor simples `number` nao e payload HTTP valido; configure o inline em `mode: "range"` ou use um controle de range dedicado.
466
+
467
+ ## Comparativos rapidos de curadoria
468
+
469
+ ### Prefira `inlineSelect` em vez de `inlinePipelineStatus` quando
470
+
471
+ - o valor final for um enum simples
472
+ - nao houver jornada operacional clara por etapas
473
+ - a pill precisar permanecer discreta na toolbar
474
+
475
+ ### Prefira `inlineDateRange` em vez de `inlineRelativePeriod` quando
476
+
477
+ - o time precisa de rastreabilidade exata por data
478
+ - o backend nao normaliza presets relativos de forma canonica
479
+ - usuarios auditam o filtro pelo valor final, nao pelo atalho semantico
480
+
481
+ ### Prefira `inlineRange` em vez de `inlineRating` ou `inlineScorePriority` quando
482
+
483
+ - a pessoa usuaria pensa em numero bruto
484
+ - nao existe legenda de dominio forte
485
+ - o valor precisa ser comparado com facilidade entre telas
486
+
487
+ ### Prefira `inlineMultiSelect` em vez de `inlineColorLabel` quando
488
+
489
+ - a cor nao for semanticamente confiavel
490
+ - o estado final precisar continuar claro em acessibilidade
491
+ - o usuario reconhecer a categoria pelo texto, nao pelo badge
492
+
493
+ ### Prefira filtro avancado em vez de `inlineTreeSelect` quando
494
+
495
+ - a arvore tiver muitos niveis
496
+ - a decisao depender de explorar varios ramos
497
+ - a pessoa usuaria precisar revisar a estrutura para confiar no filtro ativo