@praxisui/dynamic-fields 8.0.0-beta.8 → 8.0.0-beta.80

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,502 @@
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 que exija componente dedicado
95
+ - Shape do valor: `string`
96
+ - Mascara de display: quando houver semantica explicita em metadata (`mask`, `displayMask`,
97
+ `inputMask`, `format` com tokens de mascara) o campo renderiza o valor mascarado e preserva
98
+ o valor cru no form. Para compatibilidade com filtros metadata-driven, `inlineInput` tambem
99
+ reconhece sinais explicitos de CPF/CNPJ, telefone BR/E.164 e CEP; numeros sem essa semantica
100
+ permanecem texto cru.
101
+ - Snippet:
102
+
103
+ ```json
104
+ { "name": "name", "controlType": "inlineInput", "label": "Nome" }
105
+ ```
106
+
107
+ - UX note: mantenha placeholder curto e `clearButton` habilitado
108
+ - Docs relacionadas: `dynamic-fields-inline-filter-runtime-contract`, `dynamic-filter-payload-contract`
109
+
110
+ ## 2. Selecao simples e multipla
111
+
112
+ ### <span id="inline-select"></span>`inlineSelect`
113
+
114
+ - Quando usar: lista local pequena ou media
115
+ - Quando evitar: catalogo remoto grande ou lookup rico
116
+ - Shape do valor: valor simples
117
+ - Snippet:
118
+
119
+ ```json
120
+ { "name": "status", "controlType": "inlineSelect", "options": [{ "label": "Ativo", "value": "ACTIVE" }] }
121
+ ```
122
+
123
+ - UX note: o valor precisa continuar legivel dentro da pill
124
+ - Docs relacionadas: `dynamic-fields-inline-filter-selection-guide`, `dynamic-inline-filter-catalog`
125
+
126
+ ### <span id="inline-multiselect"></span>`inlineMultiSelect`
127
+
128
+ - Quando usar: poucas selecoes simultaneas que precisam permanecer visiveis como tokens compactos na pill
129
+ - Quando evitar: selecao grande ou dependencia de leitura integral permanente fora do painel
130
+ - Shape do valor: `unknown[]`
131
+ - Snippet:
132
+
133
+ ```json
134
+ { "name": "status", "controlType": "inlineMultiSelect", "multiple": true }
135
+ ```
136
+
137
+ - UX note: o trigger mostra tokens selecionados com overflow `+N`; o painel deve manter uma secao de selecionados para leitura e remocao rapida
138
+ - Docs relacionadas: `dynamic-fields-inline-filter-selection-guide`
139
+
140
+ ### <span id="inline-searchable-select"></span>`inlineSearchableSelect`
141
+
142
+ - Quando usar: lista media/grande com busca
143
+ - Quando evitar: se `select` simples ja resolve
144
+ - Shape do valor: valor simples ou option object, conforme metadata
145
+ - Snippet:
146
+
147
+ ```json
148
+ { "name": "departmentId", "controlType": "inlineSearchableSelect", "resourcePath": "/departments/options" }
149
+ ```
150
+
151
+ - UX note: so use quando a busca realmente reduz friccao
152
+ - Docs relacionadas: `dynamic-fields-inline-filter-runtime-contract`, `dynamic-filter-backend-contract-cheatsheet`
153
+
154
+ ### <span id="inline-async-select"></span>`inlineAsyncSelect`
155
+
156
+ - Quando usar: fonte remota com busca sob demanda ou paginacao
157
+ - Quando evitar: se o custo cognitivo de abrir painel remoto na toolbar for alto
158
+ - Shape do valor: valor simples ou option object
159
+ - Snippet:
160
+
161
+ ```json
162
+ { "name": "ownerId", "controlType": "inlineAsyncSelect", "resourcePath": "/users/options" }
163
+ ```
164
+
165
+ - UX note: valide loading, empty state e reset de termo na reabertura
166
+ - Docs relacionadas: `dynamic-fields-inline-filter-troubleshooting`
167
+
168
+ ## 3. Lookup e autocomplete
169
+
170
+ ### <span id="inline-entity-lookup"></span>`inlineEntityLookup`
171
+
172
+ - Quando usar: entidade com `id + descricao`, busca operacional, confirmacao de identidade
173
+ - Quando evitar: simples select local
174
+ - Shape do valor: objeto ou id final, conforme `optionValueKey`
175
+ - Snippet:
176
+
177
+ ```json
178
+ { "name": "customerId", "controlType": "inlineEntityLookup", "resourcePath": "/customers/options" }
179
+ ```
180
+
181
+ - UX note: sempre explicite `optionLabelKey` e `optionValueKey`
182
+ - Docs relacionadas: `dynamic-fields-inline-filter-runtime-contract`, `dynamic-filter-payload-contract`
183
+
184
+ ### <span id="inline-autocomplete"></span>`inlineAutocomplete`
185
+
186
+ - Quando usar: sugestao incremental com escolha unica
187
+ - Quando evitar: lookup rico com mais de um identificador
188
+ - Shape do valor: valor simples ou option object
189
+ - Snippet:
190
+
191
+ ```json
192
+ { "name": "city", "controlType": "inlineAutocomplete", "resourcePath": "/cities/options" }
193
+ ```
194
+
195
+ - UX note: autocomplete inline exige placeholder claro e feedback de carregamento
196
+ - Docs relacionadas: `dynamic-fields-inline-filter-selection-guide`
197
+
198
+ ## 4. Numero e moeda
199
+
200
+ ### <span id="inline-number"></span>`inlineNumber`
201
+
202
+ - Quando usar: valor numerico unico, score absoluto, quantidade
203
+ - Quando evitar: quando o dominio e intervalo, nao valor pontual
204
+ - Shape do valor: `number`
205
+ - Snippet:
206
+
207
+ ```json
208
+ { "name": "attempts", "controlType": "inlineNumber", "min": 0, "max": 100 }
209
+ ```
210
+
211
+ - UX note: use `suffix` ou `%` quando o numero isolado puder ser ambiguo
212
+ - Docs relacionadas: `dynamic-fields-inline-filter-runtime-contract`
213
+
214
+ ### <span id="inline-currency"></span>`inlineCurrency`
215
+
216
+ - Quando usar: valor monetario unico
217
+ - Quando evitar: faixa monetaria
218
+ - Shape do valor: `number`
219
+ - Snippet:
220
+
221
+ ```json
222
+ { "name": "ticket", "controlType": "inlineCurrency", "currency": "BRL", "locale": "pt-BR" }
223
+ ```
224
+
225
+ - UX note: compacte moeda, mas nao esconda contexto de locale
226
+ - Docs relacionadas: `dynamic-filter-backend-contract-cheatsheet`
227
+
228
+ ## 5. Range
229
+
230
+ ### <span id="inline-currency-range"></span>`inlineCurrencyRange`
231
+
232
+ - Quando usar: preco, budget, ticket medio, contrato
233
+ - Quando evitar: valor pontual
234
+ - Shape do valor: `{ minPrice?, maxPrice?, currency? }`
235
+ - Snippet:
236
+
237
+ ```json
238
+ { "name": "salaryRange", "controlType": "inlineCurrencyRange", "currency": "BRL" }
239
+ ```
240
+
241
+ - UX note: resumo na pill deve deixar claro lower/upper bound
242
+ - Docs relacionadas: `dynamic-filter-range-filters-guide`
243
+
244
+ ### <span id="inline-range"></span>`inlineRange`
245
+
246
+ - Quando usar: range numerico generico, slider simples ou duplo
247
+ - Quando evitar: data, hora ou semantica monetaria
248
+ - Shape do valor: `number` em modo simples; `{ start?, end? }` em `mode: "range"`
249
+ - Snippet:
250
+
251
+ ```json
252
+ { "name": "scoreRange", "controlType": "inlineRange", "min": 0, "max": 10, "mode": "range" }
253
+ ```
254
+
255
+ - UX note: use presets apenas quando houver ganho real de velocidade
256
+ - Docs relacionadas: `dynamic-filter-range-filters-guide`
257
+
258
+ ### <span id="inline-rating"></span>`inlineRating`
259
+
260
+ - Tier editorial: `graphic specialized`
261
+ - Quando usar: score visual, rating, classificacao por estrelas
262
+ - Quando evitar: se o backend so entende numero bruto sem ganho semantico ou se o usuario pensa em faixa numerica simples
263
+ - Shape do valor: `{ start?, end? }`
264
+ - Snippet:
265
+
266
+ ```json
267
+ { "name": "rating", "controlType": "inlineRating", "max": 5 }
268
+ ```
269
+
270
+ - UX note: explicite se a leitura eh valor unico ou faixa e mantenha fallback textual claro na pill
271
+ - Docs relacionadas: `dynamic-filter-range-filters-guide`
272
+
273
+ ### <span id="inline-distance-radius"></span>`inlineDistanceRadius`
274
+
275
+ - Tier editorial: `graphic specialized`
276
+ - Quando usar: raio de busca, distancia operacional, proximidade
277
+ - Quando evitar: range numerico generico sem semantica espacial ou quando a unidade varia por contexto
278
+ - Shape do valor: `number` em modo simples; `{ start?, end? }` em `mode: "range"`
279
+ - Snippet:
280
+
281
+ ```json
282
+ { "name": "radius", "controlType": "inlineDistanceRadius", "unit": "km" }
283
+ ```
284
+
285
+ - UX note: sempre mostre unidade e evite esse inline quando o usuario precisar comparar varios sistemas de medida
286
+ - Docs relacionadas: `dynamic-filter-range-filters-guide`
287
+
288
+ ### <span id="inline-score-priority"></span>`inlineScorePriority`
289
+
290
+ - Tier editorial: `graphic specialized`
291
+ - Quando usar: score com bandas, prioridade, criticidade
292
+ - Quando evitar: numero simples sem valor visual
293
+ - Shape do valor: `number` em modo simples; `{ start?, end? }` em `mode: "range"`
294
+ - Snippet:
295
+
296
+ ```json
297
+ { "name": "priority", "controlType": "inlineScorePriority", "min": 1, "max": 10 }
298
+ ```
299
+
300
+ - UX note: a legenda visual precisa bater com a semantica do dominio; sem legenda confiavel, prefira `inlineRange`
301
+ - Docs relacionadas: `dynamic-fields-inline-filter-selection-guide`
302
+
303
+ ## 6. Data e tempo
304
+
305
+ ### <span id="inline-date"></span>`inlineDate`
306
+
307
+ - Quando usar: data unica
308
+ - Quando evitar: periodo completo
309
+ - Shape do valor: `Date`
310
+ - Snippet:
311
+
312
+ ```json
313
+ { "name": "createdAt", "controlType": "inlineDate", "label": "Criado em" }
314
+ ```
315
+
316
+ - UX note: o host precisa serializar e alinhar timezone com backend
317
+ - Docs relacionadas: `dynamic-fields-inline-filter-runtime-contract`, `dynamic-filter-payload-contract`
318
+
319
+ ### <span id="inline-date-range"></span>`inlineDateRange`
320
+
321
+ - Quando usar: janela temporal, periodo de analise, atalhos como hoje/7 dias
322
+ - Quando evitar: quando a toolbar ja esta saturada
323
+ - Shape do valor: `{ startDate?, endDate? }`
324
+ - Snippet:
325
+
326
+ ```json
327
+ { "name": "period", "controlType": "inlineDateRange", "showShortcuts": true }
328
+ ```
329
+
330
+ - UX note: shortcuts nao podem mascarar o shape final enviado ao backend
331
+ - Docs relacionadas: `dynamic-filter-range-filters-guide`
332
+
333
+ ### <span id="inline-time"></span>`inlineTime`
334
+
335
+ - Quando usar: horario unico
336
+ - Quando evitar: se o usuario pensa em data ou periodo relativo
337
+ - Shape do valor: string `HH:mm`
338
+ - Snippet:
339
+
340
+ ```json
341
+ { "name": "hour", "controlType": "inlineTime" }
342
+ ```
343
+
344
+ - UX note: sempre mantenha estado vazio claramente distinguivel
345
+ - Docs relacionadas: `dynamic-fields-inline-filter-runtime-contract`
346
+
347
+ ### <span id="inline-time-range"></span>`inlineTimeRange`
348
+
349
+ - Quando usar: turno, janela operacional, horario de atendimento
350
+ - Quando evitar: quando o backend espera `LocalDateTime`
351
+ - Shape do valor: `{ start?, end? }` com strings `HH:mm`
352
+ - Snippet:
353
+
354
+ ```json
355
+ { "name": "workHour", "controlType": "inlineTimeRange" }
356
+ ```
357
+
358
+ - UX note: valide bound invertido e fallback de clear
359
+ - Docs relacionadas: `dynamic-filter-range-filters-guide`
360
+
361
+ ## 7. Arvore
362
+
363
+ ### <span id="inline-tree-select"></span>`inlineTreeSelect`
364
+
365
+ - Tier editorial: `advanced compact`
366
+ - Quando usar: taxonomia, estrutura hierarquica ou unidade organizacional com selecao de no unico e profundidade curta
367
+ - Quando evitar: arvore profunda demais para toolbar, necessidade de expandir varios ramos ou revisao visual da estrutura completa
368
+ - Shape do valor: valor simples do no
369
+ - Snippet:
370
+
371
+ ```json
372
+ { "name": "orgUnit", "controlType": "inlineTreeSelect", "nodes": [] }
373
+ ```
374
+
375
+ - 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
376
+ - Docs relacionadas: `dynamic-fields-inline-filter-troubleshooting`
377
+
378
+ ## 8. Semanticos especializados
379
+
380
+ ### <span id="inline-pipeline-status"></span>`inlinePipelineStatus`
381
+
382
+ - Tier editorial: `graphic specialized`
383
+ - Quando usar: pipeline comercial, esteira, estado operacional
384
+ - Quando evitar: status simples de enum
385
+ - Shape do valor: valor simples ou `unknown[]`
386
+ - Snippet:
387
+
388
+ ```json
389
+ { "name": "pipelineStatus", "controlType": "inlinePipelineStatus", "options": [] }
390
+ ```
391
+
392
+ - UX note: nao use se o desenho visual nao agrega mais do que um select; esse componente precisa representar uma jornada operacional reconhecivel
393
+ - Docs relacionadas: `dynamic-fields-inline-filter-selection-guide`
394
+
395
+ ### <span id="inline-relative-period"></span>`inlineRelativePeriod`
396
+
397
+ - Tier editorial: `graphic specialized`
398
+ - Quando usar: hoje, ontem, ultimos 7 dias, este mes
399
+ - 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
400
+ - Shape do valor: `string`
401
+ - Snippet:
402
+
403
+ ```json
404
+ { "name": "periodPreset", "controlType": "inlineRelativePeriod" }
405
+ ```
406
+
407
+ - 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`
408
+ - Docs relacionadas: `dynamic-fields-inline-filter-runtime-contract`
409
+
410
+ ### <span id="inline-sentiment"></span>`inlineSentiment`
411
+
412
+ - Tier editorial: `graphic specialized`
413
+ - Quando usar: sentimento, humor, polaridade
414
+ - Quando evitar: quando o backend ja usa enum simples sem ganho visual
415
+ - Shape do valor: `string`
416
+ - Snippet:
417
+
418
+ ```json
419
+ { "name": "sentiment", "controlType": "inlineSentiment" }
420
+ ```
421
+
422
+ - UX note: contraste e rotulagem textual continuam obrigatorios; se a leitura final depender de cor ou emoji, o componente esta mal curado
423
+ - Docs relacionadas: `dynamic-fields-inline-filter-troubleshooting`
424
+
425
+ ### <span id="inline-color-label"></span>`inlineColorLabel`
426
+
427
+ - Tier editorial: `graphic specialized`
428
+ - Quando usar: tags coloridas, labels semanticas, squads, categorias visuais
429
+ - Quando evitar: quando a cor eh o unico canal de significado
430
+ - Shape do valor: valor simples ou `unknown[]`
431
+ - Snippet:
432
+
433
+ ```json
434
+ { "name": "labels", "controlType": "inlineColorLabel", "options": [] }
435
+ ```
436
+
437
+ - UX note: siga WCAG AA e nao dependa apenas de cor; sem texto curto e consistente, prefira `inlineMultiSelect`
438
+ - Docs relacionadas: `dynamic-fields-inline-filter-troubleshooting`
439
+
440
+ ## 9. Toggle
441
+
442
+ ### <span id="inline-toggle"></span>`inlineToggle`
443
+
444
+ - Quando usar: booleano com estado neutro
445
+ - Quando evitar: quando `false` e `null` significam coisas diferentes e nao estao documentadas
446
+ - Shape do valor: `boolean | null`
447
+ - Snippet:
448
+
449
+ ```json
450
+ { "name": "active", "controlType": "inlineToggle" }
451
+ ```
452
+
453
+ - UX note: `clear` deve voltar para neutro, nao para `false`
454
+ - Docs relacionadas: `dynamic-fields-inline-filter-runtime-contract`
455
+
456
+ ## Nota editorial importante
457
+
458
+ `praxis-table/docs/dynamic-inline-filter-catalog.md` continua sendo a visao de feature e jornada.
459
+
460
+ Este documento eh a visao de componente e implementacao.
461
+
462
+ Regra de governanca:
463
+
464
+ - `praxis-table`: documenta jornada, payload e operacao da feature de filtro;
465
+ - `@praxisui/dynamic-fields`: documenta e publica os componentes inline reutilizaveis;
466
+ - hosts oficiais devem consumir o catalogo exportado da lib, nao reconstruir uma lista inline paralela.
467
+
468
+ Regra para ranges Java:
469
+
470
+ - 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.
471
+
472
+ ## Comparativos rapidos de curadoria
473
+
474
+ ### Prefira `inlineSelect` em vez de `inlinePipelineStatus` quando
475
+
476
+ - o valor final for um enum simples
477
+ - nao houver jornada operacional clara por etapas
478
+ - a pill precisar permanecer discreta na toolbar
479
+
480
+ ### Prefira `inlineDateRange` em vez de `inlineRelativePeriod` quando
481
+
482
+ - o time precisa de rastreabilidade exata por data
483
+ - o backend nao normaliza presets relativos de forma canonica
484
+ - usuarios auditam o filtro pelo valor final, nao pelo atalho semantico
485
+
486
+ ### Prefira `inlineRange` em vez de `inlineRating` ou `inlineScorePriority` quando
487
+
488
+ - a pessoa usuaria pensa em numero bruto
489
+ - nao existe legenda de dominio forte
490
+ - o valor precisa ser comparado com facilidade entre telas
491
+
492
+ ### Prefira `inlineMultiSelect` em vez de `inlineColorLabel` quando
493
+
494
+ - a cor nao for semanticamente confiavel
495
+ - o estado final precisar continuar claro em acessibilidade
496
+ - o usuario reconhecer a categoria pelo texto, nao pelo badge
497
+
498
+ ### Prefira filtro avancado em vez de `inlineTreeSelect` quando
499
+
500
+ - a arvore tiver muitos niveis
501
+ - a decisao depender de explorar varios ramos
502
+ - a pessoa usuaria precisar revisar a estrutura para confiar no filtro ativo