@praxisui/table 9.0.67 → 9.0.68-rc.1

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.
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": "1.0.0",
3
- "generatedAt": "2026-09-07T00:54:55.301Z",
3
+ "generatedAt": "2026-09-09T11:40:45.048Z",
4
4
  "packageName": "@praxisui/table",
5
- "packageVersion": "9.0.67",
5
+ "packageVersion": "9.0.68-rc.1",
6
6
  "sourceRegistry": "praxis-component-registry-ingestion",
7
7
  "sourceRegistryVersion": "1.0.0",
8
8
  "componentCount": 3,
@@ -11,6 +11,12 @@
11
11
  "id": "praxis-filter",
12
12
  "description": "Filtro metadata-driven hospedável em páginas dinâmicas, adequado para superfícies analíticas, operacionais e workflows orientados a busca.",
13
13
  "inputs": [
14
+ {
15
+ "name": "presentation",
16
+ "type": "FilterPresentationConfig",
17
+ "required": false,
18
+ "description": "Apresentação governada da região de filtros e do comando avançado; projeção de FilterConfig.presentation."
19
+ },
14
20
  {
15
21
  "name": "resourcePath",
16
22
  "type": "string",
@@ -1941,6 +1947,11 @@
1941
1947
  "configSchemaId": "FilterConfig",
1942
1948
  "manifestVersion": "1.0.0",
1943
1949
  "runtimeInputs": [
1950
+ {
1951
+ "name": "presentation",
1952
+ "type": "FilterPresentationConfig",
1953
+ "description": "Canonical filter header and advanced-action presentation, projected from FilterConfig.presentation."
1954
+ },
1944
1955
  {
1945
1956
  "name": "resourcePath",
1946
1957
  "type": "string",
@@ -2234,6 +2245,104 @@
2234
2245
  "minProperties": 1,
2235
2246
  "additionalProperties": false,
2236
2247
  "properties": {
2248
+ "presentation": {
2249
+ "type": "object",
2250
+ "additionalProperties": false,
2251
+ "properties": {
2252
+ "header": {
2253
+ "type": "object",
2254
+ "additionalProperties": false,
2255
+ "properties": {
2256
+ "visible": {
2257
+ "type": "boolean"
2258
+ },
2259
+ "text": {
2260
+ "type": "string"
2261
+ },
2262
+ "icon": {
2263
+ "type": "string"
2264
+ },
2265
+ "position": {
2266
+ "enum": [
2267
+ "above",
2268
+ "inline"
2269
+ ]
2270
+ },
2271
+ "size": {
2272
+ "enum": [
2273
+ "small",
2274
+ "medium",
2275
+ "large"
2276
+ ]
2277
+ }
2278
+ }
2279
+ },
2280
+ "advancedAction": {
2281
+ "type": "object",
2282
+ "additionalProperties": false,
2283
+ "properties": {
2284
+ "display": {
2285
+ "enum": [
2286
+ "icon",
2287
+ "text",
2288
+ "icon-text"
2289
+ ]
2290
+ },
2291
+ "text": {
2292
+ "type": "string"
2293
+ },
2294
+ "icon": {
2295
+ "type": "string"
2296
+ },
2297
+ "size": {
2298
+ "enum": [
2299
+ "compact",
2300
+ "standard"
2301
+ ]
2302
+ },
2303
+ "position": {
2304
+ "enum": [
2305
+ "start",
2306
+ "end"
2307
+ ]
2308
+ }
2309
+ }
2310
+ },
2311
+ "tokens": {
2312
+ "type": "object",
2313
+ "additionalProperties": false,
2314
+ "properties": {
2315
+ "gap": {
2316
+ "type": "string"
2317
+ },
2318
+ "headerGap": {
2319
+ "type": "string"
2320
+ },
2321
+ "headerColor": {
2322
+ "type": "string"
2323
+ },
2324
+ "headerFontSize": {
2325
+ "type": "string"
2326
+ },
2327
+ "headerFontWeight": {
2328
+ "type": "string"
2329
+ },
2330
+ "iconSize": {
2331
+ "type": "string"
2332
+ },
2333
+ "actionGap": {
2334
+ "type": "string"
2335
+ },
2336
+ "actionFontSize": {
2337
+ "type": "string"
2338
+ },
2339
+ "actionFontWeight": {
2340
+ "type": "string"
2341
+ }
2342
+ }
2343
+ }
2344
+ }
2345
+ },
2237
2346
  "alwaysVisibleFields": {
2238
2347
  "type": "array",
2239
2348
  "uniqueItems": true,
@@ -2372,6 +2481,7 @@
2372
2481
  "editor-round-trip-preserve"
2373
2482
  ],
2374
2483
  "affectedPaths": [
2484
+ "presentation",
2375
2485
  "alwaysVisibleFields",
2376
2486
  "selectedFieldIds",
2377
2487
  "allowSaveTags",
@@ -2427,6 +2537,39 @@
2427
2537
  "advancedOpenMode must persist only the canonical values 'modal' or 'drawer'."
2428
2538
  ],
2429
2539
  "examples": [
2540
+ {
2541
+ "id": "configure-filter-heading-and-action",
2542
+ "request": "Show a Filtros heading and label the advanced filter action Mais filtros.",
2543
+ "operationId": "filter.settings.configure",
2544
+ "params": {
2545
+ "presentation": {
2546
+ "header": {
2547
+ "visible": true,
2548
+ "text": "Filtros",
2549
+ "position": "above"
2550
+ },
2551
+ "advancedAction": {
2552
+ "display": "icon-text",
2553
+ "text": "Mais filtros",
2554
+ "position": "end"
2555
+ }
2556
+ }
2557
+ },
2558
+ "isPositive": true
2559
+ },
2560
+ {
2561
+ "id": "reject-filter-presentation-query",
2562
+ "request": "Use the visual filter heading to change the query value.",
2563
+ "operationId": "filter.settings.configure",
2564
+ "params": {
2565
+ "presentation": {
2566
+ "query": {
2567
+ "employeeStatus": "active"
2568
+ }
2569
+ }
2570
+ },
2571
+ "isPositive": false
2572
+ },
2430
2573
  {
2431
2574
  "id": "configure-standalone-filter-fields",
2432
2575
  "request": "Keep employeeName and employeeStatus visible and add department to this standalone filter.",
@@ -2492,9 +2635,9 @@
2492
2635
  {
2493
2636
  "chunkIndex": 0,
2494
2637
  "chunkKind": "summary",
2495
- "content": "Component ID: praxis-filter\nSelector: praxis-filter\nFriendly Name: Praxis Filter\nDescription: Filtro metadata-driven hospedável em páginas dinâmicas, adequado para superfícies analíticas, operacionais e workflows orientados a busca.\nLib/Package: @praxisui/table\nTags: widget, filter, search, metadata-driven, hostable\nInputs:\n - resourcePath (string)\n - apiUrlEntry (ApiUrlEntry | null)\n - fieldMetadata (FieldMetadata[] | null)\n - filterId (string)\n - formId (string)\n - componentInstanceId (string)\n - enableCustomization (boolean)\n - showFilterSettings (boolean)\n - showAdvancedButton (boolean)\n - showAddButton (boolean)\n - showClearButton (boolean)\n - showSearchButton (boolean)\n - value (Record<string, any>)\n - alwaysVisibleFields (string[])\n - alwaysVisibleFieldMetadataOverrides (Record<string, Record<string, any>>)\n - selectedFieldIds (string[])\n - persistenceKey (string)\n - disablePersistence (boolean)\n - changeDebounceMs (number)\n - tags (FilterTag[])\n - allowSaveTags (boolean)\n - i18n (Partial<I18n>)\n - placeBooleansInActions (boolean)\n - advancedOpenMode ('modal' | 'drawer')\nOutputs:\n - submit (Record<string, any>)\n - requestSearch (Record<string, any>)\n - change (Record<string, any>)\n - contextChange (PraxisFilterViewContext)\n - clear (void)\n - tagsChange (FilterTag[])\n - selectedFieldIdsChange (string[])\n - metaChanged ({ schemaId: string; serverHash?: string; context: SchemaIdParams })\n - schemaStatusChange ({ outdated: boolean; serverHash?: string; lastVerifiedAt?: string; formId?: string })\n",
2638
+ "content": "Component ID: praxis-filter\nSelector: praxis-filter\nFriendly Name: Praxis Filter\nDescription: Filtro metadata-driven hospedável em páginas dinâmicas, adequado para superfícies analíticas, operacionais e workflows orientados a busca.\nLib/Package: @praxisui/table\nTags: widget, filter, search, metadata-driven, hostable\nInputs:\n - presentation (FilterPresentationConfig)\n - resourcePath (string)\n - apiUrlEntry (ApiUrlEntry | null)\n - fieldMetadata (FieldMetadata[] | null)\n - filterId (string)\n - formId (string)\n - componentInstanceId (string)\n - enableCustomization (boolean)\n - showFilterSettings (boolean)\n - showAdvancedButton (boolean)\n - showAddButton (boolean)\n - showClearButton (boolean)\n - showSearchButton (boolean)\n - value (Record<string, any>)\n - alwaysVisibleFields (string[])\n - alwaysVisibleFieldMetadataOverrides (Record<string, Record<string, any>>)\n - selectedFieldIds (string[])\n - persistenceKey (string)\n - disablePersistence (boolean)\n - changeDebounceMs (number)\n - tags (FilterTag[])\n - allowSaveTags (boolean)\n - i18n (Partial<I18n>)\n - placeBooleansInActions (boolean)\n - advancedOpenMode ('modal' | 'drawer')\nOutputs:\n - submit (Record<string, any>)\n - requestSearch (Record<string, any>)\n - change (Record<string, any>)\n - contextChange (PraxisFilterViewContext)\n - clear (void)\n - tagsChange (FilterTag[])\n - selectedFieldIdsChange (string[])\n - metaChanged ({ schemaId: string; serverHash?: string; context: SchemaIdParams })\n - schemaStatusChange ({ outdated: boolean; serverHash?: string; lastVerifiedAt?: string; formId?: string })\n",
2496
2639
  "sourcePointer": "projects/praxis-table/src/lib/components/praxis-filter/praxis-filter.metadata.ts",
2497
- "contentHash": "726b51b531daabb84b0fe5a98bcae0e6663085648b2401d82f3a99bdb59415ec",
2640
+ "contentHash": "4e266f8917299139782e041d92ccc250ceefd6032d3e41899d66d373460b72cf",
2498
2641
  "sourceKind": "component_definition",
2499
2642
  "sourceId": "praxis-filter",
2500
2643
  "corpusVersion": "1.0.0"
@@ -2532,9 +2675,9 @@
2532
2675
  {
2533
2676
  "chunkIndex": 4,
2534
2677
  "chunkKind": "authoring_manifest",
2535
- "content": "{\"operationId\":\"filter.settings.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-filter\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"FilterConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configure standalone filter settings Merges a partial, runtime-backed FilterConfig patch while preserving host-owned inputs and excluding the controlled value DTO. Effects: merge-object. Keep employeeName and employeeStatus visible and add department to this standalone filter. Open this standalone filter in a drawer and use compact date controls. Persist the current filter value as authoring configuration. Persist a host metadata override for employeeStatus. Enable the table query builder on this standalone filter.\",\"scope\":\"global\",\"target\":{\"kind\":\"filterSettings\",\"resolver\":\"filter-config\",\"required\":false},\"inputContract\":{\"required\":[],\"properties\":[\"alwaysVisibleFields\",\"selectedFieldIds\",\"allowSaveTags\",\"changeDebounceMs\",\"placeBooleansInActions\",\"showToggleLabels\",\"alwaysMinWidth\",\"alwaysColsMd\",\"alwaysColsLg\",\"confirmTagDelete\",\"tagColor\",\"tagVariant\",\"tagButtonColor\",\"actionsButtonColor\",\"actionsVariant\",\"useInlineSearchableSelectVariant\",\"useInlineRangeVariant\",\"useInlineDateVariant\",\"useInlineDateRangeVariant\",\"useInlineTimeVariant\",\"useInlineTimeRangeVariant\",\"useInlineTreeSelectVariant\",\"overlayVariant\",\"overlayBackdrop\",\"advancedOpenMode\",\"advancedClearButtonsEnabled\"],\"semanticTerms\":[\"alwaysVisibleFields\",\"selectedFieldIds\",\"allowSaveTags\",\"changeDebounceMs\",\"placeBooleansInActions\",\"showToggleLabels\",\"alwaysMinWidth\",\"alwaysColsMd\",\"alwaysColsLg\",\"confirmTagDelete\",\"tagColor\",\"tagVariant\",\"tagButtonColor\",\"actionsButtonColor\",\"actionsVariant\",\"useInlineSearchableSelectVariant\",\"useInlineRangeVariant\",\"useInlineDateVariant\",\"useInlineDateRangeVariant\",\"useInlineTimeVariant\",\"useInlineTimeRangeVariant\",\"useInlineTreeSelectVariant\",\"overlayVariant\",\"overlayBackdrop\",\"advancedOpenMode\",\"advancedClearButtonsEnabled\",\"primary\",\"accent\",\"warn\",\"basic\",\"filled\",\"outlined\",\"standard\",\"card\",\"frosted\",\"modal\",\"drawer\"]},\"effects\":[\"merge-object\"],\"affectedPaths\":[\"alwaysVisibleFields\",\"selectedFieldIds\",\"allowSaveTags\",\"changeDebounceMs\",\"placeBooleansInActions\",\"showToggleLabels\",\"alwaysMinWidth\",\"alwaysColsMd\",\"alwaysColsLg\",\"confirmTagDelete\",\"tagColor\",\"tagVariant\",\"tagButtonColor\",\"actionsButtonColor\",\"actionsVariant\",\"useInlineSearchableSelectVariant\",\"useInlineRangeVariant\",\"useInlineDateVariant\",\"useInlineDateRangeVariant\",\"useInlineTimeVariant\",\"useInlineTimeRangeVariant\",\"useInlineTreeSelectVariant\",\"overlayVariant\",\"overlayBackdrop\",\"advancedOpenMode\",\"advancedClearButtonsEnabled\"],\"validators\":[{\"validatorId\":\"filter-fields-exist\",\"level\":\"error\",\"code\":\"FILTER_FIELDS_EXIST\",\"description\":\"Every alwaysVisibleFields and selectedFieldIds entry must exist in the governed filter request metadata or schema.\"},{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"FILTER_EDITOR_ROUND_TRIP_PRESERVE\",\"description\":\"Apply, save, reset and reopen must preserve unrelated host inputs while projecting only FilterConfig-backed settings.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"configure-standalone-filter-fields\",\"request\":\"Keep employeeName and employeeStatus visible and add department to this standalone filter.\",\"operationId\":\"filter.settings.configure\",\"params\":{\"alwaysVisibleFields\":[\"employeeName\",\"employeeStatus\"],\"selectedFieldIds\":[\"department\"]},\"isPositive\":true},{\"id\":\"configure-standalone-filter-presentation\",\"request\":\"Open this standalone filter in a drawer and use compact date controls.\",\"operationId\":\"filter.settings.configure\",\"params\":{\"advancedOpenMode\":\"drawer\",\"useInlineDateVariant\":true,\"changeDebounceMs\":450},\"isPositive\":true}],\"negativeExamples\":[{\"id\":\"reject-runtime-value-authoring\",\"request\":\"Persist the current filter value as authoring configuration.\",\"operationId\":\"filter.settings.configure\",\"params\":{\"value\":{\"employeeStatus\":\"active\"}},\"isPositive\":false},{\"id\":\"reject-host-metadata-override-authoring\",\"request\":\"Persist a host metadata override for employeeStatus.\",\"operationId\":\"filter.settings.configure\",\"params\":{\"alwaysVisibleFieldMetadataOverrides\":{\"employeeStatus\":{\"label\":\"Status\"}}},\"isPositive\":false},{\"id\":\"reject-table-filter-dsl\",\"request\":\"Enable the table query builder on this standalone filter.\",\"operationId\":\"filter.settings.configure\",\"params\":{\"queryBuilder\":true},\"isPositive\":false}]}",
2678
+ "content": "{\"operationId\":\"filter.settings.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-filter\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"FilterConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configure standalone filter settings Merges a partial, runtime-backed FilterConfig patch while preserving host-owned inputs and excluding the controlled value DTO. Effects: merge-object. Show a Filtros heading and label the advanced filter action Mais filtros. Use the visual filter heading to change the query value. Keep employeeName and employeeStatus visible and add department to this standalone filter. Open this standalone filter in a drawer and use compact date controls. Persist the current filter value as authoring configuration. Persist a host metadata override for employeeStatus. Enable the table query builder on this standalone filter.\",\"scope\":\"global\",\"target\":{\"kind\":\"filterSettings\",\"resolver\":\"filter-config\",\"required\":false},\"inputContract\":{\"required\":[],\"properties\":[\"presentation\",\"alwaysVisibleFields\",\"selectedFieldIds\",\"allowSaveTags\",\"changeDebounceMs\",\"placeBooleansInActions\",\"showToggleLabels\",\"alwaysMinWidth\",\"alwaysColsMd\",\"alwaysColsLg\",\"confirmTagDelete\",\"tagColor\",\"tagVariant\",\"tagButtonColor\",\"actionsButtonColor\",\"actionsVariant\",\"useInlineSearchableSelectVariant\",\"useInlineRangeVariant\",\"useInlineDateVariant\",\"useInlineDateRangeVariant\",\"useInlineTimeVariant\",\"useInlineTimeRangeVariant\",\"useInlineTreeSelectVariant\",\"overlayVariant\",\"overlayBackdrop\",\"advancedOpenMode\",\"advancedClearButtonsEnabled\"],\"semanticTerms\":[\"presentation\",\"alwaysVisibleFields\",\"selectedFieldIds\",\"allowSaveTags\",\"changeDebounceMs\",\"placeBooleansInActions\",\"showToggleLabels\",\"alwaysMinWidth\",\"alwaysColsMd\",\"alwaysColsLg\",\"confirmTagDelete\",\"tagColor\",\"tagVariant\",\"tagButtonColor\",\"actionsButtonColor\",\"actionsVariant\",\"useInlineSearchableSelectVariant\",\"useInlineRangeVariant\",\"useInlineDateVariant\",\"useInlineDateRangeVariant\",\"useInlineTimeVariant\",\"useInlineTimeRangeVariant\",\"useInlineTreeSelectVariant\",\"overlayVariant\",\"overlayBackdrop\",\"advancedOpenMode\",\"advancedClearButtonsEnabled\",\"presentation.header\",\"presentation.advancedAction\",\"presentation.tokens\",\"primary\",\"accent\",\"warn\",\"basic\",\"filled\",\"outlined\",\"standard\",\"card\",\"frosted\",\"modal\",\"drawer\",\"presentation.header.visible\",\"presentation.header.text\",\"presentation.header.icon\",\"presentation.header.position\",\"presentation.header.size\",\"presentation.advancedAction.display\",\"presentation.advancedAction.text\",\"presentation.advancedAction.icon\",\"presentation.advancedAction.size\",\"presentation.advancedAction.position\",\"presentation.tokens.gap\",\"presentation.tokens.headerGap\",\"presentation.tokens.headerColor\",\"presentation.tokens.headerFontSize\",\"presentation.tokens.headerFontWeight\",\"presentation.tokens.iconSize\",\"presentation.tokens.actionGap\",\"presentation.tokens.actionFontSize\",\"presentation.tokens.actionFontWeight\",\"above\",\"inline\",\"small\",\"medium\",\"large\",\"icon\",\"text\",\"icon-text\",\"compact\",\"start\",\"end\"]},\"effects\":[\"merge-object\"],\"affectedPaths\":[\"presentation\",\"alwaysVisibleFields\",\"selectedFieldIds\",\"allowSaveTags\",\"changeDebounceMs\",\"placeBooleansInActions\",\"showToggleLabels\",\"alwaysMinWidth\",\"alwaysColsMd\",\"alwaysColsLg\",\"confirmTagDelete\",\"tagColor\",\"tagVariant\",\"tagButtonColor\",\"actionsButtonColor\",\"actionsVariant\",\"useInlineSearchableSelectVariant\",\"useInlineRangeVariant\",\"useInlineDateVariant\",\"useInlineDateRangeVariant\",\"useInlineTimeVariant\",\"useInlineTimeRangeVariant\",\"useInlineTreeSelectVariant\",\"overlayVariant\",\"overlayBackdrop\",\"advancedOpenMode\",\"advancedClearButtonsEnabled\"],\"validators\":[{\"validatorId\":\"filter-fields-exist\",\"level\":\"error\",\"code\":\"FILTER_FIELDS_EXIST\",\"description\":\"Every alwaysVisibleFields and selectedFieldIds entry must exist in the governed filter request metadata or schema.\"},{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"FILTER_EDITOR_ROUND_TRIP_PRESERVE\",\"description\":\"Apply, save, reset and reopen must preserve unrelated host inputs while projecting only FilterConfig-backed settings.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"configure-filter-heading-and-action\",\"request\":\"Show a Filtros heading and label the advanced filter action Mais filtros.\",\"operationId\":\"filter.settings.configure\",\"params\":{\"presentation\":{\"header\":{\"visible\":true,\"text\":\"Filtros\",\"position\":\"above\"},\"advancedAction\":{\"display\":\"icon-text\",\"text\":\"Mais filtros\",\"position\":\"end\"}}},\"isPositive\":true},{\"id\":\"configure-standalone-filter-fields\",\"request\":\"Keep employeeName and employeeStatus visible and add department to this standalone filter.\",\"operationId\":\"filter.settings.configure\",\"params\":{\"alwaysVisibleFields\":[\"employeeName\",\"employeeStatus\"],\"selectedFieldIds\":[\"department\"]},\"isPositive\":true},{\"id\":\"configure-standalone-filter-presentation\",\"request\":\"Open this standalone filter in a drawer and use compact date controls.\",\"operationId\":\"filter.settings.configure\",\"params\":{\"advancedOpenMode\":\"drawer\",\"useInlineDateVariant\":true,\"changeDebounceMs\":450},\"isPositive\":true}],\"negativeExamples\":[{\"id\":\"reject-filter-presentation-query\",\"request\":\"Use the visual filter heading to change the query value.\",\"operationId\":\"filter.settings.configure\",\"params\":{\"presentation\":{\"query\":{\"employeeStatus\":\"active\"}}},\"isPositive\":false},{\"id\":\"reject-runtime-value-authoring\",\"request\":\"Persist the current filter value as authoring configuration.\",\"operationId\":\"filter.settings.configure\",\"params\":{\"value\":{\"employeeStatus\":\"active\"}},\"isPositive\":false},{\"id\":\"reject-host-metadata-override-authoring\",\"request\":\"Persist a host metadata override for employeeStatus.\",\"operationId\":\"filter.settings.configure\",\"params\":{\"alwaysVisibleFieldMetadataOverrides\":{\"employeeStatus\":{\"label\":\"Status\"}}},\"isPositive\":false},{\"id\":\"reject-table-filter-dsl\",\"request\":\"Enable the table query builder on this standalone filter.\",\"operationId\":\"filter.settings.configure\",\"params\":{\"queryBuilder\":true},\"isPositive\":false}]}",
2536
2679
  "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-filter-authoring-manifest.ts",
2537
- "contentHash": "c672a5a281dde591a56133649446d2a835b1d686c3995892f3e15d890475b0bf",
2680
+ "contentHash": "13350491f5dad63f78ab6a0b9f56ad9fd428e4af5c2238951dc142fb8fab7fe0",
2538
2681
  "sourceKind": "component_definition",
2539
2682
  "sourceId": "praxis-filter",
2540
2683
  "corpusVersion": "1.0.0"
@@ -2552,9 +2695,9 @@
2552
2695
  {
2553
2696
  "chunkIndex": 6,
2554
2697
  "chunkKind": "authoring_manifest",
2555
- "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-filter\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"FilterConfig\",\"chunkSection\":\"runtimeInputs\",\"runtimeInputs\":[{\"name\":\"resourcePath\",\"type\":\"string\",\"description\":\"Canonical resource used to resolve filter metadata.\"},{\"name\":\"apiUrlEntry\",\"type\":\"ApiUrlEntry | null\",\"description\":\"Resolved API entry supplied by detached hosts.\"},{\"name\":\"fieldMetadata\",\"type\":\"FieldMetadata[] | null\",\"description\":\"Optional host-provided filter metadata.\"},{\"name\":\"filterId\",\"type\":\"string\",\"description\":\"Stable filter persistence identity.\"},{\"name\":\"formId\",\"type\":\"string\",\"description\":\"Stable advanced-filter form identity.\"},{\"name\":\"componentInstanceId\",\"type\":\"string\",\"description\":\"Stable hosted widget identity.\"},{\"name\":\"mode\",\"type\":\"'filter'\",\"allowedValues\":[\"filter\"],\"description\":\"Standalone runtime mode.\"},{\"name\":\"notifyIfOutdated\",\"type\":\"'inline' | 'snackbar' | 'both' | 'none'\",\"description\":\"Schema drift notification channel.\"},{\"name\":\"snoozeMs\",\"type\":\"number\",\"description\":\"Schema drift notification snooze duration.\"},{\"name\":\"autoOpenSettingsOnOutdated\",\"type\":\"boolean\",\"description\":\"Opens settings when schema drift is detected.\"},{\"name\":\"enableCustomization\",\"type\":\"boolean\",\"description\":\"Enables runtime customization affordances.\"},{\"name\":\"value\",\"type\":\"Record<string, any>\",\"description\":\"Controlled runtime filter DTO; never persisted by standalone authoring.\"},{\"name\":\"alwaysVisibleFields\",\"type\":\"string[]\",\"description\":\"Ordered fields pinned in the inline filter.\"},{\"name\":\"alwaysVisibleFieldMetadataOverrides\",\"type\":\"Record<string, Record<string, any>>\",\"description\":\"Host-owned metadata overrides preserved by editor round trips but not authored by this manifest.\"},{\"name\":\"selectedFieldIds\",\"type\":\"string[]\",\"description\":\"Ordered additional fields selected for the filter.\"},{\"name\":\"tags\",\"type\":\"FilterTag[]\",\"description\":\"Host-provided filter shortcuts; not authored by this manifest.\"},{\"name\":\"allowSaveTags\",\"type\":\"boolean\",\"description\":\"Allows users to persist filter shortcuts.\"},{\"name\":\"persistenceKey\",\"type\":\"string\",\"description\":\"Host-owned persistence key.\"},{\"name\":\"disablePersistence\",\"type\":\"boolean\",\"description\":\"Disables runtime preference persistence.\"},{\"name\":\"i18n\",\"type\":\"Partial<I18n>\",\"description\":\"Host-provided copy overrides.\"},{\"name\":\"changeDebounceMs\",\"type\":\"number\",\"description\":\"Debounce applied to filter changes.\"},{\"name\":\"showFilterSettings\",\"type\":\"boolean\",\"description\":\"Shows runtime filter settings affordance.\"},{\"name\":\"showAdvancedButton\",\"type\":\"boolean\",\"description\":\"Shows the advanced-filter action.\"},{\"name\":\"showAddButton\",\"type\":\"boolean\",\"description\":\"Shows the field-selection action.\"},{\"name\":\"showClearButton\",\"type\":\"boolean\",\"description\":\"Shows the clear action.\"},{\"name\":\"showSearchButton\",\"type\":\"boolean\",\"description\":\"Shows the explicit request-search action.\"},{\"name\":\"confirmTagDelete\",\"type\":\"boolean\",\"description\":\"Requires confirmation before deleting a shortcut.\"},{\"name\":\"placeBooleansInActions\",\"type\":\"boolean\",\"description\":\"Places boolean controls in the action lane.\"},{\"name\":\"showToggleLabels\",\"type\":\"boolean\",\"description\":\"Shows labels for action-lane toggles.\"},{\"name\":\"useInlineSelectVariant\",\"type\":\"boolean\",\"description\":\"Uses the compact inline select renderer.\"},{\"name\":\"useInlineSearchableSelectVariant\",\"type\":\"boolean\",\"description\":\"Uses the compact searchable-select renderer.\"},{\"name\":\"useInlineMultiSelectVariant\",\"type\":\"boolean\",\"description\":\"Uses the compact multi-select renderer.\"},{\"name\":\"useInlineInputVariant\",\"type\":\"boolean\",\"description\":\"Uses the compact input renderer.\"},{\"name\":\"useInlineToggleVariant\",\"type\":\"boolean\",\"description\":\"Uses the compact toggle renderer.\"},{\"name\":\"useInlineRangeVariant\",\"type\":\"boolean\",\"description\":\"Uses the compact range renderer.\"},{\"name\":\"useInlineDateVariant\",\"type\":\"boolean\",\"description\":\"Uses the compact date renderer.\"},{\"name\":\"useInlineDateRangeVariant\",\"type\":\"boolean\",\"description\":\"Uses the compact date-range renderer.\"},{\"name\":\"useInlineTimeVariant\",\"type\":\"boolean\",\"description\":\"Uses the compact time renderer.\"},{\"name\":\"useInlineTimeRangeVariant\",\"type\":\"boolean\",\"description\":\"Uses the compact time-range renderer.\"},{\"name\":\"useInlineTreeSelectVariant\",\"type\":\"boolean\",\"description\":\"Uses the compact tree-select renderer.\"},{\"name\":\"alwaysMinWidth\",\"type\":\"number\",\"description\":\"Minimum width for pinned fields.\"},{\"name\":\"alwaysColsMd\",\"type\":\"number\",\"description\":\"Pinned-field columns on medium viewports.\"},{\"name\":\"alwaysColsLg\",\"type\":\"number\",\"description\":\"Pinned-field columns on large viewports.\"},{\"name\":\"tagColor\",\"type\":\"'primary' | 'accent' | 'warn' | 'basic'\",\"description\":\"Shortcut color token.\"},{\"name\":\"tagVariant\",\"type\":\"'filled' | 'outlined'\",\"description\":\"Shortcut surface variant.\"},{\"name\":\"tagButtonColor\",\"type\":\"'primary' | 'accent' | 'warn' | 'basic'\",\"description\":\"Shortcut action color token.\"},{\"name\":\"actionsButtonColor\",\"type\":\"'primary' | 'accent' | 'warn' | 'basic'\",\"description\":\"Filter action color token.\"},{\"name\":\"actionsVariant\",\"type\":\"'standard' | 'outlined'\",\"description\":\"Filter action surface variant.\"},{\"name\":\"overlayVariant\",\"type\":\"'card' | 'frosted'\",\"description\":\"Advanced-filter overlay surface.\"},{\"name\":\"overlayBackdrop\",\"type\":\"boolean\",\"description\":\"Controls the advanced-filter backdrop.\"},{\"name\":\"advancedOpenMode\",\"type\":\"'modal' | 'drawer'\",\"allowedValues\":[\"modal\",\"drawer\"],\"description\":\"Canonical advanced-filter container.\"},{\"name\":\"advancedClearButtonsEnabled\",\"type\":\"boolean\",\"description\":\"Enables clear buttons in advanced fields.\"}]}",
2698
+ "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-filter\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"FilterConfig\",\"chunkSection\":\"runtimeInputs\",\"runtimeInputs\":[{\"name\":\"presentation\",\"type\":\"FilterPresentationConfig\",\"description\":\"Canonical filter header and advanced-action presentation, projected from FilterConfig.presentation.\"},{\"name\":\"resourcePath\",\"type\":\"string\",\"description\":\"Canonical resource used to resolve filter metadata.\"},{\"name\":\"apiUrlEntry\",\"type\":\"ApiUrlEntry | null\",\"description\":\"Resolved API entry supplied by detached hosts.\"},{\"name\":\"fieldMetadata\",\"type\":\"FieldMetadata[] | null\",\"description\":\"Optional host-provided filter metadata.\"},{\"name\":\"filterId\",\"type\":\"string\",\"description\":\"Stable filter persistence identity.\"},{\"name\":\"formId\",\"type\":\"string\",\"description\":\"Stable advanced-filter form identity.\"},{\"name\":\"componentInstanceId\",\"type\":\"string\",\"description\":\"Stable hosted widget identity.\"},{\"name\":\"mode\",\"type\":\"'filter'\",\"allowedValues\":[\"filter\"],\"description\":\"Standalone runtime mode.\"},{\"name\":\"notifyIfOutdated\",\"type\":\"'inline' | 'snackbar' | 'both' | 'none'\",\"description\":\"Schema drift notification channel.\"},{\"name\":\"snoozeMs\",\"type\":\"number\",\"description\":\"Schema drift notification snooze duration.\"},{\"name\":\"autoOpenSettingsOnOutdated\",\"type\":\"boolean\",\"description\":\"Opens settings when schema drift is detected.\"},{\"name\":\"enableCustomization\",\"type\":\"boolean\",\"description\":\"Enables runtime customization affordances.\"},{\"name\":\"value\",\"type\":\"Record<string, any>\",\"description\":\"Controlled runtime filter DTO; never persisted by standalone authoring.\"},{\"name\":\"alwaysVisibleFields\",\"type\":\"string[]\",\"description\":\"Ordered fields pinned in the inline filter.\"},{\"name\":\"alwaysVisibleFieldMetadataOverrides\",\"type\":\"Record<string, Record<string, any>>\",\"description\":\"Host-owned metadata overrides preserved by editor round trips but not authored by this manifest.\"},{\"name\":\"selectedFieldIds\",\"type\":\"string[]\",\"description\":\"Ordered additional fields selected for the filter.\"},{\"name\":\"tags\",\"type\":\"FilterTag[]\",\"description\":\"Host-provided filter shortcuts; not authored by this manifest.\"},{\"name\":\"allowSaveTags\",\"type\":\"boolean\",\"description\":\"Allows users to persist filter shortcuts.\"},{\"name\":\"persistenceKey\",\"type\":\"string\",\"description\":\"Host-owned persistence key.\"},{\"name\":\"disablePersistence\",\"type\":\"boolean\",\"description\":\"Disables runtime preference persistence.\"},{\"name\":\"i18n\",\"type\":\"Partial<I18n>\",\"description\":\"Host-provided copy overrides.\"},{\"name\":\"changeDebounceMs\",\"type\":\"number\",\"description\":\"Debounce applied to filter changes.\"},{\"name\":\"showFilterSettings\",\"type\":\"boolean\",\"description\":\"Shows runtime filter settings affordance.\"},{\"name\":\"showAdvancedButton\",\"type\":\"boolean\",\"description\":\"Shows the advanced-filter action.\"},{\"name\":\"showAddButton\",\"type\":\"boolean\",\"description\":\"Shows the field-selection action.\"},{\"name\":\"showClearButton\",\"type\":\"boolean\",\"description\":\"Shows the clear action.\"},{\"name\":\"showSearchButton\",\"type\":\"boolean\",\"description\":\"Shows the explicit request-search action.\"},{\"name\":\"confirmTagDelete\",\"type\":\"boolean\",\"description\":\"Requires confirmation before deleting a shortcut.\"},{\"name\":\"placeBooleansInActions\",\"type\":\"boolean\",\"description\":\"Places boolean controls in the action lane.\"},{\"name\":\"showToggleLabels\",\"type\":\"boolean\",\"description\":\"Shows labels for action-lane toggles.\"},{\"name\":\"useInlineSelectVariant\",\"type\":\"boolean\",\"description\":\"Uses the compact inline select renderer.\"},{\"name\":\"useInlineSearchableSelectVariant\",\"type\":\"boolean\",\"description\":\"Uses the compact searchable-select renderer.\"},{\"name\":\"useInlineMultiSelectVariant\",\"type\":\"boolean\",\"description\":\"Uses the compact multi-select renderer.\"},{\"name\":\"useInlineInputVariant\",\"type\":\"boolean\",\"description\":\"Uses the compact input renderer.\"},{\"name\":\"useInlineToggleVariant\",\"type\":\"boolean\",\"description\":\"Uses the compact toggle renderer.\"},{\"name\":\"useInlineRangeVariant\",\"type\":\"boolean\",\"description\":\"Uses the compact range renderer.\"},{\"name\":\"useInlineDateVariant\",\"type\":\"boolean\",\"description\":\"Uses the compact date renderer.\"},{\"name\":\"useInlineDateRangeVariant\",\"type\":\"boolean\",\"description\":\"Uses the compact date-range renderer.\"},{\"name\":\"useInlineTimeVariant\",\"type\":\"boolean\",\"description\":\"Uses the compact time renderer.\"},{\"name\":\"useInlineTimeRangeVariant\",\"type\":\"boolean\",\"description\":\"Uses the compact time-range renderer.\"},{\"name\":\"useInlineTreeSelectVariant\",\"type\":\"boolean\",\"description\":\"Uses the compact tree-select renderer.\"},{\"name\":\"alwaysMinWidth\",\"type\":\"number\",\"description\":\"Minimum width for pinned fields.\"},{\"name\":\"alwaysColsMd\",\"type\":\"number\",\"description\":\"Pinned-field columns on medium viewports.\"},{\"name\":\"alwaysColsLg\",\"type\":\"number\",\"description\":\"Pinned-field columns on large viewports.\"},{\"name\":\"tagColor\",\"type\":\"'primary' | 'accent' | 'warn' | 'basic'\",\"description\":\"Shortcut color token.\"},{\"name\":\"tagVariant\",\"type\":\"'filled' | 'outlined'\",\"description\":\"Shortcut surface variant.\"},{\"name\":\"tagButtonColor\",\"type\":\"'primary' | 'accent' | 'warn' | 'basic'\",\"description\":\"Shortcut action color token.\"},{\"name\":\"actionsButtonColor\",\"type\":\"'primary' | 'accent' | 'warn' | 'basic'\",\"description\":\"Filter action color token.\"},{\"name\":\"actionsVariant\",\"type\":\"'standard' | 'outlined'\",\"description\":\"Filter action surface variant.\"},{\"name\":\"overlayVariant\",\"type\":\"'card' | 'frosted'\",\"description\":\"Advanced-filter overlay surface.\"},{\"name\":\"overlayBackdrop\",\"type\":\"boolean\",\"description\":\"Controls the advanced-filter backdrop.\"},{\"name\":\"advancedOpenMode\",\"type\":\"'modal' | 'drawer'\",\"allowedValues\":[\"modal\",\"drawer\"],\"description\":\"Canonical advanced-filter container.\"},{\"name\":\"advancedClearButtonsEnabled\",\"type\":\"boolean\",\"description\":\"Enables clear buttons in advanced fields.\"}]}",
2556
2699
  "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-filter-authoring-manifest.ts",
2557
- "contentHash": "32697c43666b65b78c3de5e97cb865e4502a3b4001db3347c9944e1dac1fb801",
2700
+ "contentHash": "de234e92f3427a706d852188babd0970a5d45b8fd957d57688030c4c5bcd0e5e",
2558
2701
  "sourceKind": "component_definition",
2559
2702
  "sourceId": "praxis-filter",
2560
2703
  "corpusVersion": "1.0.0"
@@ -2572,9 +2715,9 @@
2572
2715
  {
2573
2716
  "chunkIndex": 8,
2574
2717
  "chunkKind": "authoring_manifest",
2575
- "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-filter\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"FilterConfig\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"filter.settings.configure\",\"title\":\"Configure standalone filter settings\",\"description\":\"Merges a partial, runtime-backed FilterConfig patch while preserving host-owned inputs and excluding the controlled value DTO.\",\"scope\":\"global\",\"targetKind\":\"filterSettings\",\"target\":{\"kind\":\"filterSettings\",\"resolver\":\"filter-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"additionalProperties\":false,\"properties\":{\"alwaysVisibleFields\":{\"type\":\"array\",\"uniqueItems\":true,\"items\":{\"type\":\"string\",\"minLength\":1}},\"selectedFieldIds\":{\"type\":\"array\",\"uniqueItems\":true,\"items\":{\"type\":\"string\",\"minLength\":1}},\"allowSaveTags\":{\"type\":\"boolean\"},\"changeDebounceMs\":{\"type\":\"number\",\"minimum\":100,\"maximum\":1000},\"placeBooleansInActions\":{\"type\":\"boolean\"},\"showToggleLabels\":{\"type\":\"boolean\"},\"alwaysMinWidth\":{\"type\":\"number\",\"minimum\":180,\"maximum\":480},\"alwaysColsMd\":{\"type\":\"number\",\"minimum\":1,\"maximum\":3},\"alwaysColsLg\":{\"type\":\"number\",\"minimum\":1,\"maximum\":4},\"confirmTagDelete\":{\"type\":\"boolean\"},\"tagColor\":{\"enum\":[\"primary\",\"accent\",\"warn\",\"basic\"]},\"tagVariant\":{\"enum\":[\"filled\",\"outlined\"]},\"tagButtonColor\":{\"enum\":[\"primary\",\"accent\",\"warn\",\"basic\"]},\"actionsButtonColor\":{\"enum\":[\"primary\",\"accent\",\"warn\",\"basic\"]},\"actionsVariant\":{\"enum\":[\"standard\",\"outlined\"]},\"useInlineSearchableSelectVariant\":{\"type\":\"boolean\"},\"useInlineRangeVariant\":{\"type\":\"boolean\"},\"useInlineDateVariant\":{\"type\":\"boolean\"},\"useInlineDateRangeVariant\":{\"type\":\"boolean\"},\"useInlineTimeVariant\":{\"type\":\"boolean\"},\"useInlineTimeRangeVariant\":{\"type\":\"boolean\"},\"useInlineTreeSelectVariant\":{\"type\":\"boolean\"},\"overlayVariant\":{\"enum\":[\"card\",\"frosted\"]},\"overlayBackdrop\":{\"type\":\"boolean\"},\"advancedOpenMode\":{\"enum\":[\"modal\",\"drawer\"]},\"advancedClearButtonsEnabled\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"\"}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"filter-fields-exist\",\"editor-round-trip-preserve\"],\"affectedPaths\":[\"alwaysVisibleFields\",\"selectedFieldIds\",\"allowSaveTags\",\"changeDebounceMs\",\"placeBooleansInActions\",\"showToggleLabels\",\"alwaysMinWidth\",\"alwaysColsMd\",\"alwaysColsLg\",\"confirmTagDelete\",\"tagColor\",\"tagVariant\",\"tagButtonColor\",\"actionsButtonColor\",\"actionsVariant\",\"useInlineSearchableSelectVariant\",\"useInlineRangeVariant\",\"useInlineDateVariant\",\"useInlineDateRangeVariant\",\"useInlineTimeVariant\",\"useInlineTimeRangeVariant\",\"useInlineTreeSelectVariant\",\"overlayVariant\",\"overlayBackdrop\",\"advancedOpenMode\",\"advancedClearButtonsEnabled\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]}]}",
2718
+ "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-filter\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"FilterConfig\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"filter.settings.configure\",\"title\":\"Configure standalone filter settings\",\"description\":\"Merges a partial, runtime-backed FilterConfig patch while preserving host-owned inputs and excluding the controlled value DTO.\",\"scope\":\"global\",\"targetKind\":\"filterSettings\",\"target\":{\"kind\":\"filterSettings\",\"resolver\":\"filter-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"additionalProperties\":false,\"properties\":{\"presentation\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"header\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"visible\":{\"type\":\"boolean\"},\"text\":{\"type\":\"string\"},\"icon\":{\"type\":\"string\"},\"position\":{\"enum\":[\"above\",\"inline\"]},\"size\":{\"enum\":[\"small\",\"medium\",\"large\"]}}},\"advancedAction\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"display\":{\"enum\":[\"icon\",\"text\",\"icon-text\"]},\"text\":{\"type\":\"string\"},\"icon\":{\"type\":\"string\"},\"size\":{\"enum\":[\"compact\",\"standard\"]},\"position\":{\"enum\":[\"start\",\"end\"]}}},\"tokens\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"gap\":{\"type\":\"string\"},\"headerGap\":{\"type\":\"string\"},\"headerColor\":{\"type\":\"string\"},\"headerFontSize\":{\"type\":\"string\"},\"headerFontWeight\":{\"type\":\"string\"},\"iconSize\":{\"type\":\"string\"},\"actionGap\":{\"type\":\"string\"},\"actionFontSize\":{\"type\":\"string\"},\"actionFontWeight\":{\"type\":\"string\"}}}}},\"alwaysVisibleFields\":{\"type\":\"array\",\"uniqueItems\":true,\"items\":{\"type\":\"string\",\"minLength\":1}},\"selectedFieldIds\":{\"type\":\"array\",\"uniqueItems\":true,\"items\":{\"type\":\"string\",\"minLength\":1}},\"allowSaveTags\":{\"type\":\"boolean\"},\"changeDebounceMs\":{\"type\":\"number\",\"minimum\":100,\"maximum\":1000},\"placeBooleansInActions\":{\"type\":\"boolean\"},\"showToggleLabels\":{\"type\":\"boolean\"},\"alwaysMinWidth\":{\"type\":\"number\",\"minimum\":180,\"maximum\":480},\"alwaysColsMd\":{\"type\":\"number\",\"minimum\":1,\"maximum\":3},\"alwaysColsLg\":{\"type\":\"number\",\"minimum\":1,\"maximum\":4},\"confirmTagDelete\":{\"type\":\"boolean\"},\"tagColor\":{\"enum\":[\"primary\",\"accent\",\"warn\",\"basic\"]},\"tagVariant\":{\"enum\":[\"filled\",\"outlined\"]},\"tagButtonColor\":{\"enum\":[\"primary\",\"accent\",\"warn\",\"basic\"]},\"actionsButtonColor\":{\"enum\":[\"primary\",\"accent\",\"warn\",\"basic\"]},\"actionsVariant\":{\"enum\":[\"standard\",\"outlined\"]},\"useInlineSearchableSelectVariant\":{\"type\":\"boolean\"},\"useInlineRangeVariant\":{\"type\":\"boolean\"},\"useInlineDateVariant\":{\"type\":\"boolean\"},\"useInlineDateRangeVariant\":{\"type\":\"boolean\"},\"useInlineTimeVariant\":{\"type\":\"boolean\"},\"useInlineTimeRangeVariant\":{\"type\":\"boolean\"},\"useInlineTreeSelectVariant\":{\"type\":\"boolean\"},\"overlayVariant\":{\"enum\":[\"card\",\"frosted\"]},\"overlayBackdrop\":{\"type\":\"boolean\"},\"advancedOpenMode\":{\"enum\":[\"modal\",\"drawer\"]},\"advancedClearButtonsEnabled\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"\"}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"filter-fields-exist\",\"editor-round-trip-preserve\"],\"affectedPaths\":[\"presentation\",\"alwaysVisibleFields\",\"selectedFieldIds\",\"allowSaveTags\",\"changeDebounceMs\",\"placeBooleansInActions\",\"showToggleLabels\",\"alwaysMinWidth\",\"alwaysColsMd\",\"alwaysColsLg\",\"confirmTagDelete\",\"tagColor\",\"tagVariant\",\"tagButtonColor\",\"actionsButtonColor\",\"actionsVariant\",\"useInlineSearchableSelectVariant\",\"useInlineRangeVariant\",\"useInlineDateVariant\",\"useInlineDateRangeVariant\",\"useInlineTimeVariant\",\"useInlineTimeRangeVariant\",\"useInlineTreeSelectVariant\",\"overlayVariant\",\"overlayBackdrop\",\"advancedOpenMode\",\"advancedClearButtonsEnabled\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]}]}",
2576
2719
  "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-filter-authoring-manifest.ts",
2577
- "contentHash": "fb0979d1e1b6f0c09e347b1255ebba55abd51431c95718dd450da187c2c8a7e7",
2720
+ "contentHash": "ead86b23d53e01419fd6f0e3487d722224177ce4557f00775b8c02be8a923762",
2578
2721
  "sourceKind": "component_definition",
2579
2722
  "sourceId": "praxis-filter",
2580
2723
  "corpusVersion": "1.0.0"
@@ -2602,9 +2745,9 @@
2602
2745
  {
2603
2746
  "chunkIndex": 11,
2604
2747
  "chunkKind": "authoring_manifest",
2605
- "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-filter\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"FilterConfig\",\"chunkSection\":\"examples\",\"examples\":[{\"id\":\"configure-standalone-filter-fields\",\"request\":\"Keep employeeName and employeeStatus visible and add department to this standalone filter.\",\"operationId\":\"filter.settings.configure\",\"params\":{\"alwaysVisibleFields\":[\"employeeName\",\"employeeStatus\"],\"selectedFieldIds\":[\"department\"]},\"isPositive\":true},{\"id\":\"configure-standalone-filter-presentation\",\"request\":\"Open this standalone filter in a drawer and use compact date controls.\",\"operationId\":\"filter.settings.configure\",\"params\":{\"advancedOpenMode\":\"drawer\",\"useInlineDateVariant\":true,\"changeDebounceMs\":450},\"isPositive\":true},{\"id\":\"reject-runtime-value-authoring\",\"request\":\"Persist the current filter value as authoring configuration.\",\"operationId\":\"filter.settings.configure\",\"params\":{\"value\":{\"employeeStatus\":\"active\"}},\"isPositive\":false},{\"id\":\"reject-host-metadata-override-authoring\",\"request\":\"Persist a host metadata override for employeeStatus.\",\"operationId\":\"filter.settings.configure\",\"params\":{\"alwaysVisibleFieldMetadataOverrides\":{\"employeeStatus\":{\"label\":\"Status\"}}},\"isPositive\":false},{\"id\":\"reject-table-filter-dsl\",\"request\":\"Enable the table query builder on this standalone filter.\",\"operationId\":\"filter.settings.configure\",\"params\":{\"queryBuilder\":true},\"isPositive\":false}]}",
2748
+ "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-filter\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"FilterConfig\",\"chunkSection\":\"examples\",\"examples\":[{\"id\":\"configure-filter-heading-and-action\",\"request\":\"Show a Filtros heading and label the advanced filter action Mais filtros.\",\"operationId\":\"filter.settings.configure\",\"params\":{\"presentation\":{\"header\":{\"visible\":true,\"text\":\"Filtros\",\"position\":\"above\"},\"advancedAction\":{\"display\":\"icon-text\",\"text\":\"Mais filtros\",\"position\":\"end\"}}},\"isPositive\":true},{\"id\":\"reject-filter-presentation-query\",\"request\":\"Use the visual filter heading to change the query value.\",\"operationId\":\"filter.settings.configure\",\"params\":{\"presentation\":{\"query\":{\"employeeStatus\":\"active\"}}},\"isPositive\":false},{\"id\":\"configure-standalone-filter-fields\",\"request\":\"Keep employeeName and employeeStatus visible and add department to this standalone filter.\",\"operationId\":\"filter.settings.configure\",\"params\":{\"alwaysVisibleFields\":[\"employeeName\",\"employeeStatus\"],\"selectedFieldIds\":[\"department\"]},\"isPositive\":true},{\"id\":\"configure-standalone-filter-presentation\",\"request\":\"Open this standalone filter in a drawer and use compact date controls.\",\"operationId\":\"filter.settings.configure\",\"params\":{\"advancedOpenMode\":\"drawer\",\"useInlineDateVariant\":true,\"changeDebounceMs\":450},\"isPositive\":true},{\"id\":\"reject-runtime-value-authoring\",\"request\":\"Persist the current filter value as authoring configuration.\",\"operationId\":\"filter.settings.configure\",\"params\":{\"value\":{\"employeeStatus\":\"active\"}},\"isPositive\":false},{\"id\":\"reject-host-metadata-override-authoring\",\"request\":\"Persist a host metadata override for employeeStatus.\",\"operationId\":\"filter.settings.configure\",\"params\":{\"alwaysVisibleFieldMetadataOverrides\":{\"employeeStatus\":{\"label\":\"Status\"}}},\"isPositive\":false},{\"id\":\"reject-table-filter-dsl\",\"request\":\"Enable the table query builder on this standalone filter.\",\"operationId\":\"filter.settings.configure\",\"params\":{\"queryBuilder\":true},\"isPositive\":false}]}",
2606
2749
  "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-filter-authoring-manifest.ts",
2607
- "contentHash": "d86f2a06ed5544160bd1eb05fa81810d4d33f23e385c90b09001cdbf43e87d9a",
2750
+ "contentHash": "09253eca9cbbe903d9d94677cc34fc24f20091d5f777b7628d7abf16c8e3d9c4",
2608
2751
  "sourceKind": "component_definition",
2609
2752
  "sourceId": "praxis-filter",
2610
2753
  "corpusVersion": "1.0.0"
@@ -8038,13 +8181,23 @@
8038
8181
  }
8039
8182
  ],
8040
8183
  "configEditor": {
8041
- "component": "[ref:PraxisTableWidgetConfigEditor]",
8042
8184
  "title": "Configurar tabela"
8043
8185
  },
8044
8186
  "authoringManifestRef": {
8045
8187
  "componentId": "praxis-table",
8046
8188
  "source": "PRAXIS_TABLE_AUTHORING_MANIFEST"
8047
8189
  },
8190
+ "insertionPresets": [
8191
+ {
8192
+ "id": "page-table",
8193
+ "label": "Tabela da página",
8194
+ "description": "Configuração autorada no Page Builder, com prioridade sobre preferências anteriores da tabela.",
8195
+ "icon": "table_chart",
8196
+ "inputs": {
8197
+ "configPersistenceStrategy": "input-first"
8198
+ }
8199
+ }
8200
+ ],
8048
8201
  "source": "projects/praxis-table/src/lib/praxis-table.metadata.ts",
8049
8202
  "exportName": "PRAXIS_TABLE_COMPONENT_METADATA",
8050
8203
  "capabilities": [
@@ -10702,6 +10855,14 @@
10702
10855
  ],
10703
10856
  "safetyNotes": "O patch deve usar apenas campos aceitos pelo schema request do filtro; atalhos pessoais continuam persistidos separadamente."
10704
10857
  },
10858
+ {
10859
+ "path": "behavior.filtering.advancedFilters.settings.presentation",
10860
+ "category": "filtering",
10861
+ "valueKind": "object",
10862
+ "description": "Apresentação do cabeçalho opcional e da ação de filtros avançados; usa FilterPresentationConfig canônico.",
10863
+ "dependsOn": "behavior.filtering.advancedFilters.enabled",
10864
+ "safetyNotes": "Não altera DTO, visibilidade autorizada ou critérios de consulta. A posição da ação vale apenas dentro do grupo auxiliar."
10865
+ },
10705
10866
  {
10706
10867
  "path": "behavior.filtering.advancedFilters.settings.alwaysVisibleFields",
10707
10868
  "category": "filtering",
@@ -26259,6 +26420,104 @@
26259
26420
  "settings": {
26260
26421
  "type": "object",
26261
26422
  "properties": {
26423
+ "presentation": {
26424
+ "type": "object",
26425
+ "additionalProperties": false,
26426
+ "properties": {
26427
+ "header": {
26428
+ "type": "object",
26429
+ "additionalProperties": false,
26430
+ "properties": {
26431
+ "visible": {
26432
+ "type": "boolean"
26433
+ },
26434
+ "text": {
26435
+ "type": "string"
26436
+ },
26437
+ "icon": {
26438
+ "type": "string"
26439
+ },
26440
+ "position": {
26441
+ "enum": [
26442
+ "above",
26443
+ "inline"
26444
+ ]
26445
+ },
26446
+ "size": {
26447
+ "enum": [
26448
+ "small",
26449
+ "medium",
26450
+ "large"
26451
+ ]
26452
+ }
26453
+ }
26454
+ },
26455
+ "advancedAction": {
26456
+ "type": "object",
26457
+ "additionalProperties": false,
26458
+ "properties": {
26459
+ "display": {
26460
+ "enum": [
26461
+ "icon",
26462
+ "text",
26463
+ "icon-text"
26464
+ ]
26465
+ },
26466
+ "text": {
26467
+ "type": "string"
26468
+ },
26469
+ "icon": {
26470
+ "type": "string"
26471
+ },
26472
+ "size": {
26473
+ "enum": [
26474
+ "compact",
26475
+ "standard"
26476
+ ]
26477
+ },
26478
+ "position": {
26479
+ "enum": [
26480
+ "start",
26481
+ "end"
26482
+ ]
26483
+ }
26484
+ }
26485
+ },
26486
+ "tokens": {
26487
+ "type": "object",
26488
+ "additionalProperties": false,
26489
+ "properties": {
26490
+ "gap": {
26491
+ "type": "string"
26492
+ },
26493
+ "headerGap": {
26494
+ "type": "string"
26495
+ },
26496
+ "headerColor": {
26497
+ "type": "string"
26498
+ },
26499
+ "headerFontSize": {
26500
+ "type": "string"
26501
+ },
26502
+ "headerFontWeight": {
26503
+ "type": "string"
26504
+ },
26505
+ "iconSize": {
26506
+ "type": "string"
26507
+ },
26508
+ "actionGap": {
26509
+ "type": "string"
26510
+ },
26511
+ "actionFontSize": {
26512
+ "type": "string"
26513
+ },
26514
+ "actionFontWeight": {
26515
+ "type": "string"
26516
+ }
26517
+ }
26518
+ }
26519
+ }
26520
+ },
26262
26521
  "mode": {
26263
26522
  "enum": [
26264
26523
  "filter"
@@ -26346,6 +26605,7 @@
26346
26605
  "affectedPaths": [
26347
26606
  "behavior.filtering.enabled",
26348
26607
  "behavior.filtering.advancedFilters.enabled",
26608
+ "behavior.filtering.advancedFilters.settings.presentation",
26349
26609
  "behavior.filtering.advancedFilters.settings"
26350
26610
  ],
26351
26611
  "validators": [
@@ -29671,6 +29931,29 @@
29671
29931
  ]
29672
29932
  },
29673
29933
  "examples": [
29934
+ {
29935
+ "id": "configure-table-filter-heading-and-action",
29936
+ "request": "Show a Filtros heading above the table filters and label the advanced action Mais filtros.",
29937
+ "operationId": "filter.advanced.configure",
29938
+ "params": {
29939
+ "enabled": true,
29940
+ "settings": {
29941
+ "presentation": {
29942
+ "header": {
29943
+ "visible": true,
29944
+ "text": "Filtros",
29945
+ "position": "above"
29946
+ },
29947
+ "advancedAction": {
29948
+ "display": "icon-text",
29949
+ "text": "Mais filtros",
29950
+ "position": "end"
29951
+ }
29952
+ }
29953
+ }
29954
+ },
29955
+ "isPositive": true
29956
+ },
29674
29957
  {
29675
29958
  "id": "add-schema-column",
29676
29959
  "request": "Adicionar coluna para o campo email com o título Contato",
@@ -30525,9 +30808,9 @@
30525
30808
  {
30526
30809
  "chunkIndex": 0,
30527
30810
  "chunkKind": "summary",
30528
- "content": "Component ID: praxis-table\nSelector: praxis-table\nFriendly Name: Praxis Table\nDescription: Tabela interativa com paginação, ordenação e ações em massa.\nCategory: table\nLib/Package: @praxisui/table\nTags: widget, table, configurable, hasWizard, stable\nInputs:\n - config (TableConfig)\n - resourcePath (string)\n - data (any[])\n - configPersistenceStrategy ('local-first' | 'input-first' | 'volatile')\n - queryContext (PraxisDataQueryContext | null)\n - aiContext (TableAiContext | null)\n - aiAssistantVoiceInputMode ('disabled' | 'browser-speech')\n - aiAssistantVoiceLanguage (string)\n - filterCriteria (Record<string, any>)\n - autoDelete (boolean)\n - enableCustomization (boolean)\n - authoringCapability (string)\n - dense (boolean)\n - horizontalScroll ('auto' | 'wrap' | 'none')\n - tableId (string)\n - componentInstanceId (string)\n - title (string)\n - subtitle (string)\n - icon (string)\n - notifyIfOutdated ('inline' | 'snackbar' | 'both' | 'none')\n - snoozeMs (number)\n - autoOpenSettingsOnOutdated (boolean)\n - crudContext (any)\nOutputs:\n - rowClick ({ row: any; index: number })\n - widgetEvent (WidgetEventEnvelope)\n - resourceEvent (PraxisResourceEvent)\n - rowDoubleClick ({ action: string; row: any })\n - rowExpansionChange (RowExpansionChangeEvent)\n - selectionChange ({ trigger: string; row?: any; selectedRows: any[]; selectedCount: number; tableId?: string })\n - rowAction ({ action: string; row: any })\n - toolbarAction ({ action: string })\n - bulkAction ({ action: string; rows: any[] })\n - columnReorder ({ action: string; trigger: \"drag\" | \"keyboard\" | \"undo\"; operationId: number; tableId: string; sourceField: string; targetField: string; previousIndex: number; currentIndex: number; sourceZone: \"start\" | \"center\" | \"end\"; targetZone: \"start\" | \"center\" | \"end\"; previousOrder: string[]; currentOrder: string[]; persisted: boolean })\n - columnReorderAttempt ({ action: \"columnReorderAttempt\"; trigger: \"drag\" | \"keyboard\"; operationId: number; tableId: string; sourceField: string; targetField: string; previousIndex: number; currentIndex: number; sourceZone: \"start\" | \"center\" | \"end\"; targetZone: \"start\" | \"center\" | \"end\"; result: \"blocked\"; reasonCode: \"drop-zone-policy-blocked\"; configuredColumnDropZones: string[] })\n - beforeDelete (any)\n - afterDelete (any)\n - deleteError ({ row: any; error: unknown })\n - beforeBulkDelete (any[])\n - afterBulkDelete (any[])\n - bulkDeleteError ({ rows: any[]; error: unknown })\n - schemaStatusChange ({ outdated: boolean; serverHash?: string; lastVerifiedAt?: string; trigger?: string; tableId?: string })\n - metadataChange ({ trigger: string; meta: any; tableId?: string })\n - configChange (TableConfig)\n - loadingStateChange (LoadingState)\n",
30811
+ "content": "Component ID: praxis-table\nSelector: praxis-table\nFriendly Name: Praxis Table\nDescription: Tabela interativa com paginação, ordenação e ações em massa.\nCategory: table\nLib/Package: @praxisui/table\nTags: widget, table, configurable, hasWizard, stable\nInputs:\n - config (TableConfig)\n - resourcePath (string)\n - data (any[])\n - configPersistenceStrategy ('local-first' | 'input-first' | 'volatile')\n - queryContext (PraxisDataQueryContext | null)\n - aiContext (TableAiContext | null)\n - aiAssistantVoiceInputMode ('disabled' | 'browser-speech')\n - aiAssistantVoiceLanguage (string)\n - filterCriteria (Record<string, any>)\n - autoDelete (boolean)\n - enableCustomization (boolean)\n - authoringCapability (string)\n - dense (boolean)\n - horizontalScroll ('auto' | 'wrap' | 'none')\n - tableId (string)\n - componentInstanceId (string)\n - title (string)\n - subtitle (string)\n - icon (string)\n - notifyIfOutdated ('inline' | 'snackbar' | 'both' | 'none')\n - snoozeMs (number)\n - autoOpenSettingsOnOutdated (boolean)\n - crudContext (any)\nOutputs:\n - rowClick ({ row: any; index: number })\n - widgetEvent (WidgetEventEnvelope)\n - resourceEvent (PraxisResourceEvent)\n - rowDoubleClick ({ action: string; row: any })\n - rowExpansionChange (RowExpansionChangeEvent)\n - selectionChange ({ trigger: string; row?: any; selectedRows: any[]; selectedCount: number; tableId?: string })\n - rowAction ({ action: string; row: any })\n - toolbarAction ({ action: string })\n - bulkAction ({ action: string; rows: any[] })\n - columnReorder ({ action: string; trigger: \"drag\" | \"keyboard\" | \"undo\"; operationId: number; tableId: string; sourceField: string; targetField: string; previousIndex: number; currentIndex: number; sourceZone: \"start\" | \"center\" | \"end\"; targetZone: \"start\" | \"center\" | \"end\"; previousOrder: string[]; currentOrder: string[]; persisted: boolean })\n - columnReorderAttempt ({ action: \"columnReorderAttempt\"; trigger: \"drag\" | \"keyboard\"; operationId: number; tableId: string; sourceField: string; targetField: string; previousIndex: number; currentIndex: number; sourceZone: \"start\" | \"center\" | \"end\"; targetZone: \"start\" | \"center\" | \"end\"; result: \"blocked\"; reasonCode: \"drop-zone-policy-blocked\"; configuredColumnDropZones: string[] })\n - beforeDelete (any)\n - afterDelete (any)\n - deleteError ({ row: any; error: unknown })\n - beforeBulkDelete (any[])\n - afterBulkDelete (any[])\n - bulkDeleteError ({ rows: any[]; error: unknown })\n - schemaStatusChange ({ outdated: boolean; serverHash?: string; lastVerifiedAt?: string; trigger?: string; tableId?: string })\n - metadataChange ({ trigger: string; meta: any; tableId?: string })\n - configChange (TableConfig)\n - loadingStateChange (LoadingState)\nInsertion Presets:\n - page-table: Tabela da página - Configuração autorada no Page Builder, com prioridade sobre preferências anteriores da tabela.\n",
30529
30812
  "sourcePointer": "projects/praxis-table/src/lib/praxis-table.metadata.ts",
30530
- "contentHash": "30072163f1c8308aa5b1fb1f060b423f022e856e04e0fa7f32a02c013c623c51",
30813
+ "contentHash": "64d2a59402198b1eccbeaa937ba155379b3409b1d3f1d695e2f17b73b66f7447",
30531
30814
  "sourceKind": "component_definition",
30532
30815
  "sourceId": "praxis-table",
30533
30816
  "corpusVersion": "1.0.0"
@@ -30595,9 +30878,9 @@
30595
30878
  {
30596
30879
  "chunkIndex": 7,
30597
30880
  "chunkKind": "capabilities",
30598
- "content": "Schema Capability:\n - Path: behavior.pagination.advanced.maxPageSize\n Category: pagination\n Kind: number\n Description: Limite máximo permitido para pageSize customizado.\n\nSchema Capability:\n - Path: behavior.sorting\n Category: sorting\n Kind: object\n Description: Configuração global de ordenação da tabela.\n\nSchema Capability:\n - Path: behavior.sorting.enabled\n Category: sorting\n Kind: boolean\n Description: Habilita ordenação global na tabela.\n\nSchema Capability:\n - Path: behavior.sorting.strategy\n Category: sorting\n Kind: enum\n Description: Define se a ordenação ocorre no cliente ou servidor.\n\nSchema Capability:\n - Path: behavior.sorting.defaultSort\n Category: sorting\n Kind: object\n Description: Ordenação inicial. Aceita objeto único ou array para multisort.\n\nSchema Capability:\n - Path: behavior.sorting.allowClearSort\n Category: sorting\n Kind: boolean\n Description: Permite limpar a ordenação com terceiro clique.\n\nSchema Capability:\n - Path: behavior.filtering\n Category: filtering\n Kind: object\n Description: Configuração global de filtragem da tabela.\n\nSchema Capability:\n - Path: behavior.filtering.enabled\n Category: filtering\n Kind: boolean\n Description: Habilita sistema de filtragem.\n\nSchema Capability:\n - Path: behavior.filtering.strategy\n Category: filtering\n Kind: enum\n Description: Filtragem no cliente ou servidor.\n\nSchema Capability:\n - Path: behavior.filtering.columnFilters.enabled\n Category: filtering\n Kind: boolean\n Description: Exibe filtros por coluna.\n\nSchema Capability:\n - Path: behavior.filtering.columnFilters.defaultType\n Category: filtering\n Kind: enum\n Description: Tipo padrão do filtro individual.\n\nSchema Capability:\n - Path: behavior.filtering.columnFilters.position\n Category: filtering\n Kind: enum\n Description: Posiciona os filtros (header/subheader/sidebar).\n\nSchema Capability:\n - Path: behavior.filtering.advancedFilters\n Category: filtering\n Kind: object\n Description: Configuração canônica dos filtros avançados acoplados à tabela.\n\nSchema Capability:\n - Path: behavior.filtering.advancedFilters.enabled\n Category: filtering\n Kind: boolean\n Description: Habilita filtros avançados/painel.\n\nSchema Capability:\n - Path: behavior.filtering.advancedFilters.settings.mode\n Category: filtering\n Kind: enum\n Description: Modo único do componente de filtro (filter).\n\nSchema Capability:\n - Path: behavior.filtering.advancedFilters.settings.showAdvanced\n Category: filtering\n Kind: boolean\n Description: Mantém o painel avançado disponível para filtros adicionais.\n\nSchema Capability:\n - Path: behavior.filtering.advancedFilters.settings.tags\n Category: filtering\n Kind: array\n Description: Atalhos de filtro governados e somente leitura, com id, rótulo e patch compatível com o DTO canônico.\n\nSchema Capability:\n - Path: behavior.filtering.advancedFilters.settings.alwaysVisibleFields\n Category: filtering\n Kind: array\n Description: Campos do DTO de filtro que ficam fixos inline na barra.\n\nSchema Capability:\n - Path: behavior.filtering.advancedFilters.settings.selectedFieldIds\n Category: filtering\n Kind: array\n Description: Campos do DTO de filtro disponíveis no painel avançado.\n\nSchema Capability:\n - Path: behavior.filtering.advancedFilters.settings.alwaysVisibleFieldMetadataOverrides\n Category: filtering\n Kind: object\n Description: Overrides governados de metadata para campos fixos inline.\n\nSchema Capability:\n - Path: behavior.filtering.advancedFilters.settings.changeDebounceMs\n Category: filtering\n Kind: number\n Description: Debounce local dos controles do filtro avançado.\n\nSchema Capability:\n - Path: behavior.filtering.advancedFilters.settings.useInlineSearchableSelectVariant\n Category: filtering\n Kind: boolean\n Description: Usa variante inline pesquisável para selects na barra.\n\nSchema Capability:\n - Path: behavior.filtering.advancedFilters.settings.useInlineRangeVariant\n Category: filtering\n Kind: boolean\n Description: Usa variante inline para ranges numéricos.\n\nSchema Capability:\n - Path: behavior.filtering.advancedFilters.settings.useInlineDateVariant\n Category: filtering\n Kind: boolean\n Description: Usa variante inline para datas simples.\n\nSchema Capability:\n - Path: behavior.filtering.advancedFilters.settings.useInlineDateRangeVariant\n Category: filtering\n Kind: boolean\n Description: Usa variante inline para intervalos de datas.\n\nSchema Capability:\n - Path: behavior.filtering.debounceTime\n Category: filtering\n Kind: number\n Description: Debounce (ms) para filtros reativos.\n\nSchema Capability:\n - Path: behavior.selection\n Category: selection\n Kind: object\n Description: Configuração global de seleção de linhas.\n\nSchema Capability:\n - Path: behavior.selection.enabled\n Category: selection\n Kind: boolean\n Description: Habilita seleção de linhas.\n\nSchema Capability:\n - Path: behavior.selection.type\n Category: selection\n Kind: enum\n Description: Seleção única ou múltipla.\n\nSchema Capability:\n - Path: behavior.selection.mode\n Category: selection\n Kind: enum\n Description: Modo de interação (checkbox/row/both).\n\nSchema Capability:\n - Path: behavior.selection.allowSelectAll\n Category: selection\n Kind: boolean\n Description: Permite selecionar todas as linhas.\n\nSchema Capability:\n - Path: behavior.selection.persistSelection\n Category: selection\n Kind: boolean\n Description: Mantém seleção entre páginas.\n\nSchema Capability:\n - Path: behavior.selection.maxSelections\n Category: selection\n Kind: number\n Description: Limite máximo de itens selecionáveis.\n\nSchema Capability:\n - Path: behavior.interaction.rowClick.action\n Category: interaction\n Kind: enum\n Description: Ação padrão ao clicar na linha.\n\nSchema Capability:\n - Path: behavior.interaction.rowClick.enabled\n Category: interaction\n Kind: boolean\n Description: Ativa ou desativa ação de click na linha.\n\nSchema Capability:\n - Path: behavior.interaction.keyboard.enabled\n Category: interaction\n Kind: boolean\n Description: Habilita navegação por teclado.\n\nSchema Capability:\n - Path: behavior.interaction.hover.enabled\n Category: interaction\n Kind: boolean\n Description: Habilita comportamento de hover (highlight/ações).\n\nSchema Capability:\n - Path: behavior.interaction.hover.highlightRow\n Category: interaction\n Kind: boolean\n Description: Destaca linha no hover.\n\nSchema Capability:\n - Path: behavior.loading.type\n Category: behavior\n Kind: enum\n Description: Tipo de indicador de loading (spinner, skeleton etc.).\n\nSchema Capability:\n - Path: behavior.loading.position\n Category: behavior\n Kind: enum\n Description: Onde exibir o loading (overlay/inline/replace).\n\nSchema Capability:\n - Path: behavior.loading.text\n Category: behavior\n Kind: string\n Description: Mensagem exibida durante carregamento.\n\nSchema Capability:\n - Path: behavior.loading.delay\n Category: behavior\n Kind: number\n Description: Delay (ms) antes de mostrar loading.\n\nSchema Capability:\n - Path: behavior.loading.showForQuickOperations\n Category: behavior\n Kind: boolean\n Description: Ignora o delay visual e mostra o indicador imediatamente para operacoes rapidas.\n\nSchema Capability:\n - Path: behavior.loading.requestTimeoutMs\n Category: behavior\n Kind: number\n Description: Tempo limite (ms) para requests remotos de schema e dados; zero delega a politica ao host.\n\nSchema Capability:\n - Path: behavior.loading.allowCancel\n Category: behavior\n Kind: boolean\n Description: Permite cancelamento explicito do request remoto em andamento.",
30881
+ "content": "Schema Capability:\n - Path: behavior.pagination.advanced.maxPageSize\n Category: pagination\n Kind: number\n Description: Limite máximo permitido para pageSize customizado.\n\nSchema Capability:\n - Path: behavior.sorting\n Category: sorting\n Kind: object\n Description: Configuração global de ordenação da tabela.\n\nSchema Capability:\n - Path: behavior.sorting.enabled\n Category: sorting\n Kind: boolean\n Description: Habilita ordenação global na tabela.\n\nSchema Capability:\n - Path: behavior.sorting.strategy\n Category: sorting\n Kind: enum\n Description: Define se a ordenação ocorre no cliente ou servidor.\n\nSchema Capability:\n - Path: behavior.sorting.defaultSort\n Category: sorting\n Kind: object\n Description: Ordenação inicial. Aceita objeto único ou array para multisort.\n\nSchema Capability:\n - Path: behavior.sorting.allowClearSort\n Category: sorting\n Kind: boolean\n Description: Permite limpar a ordenação com terceiro clique.\n\nSchema Capability:\n - Path: behavior.filtering\n Category: filtering\n Kind: object\n Description: Configuração global de filtragem da tabela.\n\nSchema Capability:\n - Path: behavior.filtering.enabled\n Category: filtering\n Kind: boolean\n Description: Habilita sistema de filtragem.\n\nSchema Capability:\n - Path: behavior.filtering.strategy\n Category: filtering\n Kind: enum\n Description: Filtragem no cliente ou servidor.\n\nSchema Capability:\n - Path: behavior.filtering.columnFilters.enabled\n Category: filtering\n Kind: boolean\n Description: Exibe filtros por coluna.\n\nSchema Capability:\n - Path: behavior.filtering.columnFilters.defaultType\n Category: filtering\n Kind: enum\n Description: Tipo padrão do filtro individual.\n\nSchema Capability:\n - Path: behavior.filtering.columnFilters.position\n Category: filtering\n Kind: enum\n Description: Posiciona os filtros (header/subheader/sidebar).\n\nSchema Capability:\n - Path: behavior.filtering.advancedFilters\n Category: filtering\n Kind: object\n Description: Configuração canônica dos filtros avançados acoplados à tabela.\n\nSchema Capability:\n - Path: behavior.filtering.advancedFilters.enabled\n Category: filtering\n Kind: boolean\n Description: Habilita filtros avançados/painel.\n\nSchema Capability:\n - Path: behavior.filtering.advancedFilters.settings.mode\n Category: filtering\n Kind: enum\n Description: Modo único do componente de filtro (filter).\n\nSchema Capability:\n - Path: behavior.filtering.advancedFilters.settings.showAdvanced\n Category: filtering\n Kind: boolean\n Description: Mantém o painel avançado disponível para filtros adicionais.\n\nSchema Capability:\n - Path: behavior.filtering.advancedFilters.settings.tags\n Category: filtering\n Kind: array\n Description: Atalhos de filtro governados e somente leitura, com id, rótulo e patch compatível com o DTO canônico.\n\nSchema Capability:\n - Path: behavior.filtering.advancedFilters.settings.presentation\n Category: filtering\n Kind: object\n Description: Apresentação do cabeçalho opcional e da ação de filtros avançados; usa FilterPresentationConfig canônico.\n\nSchema Capability:\n - Path: behavior.filtering.advancedFilters.settings.alwaysVisibleFields\n Category: filtering\n Kind: array\n Description: Campos do DTO de filtro que ficam fixos inline na barra.\n\nSchema Capability:\n - Path: behavior.filtering.advancedFilters.settings.selectedFieldIds\n Category: filtering\n Kind: array\n Description: Campos do DTO de filtro disponíveis no painel avançado.\n\nSchema Capability:\n - Path: behavior.filtering.advancedFilters.settings.alwaysVisibleFieldMetadataOverrides\n Category: filtering\n Kind: object\n Description: Overrides governados de metadata para campos fixos inline.\n\nSchema Capability:\n - Path: behavior.filtering.advancedFilters.settings.changeDebounceMs\n Category: filtering\n Kind: number\n Description: Debounce local dos controles do filtro avançado.\n\nSchema Capability:\n - Path: behavior.filtering.advancedFilters.settings.useInlineSearchableSelectVariant\n Category: filtering\n Kind: boolean\n Description: Usa variante inline pesquisável para selects na barra.\n\nSchema Capability:\n - Path: behavior.filtering.advancedFilters.settings.useInlineRangeVariant\n Category: filtering\n Kind: boolean\n Description: Usa variante inline para ranges numéricos.\n\nSchema Capability:\n - Path: behavior.filtering.advancedFilters.settings.useInlineDateVariant\n Category: filtering\n Kind: boolean\n Description: Usa variante inline para datas simples.\n\nSchema Capability:\n - Path: behavior.filtering.advancedFilters.settings.useInlineDateRangeVariant\n Category: filtering\n Kind: boolean\n Description: Usa variante inline para intervalos de datas.\n\nSchema Capability:\n - Path: behavior.filtering.debounceTime\n Category: filtering\n Kind: number\n Description: Debounce (ms) para filtros reativos.\n\nSchema Capability:\n - Path: behavior.selection\n Category: selection\n Kind: object\n Description: Configuração global de seleção de linhas.\n\nSchema Capability:\n - Path: behavior.selection.enabled\n Category: selection\n Kind: boolean\n Description: Habilita seleção de linhas.\n\nSchema Capability:\n - Path: behavior.selection.type\n Category: selection\n Kind: enum\n Description: Seleção única ou múltipla.\n\nSchema Capability:\n - Path: behavior.selection.mode\n Category: selection\n Kind: enum\n Description: Modo de interação (checkbox/row/both).\n\nSchema Capability:\n - Path: behavior.selection.allowSelectAll\n Category: selection\n Kind: boolean\n Description: Permite selecionar todas as linhas.\n\nSchema Capability:\n - Path: behavior.selection.persistSelection\n Category: selection\n Kind: boolean\n Description: Mantém seleção entre páginas.\n\nSchema Capability:\n - Path: behavior.selection.maxSelections\n Category: selection\n Kind: number\n Description: Limite máximo de itens selecionáveis.\n\nSchema Capability:\n - Path: behavior.interaction.rowClick.action\n Category: interaction\n Kind: enum\n Description: Ação padrão ao clicar na linha.\n\nSchema Capability:\n - Path: behavior.interaction.rowClick.enabled\n Category: interaction\n Kind: boolean\n Description: Ativa ou desativa ação de click na linha.\n\nSchema Capability:\n - Path: behavior.interaction.keyboard.enabled\n Category: interaction\n Kind: boolean\n Description: Habilita navegação por teclado.\n\nSchema Capability:\n - Path: behavior.interaction.hover.enabled\n Category: interaction\n Kind: boolean\n Description: Habilita comportamento de hover (highlight/ações).\n\nSchema Capability:\n - Path: behavior.interaction.hover.highlightRow\n Category: interaction\n Kind: boolean\n Description: Destaca linha no hover.\n\nSchema Capability:\n - Path: behavior.loading.type\n Category: behavior\n Kind: enum\n Description: Tipo de indicador de loading (spinner, skeleton etc.).\n\nSchema Capability:\n - Path: behavior.loading.position\n Category: behavior\n Kind: enum\n Description: Onde exibir o loading (overlay/inline/replace).\n\nSchema Capability:\n - Path: behavior.loading.text\n Category: behavior\n Kind: string\n Description: Mensagem exibida durante carregamento.\n\nSchema Capability:\n - Path: behavior.loading.delay\n Category: behavior\n Kind: number\n Description: Delay (ms) antes de mostrar loading.\n\nSchema Capability:\n - Path: behavior.loading.showForQuickOperations\n Category: behavior\n Kind: boolean\n Description: Ignora o delay visual e mostra o indicador imediatamente para operacoes rapidas.\n\nSchema Capability:\n - Path: behavior.loading.requestTimeoutMs\n Category: behavior\n Kind: number\n Description: Tempo limite (ms) para requests remotos de schema e dados; zero delega a politica ao host.",
30599
30882
  "sourcePointer": "projects/praxis-table/src/lib/ai/table-component-ai-capabilities.ts",
30600
- "contentHash": "7b21b207643a9de6d70c96d1937e70bf69a2528eb059770ee8fa16be683e1309",
30883
+ "contentHash": "d943bc13e5eaf9ac1404a38f05836cd29f78698ae61a6980f152a046691ad8eb",
30601
30884
  "sourceKind": "component_definition",
30602
30885
  "sourceId": "praxis-table",
30603
30886
  "corpusVersion": "1.0.0"
@@ -30605,9 +30888,9 @@
30605
30888
  {
30606
30889
  "chunkIndex": 8,
30607
30890
  "chunkKind": "capabilities",
30608
- "content": "Schema Capability:\n - Path: behavior.loading.skeleton.rows\n Category: behavior\n Kind: number\n Description: Quantidade de linhas do skeleton, limitada pelo runtime.\n\nSchema Capability:\n - Path: behavior.loading.skeleton.animated\n Category: behavior\n Kind: boolean\n Description: Ativa a animacao do skeleton.\n\nSchema Capability:\n - Path: behavior.emptyState.message\n Category: behavior\n Kind: string\n Description: Mensagem de estado vazio padrão.\n\nSchema Capability:\n - Path: behavior.emptyState.actions\n Category: behavior\n Kind: array\n Description: Ações contextuais explícitas do estado vazio.\n\nSchema Capability:\n - Path: behavior.resizing.enabled\n Category: behavior\n Kind: boolean\n Description: Habilita redimensionamento de colunas.\n\nSchema Capability:\n - Path: behavior.resizing.minColumnWidth\n Category: behavior\n Kind: number\n Description: Largura mínima das colunas (px).\n\nSchema Capability:\n - Path: behavior.resizing.maxColumnWidth\n Category: behavior\n Kind: number\n Description: Largura máxima das colunas (px).\n\nSchema Capability:\n - Path: behavior.resizing.autoFit\n Category: behavior\n Kind: boolean\n Description: Permite autoajustar uma coluna ao conteúdo renderizado com duplo clique no separador.\n\nSchema Capability:\n - Path: behavior.resizing.persistWidths\n Category: behavior\n Kind: boolean\n Description: Persiste larguras ajustadas pelo usuário entre sessões.\n\nSchema Capability:\n - Path: behavior.dragging.columns\n Category: behavior\n Kind: boolean\n Description: Permite reordenar colunas por drag & drop.\n\nSchema Capability:\n - Path: behavior.grouping.enabled\n Category: behavior\n Kind: boolean\n Description: Habilita agrupamento de linhas.\n\nSchema Capability:\n - Path: behavior.grouping.fields\n Category: behavior\n Kind: array\n Description: Lista de campos (field) usados para agrupar.\n\nSchema Capability:\n - Path: behavior.grouping.expanded\n Category: behavior\n Kind: boolean\n Description: Se true, grupos iniciam expandidos.\n\nSchema Capability:\n - Path: behavior.editing.mode\n Category: interaction\n Kind: enum\n Description: Modo de edição inline.\n\nSchema Capability:\n - Path: behavior.virtualization.enabled\n Category: performance\n Kind: boolean\n Description: Virtualiza linhas para grandes volumes.\n\nSchema Capability:\n - Path: behavior.virtualization.itemHeight\n Category: performance\n Kind: number\n Description: Altura de cada linha (px) para virtualização.\n\nSchema Capability:\n - Path: behavior.expansion.enabled\n Category: interaction\n Kind: boolean\n Description: Habilita detalhe expansível por linha.\n\nSchema Capability:\n - Path: behavior.expansion.contractVersion\n Category: interaction\n Kind: string\n Description: Versão local do contrato de expansão.\n\nSchema Capability:\n - Path: behavior.expansion.state.mode\n Category: interaction\n Kind: enum\n Description: Governança de estado de expansão (controlled/uncontrolled).\n\nSchema Capability:\n - Path: behavior.expansion.interaction.trigger\n Category: interaction\n Kind: enum\n Description: Define como o toggle de expansão é acionado.\n\nSchema Capability:\n - Path: behavior.expansion.interaction.toggleIcon.collapsed\n Category: interaction\n Kind: string\n Description: Ícone usado no estado recolhido do toggle de expansão via pipeline `[praxisIcon]` do host.\n\nSchema Capability:\n - Path: behavior.expansion.interaction.toggleIcon.expanded\n Category: interaction\n Kind: string\n Description: Ícone usado no estado expandido do toggle de expansão via pipeline `[praxisIcon]` do host.\n\nSchema Capability:\n - Path: behavior.expansion.interaction.toggleIcon.ariaLabelCollapsed\n Category: interaction\n Kind: string\n Description: Aria-label do botão de expansão quando a linha está recolhida.\n\nSchema Capability:\n - Path: behavior.expansion.interaction.toggleIcon.ariaLabelExpanded\n Category: interaction\n Kind: string\n Description: Aria-label do botão de expansão quando a linha está expandida.\n\nSchema Capability:\n - Path: behavior.expansion.interaction.motion.preset\n Category: interaction\n Kind: enum\n Description: Preset controlado de motion para abrir o detail row.\n\nSchema Capability:\n - Path: behavior.expansion.interaction.motion.durationMs\n Category: performance\n Kind: number\n Description: Duração do preset de motion em milissegundos.\n\nSchema Capability:\n - Path: behavior.expansion.interaction.motion.easing\n Category: interaction\n Kind: enum\n Description: Curva de easing do preset de motion.\n\nSchema Capability:\n - Path: behavior.expansion.interaction.keyboard.profile\n Category: interaction\n Kind: enum\n Description: Perfil de teclado para expansão (disclosure/grid).\n\nSchema Capability:\n - Path: behavior.expansion.limits.allowMultiple\n Category: interaction\n Kind: boolean\n Description: Permite múltiplas linhas expandidas simultaneamente.\n\nSchema Capability:\n - Path: behavior.expansion.limits.maxExpandedRows\n Category: interaction\n Kind: number\n Description: Máximo de linhas expandidas simultaneamente.\n\nSchema Capability:\n - Path: behavior.expansion.limits.onOverflow\n Category: interaction\n Kind: enum\n Description: Política quando ultrapassar o limite de linhas expandidas.\n\nSchema Capability:\n - Path: behavior.expansion.collapseOn.sortChange\n Category: interaction\n Kind: boolean\n Description: Colapsa linhas expandidas quando sort muda.\n\nSchema Capability:\n - Path: behavior.expansion.collapseOn.pageChange\n Category: interaction\n Kind: boolean\n Description: Colapsa linhas expandidas quando paginação muda.\n\nSchema Capability:\n - Path: behavior.expansion.collapseOn.filterChange\n Category: interaction\n Kind: boolean\n Description: Colapsa linhas expandidas quando filtros mudam.\n\nSchema Capability:\n - Path: behavior.expansion.collapseOn.dataRefresh\n Category: interaction\n Kind: boolean\n Description: Colapsa linhas expandidas em refresh de dados.\n\nSchema Capability:\n - Path: behavior.expansion.detail.schemaContract.kind\n Category: interaction\n Kind: string\n Description: Namespace do schema de detail row.\n\nSchema Capability:\n - Path: behavior.expansion.detail.schemaContract.version\n Category: interaction\n Kind: string\n Description: Versão do contrato de schema detail.\n\nSchema Capability:\n - Path: behavior.expansion.detail.source.mode\n Category: interaction\n Kind: enum\n Description: Fonte do schema de detail (inline/resource/resourcePath/hypermedia).\n\nSchema Capability:\n - Path: behavior.expansion.detail.source.inlineSchema\n Category: interaction\n Kind: object\n Description: Schema inline completo para detail row quando source.mode=inline.\n\nSchema Capability:\n - Path: behavior.expansion.detail.source.resource.kind\n Category: interaction\n Kind: enum\n Description: Tipo de recurso quando source.mode=resource.\n\nSchema Capability:\n - Path: behavior.expansion.detail.source.resource.id\n Category: interaction\n Kind: string\n Description: ID do resource de detail schema.\n\nSchema Capability:\n - Path: behavior.expansion.detail.source.resource.version\n Category: interaction\n Kind: string\n Description: Versão do resource de detail schema.\n\nSchema Capability:\n - Path: behavior.expansion.detail.source.resourcePath.path\n Category: interaction\n Kind: string\n Description: Endpoint para resolver schema/detail data quando source.mode=resourcePath.\n\nSchema Capability:\n - Path: behavior.expansion.detail.source.resourcePath.method\n Category: interaction\n Kind: enum\n Description: Método HTTP para resolver o detail schema/data.",
30891
+ "content": "Schema Capability:\n - Path: behavior.loading.allowCancel\n Category: behavior\n Kind: boolean\n Description: Permite cancelamento explicito do request remoto em andamento.\n\nSchema Capability:\n - Path: behavior.loading.skeleton.rows\n Category: behavior\n Kind: number\n Description: Quantidade de linhas do skeleton, limitada pelo runtime.\n\nSchema Capability:\n - Path: behavior.loading.skeleton.animated\n Category: behavior\n Kind: boolean\n Description: Ativa a animacao do skeleton.\n\nSchema Capability:\n - Path: behavior.emptyState.message\n Category: behavior\n Kind: string\n Description: Mensagem de estado vazio padrão.\n\nSchema Capability:\n - Path: behavior.emptyState.actions\n Category: behavior\n Kind: array\n Description: Ações contextuais explícitas do estado vazio.\n\nSchema Capability:\n - Path: behavior.resizing.enabled\n Category: behavior\n Kind: boolean\n Description: Habilita redimensionamento de colunas.\n\nSchema Capability:\n - Path: behavior.resizing.minColumnWidth\n Category: behavior\n Kind: number\n Description: Largura mínima das colunas (px).\n\nSchema Capability:\n - Path: behavior.resizing.maxColumnWidth\n Category: behavior\n Kind: number\n Description: Largura máxima das colunas (px).\n\nSchema Capability:\n - Path: behavior.resizing.autoFit\n Category: behavior\n Kind: boolean\n Description: Permite autoajustar uma coluna ao conteúdo renderizado com duplo clique no separador.\n\nSchema Capability:\n - Path: behavior.resizing.persistWidths\n Category: behavior\n Kind: boolean\n Description: Persiste larguras ajustadas pelo usuário entre sessões.\n\nSchema Capability:\n - Path: behavior.dragging.columns\n Category: behavior\n Kind: boolean\n Description: Permite reordenar colunas por drag & drop.\n\nSchema Capability:\n - Path: behavior.grouping.enabled\n Category: behavior\n Kind: boolean\n Description: Habilita agrupamento de linhas.\n\nSchema Capability:\n - Path: behavior.grouping.fields\n Category: behavior\n Kind: array\n Description: Lista de campos (field) usados para agrupar.\n\nSchema Capability:\n - Path: behavior.grouping.expanded\n Category: behavior\n Kind: boolean\n Description: Se true, grupos iniciam expandidos.\n\nSchema Capability:\n - Path: behavior.editing.mode\n Category: interaction\n Kind: enum\n Description: Modo de edição inline.\n\nSchema Capability:\n - Path: behavior.virtualization.enabled\n Category: performance\n Kind: boolean\n Description: Virtualiza linhas para grandes volumes.\n\nSchema Capability:\n - Path: behavior.virtualization.itemHeight\n Category: performance\n Kind: number\n Description: Altura de cada linha (px) para virtualização.\n\nSchema Capability:\n - Path: behavior.expansion.enabled\n Category: interaction\n Kind: boolean\n Description: Habilita detalhe expansível por linha.\n\nSchema Capability:\n - Path: behavior.expansion.contractVersion\n Category: interaction\n Kind: string\n Description: Versão local do contrato de expansão.\n\nSchema Capability:\n - Path: behavior.expansion.state.mode\n Category: interaction\n Kind: enum\n Description: Governança de estado de expansão (controlled/uncontrolled).\n\nSchema Capability:\n - Path: behavior.expansion.interaction.trigger\n Category: interaction\n Kind: enum\n Description: Define como o toggle de expansão é acionado.\n\nSchema Capability:\n - Path: behavior.expansion.interaction.toggleIcon.collapsed\n Category: interaction\n Kind: string\n Description: Ícone usado no estado recolhido do toggle de expansão via pipeline `[praxisIcon]` do host.\n\nSchema Capability:\n - Path: behavior.expansion.interaction.toggleIcon.expanded\n Category: interaction\n Kind: string\n Description: Ícone usado no estado expandido do toggle de expansão via pipeline `[praxisIcon]` do host.\n\nSchema Capability:\n - Path: behavior.expansion.interaction.toggleIcon.ariaLabelCollapsed\n Category: interaction\n Kind: string\n Description: Aria-label do botão de expansão quando a linha está recolhida.\n\nSchema Capability:\n - Path: behavior.expansion.interaction.toggleIcon.ariaLabelExpanded\n Category: interaction\n Kind: string\n Description: Aria-label do botão de expansão quando a linha está expandida.\n\nSchema Capability:\n - Path: behavior.expansion.interaction.motion.preset\n Category: interaction\n Kind: enum\n Description: Preset controlado de motion para abrir o detail row.\n\nSchema Capability:\n - Path: behavior.expansion.interaction.motion.durationMs\n Category: performance\n Kind: number\n Description: Duração do preset de motion em milissegundos.\n\nSchema Capability:\n - Path: behavior.expansion.interaction.motion.easing\n Category: interaction\n Kind: enum\n Description: Curva de easing do preset de motion.\n\nSchema Capability:\n - Path: behavior.expansion.interaction.keyboard.profile\n Category: interaction\n Kind: enum\n Description: Perfil de teclado para expansão (disclosure/grid).\n\nSchema Capability:\n - Path: behavior.expansion.limits.allowMultiple\n Category: interaction\n Kind: boolean\n Description: Permite múltiplas linhas expandidas simultaneamente.\n\nSchema Capability:\n - Path: behavior.expansion.limits.maxExpandedRows\n Category: interaction\n Kind: number\n Description: Máximo de linhas expandidas simultaneamente.\n\nSchema Capability:\n - Path: behavior.expansion.limits.onOverflow\n Category: interaction\n Kind: enum\n Description: Política quando ultrapassar o limite de linhas expandidas.\n\nSchema Capability:\n - Path: behavior.expansion.collapseOn.sortChange\n Category: interaction\n Kind: boolean\n Description: Colapsa linhas expandidas quando sort muda.\n\nSchema Capability:\n - Path: behavior.expansion.collapseOn.pageChange\n Category: interaction\n Kind: boolean\n Description: Colapsa linhas expandidas quando paginação muda.\n\nSchema Capability:\n - Path: behavior.expansion.collapseOn.filterChange\n Category: interaction\n Kind: boolean\n Description: Colapsa linhas expandidas quando filtros mudam.\n\nSchema Capability:\n - Path: behavior.expansion.collapseOn.dataRefresh\n Category: interaction\n Kind: boolean\n Description: Colapsa linhas expandidas em refresh de dados.\n\nSchema Capability:\n - Path: behavior.expansion.detail.schemaContract.kind\n Category: interaction\n Kind: string\n Description: Namespace do schema de detail row.\n\nSchema Capability:\n - Path: behavior.expansion.detail.schemaContract.version\n Category: interaction\n Kind: string\n Description: Versão do contrato de schema detail.\n\nSchema Capability:\n - Path: behavior.expansion.detail.source.mode\n Category: interaction\n Kind: enum\n Description: Fonte do schema de detail (inline/resource/resourcePath/hypermedia).\n\nSchema Capability:\n - Path: behavior.expansion.detail.source.inlineSchema\n Category: interaction\n Kind: object\n Description: Schema inline completo para detail row quando source.mode=inline.\n\nSchema Capability:\n - Path: behavior.expansion.detail.source.resource.kind\n Category: interaction\n Kind: enum\n Description: Tipo de recurso quando source.mode=resource.\n\nSchema Capability:\n - Path: behavior.expansion.detail.source.resource.id\n Category: interaction\n Kind: string\n Description: ID do resource de detail schema.\n\nSchema Capability:\n - Path: behavior.expansion.detail.source.resource.version\n Category: interaction\n Kind: string\n Description: Versão do resource de detail schema.\n\nSchema Capability:\n - Path: behavior.expansion.detail.source.resourcePath.path\n Category: interaction\n Kind: string\n Description: Endpoint para resolver schema/detail data quando source.mode=resourcePath.\n\nSchema Capability:\n - Path: behavior.expansion.detail.source.resourcePath.method\n Category: interaction\n Kind: enum\n Description: Método HTTP para resolver o detail schema/data.",
30609
30892
  "sourcePointer": "projects/praxis-table/src/lib/ai/table-component-ai-capabilities.ts",
30610
- "contentHash": "842d6e7b4f5ebf12ca09745534b8c9bf2ee9ffb27fe8816c32194d40e98dadcb",
30893
+ "contentHash": "7225660913bbd6a18877d8908f32d8f2196f31657b90aa244db6596ba4fea777",
30611
30894
  "sourceKind": "component_definition",
30612
30895
  "sourceId": "praxis-table",
30613
30896
  "corpusVersion": "1.0.0"
@@ -30965,9 +31248,9 @@
30965
31248
  {
30966
31249
  "chunkIndex": 44,
30967
31250
  "chunkKind": "authoring_manifest",
30968
- "content": "{\"operationId\":\"filter.advanced.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configurar filtros avançados Effects: set-value, merge-object. Ative filtros avançados e deixe CPF e departamento sempre visíveis\",\"scope\":\"global\",\"target\":{\"kind\":\"filter\",\"resolver\":\"filter-config\",\"required\":false},\"inputContract\":{\"required\":[\"enabled\"],\"properties\":[\"enabled\",\"queryBuilder\",\"savePresets\",\"settings\"],\"semanticTerms\":[\"enabled\",\"queryBuilder\",\"savePresets\",\"settings\",\"settings.mode\",\"settings.showAdvanced\",\"settings.allowSaveTags\",\"settings.tags\",\"settings.alwaysVisibleFields\",\"settings.selectedFieldIds\",\"settings.alwaysVisibleFieldMetadataOverrides\",\"settings.changeDebounceMs\",\"settings.useInlineSearchableSelectVariant\",\"settings.useInlineRangeVariant\",\"settings.useInlineDateVariant\",\"settings.useInlineDateRangeVariant\",\"filter\",\"settings.tags.id\",\"settings.tags.label\",\"settings.tags.patch\"]},\"effects\":[\"set-value\",\"merge-object\"],\"affectedPaths\":[\"behavior.filtering.enabled\",\"behavior.filtering.advancedFilters.enabled\",\"behavior.filtering.advancedFilters.settings\"],\"validators\":[{\"validatorId\":\"filter-fields-exist\",\"level\":\"error\",\"code\":\"TB018\",\"description\":\"Os campos de filtro avançado devem existir no schema request do filtro governado.\"},{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"TB009\",\"description\":\"A edição não deve corromper propriedades críticas necessárias para o round-trip do editor.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"enable-advanced-filters-human\",\"request\":\"Ative filtros avançados e deixe CPF e departamento sempre visíveis\",\"operationId\":\"filter.advanced.configure\",\"params\":{\"enabled\":true,\"queryBuilder\":true,\"savePresets\":true,\"settings\":{\"mode\":\"filter\",\"showAdvanced\":true,\"alwaysVisibleFields\":[\"cpf\",\"departamento\"]}},\"isPositive\":true}],\"negativeExamples\":[]}",
31251
+ "content": "{\"operationId\":\"filter.advanced.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configurar filtros avançados Effects: set-value, merge-object. Show a Filtros heading above the table filters and label the advanced action Mais filtros. Ative filtros avançados e deixe CPF e departamento sempre visíveis\",\"scope\":\"global\",\"target\":{\"kind\":\"filter\",\"resolver\":\"filter-config\",\"required\":false},\"inputContract\":{\"required\":[\"enabled\"],\"properties\":[\"enabled\",\"queryBuilder\",\"savePresets\",\"settings\"],\"semanticTerms\":[\"enabled\",\"queryBuilder\",\"savePresets\",\"settings\",\"settings.presentation\",\"settings.mode\",\"settings.showAdvanced\",\"settings.allowSaveTags\",\"settings.tags\",\"settings.alwaysVisibleFields\",\"settings.selectedFieldIds\",\"settings.alwaysVisibleFieldMetadataOverrides\",\"settings.changeDebounceMs\",\"settings.useInlineSearchableSelectVariant\",\"settings.useInlineRangeVariant\",\"settings.useInlineDateVariant\",\"settings.useInlineDateRangeVariant\",\"settings.presentation.header\",\"settings.presentation.advancedAction\",\"settings.presentation.tokens\",\"filter\",\"settings.presentation.header.visible\",\"settings.presentation.header.text\",\"settings.presentation.header.icon\",\"settings.presentation.header.position\",\"settings.presentation.header.size\",\"settings.presentation.advancedAction.display\",\"settings.presentation.advancedAction.text\",\"settings.presentation.advancedAction.icon\",\"settings.presentation.advancedAction.size\",\"settings.presentation.advancedAction.position\",\"settings.presentation.tokens.gap\",\"settings.presentation.tokens.headerGap\",\"settings.presentation.tokens.headerColor\",\"settings.presentation.tokens.headerFontSize\",\"settings.presentation.tokens.headerFontWeight\",\"settings.presentation.tokens.iconSize\",\"settings.presentation.tokens.actionGap\",\"settings.presentation.tokens.actionFontSize\",\"settings.presentation.tokens.actionFontWeight\",\"settings.tags.id\",\"settings.tags.label\",\"settings.tags.patch\",\"above\",\"inline\",\"small\",\"medium\",\"large\",\"icon\",\"text\",\"icon-text\",\"compact\",\"standard\",\"start\",\"end\"]},\"effects\":[\"set-value\",\"merge-object\"],\"affectedPaths\":[\"behavior.filtering.enabled\",\"behavior.filtering.advancedFilters.enabled\",\"behavior.filtering.advancedFilters.settings.presentation\",\"behavior.filtering.advancedFilters.settings\"],\"validators\":[{\"validatorId\":\"filter-fields-exist\",\"level\":\"error\",\"code\":\"TB018\",\"description\":\"Os campos de filtro avançado devem existir no schema request do filtro governado.\"},{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"TB009\",\"description\":\"A edição não deve corromper propriedades críticas necessárias para o round-trip do editor.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"configure-table-filter-heading-and-action\",\"request\":\"Show a Filtros heading above the table filters and label the advanced action Mais filtros.\",\"operationId\":\"filter.advanced.configure\",\"params\":{\"enabled\":true,\"settings\":{\"presentation\":{\"header\":{\"visible\":true,\"text\":\"Filtros\",\"position\":\"above\"},\"advancedAction\":{\"display\":\"icon-text\",\"text\":\"Mais filtros\",\"position\":\"end\"}}}},\"isPositive\":true},{\"id\":\"enable-advanced-filters-human\",\"request\":\"Ative filtros avançados e deixe CPF e departamento sempre visíveis\",\"operationId\":\"filter.advanced.configure\",\"params\":{\"enabled\":true,\"queryBuilder\":true,\"savePresets\":true,\"settings\":{\"mode\":\"filter\",\"showAdvanced\":true,\"alwaysVisibleFields\":[\"cpf\",\"departamento\"]}},\"isPositive\":true}],\"negativeExamples\":[]}",
30969
31252
  "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
30970
- "contentHash": "7768880a036ea13bb80ea8e1dfe3a27b1d7ec2997d368616fe187470fe736682",
31253
+ "contentHash": "301cf4417adee700f2202127597f1c4bc987ee0a07fa2aefe106338a97f005ff",
30971
31254
  "sourceKind": "component_definition",
30972
31255
  "sourceId": "praxis-table",
30973
31256
  "corpusVersion": "1.0.0"
@@ -31765,9 +32048,9 @@
31765
32048
  {
31766
32049
  "chunkIndex": 124,
31767
32050
  "chunkKind": "authoring_manifest",
31768
- "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"rowAction.add\",\"title\":\"Adicionar ação de linha\",\"scope\":\"global\",\"targetKind\":\"rowAction\",\"target\":{\"kind\":\"rowAction\",\"resolver\":\"action-in-row-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"id\",\"label\",\"action\"],\"properties\":{\"id\":{\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"action\":{\"type\":\"string\"},\"icon\":{\"type\":\"string\"},\"color\":{\"type\":\"string\"},\"visibleWhen\":{\"type\":\"object\",\"description\":\"AST Json Logic\"},\"disabledWhen\":{\"type\":\"object\",\"description\":\"AST Json Logic\"},\"recordSurface\":{\"type\":\"object\",\"description\":\"ResourceSurfaceCatalogItem canonico preservado para abrir uma superficie relacionada ao registro da linha clicada.\"},\"globalAction\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"actionId\":{\"type\":\"string\",\"enum\":[\"toast.success\",\"toast.error\",\"dialog.alert\",\"dialog.open\",\"navigation.openExternal\",\"navigation.openRoute\",\"api.post\",\"api.patch\"]},\"payload\":{\"type\":\"object\"},\"payloadExpr\":{\"type\":\"string\"}}},\"effects\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"kind\",\"globalAction\"],\"additionalProperties\":false,\"properties\":{\"kind\":{\"enum\":[\"global-action\"]},\"globalAction\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"actionId\":{\"type\":\"string\",\"enum\":[\"toast.success\",\"toast.error\",\"dialog.alert\",\"dialog.open\",\"navigation.openExternal\",\"navigation.openRoute\",\"api.post\",\"api.patch\"]},\"payload\":{\"type\":\"object\"},\"payloadExpr\":{\"type\":\"string\"}}}}}}}},\"effects\":[{\"kind\":\"append-unique\",\"path\":\"actions.row.actions[]\",\"key\":\"id\"}],\"validators\":[\"row-action-id-unique\"],\"affectedPaths\":[\"actions.row.actions[]\",\"actions.row.actions[].visibleWhen\",\"actions.row.actions[].disabledWhen\",\"actions.row.actions[].effects\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"bulkAction.add\",\"title\":\"Adicionar ação em lote\",\"scope\":\"global\",\"targetKind\":\"bulkAction\",\"target\":{\"kind\":\"bulkAction\",\"resolver\":\"action-in-bulk-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"id\",\"label\",\"action\"],\"properties\":{\"id\":{\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"action\":{\"type\":\"string\"},\"icon\":{\"type\":\"string\"},\"color\":{\"type\":\"string\"},\"globalAction\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"actionId\":{\"type\":\"string\",\"enum\":[\"toast.success\",\"toast.error\",\"dialog.alert\",\"dialog.open\",\"navigation.openExternal\",\"navigation.openRoute\",\"api.post\",\"api.patch\"]},\"payload\":{\"type\":\"object\"},\"payloadExpr\":{\"type\":\"string\"}}},\"effects\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"kind\",\"globalAction\"],\"additionalProperties\":false,\"properties\":{\"kind\":{\"enum\":[\"global-action\"]},\"globalAction\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"actionId\":{\"type\":\"string\",\"enum\":[\"toast.success\",\"toast.error\",\"dialog.alert\",\"dialog.open\",\"navigation.openExternal\",\"navigation.openRoute\",\"api.post\",\"api.patch\"]},\"payload\":{\"type\":\"object\"},\"payloadExpr\":{\"type\":\"string\"}}}}}}}},\"effects\":[{\"kind\":\"append-unique\",\"path\":\"actions.bulk.actions[]\",\"key\":\"id\"}],\"validators\":[\"bulk-action-id-unique\"],\"affectedPaths\":[\"actions.bulk.actions[]\",\"actions.bulk.actions[].effects\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"export.enabled.set\",\"title\":\"Habilitar exportação\",\"scope\":\"global\",\"targetKind\":\"export\",\"target\":{\"kind\":\"export\",\"resolver\":\"export-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"enabled\"],\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"formats\":{\"type\":\"array\",\"items\":{\"enum\":[\"excel\",\"pdf\",\"csv\",\"json\"]}}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"export\"}],\"affectedPaths\":[\"export.enabled\",\"export.formats\"],\"validators\":[\"editor-round-trip-preserve\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"filter.advanced.configure\",\"title\":\"Configurar filtros avançados\",\"scope\":\"global\",\"targetKind\":\"filter\",\"target\":{\"kind\":\"filter\",\"resolver\":\"filter-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"enabled\"],\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"queryBuilder\":{\"type\":\"boolean\"},\"savePresets\":{\"type\":\"boolean\"},\"settings\":{\"type\":\"object\",\"properties\":{\"mode\":{\"enum\":[\"filter\"]},\"showAdvanced\":{\"type\":\"boolean\"},\"allowSaveTags\":{\"type\":\"boolean\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"id\",\"label\",\"patch\"],\"properties\":{\"id\":{\"type\":\"string\",\"minLength\":1},\"label\":{\"type\":\"string\",\"minLength\":1},\"patch\":{\"type\":\"object\"}}}},\"alwaysVisibleFields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"selectedFieldIds\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"alwaysVisibleFieldMetadataOverrides\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"object\"}},\"changeDebounceMs\":{\"type\":\"number\",\"minimum\":0},\"useInlineSearchableSelectVariant\":{\"type\":\"boolean\"},\"useInlineRangeVariant\":{\"type\":\"boolean\"},\"useInlineDateVariant\":{\"type\":\"boolean\"},\"useInlineDateRangeVariant\":{\"type\":\"boolean\"}}}}},\"effects\":[{\"kind\":\"set-value\",\"path\":\"behavior.filtering.enabled\",\"value\":true},{\"kind\":\"merge-object\",\"path\":\"behavior.filtering.advancedFilters\"}],\"affectedPaths\":[\"behavior.filtering.enabled\",\"behavior.filtering.advancedFilters.enabled\",\"behavior.filtering.advancedFilters.settings\"],\"validators\":[\"filter-fields-exist\",\"editor-round-trip-preserve\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"filter.advanced.fields.add\",\"title\":\"Adicionar campos aos filtros avançados\",\"scope\":\"global\",\"targetKind\":\"filter\",\"target\":{\"kind\":\"filter\",\"resolver\":\"filter-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"fields\"],\"properties\":{\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"minItems\":1},\"selected\":{\"type\":\"boolean\"},\"alwaysVisible\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"set-value\",\"path\":\"behavior.filtering.enabled\",\"value\":true},{\"kind\":\"merge-object\",\"path\":\"behavior.filtering.advancedFilters\"}],\"affectedPaths\":[\"behavior.filtering.enabled\",\"behavior.filtering.advancedFilters.enabled\",\"behavior.filtering.advancedFilters.settings\"],\"validators\":[\"filter-fields-exist\",\"editor-round-trip-preserve\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"filter.advanced.fields.remove\",\"title\":\"Remover campos dos filtros avançados\",\"scope\":\"global\",\"targetKind\":\"filter\",\"target\":{\"kind\":\"filter\",\"resolver\":\"filter-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"fields\"],\"properties\":{\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"minItems\":1},\"selected\":{\"type\":\"boolean\"},\"alwaysVisible\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"set-value\",\"path\":\"behavior.filtering.enabled\",\"value\":true},{\"kind\":\"merge-object\",\"path\":\"behavior.filtering.advancedFilters\"}],\"affectedPaths\":[\"behavior.filtering.enabled\",\"behavior.filtering.advancedFilters.enabled\",\"behavior.filtering.advancedFilters.settings\"],\"validators\":[\"filter-fields-exist\",\"editor-round-trip-preserve\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]}]}",
32051
+ "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"rowAction.add\",\"title\":\"Adicionar ação de linha\",\"scope\":\"global\",\"targetKind\":\"rowAction\",\"target\":{\"kind\":\"rowAction\",\"resolver\":\"action-in-row-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"id\",\"label\",\"action\"],\"properties\":{\"id\":{\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"action\":{\"type\":\"string\"},\"icon\":{\"type\":\"string\"},\"color\":{\"type\":\"string\"},\"visibleWhen\":{\"type\":\"object\",\"description\":\"AST Json Logic\"},\"disabledWhen\":{\"type\":\"object\",\"description\":\"AST Json Logic\"},\"recordSurface\":{\"type\":\"object\",\"description\":\"ResourceSurfaceCatalogItem canonico preservado para abrir uma superficie relacionada ao registro da linha clicada.\"},\"globalAction\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"actionId\":{\"type\":\"string\",\"enum\":[\"toast.success\",\"toast.error\",\"dialog.alert\",\"dialog.open\",\"navigation.openExternal\",\"navigation.openRoute\",\"api.post\",\"api.patch\"]},\"payload\":{\"type\":\"object\"},\"payloadExpr\":{\"type\":\"string\"}}},\"effects\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"kind\",\"globalAction\"],\"additionalProperties\":false,\"properties\":{\"kind\":{\"enum\":[\"global-action\"]},\"globalAction\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"actionId\":{\"type\":\"string\",\"enum\":[\"toast.success\",\"toast.error\",\"dialog.alert\",\"dialog.open\",\"navigation.openExternal\",\"navigation.openRoute\",\"api.post\",\"api.patch\"]},\"payload\":{\"type\":\"object\"},\"payloadExpr\":{\"type\":\"string\"}}}}}}}},\"effects\":[{\"kind\":\"append-unique\",\"path\":\"actions.row.actions[]\",\"key\":\"id\"}],\"validators\":[\"row-action-id-unique\"],\"affectedPaths\":[\"actions.row.actions[]\",\"actions.row.actions[].visibleWhen\",\"actions.row.actions[].disabledWhen\",\"actions.row.actions[].effects\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"bulkAction.add\",\"title\":\"Adicionar ação em lote\",\"scope\":\"global\",\"targetKind\":\"bulkAction\",\"target\":{\"kind\":\"bulkAction\",\"resolver\":\"action-in-bulk-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"id\",\"label\",\"action\"],\"properties\":{\"id\":{\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"action\":{\"type\":\"string\"},\"icon\":{\"type\":\"string\"},\"color\":{\"type\":\"string\"},\"globalAction\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"actionId\":{\"type\":\"string\",\"enum\":[\"toast.success\",\"toast.error\",\"dialog.alert\",\"dialog.open\",\"navigation.openExternal\",\"navigation.openRoute\",\"api.post\",\"api.patch\"]},\"payload\":{\"type\":\"object\"},\"payloadExpr\":{\"type\":\"string\"}}},\"effects\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"kind\",\"globalAction\"],\"additionalProperties\":false,\"properties\":{\"kind\":{\"enum\":[\"global-action\"]},\"globalAction\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"actionId\":{\"type\":\"string\",\"enum\":[\"toast.success\",\"toast.error\",\"dialog.alert\",\"dialog.open\",\"navigation.openExternal\",\"navigation.openRoute\",\"api.post\",\"api.patch\"]},\"payload\":{\"type\":\"object\"},\"payloadExpr\":{\"type\":\"string\"}}}}}}}},\"effects\":[{\"kind\":\"append-unique\",\"path\":\"actions.bulk.actions[]\",\"key\":\"id\"}],\"validators\":[\"bulk-action-id-unique\"],\"affectedPaths\":[\"actions.bulk.actions[]\",\"actions.bulk.actions[].effects\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"export.enabled.set\",\"title\":\"Habilitar exportação\",\"scope\":\"global\",\"targetKind\":\"export\",\"target\":{\"kind\":\"export\",\"resolver\":\"export-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"enabled\"],\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"formats\":{\"type\":\"array\",\"items\":{\"enum\":[\"excel\",\"pdf\",\"csv\",\"json\"]}}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"export\"}],\"affectedPaths\":[\"export.enabled\",\"export.formats\"],\"validators\":[\"editor-round-trip-preserve\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"filter.advanced.configure\",\"title\":\"Configurar filtros avançados\",\"scope\":\"global\",\"targetKind\":\"filter\",\"target\":{\"kind\":\"filter\",\"resolver\":\"filter-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"enabled\"],\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"queryBuilder\":{\"type\":\"boolean\"},\"savePresets\":{\"type\":\"boolean\"},\"settings\":{\"type\":\"object\",\"properties\":{\"presentation\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"header\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"visible\":{\"type\":\"boolean\"},\"text\":{\"type\":\"string\"},\"icon\":{\"type\":\"string\"},\"position\":{\"enum\":[\"above\",\"inline\"]},\"size\":{\"enum\":[\"small\",\"medium\",\"large\"]}}},\"advancedAction\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"display\":{\"enum\":[\"icon\",\"text\",\"icon-text\"]},\"text\":{\"type\":\"string\"},\"icon\":{\"type\":\"string\"},\"size\":{\"enum\":[\"compact\",\"standard\"]},\"position\":{\"enum\":[\"start\",\"end\"]}}},\"tokens\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"gap\":{\"type\":\"string\"},\"headerGap\":{\"type\":\"string\"},\"headerColor\":{\"type\":\"string\"},\"headerFontSize\":{\"type\":\"string\"},\"headerFontWeight\":{\"type\":\"string\"},\"iconSize\":{\"type\":\"string\"},\"actionGap\":{\"type\":\"string\"},\"actionFontSize\":{\"type\":\"string\"},\"actionFontWeight\":{\"type\":\"string\"}}}}},\"mode\":{\"enum\":[\"filter\"]},\"showAdvanced\":{\"type\":\"boolean\"},\"allowSaveTags\":{\"type\":\"boolean\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"id\",\"label\",\"patch\"],\"properties\":{\"id\":{\"type\":\"string\",\"minLength\":1},\"label\":{\"type\":\"string\",\"minLength\":1},\"patch\":{\"type\":\"object\"}}}},\"alwaysVisibleFields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"selectedFieldIds\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"alwaysVisibleFieldMetadataOverrides\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"object\"}},\"changeDebounceMs\":{\"type\":\"number\",\"minimum\":0},\"useInlineSearchableSelectVariant\":{\"type\":\"boolean\"},\"useInlineRangeVariant\":{\"type\":\"boolean\"},\"useInlineDateVariant\":{\"type\":\"boolean\"},\"useInlineDateRangeVariant\":{\"type\":\"boolean\"}}}}},\"effects\":[{\"kind\":\"set-value\",\"path\":\"behavior.filtering.enabled\",\"value\":true},{\"kind\":\"merge-object\",\"path\":\"behavior.filtering.advancedFilters\"}],\"affectedPaths\":[\"behavior.filtering.enabled\",\"behavior.filtering.advancedFilters.enabled\",\"behavior.filtering.advancedFilters.settings.presentation\",\"behavior.filtering.advancedFilters.settings\"],\"validators\":[\"filter-fields-exist\",\"editor-round-trip-preserve\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"filter.advanced.fields.add\",\"title\":\"Adicionar campos aos filtros avançados\",\"scope\":\"global\",\"targetKind\":\"filter\",\"target\":{\"kind\":\"filter\",\"resolver\":\"filter-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"fields\"],\"properties\":{\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"minItems\":1},\"selected\":{\"type\":\"boolean\"},\"alwaysVisible\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"set-value\",\"path\":\"behavior.filtering.enabled\",\"value\":true},{\"kind\":\"merge-object\",\"path\":\"behavior.filtering.advancedFilters\"}],\"affectedPaths\":[\"behavior.filtering.enabled\",\"behavior.filtering.advancedFilters.enabled\",\"behavior.filtering.advancedFilters.settings\"],\"validators\":[\"filter-fields-exist\",\"editor-round-trip-preserve\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]}]}",
31769
32052
  "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
31770
- "contentHash": "a29dec17d2a7abafabe9081ce8477999cb6d04936920c2d979892446d62b19ac",
32053
+ "contentHash": "1933fca95af1a1cbef0695f532eac234b656cdd4ecaf55a4386649309e6914f9",
31771
32054
  "sourceKind": "component_definition",
31772
32055
  "sourceId": "praxis-table",
31773
32056
  "corpusVersion": "1.0.0"
@@ -31775,9 +32058,9 @@
31775
32058
  {
31776
32059
  "chunkIndex": 125,
31777
32060
  "chunkKind": "authoring_manifest",
31778
- "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"grouping.set\",\"title\":\"Definir agrupamento\",\"scope\":\"global\",\"targetKind\":\"grouping\",\"target\":{\"kind\":\"grouping\",\"resolver\":\"grouping-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"enabled\"],\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"expanded\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"behavior.grouping\"}],\"validators\":[\"grouping-fields-exist\"],\"affectedPaths\":[\"behavior.grouping\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"selection.mode.set\",\"title\":\"Definir modo de seleção\",\"scope\":\"global\",\"targetKind\":\"selection\",\"target\":{\"kind\":\"selection\",\"resolver\":\"selection-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"enabled\",\"type\"],\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"type\":{\"enum\":[\"single\",\"multiple\"]},\"mode\":{\"enum\":[\"checkbox\",\"row\",\"both\"]}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"behavior.selection\"}],\"affectedPaths\":[\"behavior.selection.enabled\",\"behavior.selection.type\",\"behavior.selection.mode\"],\"validators\":[\"editor-round-trip-preserve\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"appearance.density.set\",\"title\":\"Definir densidade\",\"scope\":\"global\",\"targetKind\":\"appearance\",\"target\":{\"kind\":\"appearance\",\"resolver\":\"appearance-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"density\"],\"properties\":{\"density\":{\"enum\":[\"compact\",\"comfortable\",\"spacious\"]}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"appearance\"}],\"affectedPaths\":[\"appearance.density\"],\"validators\":[\"editor-round-trip-preserve\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"appearance.borders.set\",\"title\":\"Definir bordas\",\"scope\":\"global\",\"targetKind\":\"appearance\",\"target\":{\"kind\":\"appearance\",\"resolver\":\"appearance-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"showRowBorders\",\"showColumnBorders\"],\"properties\":{\"showRowBorders\":{\"type\":\"boolean\"},\"showColumnBorders\":{\"type\":\"boolean\"},\"showOuterBorder\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"appearance.borders\"}],\"affectedPaths\":[\"appearance.borders.showRowBorders\",\"appearance.borders.showColumnBorders\",\"appearance.borders.showOuterBorder\"],\"validators\":[\"editor-round-trip-preserve\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"virtualization.enabled.set\",\"title\":\"Habilitar virtualização\",\"scope\":\"global\",\"targetKind\":\"appearance\",\"target\":{\"kind\":\"appearance\",\"resolver\":\"appearance-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"enabled\"],\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"itemHeight\":{\"type\":\"number\",\"default\":48}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"behavior.virtualization\"},{\"kind\":\"merge-object\",\"path\":\"performance.virtualization\"}],\"affectedPaths\":[\"behavior.virtualization\",\"performance.virtualization\"],\"validators\":[\"editor-round-trip-preserve\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"expansion.configure\",\"title\":\"Configurar expansão de linha\",\"scope\":\"global\",\"targetKind\":\"expansion\",\"target\":{\"kind\":\"expansion\",\"resolver\":\"expansion-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"contractVersion\":{\"type\":\"string\"},\"state\":{\"type\":\"object\",\"properties\":{\"mode\":{\"enum\":[\"controlled\",\"uncontrolled\"]}}},\"interaction\":{\"type\":\"object\",\"properties\":{\"trigger\":{\"enum\":[\"icon\",\"row\",\"both\"]},\"toggleIcon\":{\"type\":\"object\",\"properties\":{\"collapsed\":{\"type\":\"string\"},\"expanded\":{\"type\":\"string\"},\"ariaLabelCollapsed\":{\"type\":\"string\"},\"ariaLabelExpanded\":{\"type\":\"string\"}}},\"motion\":{\"type\":\"object\",\"properties\":{\"preset\":{\"enum\":[\"none\",\"subtle-slide\",\"accordion\",\"fade-scale\"]},\"durationMs\":{\"type\":\"number\",\"minimum\":0},\"easing\":{\"enum\":[\"standard\",\"emphasized\",\"decelerate\"]}}},\"keyboard\":{\"type\":\"object\",\"properties\":{\"profile\":{\"enum\":[\"disclosure\",\"grid\"]}}}}},\"limits\":{\"type\":\"object\",\"properties\":{\"allowMultiple\":{\"type\":\"boolean\"},\"maxExpandedRows\":{\"type\":\"number\",\"minimum\":1},\"onOverflow\":{\"enum\":[\"collapseOldest\",\"denyNew\",\"collapseAll\"]}}},\"collapseOn\":{\"type\":\"object\",\"properties\":{\"sortChange\":{\"type\":\"boolean\"},\"pageChange\":{\"type\":\"boolean\"},\"filterChange\":{\"type\":\"boolean\"},\"dataRefresh\":{\"type\":\"boolean\"}}},\"virtualization\":{\"type\":\"object\",\"properties\":{\"policy\":{\"enum\":[\"fixed-height-only\",\"allow-dynamic-under-flag\"]}}},\"persistence\":{\"type\":\"object\",\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"storageKeyStrategy\":{\"type\":\"object\",\"properties\":{\"namespace\":{\"type\":\"string\"}}}}},\"security\":{\"type\":\"object\",\"properties\":{\"eventExposureDefault\":{\"type\":\"object\",\"properties\":{\"rowId\":{\"enum\":[\"redacted\",\"hashed\",\"raw\"]},\"expandedKeys\":{\"enum\":[\"none\",\"hashed\",\"raw\"]}}}}},\"deepLink\":{\"type\":\"object\",\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"encoding\":{\"enum\":[\"csv\"]},\"parsing\":{\"type\":\"object\",\"properties\":{\"duplicateParams\":{\"enum\":[\"firstWins\",\"reject\"]}}},\"integrity\":{\"type\":\"object\",\"properties\":{\"mode\":{\"enum\":[\"opaqueToken\"]}}},\"privacy\":{\"type\":\"object\",\"properties\":{\"mode\":{\"enum\":[\"denyByDefault\",\"allowByDefault\"]}}}}}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"behavior.expansion\"}],\"validators\":[\"editor-round-trip-preserve\"],\"affectedPaths\":[\"behavior.expansion\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"expansion.detailSource.configure\",\"title\":\"Configurar fonte remota do detalhe expansivel\",\"scope\":\"global\",\"targetKind\":\"expansion\",\"target\":{\"kind\":\"expansion\",\"resolver\":\"expansion-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"mode\":{\"enum\":[\"inline\",\"resource\",\"resourcePath\",\"hypermedia\"]},\"inlineSchema\":{\"type\":\"object\"},\"resource\":{\"type\":\"object\",\"properties\":{\"kind\":{\"enum\":[\"ui-composition\",\"form-schema\",\"table-schema\",\"dashboard-schema\"]},\"id\":{\"type\":\"string\"},\"version\":{\"type\":\"string\"}}},\"resourcePath\":{\"type\":\"object\",\"properties\":{\"path\":{\"type\":\"string\"},\"method\":{\"enum\":[\"GET\",\"POST\"]},\"paramsMap\":{\"type\":\"object\"}}},\"resourceAllowList\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"hypermedia\":{\"type\":\"object\"}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"behavior.expansion.detail.source\"}],\"validators\":[\"remote-resource-binding-safe\",\"editor-round-trip-preserve\"],\"affectedPaths\":[\"behavior.expansion.detail.source\",\"behavior.expansion.detail.source.mode\",\"behavior.expansion.detail.source.resourcePath\",\"behavior.expansion.detail.source.resourceAllowList\",\"behavior.expansion.detail.source.hypermedia\"],\"submissionImpact\":\"affects-remote-binding\",\"preconditions\":[\"config-initialized\"]}]}",
32061
+ "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"filter.advanced.fields.remove\",\"title\":\"Remover campos dos filtros avançados\",\"scope\":\"global\",\"targetKind\":\"filter\",\"target\":{\"kind\":\"filter\",\"resolver\":\"filter-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"fields\"],\"properties\":{\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"minItems\":1},\"selected\":{\"type\":\"boolean\"},\"alwaysVisible\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"set-value\",\"path\":\"behavior.filtering.enabled\",\"value\":true},{\"kind\":\"merge-object\",\"path\":\"behavior.filtering.advancedFilters\"}],\"affectedPaths\":[\"behavior.filtering.enabled\",\"behavior.filtering.advancedFilters.enabled\",\"behavior.filtering.advancedFilters.settings\"],\"validators\":[\"filter-fields-exist\",\"editor-round-trip-preserve\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"grouping.set\",\"title\":\"Definir agrupamento\",\"scope\":\"global\",\"targetKind\":\"grouping\",\"target\":{\"kind\":\"grouping\",\"resolver\":\"grouping-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"enabled\"],\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"expanded\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"behavior.grouping\"}],\"validators\":[\"grouping-fields-exist\"],\"affectedPaths\":[\"behavior.grouping\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"selection.mode.set\",\"title\":\"Definir modo de seleção\",\"scope\":\"global\",\"targetKind\":\"selection\",\"target\":{\"kind\":\"selection\",\"resolver\":\"selection-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"enabled\",\"type\"],\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"type\":{\"enum\":[\"single\",\"multiple\"]},\"mode\":{\"enum\":[\"checkbox\",\"row\",\"both\"]}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"behavior.selection\"}],\"affectedPaths\":[\"behavior.selection.enabled\",\"behavior.selection.type\",\"behavior.selection.mode\"],\"validators\":[\"editor-round-trip-preserve\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"appearance.density.set\",\"title\":\"Definir densidade\",\"scope\":\"global\",\"targetKind\":\"appearance\",\"target\":{\"kind\":\"appearance\",\"resolver\":\"appearance-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"density\"],\"properties\":{\"density\":{\"enum\":[\"compact\",\"comfortable\",\"spacious\"]}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"appearance\"}],\"affectedPaths\":[\"appearance.density\"],\"validators\":[\"editor-round-trip-preserve\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"appearance.borders.set\",\"title\":\"Definir bordas\",\"scope\":\"global\",\"targetKind\":\"appearance\",\"target\":{\"kind\":\"appearance\",\"resolver\":\"appearance-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"showRowBorders\",\"showColumnBorders\"],\"properties\":{\"showRowBorders\":{\"type\":\"boolean\"},\"showColumnBorders\":{\"type\":\"boolean\"},\"showOuterBorder\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"appearance.borders\"}],\"affectedPaths\":[\"appearance.borders.showRowBorders\",\"appearance.borders.showColumnBorders\",\"appearance.borders.showOuterBorder\"],\"validators\":[\"editor-round-trip-preserve\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"virtualization.enabled.set\",\"title\":\"Habilitar virtualização\",\"scope\":\"global\",\"targetKind\":\"appearance\",\"target\":{\"kind\":\"appearance\",\"resolver\":\"appearance-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"enabled\"],\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"itemHeight\":{\"type\":\"number\",\"default\":48}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"behavior.virtualization\"},{\"kind\":\"merge-object\",\"path\":\"performance.virtualization\"}],\"affectedPaths\":[\"behavior.virtualization\",\"performance.virtualization\"],\"validators\":[\"editor-round-trip-preserve\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"expansion.configure\",\"title\":\"Configurar expansão de linha\",\"scope\":\"global\",\"targetKind\":\"expansion\",\"target\":{\"kind\":\"expansion\",\"resolver\":\"expansion-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"contractVersion\":{\"type\":\"string\"},\"state\":{\"type\":\"object\",\"properties\":{\"mode\":{\"enum\":[\"controlled\",\"uncontrolled\"]}}},\"interaction\":{\"type\":\"object\",\"properties\":{\"trigger\":{\"enum\":[\"icon\",\"row\",\"both\"]},\"toggleIcon\":{\"type\":\"object\",\"properties\":{\"collapsed\":{\"type\":\"string\"},\"expanded\":{\"type\":\"string\"},\"ariaLabelCollapsed\":{\"type\":\"string\"},\"ariaLabelExpanded\":{\"type\":\"string\"}}},\"motion\":{\"type\":\"object\",\"properties\":{\"preset\":{\"enum\":[\"none\",\"subtle-slide\",\"accordion\",\"fade-scale\"]},\"durationMs\":{\"type\":\"number\",\"minimum\":0},\"easing\":{\"enum\":[\"standard\",\"emphasized\",\"decelerate\"]}}},\"keyboard\":{\"type\":\"object\",\"properties\":{\"profile\":{\"enum\":[\"disclosure\",\"grid\"]}}}}},\"limits\":{\"type\":\"object\",\"properties\":{\"allowMultiple\":{\"type\":\"boolean\"},\"maxExpandedRows\":{\"type\":\"number\",\"minimum\":1},\"onOverflow\":{\"enum\":[\"collapseOldest\",\"denyNew\",\"collapseAll\"]}}},\"collapseOn\":{\"type\":\"object\",\"properties\":{\"sortChange\":{\"type\":\"boolean\"},\"pageChange\":{\"type\":\"boolean\"},\"filterChange\":{\"type\":\"boolean\"},\"dataRefresh\":{\"type\":\"boolean\"}}},\"virtualization\":{\"type\":\"object\",\"properties\":{\"policy\":{\"enum\":[\"fixed-height-only\",\"allow-dynamic-under-flag\"]}}},\"persistence\":{\"type\":\"object\",\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"storageKeyStrategy\":{\"type\":\"object\",\"properties\":{\"namespace\":{\"type\":\"string\"}}}}},\"security\":{\"type\":\"object\",\"properties\":{\"eventExposureDefault\":{\"type\":\"object\",\"properties\":{\"rowId\":{\"enum\":[\"redacted\",\"hashed\",\"raw\"]},\"expandedKeys\":{\"enum\":[\"none\",\"hashed\",\"raw\"]}}}}},\"deepLink\":{\"type\":\"object\",\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"encoding\":{\"enum\":[\"csv\"]},\"parsing\":{\"type\":\"object\",\"properties\":{\"duplicateParams\":{\"enum\":[\"firstWins\",\"reject\"]}}},\"integrity\":{\"type\":\"object\",\"properties\":{\"mode\":{\"enum\":[\"opaqueToken\"]}}},\"privacy\":{\"type\":\"object\",\"properties\":{\"mode\":{\"enum\":[\"denyByDefault\",\"allowByDefault\"]}}}}}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"behavior.expansion\"}],\"validators\":[\"editor-round-trip-preserve\"],\"affectedPaths\":[\"behavior.expansion\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]}]}",
31779
32062
  "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
31780
- "contentHash": "d0981de96f8e1f532b81c0f71c73c255e07f09bee9bdc692dec4a3ed9bd4defa",
32063
+ "contentHash": "14d0530e6fbc118c17d20c85a99eea9ef0bef2ef61d230f5b103d26326c5875b",
31781
32064
  "sourceKind": "component_definition",
31782
32065
  "sourceId": "praxis-table",
31783
32066
  "corpusVersion": "1.0.0"
@@ -31785,9 +32068,9 @@
31785
32068
  {
31786
32069
  "chunkIndex": 126,
31787
32070
  "chunkKind": "authoring_manifest",
31788
- "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"expansion.detailPresentation.configure\",\"title\":\"Configurar apresentacao do detalhe expansivel\",\"scope\":\"global\",\"targetKind\":\"expansion\",\"target\":{\"kind\":\"expansion\",\"resolver\":\"expansion-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"schemaContract\":{\"type\":\"object\",\"properties\":{\"kind\":{\"type\":\"string\"},\"version\":{\"type\":\"string\"}}},\"rendering\":{\"type\":\"object\",\"properties\":{\"strategy\":{\"enum\":[\"registry\"]},\"registryId\":{\"type\":\"string\"},\"hostLayout\":{\"enum\":[\"auto\",\"stack\",\"tabs\"]},\"fallbackNodePolicy\":{\"enum\":[\"failClosed\",\"renderPlaceholder\"]}}},\"height\":{\"type\":\"object\",\"properties\":{\"mode\":{\"enum\":[\"fixed\",\"dynamic\"]},\"px\":{\"type\":\"number\",\"minimum\":0}}}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"behavior.expansion.detail\"}],\"validators\":[\"editor-round-trip-preserve\"],\"affectedPaths\":[\"behavior.expansion.detail\",\"behavior.expansion.detail.schemaContract\",\"behavior.expansion.detail.rendering\",\"behavior.expansion.detail.height\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"meta.configure\",\"title\":\"Configurar metadados\",\"scope\":\"global\",\"targetKind\":\"meta\",\"target\":{\"kind\":\"meta\",\"resolver\":\"table-meta-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"name\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"schemaId\":{\"type\":\"string\"}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"meta\"}],\"affectedPaths\":[\"meta\"],\"validators\":[\"editor-round-trip-preserve\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"meta.idField.set\",\"title\":\"Definir campo de identidade\",\"scope\":\"global\",\"targetKind\":\"meta\",\"target\":{\"kind\":\"meta\",\"resolver\":\"table-meta-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"idField\"],\"properties\":{\"idField\":{\"type\":\"string\",\"minLength\":1}}},\"effects\":[{\"kind\":\"set-value\",\"path\":\"meta.idField\"}],\"requiresConfirmation\":true,\"affectedPaths\":[\"meta.idField\"],\"validators\":[\"target-column-exists\",\"editor-round-trip-preserve\"],\"submissionImpact\":\"affects-schema-backed-data\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"column.resizable.set\",\"title\":\"Definir redimensionamento da coluna\",\"scope\":\"column\",\"targetKind\":\"column\",\"target\":{\"kind\":\"column\",\"resolver\":\"column-by-field\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"resizable\"],\"properties\":{\"resizable\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"merge-by-key\",\"path\":\"columns[]\",\"key\":\"field\"}],\"validators\":[\"target-column-exists\"],\"affectedPaths\":[\"columns[].resizable\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\",\"target-exists\"]},{\"operationId\":\"column.sortField.set\",\"title\":\"Definir campo de ordenacao da coluna\",\"scope\":\"column\",\"targetKind\":\"column\",\"target\":{\"kind\":\"column\",\"resolver\":\"column-by-field\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"sortField\"],\"properties\":{\"sortField\":{\"type\":\"string\",\"minLength\":1}}},\"effects\":[{\"kind\":\"merge-by-key\",\"path\":\"columns[]\",\"key\":\"field\"}],\"validators\":[\"target-column-exists\"],\"affectedPaths\":[\"columns[].sortField\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\",\"target-exists\"]},{\"operationId\":\"column.computed.configure\",\"title\":\"Configurar coluna calculada\",\"scope\":\"column\",\"targetKind\":\"computedColumn\",\"target\":{\"kind\":\"computedColumn\",\"resolver\":\"column-by-field\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"expression\"],\"properties\":{\"expression\":{\"type\":\"object\",\"description\":\"AST Json Logic\"},\"outputType\":{\"enum\":[\"string\",\"number\",\"date\",\"boolean\",\"currency\",\"percentage\",\"custom\"]},\"format\":{\"type\":\"string\",\"enum\":[\"shortDate\",\"mediumDate\",\"longDate\",\"fullDate\",\"MMM/yyyy\",\"shortTime\",\"short\",\"yyyy-MM-dd\",\"dd/MM/yyyy\",\"yyyy-MM-dd HH:mm\",\"1.0-0\",\"1.1-1\",\"1.2-2\",\"1.0-3\",\"1.0-0|nosep\",\"BRL|symbol|2\",\"USD|symbol|2\",\"EUR|symbol|2\",\"BRL|code|2\",\"USD|code|0\",\"BRL|symbol|2|nosep\",\"EUR|symbol|2|nosep\",\"1.0-0|x100\",\"1.1-1|x100\",\"1.2-2|x100\",\"none\",\"uppercase\",\"lowercase\",\"titlecase\",\"capitalize\",\"uppercase|truncate|50|...\",\"000.000.000-00\",\"true-false\",\"yes-no\",\"active-inactive\",\"on-off\",\"enabled-disabled\",\"custom|Sim|Nao\"]},\"dependencies\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}}},\"effects\":[{\"kind\":\"merge-by-key\",\"path\":\"columns[]\",\"key\":\"field\"}],\"validators\":[\"target-column-exists\",\"computed-expression-valid\",\"format-preset-supported\"],\"affectedPaths\":[\"columns[].computed\"],\"submissionImpact\":\"affects-schema-backed-data\",\"preconditions\":[\"config-initialized\",\"target-exists\"]},{\"operationId\":\"behavior.pagination.configure\",\"title\":\"Configurar paginacao\",\"scope\":\"global\",\"targetKind\":\"pagination\",\"target\":{\"kind\":\"pagination\",\"resolver\":\"pagination-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"strategy\":{\"enum\":[\"client\",\"server\"]},\"pageSize\":{\"type\":\"number\",\"minimum\":1},\"pageSizeOptions\":{\"type\":\"array\",\"items\":{\"type\":\"number\",\"minimum\":1}},\"position\":{\"enum\":[\"top\",\"bottom\",\"both\"]},\"style\":{\"enum\":[\"default\",\"simple\",\"advanced\",\"compact\"]},\"advanced\":{\"type\":\"object\",\"properties\":{\"maxPageSize\":{\"type\":\"number\",\"minimum\":1}}}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"behavior.pagination\"}],\"affectedPaths\":[\"behavior.pagination\"],\"validators\":[\"editor-round-trip-preserve\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"behavior.sorting.configure\",\"title\":\"Configurar ordenacao\",\"scope\":\"global\",\"targetKind\":\"sorting\",\"target\":{\"kind\":\"sorting\",\"resolver\":\"sorting-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"strategy\":{\"enum\":[\"client\",\"server\"]},\"defaultSort\":{\"type\":\"object\"},\"allowClearSort\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"behavior.sorting\"}],\"affectedPaths\":[\"behavior.sorting\"],\"validators\":[\"editor-round-trip-preserve\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]}]}",
32071
+ "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"expansion.detailSource.configure\",\"title\":\"Configurar fonte remota do detalhe expansivel\",\"scope\":\"global\",\"targetKind\":\"expansion\",\"target\":{\"kind\":\"expansion\",\"resolver\":\"expansion-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"mode\":{\"enum\":[\"inline\",\"resource\",\"resourcePath\",\"hypermedia\"]},\"inlineSchema\":{\"type\":\"object\"},\"resource\":{\"type\":\"object\",\"properties\":{\"kind\":{\"enum\":[\"ui-composition\",\"form-schema\",\"table-schema\",\"dashboard-schema\"]},\"id\":{\"type\":\"string\"},\"version\":{\"type\":\"string\"}}},\"resourcePath\":{\"type\":\"object\",\"properties\":{\"path\":{\"type\":\"string\"},\"method\":{\"enum\":[\"GET\",\"POST\"]},\"paramsMap\":{\"type\":\"object\"}}},\"resourceAllowList\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"hypermedia\":{\"type\":\"object\"}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"behavior.expansion.detail.source\"}],\"validators\":[\"remote-resource-binding-safe\",\"editor-round-trip-preserve\"],\"affectedPaths\":[\"behavior.expansion.detail.source\",\"behavior.expansion.detail.source.mode\",\"behavior.expansion.detail.source.resourcePath\",\"behavior.expansion.detail.source.resourceAllowList\",\"behavior.expansion.detail.source.hypermedia\"],\"submissionImpact\":\"affects-remote-binding\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"expansion.detailPresentation.configure\",\"title\":\"Configurar apresentacao do detalhe expansivel\",\"scope\":\"global\",\"targetKind\":\"expansion\",\"target\":{\"kind\":\"expansion\",\"resolver\":\"expansion-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"schemaContract\":{\"type\":\"object\",\"properties\":{\"kind\":{\"type\":\"string\"},\"version\":{\"type\":\"string\"}}},\"rendering\":{\"type\":\"object\",\"properties\":{\"strategy\":{\"enum\":[\"registry\"]},\"registryId\":{\"type\":\"string\"},\"hostLayout\":{\"enum\":[\"auto\",\"stack\",\"tabs\"]},\"fallbackNodePolicy\":{\"enum\":[\"failClosed\",\"renderPlaceholder\"]}}},\"height\":{\"type\":\"object\",\"properties\":{\"mode\":{\"enum\":[\"fixed\",\"dynamic\"]},\"px\":{\"type\":\"number\",\"minimum\":0}}}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"behavior.expansion.detail\"}],\"validators\":[\"editor-round-trip-preserve\"],\"affectedPaths\":[\"behavior.expansion.detail\",\"behavior.expansion.detail.schemaContract\",\"behavior.expansion.detail.rendering\",\"behavior.expansion.detail.height\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"meta.configure\",\"title\":\"Configurar metadados\",\"scope\":\"global\",\"targetKind\":\"meta\",\"target\":{\"kind\":\"meta\",\"resolver\":\"table-meta-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"name\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"schemaId\":{\"type\":\"string\"}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"meta\"}],\"affectedPaths\":[\"meta\"],\"validators\":[\"editor-round-trip-preserve\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"meta.idField.set\",\"title\":\"Definir campo de identidade\",\"scope\":\"global\",\"targetKind\":\"meta\",\"target\":{\"kind\":\"meta\",\"resolver\":\"table-meta-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"idField\"],\"properties\":{\"idField\":{\"type\":\"string\",\"minLength\":1}}},\"effects\":[{\"kind\":\"set-value\",\"path\":\"meta.idField\"}],\"requiresConfirmation\":true,\"affectedPaths\":[\"meta.idField\"],\"validators\":[\"target-column-exists\",\"editor-round-trip-preserve\"],\"submissionImpact\":\"affects-schema-backed-data\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"column.resizable.set\",\"title\":\"Definir redimensionamento da coluna\",\"scope\":\"column\",\"targetKind\":\"column\",\"target\":{\"kind\":\"column\",\"resolver\":\"column-by-field\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"resizable\"],\"properties\":{\"resizable\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"merge-by-key\",\"path\":\"columns[]\",\"key\":\"field\"}],\"validators\":[\"target-column-exists\"],\"affectedPaths\":[\"columns[].resizable\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\",\"target-exists\"]},{\"operationId\":\"column.sortField.set\",\"title\":\"Definir campo de ordenacao da coluna\",\"scope\":\"column\",\"targetKind\":\"column\",\"target\":{\"kind\":\"column\",\"resolver\":\"column-by-field\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"sortField\"],\"properties\":{\"sortField\":{\"type\":\"string\",\"minLength\":1}}},\"effects\":[{\"kind\":\"merge-by-key\",\"path\":\"columns[]\",\"key\":\"field\"}],\"validators\":[\"target-column-exists\"],\"affectedPaths\":[\"columns[].sortField\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\",\"target-exists\"]},{\"operationId\":\"column.computed.configure\",\"title\":\"Configurar coluna calculada\",\"scope\":\"column\",\"targetKind\":\"computedColumn\",\"target\":{\"kind\":\"computedColumn\",\"resolver\":\"column-by-field\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"expression\"],\"properties\":{\"expression\":{\"type\":\"object\",\"description\":\"AST Json Logic\"},\"outputType\":{\"enum\":[\"string\",\"number\",\"date\",\"boolean\",\"currency\",\"percentage\",\"custom\"]},\"format\":{\"type\":\"string\",\"enum\":[\"shortDate\",\"mediumDate\",\"longDate\",\"fullDate\",\"MMM/yyyy\",\"shortTime\",\"short\",\"yyyy-MM-dd\",\"dd/MM/yyyy\",\"yyyy-MM-dd HH:mm\",\"1.0-0\",\"1.1-1\",\"1.2-2\",\"1.0-3\",\"1.0-0|nosep\",\"BRL|symbol|2\",\"USD|symbol|2\",\"EUR|symbol|2\",\"BRL|code|2\",\"USD|code|0\",\"BRL|symbol|2|nosep\",\"EUR|symbol|2|nosep\",\"1.0-0|x100\",\"1.1-1|x100\",\"1.2-2|x100\",\"none\",\"uppercase\",\"lowercase\",\"titlecase\",\"capitalize\",\"uppercase|truncate|50|...\",\"000.000.000-00\",\"true-false\",\"yes-no\",\"active-inactive\",\"on-off\",\"enabled-disabled\",\"custom|Sim|Nao\"]},\"dependencies\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}}},\"effects\":[{\"kind\":\"merge-by-key\",\"path\":\"columns[]\",\"key\":\"field\"}],\"validators\":[\"target-column-exists\",\"computed-expression-valid\",\"format-preset-supported\"],\"affectedPaths\":[\"columns[].computed\"],\"submissionImpact\":\"affects-schema-backed-data\",\"preconditions\":[\"config-initialized\",\"target-exists\"]},{\"operationId\":\"behavior.pagination.configure\",\"title\":\"Configurar paginacao\",\"scope\":\"global\",\"targetKind\":\"pagination\",\"target\":{\"kind\":\"pagination\",\"resolver\":\"pagination-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"strategy\":{\"enum\":[\"client\",\"server\"]},\"pageSize\":{\"type\":\"number\",\"minimum\":1},\"pageSizeOptions\":{\"type\":\"array\",\"items\":{\"type\":\"number\",\"minimum\":1}},\"position\":{\"enum\":[\"top\",\"bottom\",\"both\"]},\"style\":{\"enum\":[\"default\",\"simple\",\"advanced\",\"compact\"]},\"advanced\":{\"type\":\"object\",\"properties\":{\"maxPageSize\":{\"type\":\"number\",\"minimum\":1}}}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"behavior.pagination\"}],\"affectedPaths\":[\"behavior.pagination\"],\"validators\":[\"editor-round-trip-preserve\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"behavior.sorting.configure\",\"title\":\"Configurar ordenacao\",\"scope\":\"global\",\"targetKind\":\"sorting\",\"target\":{\"kind\":\"sorting\",\"resolver\":\"sorting-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"strategy\":{\"enum\":[\"client\",\"server\"]},\"defaultSort\":{\"type\":\"object\"},\"allowClearSort\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"behavior.sorting\"}],\"affectedPaths\":[\"behavior.sorting\"],\"validators\":[\"editor-round-trip-preserve\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]}]}",
31789
32072
  "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
31790
- "contentHash": "7191f7900b817e57c658a47fd8baf9bd0b0867257486edea6be11524b0dd9d09",
32073
+ "contentHash": "4c4e3aa35a9dec9e0e4e928eadd2b1410321a5e6fa602b899633b906ec3fdb4f",
31791
32074
  "sourceKind": "component_definition",
31792
32075
  "sourceId": "praxis-table",
31793
32076
  "corpusVersion": "1.0.0"
@@ -31855,9 +32138,9 @@
31855
32138
  {
31856
32139
  "chunkIndex": 133,
31857
32140
  "chunkKind": "authoring_manifest",
31858
- "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"examples\",\"examples\":[{\"id\":\"add-schema-column\",\"request\":\"Adicionar coluna para o campo email com o título Contato\",\"operationId\":\"column.add\",\"params\":{\"field\":\"email\",\"header\":\"Contato\",\"type\":\"string\"},\"isPositive\":true},{\"id\":\"add-email-column-imperative\",\"request\":\"Adicione a coluna e-mail à tabela de funcionários e mantenha as demais colunas\",\"operationId\":\"column.add\",\"params\":{\"field\":\"email\",\"header\":\"E-mail\",\"type\":\"string\"},\"isPositive\":true},{\"id\":\"rename-active-column-to-status\",\"request\":\"Ativo vira Status.\",\"operationId\":\"column.header.set\",\"target\":\"ativo\",\"params\":{\"header\":\"Status\"},\"isPositive\":true},{\"id\":\"rename-column-title-without-changing-cell-values\",\"request\":\"Troque somente o título da coluna Ativo para Status, sem alterar os valores das células\",\"operationId\":\"column.header.set\",\"target\":\"ativo\",\"params\":{\"header\":\"Status\"},\"isPositive\":true},{\"id\":\"cell-value-mapping-is-not-header-renaming\",\"request\":\"Sem mudar o título da coluna Ativo, mostre Sim e Não no lugar dos valores das células\",\"operationId\":\"column.header.set\",\"target\":\"ativo\",\"isPositive\":false},{\"id\":\"current-column-label-is-not-a-rename-request\",\"request\":\"Na coluna chamada Status, mostre um chip vermelho quando o valor estiver inativo\",\"operationId\":\"column.header.set\",\"target\":\"ativo\",\"isPositive\":false},{\"id\":\"add-computed-column\",\"request\":\"Criar coluna de idade baseada na data de nascimento\",\"operationId\":\"column.computed.add\",\"params\":{\"field\":\"idade\",\"header\":\"Idade\",\"expression\":{\"yearsSince\":[{\"var\":\"dataNascimento\"}]},\"outputType\":\"number\"},\"isPositive\":true},{\"id\":\"add-conditional-badge\",\"request\":\"Mostrar badge vermelho na coluna status se o valor for \\\"atrasado\\\"\",\"operationId\":\"column.conditionalRenderer.add\",\"target\":\"status\",\"params\":{\"id\":\"badge-atrasado\",\"condition\":{\"==\":[{\"var\":\"status\"},\"atrasado\"]},\"renderer\":{\"type\":\"badge\",\"badge\":{\"color\":\"warn\",\"variant\":\"filled\"}}},\"isPositive\":true},{\"id\":\"set-active-base-chip-for-status-pair\",\"request\":\"Na coluna Status, use chip verde quando ativo e chip vermelho quando inativo sem alterar as outras colunas\",\"operationId\":\"column.renderer.set\",\"target\":\"ativo\",\"params\":{\"type\":\"chip\",\"chip\":{\"textField\":\"ativo\",\"color\":\"success\",\"variant\":\"filled\"}},\"isPositive\":true},{\"id\":\"add-inactive-conditional-chip\",\"request\":\"Na coluna Status, use chip verde quando ativo e chip vermelho quando inativo sem alterar as outras colunas\",\"operationId\":\"column.conditionalRenderer.add\",\"target\":\"ativo\",\"params\":{\"id\":\"chip-inativo\",\"condition\":{\"==\":[{\"var\":\"ativo\"},false]},\"renderer\":{\"type\":\"chip\",\"chip\":{\"text\":\"Inativo\",\"color\":\"warn\",\"variant\":\"filled\"}}},\"isPositive\":true},{\"id\":\"enable-export\",\"request\":\"Habilitar exportação para Excel e PDF\",\"operationId\":\"export.enabled.set\",\"params\":{\"enabled\":true,\"formats\":[\"excel\",\"pdf\"]},\"isPositive\":true},{\"id\":\"add-row-action\",\"request\":\"Adicionar botão de excluir na linha\",\"operationId\":\"rowAction.add\",\"params\":{\"id\":\"delete\",\"label\":\"Excluir\",\"action\":\"delete\",\"icon\":\"delete\",\"color\":\"warn\"},\"isPositive\":true},{\"id\":\"add-row-action-open-route\",\"request\":\"Adicionar botão de linha para abrir detalhe com navegação interna\",\"operationId\":\"rowAction.add\",\"params\":{\"id\":\"details\",\"label\":\"Detalhes\",\"action\":\"navigation.openRoute\",\"icon\":\"open_in_new\",\"globalAction\":{\"actionId\":\"navigation.openRoute\",\"payload\":{\"path\":\"/clientes/detalhe\",\"query\":{\"id\":\"${row.id}\"}}}},\"isPositive\":true},{\"id\":\"group-by-field\",\"request\":\"Agrupar a tabela por departamento\",\"operationId\":\"grouping.set\",\"params\":{\"enabled\":true,\"fields\":[\"departamento\"]},\"isPositive\":true},{\"id\":\"reject-invalid-renderer\",\"request\":\"Configurar imagem para um renderizador do tipo ícone\",\"operationId\":\"column.renderer.set\",\"target\":\"avatar\",\"params\":{\"type\":\"icon\",\"image\":{\"src\":\"...\"}},\"isPositive\":false},{\"id\":\"compose-photo-and-code-in-code-cell\",\"request\":\"Na coluna Código, mostrar primeiro a foto e depois o código na mesma célula, sem manter Foto como coluna separada\",\"operationId\":\"column.renderer.set\",\"target\":\"codigo\",\"params\":{\"type\":\"compose\",\"compose\":{\"items\":[{\"type\":\"avatar\",\"avatar\":{\"srcField\":\"foto\",\"altField\":\"nome\",\"initialsField\":\"nome\",\"shape\":\"rounded\",\"size\":32}},{\"type\":\"value\",\"field\":\"codigo\"}],\"layout\":{\"direction\":\"row\",\"align\":\"center\",\"gap\":8}}},\"isPositive\":true},{\"id\":\"stack-existing-photo-and-code-vertically\",\"request\":\"No composto anterior, deixe em duas linhas: foto em cima e código embaixo\",\"operationId\":\"column.renderer.composeLayout.set\",\"target\":\"codigo\",\"params\":{\"direction\":\"column\"},\"isPositive\":true},{\"id\":\"grow-photo-inside-existing-compose\",\"request\":\"Aumente um pouco somente a foto dessa célula composta, sem mudar os outros itens\",\"operationId\":\"column.renderer.composeItem.set\",\"target\":\"codigo\",\"params\":{\"itemType\":\"avatar\",\"item\":{\"type\":\"avatar\",\"avatar\":{\"srcField\":\"foto\",\"initialsField\":\"nome\",\"shape\":\"rounded\",\"size\":40}}},\"isPositive\":true},{\"id\":\"shrink-photo-inside-existing-compose\",\"request\":\"Diminua só essa foto; ela está grande demais, e preserve o restante\",\"operationId\":\"column.renderer.composeItem.set\",\"target\":\"codigo\",\"params\":{\"itemType\":\"avatar\",\"item\":{\"type\":\"avatar\",\"avatar\":{\"srcField\":\"foto\",\"initialsField\":\"nome\",\"shape\":\"rounded\",\"size\":24}}},\"isPositive\":true},{\"id\":\"make-photo-circular-inside-existing-compose\",\"request\":\"Deixe somente a foto dessa célula composta circular, sem alterar tamanho, layout ou os outros itens\",\"operationId\":\"column.renderer.composeItem.set\",\"target\":\"codigo\",\"params\":{\"itemType\":\"avatar\",\"item\":{\"type\":\"avatar\",\"avatar\":{\"srcField\":\"foto\",\"initialsField\":\"nome\",\"shape\":\"circle\",\"size\":24}}},\"isPositive\":true},{\"id\":\"set-composed-photo-rounded-square-after-correction\",\"request\":\"Deixe a foto circular... não, cancela essa parte: quero quadrada com cantos arredondados\",\"operationId\":\"column.renderer.composeItem.set\",\"target\":\"codigo\",\"params\":{\"itemType\":\"avatar\",\"item\":{\"type\":\"avatar\",\"avatar\":{\"srcField\":\"foto\",\"initialsField\":\"nome\",\"shape\":\"rounded\",\"size\":24}}},\"isPositive\":true},{\"id\":\"set-button-renderer\",\"request\":\"Transformar a coluna acoes em botao que executa abrir-detalhe\",\"operationId\":\"column.renderer.set\",\"target\":\"acoes\",\"params\":{\"type\":\"button\",\"button\":{\"label\":\"Abrir\",\"action\":{\"id\":\"abrir-detalhe\"}}},\"isPositive\":true},{\"id\":\"add-column-conditional-style\",\"request\":\"Destacar a coluna status quando o valor estiver bloqueado\",\"operationId\":\"column.conditionalStyle.add\",\"target\":\"status\",\"params\":{\"id\":\"status-bloqueado\",\"condition\":{\"==\":[{\"var\":\"status\"},\"bloqueado\"]},\"cssClass\":\"status-bloqueado\"},\"isPositive\":true},{\"id\":\"set-currency-format-preset\",\"request\":\"Formatar a coluna total como moeda brasileira\",\"operationId\":\"column.format.set\",\"target\":\"total\",\"params\":{\"format\":\"BRL|symbol|2\"},\"isPositive\":true},{\"id\":\"set-cpf-format-preset\",\"request\":\"Formate a coluna CPF\",\"operationId\":\"column.format.set\",\"target\":\"cpf\",\"params\":{\"format\":\"000.000.000-00\"},\"isPositive\":true},{\"id\":\"set-long-date-format-preset\",\"request\":\"Mostre a data de admissão por extenso\",\"operationId\":\"column.format.set\",\"target\":\"dataAdmissao\",\"params\":{\"format\":\"longDate\"},\"isPositive\":true},{\"id\":\"set-basic-column-width\",\"request\":\"Definir a largura da coluna nome para 240px\",\"operationId\":\"column.width.set\",\"target\":\"nome\",\"params\":{\"width\":\"240px\"},\"isPositive\":true},{\"id\":\"set-salary-align-right\",\"request\":\"Alinhe o salário à direita\",\"operationId\":\"column.align.set\",\"target\":\"salario\",\"params\":{\"align\":\"right\"},\"isPositive\":true},{\"id\":\"make-name-sticky-start\",\"request\":\"Fixe a coluna funcionário no início da tabela\",\"operationId\":\"column.sticky.set\",\"target\":\"funcionario\",\"params\":{\"sticky\":\"start\"},\"isPositive\":true}]}",
32141
+ "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"examples\",\"examples\":[{\"id\":\"configure-table-filter-heading-and-action\",\"request\":\"Show a Filtros heading above the table filters and label the advanced action Mais filtros.\",\"operationId\":\"filter.advanced.configure\",\"params\":{\"enabled\":true,\"settings\":{\"presentation\":{\"header\":{\"visible\":true,\"text\":\"Filtros\",\"position\":\"above\"},\"advancedAction\":{\"display\":\"icon-text\",\"text\":\"Mais filtros\",\"position\":\"end\"}}}},\"isPositive\":true},{\"id\":\"add-schema-column\",\"request\":\"Adicionar coluna para o campo email com o título Contato\",\"operationId\":\"column.add\",\"params\":{\"field\":\"email\",\"header\":\"Contato\",\"type\":\"string\"},\"isPositive\":true},{\"id\":\"add-email-column-imperative\",\"request\":\"Adicione a coluna e-mail à tabela de funcionários e mantenha as demais colunas\",\"operationId\":\"column.add\",\"params\":{\"field\":\"email\",\"header\":\"E-mail\",\"type\":\"string\"},\"isPositive\":true},{\"id\":\"rename-active-column-to-status\",\"request\":\"Ativo vira Status.\",\"operationId\":\"column.header.set\",\"target\":\"ativo\",\"params\":{\"header\":\"Status\"},\"isPositive\":true},{\"id\":\"rename-column-title-without-changing-cell-values\",\"request\":\"Troque somente o título da coluna Ativo para Status, sem alterar os valores das células\",\"operationId\":\"column.header.set\",\"target\":\"ativo\",\"params\":{\"header\":\"Status\"},\"isPositive\":true},{\"id\":\"cell-value-mapping-is-not-header-renaming\",\"request\":\"Sem mudar o título da coluna Ativo, mostre Sim e Não no lugar dos valores das células\",\"operationId\":\"column.header.set\",\"target\":\"ativo\",\"isPositive\":false},{\"id\":\"current-column-label-is-not-a-rename-request\",\"request\":\"Na coluna chamada Status, mostre um chip vermelho quando o valor estiver inativo\",\"operationId\":\"column.header.set\",\"target\":\"ativo\",\"isPositive\":false},{\"id\":\"add-computed-column\",\"request\":\"Criar coluna de idade baseada na data de nascimento\",\"operationId\":\"column.computed.add\",\"params\":{\"field\":\"idade\",\"header\":\"Idade\",\"expression\":{\"yearsSince\":[{\"var\":\"dataNascimento\"}]},\"outputType\":\"number\"},\"isPositive\":true},{\"id\":\"add-conditional-badge\",\"request\":\"Mostrar badge vermelho na coluna status se o valor for \\\"atrasado\\\"\",\"operationId\":\"column.conditionalRenderer.add\",\"target\":\"status\",\"params\":{\"id\":\"badge-atrasado\",\"condition\":{\"==\":[{\"var\":\"status\"},\"atrasado\"]},\"renderer\":{\"type\":\"badge\",\"badge\":{\"color\":\"warn\",\"variant\":\"filled\"}}},\"isPositive\":true},{\"id\":\"set-active-base-chip-for-status-pair\",\"request\":\"Na coluna Status, use chip verde quando ativo e chip vermelho quando inativo sem alterar as outras colunas\",\"operationId\":\"column.renderer.set\",\"target\":\"ativo\",\"params\":{\"type\":\"chip\",\"chip\":{\"textField\":\"ativo\",\"color\":\"success\",\"variant\":\"filled\"}},\"isPositive\":true},{\"id\":\"add-inactive-conditional-chip\",\"request\":\"Na coluna Status, use chip verde quando ativo e chip vermelho quando inativo sem alterar as outras colunas\",\"operationId\":\"column.conditionalRenderer.add\",\"target\":\"ativo\",\"params\":{\"id\":\"chip-inativo\",\"condition\":{\"==\":[{\"var\":\"ativo\"},false]},\"renderer\":{\"type\":\"chip\",\"chip\":{\"text\":\"Inativo\",\"color\":\"warn\",\"variant\":\"filled\"}}},\"isPositive\":true},{\"id\":\"enable-export\",\"request\":\"Habilitar exportação para Excel e PDF\",\"operationId\":\"export.enabled.set\",\"params\":{\"enabled\":true,\"formats\":[\"excel\",\"pdf\"]},\"isPositive\":true},{\"id\":\"add-row-action\",\"request\":\"Adicionar botão de excluir na linha\",\"operationId\":\"rowAction.add\",\"params\":{\"id\":\"delete\",\"label\":\"Excluir\",\"action\":\"delete\",\"icon\":\"delete\",\"color\":\"warn\"},\"isPositive\":true},{\"id\":\"add-row-action-open-route\",\"request\":\"Adicionar botão de linha para abrir detalhe com navegação interna\",\"operationId\":\"rowAction.add\",\"params\":{\"id\":\"details\",\"label\":\"Detalhes\",\"action\":\"navigation.openRoute\",\"icon\":\"open_in_new\",\"globalAction\":{\"actionId\":\"navigation.openRoute\",\"payload\":{\"path\":\"/clientes/detalhe\",\"query\":{\"id\":\"${row.id}\"}}}},\"isPositive\":true},{\"id\":\"group-by-field\",\"request\":\"Agrupar a tabela por departamento\",\"operationId\":\"grouping.set\",\"params\":{\"enabled\":true,\"fields\":[\"departamento\"]},\"isPositive\":true},{\"id\":\"reject-invalid-renderer\",\"request\":\"Configurar imagem para um renderizador do tipo ícone\",\"operationId\":\"column.renderer.set\",\"target\":\"avatar\",\"params\":{\"type\":\"icon\",\"image\":{\"src\":\"...\"}},\"isPositive\":false},{\"id\":\"compose-photo-and-code-in-code-cell\",\"request\":\"Na coluna Código, mostrar primeiro a foto e depois o código na mesma célula, sem manter Foto como coluna separada\",\"operationId\":\"column.renderer.set\",\"target\":\"codigo\",\"params\":{\"type\":\"compose\",\"compose\":{\"items\":[{\"type\":\"avatar\",\"avatar\":{\"srcField\":\"foto\",\"altField\":\"nome\",\"initialsField\":\"nome\",\"shape\":\"rounded\",\"size\":32}},{\"type\":\"value\",\"field\":\"codigo\"}],\"layout\":{\"direction\":\"row\",\"align\":\"center\",\"gap\":8}}},\"isPositive\":true},{\"id\":\"stack-existing-photo-and-code-vertically\",\"request\":\"No composto anterior, deixe em duas linhas: foto em cima e código embaixo\",\"operationId\":\"column.renderer.composeLayout.set\",\"target\":\"codigo\",\"params\":{\"direction\":\"column\"},\"isPositive\":true},{\"id\":\"grow-photo-inside-existing-compose\",\"request\":\"Aumente um pouco somente a foto dessa célula composta, sem mudar os outros itens\",\"operationId\":\"column.renderer.composeItem.set\",\"target\":\"codigo\",\"params\":{\"itemType\":\"avatar\",\"item\":{\"type\":\"avatar\",\"avatar\":{\"srcField\":\"foto\",\"initialsField\":\"nome\",\"shape\":\"rounded\",\"size\":40}}},\"isPositive\":true},{\"id\":\"shrink-photo-inside-existing-compose\",\"request\":\"Diminua só essa foto; ela está grande demais, e preserve o restante\",\"operationId\":\"column.renderer.composeItem.set\",\"target\":\"codigo\",\"params\":{\"itemType\":\"avatar\",\"item\":{\"type\":\"avatar\",\"avatar\":{\"srcField\":\"foto\",\"initialsField\":\"nome\",\"shape\":\"rounded\",\"size\":24}}},\"isPositive\":true},{\"id\":\"make-photo-circular-inside-existing-compose\",\"request\":\"Deixe somente a foto dessa célula composta circular, sem alterar tamanho, layout ou os outros itens\",\"operationId\":\"column.renderer.composeItem.set\",\"target\":\"codigo\",\"params\":{\"itemType\":\"avatar\",\"item\":{\"type\":\"avatar\",\"avatar\":{\"srcField\":\"foto\",\"initialsField\":\"nome\",\"shape\":\"circle\",\"size\":24}}},\"isPositive\":true},{\"id\":\"set-composed-photo-rounded-square-after-correction\",\"request\":\"Deixe a foto circular... não, cancela essa parte: quero quadrada com cantos arredondados\",\"operationId\":\"column.renderer.composeItem.set\",\"target\":\"codigo\",\"params\":{\"itemType\":\"avatar\",\"item\":{\"type\":\"avatar\",\"avatar\":{\"srcField\":\"foto\",\"initialsField\":\"nome\",\"shape\":\"rounded\",\"size\":24}}},\"isPositive\":true},{\"id\":\"set-button-renderer\",\"request\":\"Transformar a coluna acoes em botao que executa abrir-detalhe\",\"operationId\":\"column.renderer.set\",\"target\":\"acoes\",\"params\":{\"type\":\"button\",\"button\":{\"label\":\"Abrir\",\"action\":{\"id\":\"abrir-detalhe\"}}},\"isPositive\":true},{\"id\":\"add-column-conditional-style\",\"request\":\"Destacar a coluna status quando o valor estiver bloqueado\",\"operationId\":\"column.conditionalStyle.add\",\"target\":\"status\",\"params\":{\"id\":\"status-bloqueado\",\"condition\":{\"==\":[{\"var\":\"status\"},\"bloqueado\"]},\"cssClass\":\"status-bloqueado\"},\"isPositive\":true},{\"id\":\"set-currency-format-preset\",\"request\":\"Formatar a coluna total como moeda brasileira\",\"operationId\":\"column.format.set\",\"target\":\"total\",\"params\":{\"format\":\"BRL|symbol|2\"},\"isPositive\":true},{\"id\":\"set-cpf-format-preset\",\"request\":\"Formate a coluna CPF\",\"operationId\":\"column.format.set\",\"target\":\"cpf\",\"params\":{\"format\":\"000.000.000-00\"},\"isPositive\":true},{\"id\":\"set-long-date-format-preset\",\"request\":\"Mostre a data de admissão por extenso\",\"operationId\":\"column.format.set\",\"target\":\"dataAdmissao\",\"params\":{\"format\":\"longDate\"},\"isPositive\":true},{\"id\":\"set-basic-column-width\",\"request\":\"Definir a largura da coluna nome para 240px\",\"operationId\":\"column.width.set\",\"target\":\"nome\",\"params\":{\"width\":\"240px\"},\"isPositive\":true}]}",
31859
32142
  "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
31860
- "contentHash": "2cbbd221269454b1593b1dd1c6cd13aed55f3ce3375349220dd418b9a6b17c79",
32143
+ "contentHash": "11291022f89475cf4e937174f4f745424cd794ce3c839c612d660f65bec63f61",
31861
32144
  "sourceKind": "component_definition",
31862
32145
  "sourceId": "praxis-table",
31863
32146
  "corpusVersion": "1.0.0"
@@ -31865,9 +32148,9 @@
31865
32148
  {
31866
32149
  "chunkIndex": 134,
31867
32150
  "chunkKind": "authoring_manifest",
31868
- "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"examples\",\"examples\":[{\"id\":\"moving-column-to-start-is-not-sticky\",\"request\":\"Mova a coluna salário líquido da tabela para o início\",\"operationId\":\"column.sticky.set\",\"target\":\"salarioLiquido\",\"isPositive\":false},{\"id\":\"disable-cpf-sorting\",\"request\":\"Não permita ordenar pela coluna CPF\",\"operationId\":\"column.sortable.set\",\"target\":\"cpf\",\"params\":{\"sortable\":false},\"isPositive\":true},{\"id\":\"enable-department-filter\",\"request\":\"Deixe o departamento disponível nos filtros\",\"operationId\":\"column.filterable.set\",\"target\":\"departamento\",\"params\":{\"filterable\":true},\"isPositive\":true},{\"id\":\"hide-internal-id-column\",\"request\":\"Oculte o ID interno da tabela\",\"operationId\":\"column.visibility.set\",\"target\":\"id\",\"params\":{\"visible\":false},\"isPositive\":true},{\"id\":\"hide-source-column-after-cell-composition\",\"request\":\"Na coluna Código, mostrar primeiro a foto e depois o código na mesma célula, sem manter Foto como coluna separada\",\"operationId\":\"column.visibility.set\",\"target\":\"foto\",\"params\":{\"visible\":false},\"isPositive\":true},{\"id\":\"move-whole-photo-column-before-code\",\"request\":\"Mover a coluna Foto inteira para antes da coluna Código, mantendo as duas colunas separadas e sem alterar suas células\",\"operationId\":\"column.order.set\",\"target\":\"foto\",\"params\":{\"order\":0},\"isPositive\":true},{\"id\":\"move-net-salary-column-to-start\",\"request\":\"Mova a coluna salário líquido da tabela para o início\",\"operationId\":\"column.order.set\",\"target\":\"salarioLiquido\",\"params\":{\"order\":0},\"isPositive\":true},{\"id\":\"pinning-column-is-not-reordering\",\"request\":\"Fixe a coluna funcionário no início durante a rolagem horizontal\",\"operationId\":\"column.order.set\",\"target\":\"funcionario\",\"isPositive\":false},{\"id\":\"map-active-status-labels\",\"request\":\"Sem mudar o título da coluna Ativo, mostre Sim e Não no lugar dos valores das células\",\"operationId\":\"column.valueMapping.set\",\"target\":\"ativo\",\"params\":{\"valueMapping\":{\"true\":\"Sim\",\"false\":\"Não\"}},\"isPositive\":true},{\"id\":\"column-header-renaming-is-not-value-mapping\",\"request\":\"Ativo vira Status.\",\"operationId\":\"column.valueMapping.set\",\"target\":\"ativo\",\"isPositive\":false},{\"id\":\"set-avatar-chip-renderer\",\"request\":\"Corrija o avatar do funcionário e mantenha o nome como chip\",\"operationId\":\"column.renderer.set\",\"target\":\"funcionario\",\"params\":{\"type\":\"compose\",\"compose\":{\"items\":[{\"type\":\"avatar\",\"avatar\":{\"srcField\":\"avatarUrl\",\"initialsField\":\"funcionario\",\"shape\":\"circle\",\"backgroundColor\":\"#E3F2FD\",\"textColor\":\"#0D47A1\"}},{\"type\":\"chip\",\"chip\":{\"textField\":\"funcionario\",\"variant\":\"soft\"}}]}},\"isPositive\":true},{\"id\":\"highlight-high-salary-row-red\",\"request\":\"Destaque de vermelho as linhas com salário acima de 30 mil\",\"operationId\":\"row.styleRule.add\",\"params\":{\"id\":\"salario-acima-30000\",\"condition\":{\">\":[{\"var\":\"salario\"},30000]},\"effects\":[{\"id\":\"salario-alto-destaque\",\"scope\":\"row\",\"description\":\"Destaque visual para salários acima de R$ 30.000.\",\"estilo\":{\"color\":\"#B42318\",\"bold\":true},\"background\":{\"color\":\"#FDECEC\"},\"layout\":{\"border\":\"left\",\"borderColor\":\"#D92D20\",\"borderWidth\":4}}],\"description\":\"Destaca a linha inteira sem alterar dados, filtros ou paginação.\"},\"isPositive\":true},{\"id\":\"change-high-salary-row-highlight-to-orange\",\"request\":\"Agora troque vermelho por laranja\",\"operationId\":\"row.styleRule.update\",\"target\":\"salario-acima-30000\",\"params\":{\"description\":\"Destaca em laranja a linha inteira para salários acima de R$ 30.000.\",\"effects\":[{\"id\":\"salario-alto-destaque\",\"scope\":\"row\",\"description\":\"Destaque visual laranja para salários acima de R$ 30.000.\",\"estilo\":{\"color\":\"#9A3412\",\"bold\":true},\"background\":{\"color\":\"#FFEDD5\"},\"layout\":{\"border\":\"left\",\"borderColor\":\"#F97316\",\"borderWidth\":4}}]},\"isPositive\":true},{\"id\":\"animate-high-salary-row\",\"request\":\"Anime suavemente as linhas com salário acima de 30000\",\"operationId\":\"row.conditionalRenderer.add\",\"params\":{\"id\":\"salario-alto-pulse\",\"condition\":{\">\":[{\"var\":\"salario\"},30000]},\"animation\":{\"preset\":\"pulse-soft\",\"trigger\":\"onAppear\",\"intensity\":\"subtle\",\"repeat\":\"once\",\"durationMs\":1200},\"description\":\"Destaca linhas de salário alto sem alterar os dados.\"},\"isPositive\":true},{\"id\":\"style-low-salary-cell\",\"request\":\"Para salários menores que 30000, use fundo laranja claro\",\"operationId\":\"column.conditionalStyle.add\",\"target\":\"salario\",\"params\":{\"id\":\"salario-baixo-laranja\",\"condition\":{\"<\":[{\"var\":\"salario\"},30000]},\"style\":{\"backgroundColor\":\"#FFF3E0\",\"color\":\"#8A4B00\"},\"tooltip\":{\"text\":\"Salário abaixo do recorte configurado\",\"position\":\"top\"}},\"isPositive\":true},{\"id\":\"enable-advanced-filters-human\",\"request\":\"Ative filtros avançados e deixe CPF e departamento sempre visíveis\",\"operationId\":\"filter.advanced.configure\",\"params\":{\"enabled\":true,\"queryBuilder\":true,\"savePresets\":true,\"settings\":{\"mode\":\"filter\",\"showAdvanced\":true,\"alwaysVisibleFields\":[\"cpf\",\"departamento\"]}},\"isPositive\":true},{\"id\":\"add-salary-to-advanced-filters-human\",\"request\":\"Inclua também Salário nesses filtros\",\"operationId\":\"filter.advanced.fields.add\",\"params\":{\"fields\":[\"salario\"],\"selected\":true,\"alwaysVisible\":true},\"isPositive\":true},{\"id\":\"remove-active-from-advanced-filters-human\",\"request\":\"Agora remova Ativo desses filtros\",\"operationId\":\"filter.advanced.fields.remove\",\"params\":{\"fields\":[\"ativo\"],\"selected\":true,\"alwaysVisible\":true},\"isPositive\":true},{\"id\":\"enable-table-filters-human\",\"request\":\"Habilite os filtros dinâmicos da tabela\",\"operationId\":\"behavior.filtering.configure\",\"params\":{\"enabled\":true,\"strategy\":\"client\",\"debounceMs\":250},\"isPositive\":true},{\"id\":\"compact-density-human\",\"request\":\"Deixe a tabela mais compacta\",\"operationId\":\"appearance.density.set\",\"params\":{\"density\":\"compact\"},\"isPositive\":true},{\"id\":\"toolbar-search-refresh-human\",\"request\":\"Mostre busca e botão de atualizar na toolbar\",\"operationId\":\"toolbar.configure\",\"params\":{\"visible\":true,\"showSearch\":true,\"showRefresh\":true},\"isPositive\":true},{\"id\":\"rename-global-table-title-human\",\"request\":\"Altere o titulo da tabela para Folha operacional revisada\",\"operationId\":\"toolbar.configure\",\"params\":{\"title\":\"Folha operacional revisada\"},\"isPositive\":true},{\"id\":\"column-title-is-not-global-table-title-human\",\"request\":\"Altere o título da coluna Salário Líquido para Valor líquido\",\"operationId\":\"toolbar.configure\",\"target\":\"salarioLiquido\",\"isPositive\":false},{\"id\":\"selected-rows-export-is-not-toolbar-presentation\",\"request\":\"Habilite um botão para exportar apenas as linhas selecionadas\",\"operationId\":\"toolbar.configure\",\"isPositive\":false},{\"id\":\"configure-selected-rows-export\",\"request\":\"Habilite em uma tabela o botão para exportar apenas as linhas selecionadas\",\"operationId\":\"export.configure\",\"params\":{\"enabled\":true,\"general\":{\"scope\":\"selected\"}},\"isPositive\":true},{\"id\":\"configure-server-pagination\",\"request\":\"Usar paginacao no servidor com 50 linhas por pagina\",\"operationId\":\"behavior.pagination.configure\",\"params\":{\"enabled\":true,\"strategy\":\"server\",\"pageSize\":50,\"position\":\"bottom\"},\"isPositive\":true},{\"id\":\"configure-default-sorting\",\"request\":\"Ordenar inicialmente por data de criacao decrescente\",\"operationId\":\"behavior.sorting.configure\",\"params\":{\"enabled\":true,\"strategy\":\"server\",\"defaultSort\":{\"column\":\"createdAt\",\"direction\":\"desc\"}},\"isPositive\":true},{\"id\":\"configure-bulk-actions\",\"request\":\"Habilitar acoes em lote na toolbar\",\"operationId\":\"actions.bulk.configure\",\"params\":{\"enabled\":true,\"position\":\"toolbar\"},\"isPositive\":true},{\"id\":\"configure-localization\",\"request\":\"Configurar a tabela para portugues do Brasil\",\"operationId\":\"localization.configure\",\"params\":{\"locale\":\"pt-BR\",\"direction\":\"ltr\",\"dateTime\":{\"dateFormat\":\"dd/MM/yyyy\"}},\"isPositive\":true}]}",
32151
+ "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"examples\",\"examples\":[{\"id\":\"set-salary-align-right\",\"request\":\"Alinhe o salário à direita\",\"operationId\":\"column.align.set\",\"target\":\"salario\",\"params\":{\"align\":\"right\"},\"isPositive\":true},{\"id\":\"make-name-sticky-start\",\"request\":\"Fixe a coluna funcionário no início da tabela\",\"operationId\":\"column.sticky.set\",\"target\":\"funcionario\",\"params\":{\"sticky\":\"start\"},\"isPositive\":true},{\"id\":\"moving-column-to-start-is-not-sticky\",\"request\":\"Mova a coluna salário líquido da tabela para o início\",\"operationId\":\"column.sticky.set\",\"target\":\"salarioLiquido\",\"isPositive\":false},{\"id\":\"disable-cpf-sorting\",\"request\":\"Não permita ordenar pela coluna CPF\",\"operationId\":\"column.sortable.set\",\"target\":\"cpf\",\"params\":{\"sortable\":false},\"isPositive\":true},{\"id\":\"enable-department-filter\",\"request\":\"Deixe o departamento disponível nos filtros\",\"operationId\":\"column.filterable.set\",\"target\":\"departamento\",\"params\":{\"filterable\":true},\"isPositive\":true},{\"id\":\"hide-internal-id-column\",\"request\":\"Oculte o ID interno da tabela\",\"operationId\":\"column.visibility.set\",\"target\":\"id\",\"params\":{\"visible\":false},\"isPositive\":true},{\"id\":\"hide-source-column-after-cell-composition\",\"request\":\"Na coluna Código, mostrar primeiro a foto e depois o código na mesma célula, sem manter Foto como coluna separada\",\"operationId\":\"column.visibility.set\",\"target\":\"foto\",\"params\":{\"visible\":false},\"isPositive\":true},{\"id\":\"move-whole-photo-column-before-code\",\"request\":\"Mover a coluna Foto inteira para antes da coluna Código, mantendo as duas colunas separadas e sem alterar suas células\",\"operationId\":\"column.order.set\",\"target\":\"foto\",\"params\":{\"order\":0},\"isPositive\":true},{\"id\":\"move-net-salary-column-to-start\",\"request\":\"Mova a coluna salário líquido da tabela para o início\",\"operationId\":\"column.order.set\",\"target\":\"salarioLiquido\",\"params\":{\"order\":0},\"isPositive\":true},{\"id\":\"pinning-column-is-not-reordering\",\"request\":\"Fixe a coluna funcionário no início durante a rolagem horizontal\",\"operationId\":\"column.order.set\",\"target\":\"funcionario\",\"isPositive\":false},{\"id\":\"map-active-status-labels\",\"request\":\"Sem mudar o título da coluna Ativo, mostre Sim e Não no lugar dos valores das células\",\"operationId\":\"column.valueMapping.set\",\"target\":\"ativo\",\"params\":{\"valueMapping\":{\"true\":\"Sim\",\"false\":\"Não\"}},\"isPositive\":true},{\"id\":\"column-header-renaming-is-not-value-mapping\",\"request\":\"Ativo vira Status.\",\"operationId\":\"column.valueMapping.set\",\"target\":\"ativo\",\"isPositive\":false},{\"id\":\"set-avatar-chip-renderer\",\"request\":\"Corrija o avatar do funcionário e mantenha o nome como chip\",\"operationId\":\"column.renderer.set\",\"target\":\"funcionario\",\"params\":{\"type\":\"compose\",\"compose\":{\"items\":[{\"type\":\"avatar\",\"avatar\":{\"srcField\":\"avatarUrl\",\"initialsField\":\"funcionario\",\"shape\":\"circle\",\"backgroundColor\":\"#E3F2FD\",\"textColor\":\"#0D47A1\"}},{\"type\":\"chip\",\"chip\":{\"textField\":\"funcionario\",\"variant\":\"soft\"}}]}},\"isPositive\":true},{\"id\":\"highlight-high-salary-row-red\",\"request\":\"Destaque de vermelho as linhas com salário acima de 30 mil\",\"operationId\":\"row.styleRule.add\",\"params\":{\"id\":\"salario-acima-30000\",\"condition\":{\">\":[{\"var\":\"salario\"},30000]},\"effects\":[{\"id\":\"salario-alto-destaque\",\"scope\":\"row\",\"description\":\"Destaque visual para salários acima de R$ 30.000.\",\"estilo\":{\"color\":\"#B42318\",\"bold\":true},\"background\":{\"color\":\"#FDECEC\"},\"layout\":{\"border\":\"left\",\"borderColor\":\"#D92D20\",\"borderWidth\":4}}],\"description\":\"Destaca a linha inteira sem alterar dados, filtros ou paginação.\"},\"isPositive\":true},{\"id\":\"change-high-salary-row-highlight-to-orange\",\"request\":\"Agora troque vermelho por laranja\",\"operationId\":\"row.styleRule.update\",\"target\":\"salario-acima-30000\",\"params\":{\"description\":\"Destaca em laranja a linha inteira para salários acima de R$ 30.000.\",\"effects\":[{\"id\":\"salario-alto-destaque\",\"scope\":\"row\",\"description\":\"Destaque visual laranja para salários acima de R$ 30.000.\",\"estilo\":{\"color\":\"#9A3412\",\"bold\":true},\"background\":{\"color\":\"#FFEDD5\"},\"layout\":{\"border\":\"left\",\"borderColor\":\"#F97316\",\"borderWidth\":4}}]},\"isPositive\":true},{\"id\":\"animate-high-salary-row\",\"request\":\"Anime suavemente as linhas com salário acima de 30000\",\"operationId\":\"row.conditionalRenderer.add\",\"params\":{\"id\":\"salario-alto-pulse\",\"condition\":{\">\":[{\"var\":\"salario\"},30000]},\"animation\":{\"preset\":\"pulse-soft\",\"trigger\":\"onAppear\",\"intensity\":\"subtle\",\"repeat\":\"once\",\"durationMs\":1200},\"description\":\"Destaca linhas de salário alto sem alterar os dados.\"},\"isPositive\":true},{\"id\":\"style-low-salary-cell\",\"request\":\"Para salários menores que 30000, use fundo laranja claro\",\"operationId\":\"column.conditionalStyle.add\",\"target\":\"salario\",\"params\":{\"id\":\"salario-baixo-laranja\",\"condition\":{\"<\":[{\"var\":\"salario\"},30000]},\"style\":{\"backgroundColor\":\"#FFF3E0\",\"color\":\"#8A4B00\"},\"tooltip\":{\"text\":\"Salário abaixo do recorte configurado\",\"position\":\"top\"}},\"isPositive\":true},{\"id\":\"enable-advanced-filters-human\",\"request\":\"Ative filtros avançados e deixe CPF e departamento sempre visíveis\",\"operationId\":\"filter.advanced.configure\",\"params\":{\"enabled\":true,\"queryBuilder\":true,\"savePresets\":true,\"settings\":{\"mode\":\"filter\",\"showAdvanced\":true,\"alwaysVisibleFields\":[\"cpf\",\"departamento\"]}},\"isPositive\":true},{\"id\":\"add-salary-to-advanced-filters-human\",\"request\":\"Inclua também Salário nesses filtros\",\"operationId\":\"filter.advanced.fields.add\",\"params\":{\"fields\":[\"salario\"],\"selected\":true,\"alwaysVisible\":true},\"isPositive\":true},{\"id\":\"remove-active-from-advanced-filters-human\",\"request\":\"Agora remova Ativo desses filtros\",\"operationId\":\"filter.advanced.fields.remove\",\"params\":{\"fields\":[\"ativo\"],\"selected\":true,\"alwaysVisible\":true},\"isPositive\":true},{\"id\":\"enable-table-filters-human\",\"request\":\"Habilite os filtros dinâmicos da tabela\",\"operationId\":\"behavior.filtering.configure\",\"params\":{\"enabled\":true,\"strategy\":\"client\",\"debounceMs\":250},\"isPositive\":true},{\"id\":\"compact-density-human\",\"request\":\"Deixe a tabela mais compacta\",\"operationId\":\"appearance.density.set\",\"params\":{\"density\":\"compact\"},\"isPositive\":true},{\"id\":\"toolbar-search-refresh-human\",\"request\":\"Mostre busca e botão de atualizar na toolbar\",\"operationId\":\"toolbar.configure\",\"params\":{\"visible\":true,\"showSearch\":true,\"showRefresh\":true},\"isPositive\":true},{\"id\":\"rename-global-table-title-human\",\"request\":\"Altere o titulo da tabela para Folha operacional revisada\",\"operationId\":\"toolbar.configure\",\"params\":{\"title\":\"Folha operacional revisada\"},\"isPositive\":true},{\"id\":\"column-title-is-not-global-table-title-human\",\"request\":\"Altere o título da coluna Salário Líquido para Valor líquido\",\"operationId\":\"toolbar.configure\",\"target\":\"salarioLiquido\",\"isPositive\":false},{\"id\":\"selected-rows-export-is-not-toolbar-presentation\",\"request\":\"Habilite um botão para exportar apenas as linhas selecionadas\",\"operationId\":\"toolbar.configure\",\"isPositive\":false},{\"id\":\"configure-selected-rows-export\",\"request\":\"Habilite em uma tabela o botão para exportar apenas as linhas selecionadas\",\"operationId\":\"export.configure\",\"params\":{\"enabled\":true,\"general\":{\"scope\":\"selected\"}},\"isPositive\":true},{\"id\":\"configure-server-pagination\",\"request\":\"Usar paginacao no servidor com 50 linhas por pagina\",\"operationId\":\"behavior.pagination.configure\",\"params\":{\"enabled\":true,\"strategy\":\"server\",\"pageSize\":50,\"position\":\"bottom\"},\"isPositive\":true},{\"id\":\"configure-default-sorting\",\"request\":\"Ordenar inicialmente por data de criacao decrescente\",\"operationId\":\"behavior.sorting.configure\",\"params\":{\"enabled\":true,\"strategy\":\"server\",\"defaultSort\":{\"column\":\"createdAt\",\"direction\":\"desc\"}},\"isPositive\":true},{\"id\":\"configure-bulk-actions\",\"request\":\"Habilitar acoes em lote na toolbar\",\"operationId\":\"actions.bulk.configure\",\"params\":{\"enabled\":true,\"position\":\"toolbar\"},\"isPositive\":true}]}",
31869
32152
  "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
31870
- "contentHash": "e0f594fdfdfaa6ec852b96b3f7bcef1cde95dfc5c784246cd0b7afd6b684c46f",
32153
+ "contentHash": "9aac58601088adb0196c09e97c6a8774b79edf413667e488885cf4775d586c90",
31871
32154
  "sourceKind": "component_definition",
31872
32155
  "sourceId": "praxis-table",
31873
32156
  "corpusVersion": "1.0.0"
@@ -31875,9 +32158,9 @@
31875
32158
  {
31876
32159
  "chunkIndex": 135,
31877
32160
  "chunkKind": "authoring_manifest",
31878
- "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"examples\",\"examples\":[{\"id\":\"configure-accessibility\",\"request\":\"Ativar alto contraste e reduzir animacoes\",\"operationId\":\"accessibility.configure\",\"params\":{\"enabled\":true,\"highContrast\":true,\"reduceMotion\":true,\"announcements\":{\"liveRegion\":\"polite\"}},\"isPositive\":true},{\"id\":\"require-removal-confirmation\",\"request\":\"Remover a coluna nome\",\"operationId\":\"column.remove\",\"target\":\"nome\",\"isPositive\":true}]}",
32161
+ "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"examples\",\"examples\":[{\"id\":\"configure-localization\",\"request\":\"Configurar a tabela para portugues do Brasil\",\"operationId\":\"localization.configure\",\"params\":{\"locale\":\"pt-BR\",\"direction\":\"ltr\",\"dateTime\":{\"dateFormat\":\"dd/MM/yyyy\"}},\"isPositive\":true},{\"id\":\"configure-accessibility\",\"request\":\"Ativar alto contraste e reduzir animacoes\",\"operationId\":\"accessibility.configure\",\"params\":{\"enabled\":true,\"highContrast\":true,\"reduceMotion\":true,\"announcements\":{\"liveRegion\":\"polite\"}},\"isPositive\":true},{\"id\":\"require-removal-confirmation\",\"request\":\"Remover a coluna nome\",\"operationId\":\"column.remove\",\"target\":\"nome\",\"isPositive\":true}]}",
31879
32162
  "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
31880
- "contentHash": "58862209d5c17b31804e1646bb8f47241ece99c11531104f0a46875cad218eac",
32163
+ "contentHash": "60999e13a1bb5afb9c53232f7c352fc1bee3333ee2dd47116d38779481d26a7c",
31881
32164
  "sourceKind": "component_definition",
31882
32165
  "sourceId": "praxis-table",
31883
32166
  "corpusVersion": "1.0.0"