@praxisui/dynamic-fields 8.0.0-beta.9 → 8.0.0-beta.91

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