@praxisui/table 9.0.0-beta.31 → 9.0.0-beta.33

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-07-02T21:34:12.637Z",
3
+ "generatedAt": "2026-07-03T00:15:21.386Z",
4
4
  "packageName": "@praxisui/table",
5
- "packageVersion": "9.0.0-beta.31",
5
+ "packageVersion": "9.0.0-beta.33",
6
6
  "sourceRegistry": "praxis-component-registry-ingestion",
7
7
  "sourceRegistryVersion": "1.0.0",
8
8
  "componentCount": 3,
@@ -7033,7 +7033,8 @@
7033
7033
  "allowedValues": [
7034
7034
  "filled",
7035
7035
  "outlined",
7036
- "soft"
7036
+ "soft",
7037
+ "plain"
7037
7038
  ],
7038
7039
  "description": "Estilo visual do badge.",
7039
7040
  "dependsOn": "columns[].renderer.badge"
@@ -7085,7 +7086,8 @@
7085
7086
  "allowedValues": [
7086
7087
  "filled",
7087
7088
  "outlined",
7088
- "soft"
7089
+ "soft",
7090
+ "plain"
7089
7091
  ],
7090
7092
  "description": "Variante do chip.",
7091
7093
  "dependsOn": "columns[].renderer.chip"
@@ -7876,7 +7878,8 @@
7876
7878
  "allowedValues": [
7877
7879
  "filled",
7878
7880
  "outlined",
7879
- "soft"
7881
+ "soft",
7882
+ "plain"
7880
7883
  ],
7881
7884
  "description": "Variante do badge condicional.",
7882
7885
  "dependsOn": "columns[].conditionalRenderers[].renderer.badge"
@@ -7930,7 +7933,8 @@
7930
7933
  "allowedValues": [
7931
7934
  "filled",
7932
7935
  "outlined",
7933
- "soft"
7936
+ "soft",
7937
+ "plain"
7934
7938
  ],
7935
7939
  "description": "Variante do chip condicional.",
7936
7940
  "dependsOn": "columns[].conditionalRenderers[].renderer.chip"
@@ -12077,6 +12081,10 @@
12077
12081
  {
12078
12082
  "value": "soft",
12079
12083
  "label": "Soft"
12084
+ },
12085
+ {
12086
+ "value": "plain",
12087
+ "label": "Plain"
12080
12088
  }
12081
12089
  ]
12082
12090
  },
@@ -12094,6 +12102,10 @@
12094
12102
  {
12095
12103
  "value": "soft",
12096
12104
  "label": "Soft"
12105
+ },
12106
+ {
12107
+ "value": "plain",
12108
+ "label": "Plain"
12097
12109
  }
12098
12110
  ]
12099
12111
  },
@@ -13002,7 +13014,8 @@
13002
13014
  "options": [
13003
13015
  "filled",
13004
13016
  "outlined",
13005
- "soft"
13017
+ "soft",
13018
+ "plain"
13006
13019
  ],
13007
13020
  "description": "Estilo visual do badge"
13008
13021
  },
@@ -14558,7 +14571,7 @@
14558
14571
  "description": "Configuração de renderer.badge.*",
14559
14572
  "rules": [
14560
14573
  "Badge requer text ou textField.",
14561
- "variant deve ser filled/outlined/soft."
14574
+ "variant deve ser filled/outlined/soft/plain."
14562
14575
  ],
14563
14576
  "examples": [
14564
14577
  "{ renderer: { type: \"badge\", badge: { textField: \"status\", variant: \"filled\" } } }"
@@ -14605,7 +14618,7 @@
14605
14618
  "description": "Configuração de renderer.chip.*",
14606
14619
  "rules": [
14607
14620
  "Chip requer text ou textField.",
14608
- "variant deve ser filled/outlined/soft."
14621
+ "variant deve ser filled/outlined/soft/plain."
14609
14622
  ],
14610
14623
  "examples": [
14611
14624
  "{ renderer: { type: \"chip\", chip: { text: \"Ativo\", variant: \"filled\" } } }"
@@ -16791,7 +16804,8 @@
16791
16804
  "enum": [
16792
16805
  "filled",
16793
16806
  "outlined",
16794
- "soft"
16807
+ "soft",
16808
+ "plain"
16795
16809
  ]
16796
16810
  },
16797
16811
  "icon": {
@@ -21857,9 +21871,9 @@
21857
21871
  {
21858
21872
  "chunkIndex": 2,
21859
21873
  "chunkKind": "authoring_manifest",
21860
- "content": "{\n \"schemaVersion\": \"1.0.0\",\n \"componentId\": \"praxis-table\",\n \"ownerPackage\": \"@praxisui/table\",\n \"configSchemaId\": \"TableConfig\",\n \"manifestVersion\": \"2.0.0\",\n \"runtimeInputs\": [\n {\n \"name\": \"config\",\n \"type\": \"TableConfig\",\n \"description\": \"Configuração completa da tabela\"\n },\n {\n \"name\": \"data\",\n \"type\": \"any[]\",\n \"description\": \"Dados a serem exibidos (modo client-side)\"\n },\n {\n \"name\": \"resourcePath\",\n \"type\": \"string\",\n \"description\": \"Caminho do recurso (API base)\"\n },\n {\n \"name\": \"queryContext\",\n \"type\": \"PraxisDataQueryContext\",\n \"description\": \"Contexto de consulta declarativo\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\",\n \"description\": \"Título da tabela\"\n },\n {\n \"name\": \"subtitle\",\n \"type\": \"string\",\n \"description\": \"Subtítulo da tabela\"\n },\n {\n \"name\": \"enableCustomization\",\n \"type\": \"boolean\",\n \"description\": \"Habilita modo de edição\"\n }\n ],\n \"editableTargets\": [\n {\n \"kind\": \"column\",\n \"resolver\": \"column-by-field\",\n \"description\": \"Colunas base da tabela\"\n },\n {\n \"kind\": \"computedColumn\",\n \"resolver\": \"column-by-field\",\n \"description\": \"Colunas calculadas\"\n },\n {\n \"kind\": \"renderer\",\n \"resolver\": \"renderer-in-column\",\n \"description\": \"Renderizador de célula\"\n },\n {\n \"kind\": \"conditionalRenderer\",\n \"resolver\": \"conditional-renderer-in-column\",\n \"description\": \"Renderizadores condicionais\"\n },\n {\n \"kind\": \"rowAction\",\n \"resolver\": \"action-in-row-config\",\n \"description\": \"Ações por linha\"\n },\n {\n \"kind\": \"toolbarAction\",\n \"resolver\": \"action-in-toolbar-config\",\n \"description\": \"Ações na barra de ferramentas\"\n },\n {\n \"kind\": \"toolbar\",\n \"resolver\": \"toolbar-config\",\n \"description\": \"Configuração da barra de ferramentas\"\n },\n {\n \"kind\": \"filter\",\n \"resolver\": \"filter-config\",\n \"description\": \"Configuração de filtragem\"\n },\n {\n \"kind\": \"grouping\",\n \"resolver\": \"grouping-config\",\n \"description\": \"Configuração de agrupamento\"\n },\n {\n \"kind\": \"selection\",\n \"resolver\": \"selection-config\",\n \"description\": \"Configuração de seleção\"\n },\n {\n \"kind\": \"export\",\n \"resolver\": \"export-config\",\n \"description\": \"Configuração de exportação\"\n },\n {\n \"kind\": \"appearance\",\n \"resolver\": \"appearance-config\",\n \"description\": \"Configurações visuais\"\n },\n {\n \"kind\": \"expansion\",\n \"resolver\": \"expansion-config\",\n \"description\": \"Configuração de detalhe/expansão\"\n },\n {\n \"kind\": \"rule\",\n \"resolver\": \"style-rule-in-column-or-row\",\n \"description\": \"Regras de estilo ou comportamento\"\n },\n {\n \"kind\": \"meta\",\n \"resolver\": \"table-meta-config\",\n \"description\": \"Metadados da configuracao\"\n },\n {\n \"kind\": \"bulkAction\",\n \"resolver\": \"action-in-bulk-config\",\n \"description\": \"Acoes em lote\"\n },\n {\n \"kind\": \"contextAction\",\n \"resolver\": \"action-in-context-config\",\n \"description\": \"Acoes de menu contextual\"\n },\n {\n \"kind\": \"pagination\",\n \"resolver\": \"pagination-config\",\n \"description\": \"Configuracao de paginacao\"\n },\n {\n \"kind\": \"sorting\",\n \"resolver\": \"sorting-config\",\n \"description\": \"Configuracao de ordenacao\"\n },\n {\n \"kind\": \"interaction\",\n \"resolver\": \"interaction-config\",\n \"description\": \"Configuracao de interacao\"\n },\n {\n \"kind\": \"loading\",\n \"resolver\": \"loading-config\",\n \"description\": \"Estados de carregamento\"\n },\n {\n \"kind\": \"emptyState\",\n \"resolver\": \"empty-state-config\",\n \"description\": \"Estado vazio\"\n },\n {\n \"kind\": \"aiAssistant\",\n \"resolver\": \"ai-assistant-config\",\n \"description\": \"Config path ai.assistant.enabled controlling the embedded table AI assistant entrypoint and session.\"\n },\n {\n \"kind\": \"resizing\",\n \"resolver\": \"resizing-config\",\n \"description\": \"Redimensionamento de colunas\"\n },\n {\n \"kind\": \"dragging\",\n \"resolver\": \"dragging-config\",\n \"description\": \"Reorganizacao por drag and drop\"\n },\n {\n \"kind\": \"editing\",\n \"resolver\": \"editing-config\",\n \"description\": \"Modo de edicao\"\n },\n {\n \"kind\": \"messages\",\n \"resolver\": \"messages-config\",\n \"description\": \"Mensagens da tabela\"\n },\n {\n \"kind\": \"localization\",\n \"resolver\": \"localization-config\",\n \"description\": \"Localizacao e formatos regionais\"\n },\n {\n \"kind\": \"performance\",\n \"resolver\": \"performance-config\",\n \"description\": \"Configuracoes de performance\"\n },\n {\n \"kind\": \"data\",\n \"resolver\": \"data-config\",\n \"description\": \"Configuracoes de dados\"\n },\n {\n \"kind\": \"runtimeOperation\",\n \"resolver\": \"table-runtime-operation-contract\",\n \"description\": \"Operacoes runtime revisaveis sem mutar a configuracao persistida\"\n },\n {\n \"kind\": \"accessibility\",\n \"resolver\": \"accessibility-config\",\n \"description\": \"Acessibilidade\"\n }\n ],\n \"operations\": [\n {\n \"operationId\": \"column.add\",\n \"title\": \"Adicionar coluna\",\n \"scope\": \"global\",\n \"targetKind\": \"column\",\n \"target\": {\n \"kind\": \"column\",\n \"resolver\": \"column-by-field\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"field\",\n \"header\"\n ],\n \"properties\": {\n \"field\": {\n \"type\": \"string\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"enum\": [\n \"string\",\n \"number\",\n \"date\",\n \"boolean\",\n \"currency\",\n \"percentage\",\n \"custom\"\n ],\n \"default\": \"string\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"append-unique\",\n \"path\": \"columns[]\",\n \"key\": \"field\"\n }\n ],\n \"validators\": [\n \"column-field-unique\"\n ],\n \"affectedPaths\": [\n \"columns[]\"\n ],\n \"submissionImpact\": \"affects-schema-backed-data\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"column.remove\",\n \"title\": \"Remover coluna\",\n \"scope\": \"column\",\n \"targetKind\": \"column\",\n \"target\": {\n \"kind\": \"column\",\n \"resolver\": \"column-by-field\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"properties\": {}\n },\n \"effects\": [\n {\n \"kind\": \"remove-by-key\",\n \"path\": \"columns[]\",\n \"key\": \"field\"\n }\n ],\n \"destructive\": true,\n \"requiresConfirmation\": true,\n \"validators\": [\n \"destructive-removal-confirmation\"\n ],\n \"affectedPaths\": [\n \"columns[]\"\n ],\n \"submissionImpact\": \"affects-schema-backed-data\",\n \"preconditions\": [\n \"config-initialized\",\n \"target-exists\"\n ]\n },\n {\n \"operationId\": \"column.header.set\",\n \"title\": \"Definir cabeçalho\",\n \"scope\": \"column\",\n \"targetKind\": \"column\",\n \"target\": {\n \"kind\": \"column\",\n \"resolver\": \"column-by-field\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"header\"\n ],\n \"properties\": {\n \"header\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-by-key\",\n \"path\": \"columns[]\",\n \"key\": \"field\"\n }\n ],\n \"validators\": [\n \"target-column-exists\"\n ],\n \"affectedPaths\": [\n \"columns[].header\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"preconditions\": [\n \"config-initialized\",\n \"target-exists\"\n ]\n },\n {\n \"operationId\": \"column.type.set\",\n \"title\": \"Definir tipo de dado\",\n \"scope\": \"column\",\n \"targetKind\": \"column\",\n \"target\": {\n \"kind\": \"column\",\n \"resolver\": \"column-by-field\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"type\"\n ],\n \"properties\": {\n \"type\": {}\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-by-key\",\n \"path\": \"columns[]\",\n \"key\": \"field\"\n }\n ],\n \"validators\": [\n \"target-column-exists\"\n ],\n \"affectedPaths\": [\n \"columns[].type\"\n ],\n \"submissionImpact\": \"affects-schema-backed-data\",\n \"preconditions\": [\n \"config-initialized\",\n \"target-exists\"\n ]\n },\n {\n \"operationId\": \"column.format.set\",\n \"title\": \"Definir formato\",\n \"scope\": \"column\",\n \"targetKind\": \"column\",\n \"target\": {\n \"kind\": \"column\",\n \"resolver\": \"column-by-field\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"format\"\n ],\n \"properties\": {\n \"format\": {\n \"type\": \"string\",\n \"enum\": [\n \"shortDate\",\n \"mediumDate\",\n \"longDate\",\n \"fullDate\",\n \"MMM/yyyy\",\n \"shortTime\",\n \"short\",\n \"yyyy-MM-dd\",\n \"dd/MM/yyyy\",\n \"yyyy-MM-dd HH:mm\",\n \"1.0-0\",\n \"1.1-1\",\n \"1.2-2\",\n \"1.0-3\",\n \"1.0-0|nosep\",\n \"BRL|symbol|2\",\n \"USD|symbol|2\",\n \"EUR|symbol|2\",\n \"BRL|code|2\",\n \"USD|code|0\",\n \"BRL|symbol|2|nosep\",\n \"EUR|symbol|2|nosep\",\n \"1.0-0|x100\",\n \"1.1-1|x100\",\n \"1.2-2|x100\",\n \"none\",\n \"uppercase\",\n \"lowercase\",\n \"titlecase\",\n \"capitalize\",\n \"uppercase|truncate|50|...\",\n \"000.000.000-00\",\n \"true-false\",\n \"yes-no\",\n \"active-inactive\",\n \"on-off\",\n \"enabled-disabled\",\n \"custom|Sim|Nao\"\n ],\n \"description\": \"Preset canônico do DataFormattingService.\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-by-key\",\n \"path\": \"columns[]\",\n \"key\": \"field\"\n }\n ],\n \"validators\": [\n \"target-column-exists\",\n \"format-preset-supported\"\n ],\n \"affectedPaths\": [\n \"columns[].format\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"preconditions\": [\n \"config-initialized\",\n \"target-exists\"\n ]\n },\n {\n \"operationId\": \"column.width.set\",\n \"title\": \"Definir largura da coluna\",\n \"scope\": \"column\",\n \"targetKind\": \"column\",\n \"target\": {\n \"kind\": \"column\",\n \"resolver\": \"column-by-field\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"width\"\n ],\n \"properties\": {\n \"width\": {\n \"type\": \"string\",\n \"pattern\": \"^(auto|\\\\d+(px|%|rem|em))$\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-by-key\",\n \"path\": \"columns[]\",\n \"key\": \"field\"\n }\n ],\n \"validators\": [\n \"target-column-exists\",\n \"column-width-valid\"\n ],\n \"affectedPaths\": [\n \"columns[].width\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"preconditions\": [\n \"config-initialized\",\n \"target-exists\"\n ]\n },\n {\n \"operationId\": \"column.align.set\",\n \"title\": \"Definir alinhamento da coluna\",\n \"scope\": \"column\",\n \"targetKind\": \"column\",\n \"target\": {\n \"kind\": \"column\",\n \"resolver\": \"column-by-field\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"align\"\n ],\n \"properties\": {\n \"align\": {\n \"enum\": [\n \"left\",\n \"center\",\n \"right\"\n ]\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-by-key\",\n \"path\": \"columns[]\",\n \"key\": \"field\"\n }\n ],\n \"validators\": [\n \"target-column-exists\"\n ],\n \"affectedPaths\": [\n \"columns[].align\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"preconditions\": [\n \"config-initialized\",\n \"target-exists\"\n ]\n },\n {\n \"operationId\": \"column.sticky.set\",\n \"title\": \"Definir sticky da coluna\",\n \"scope\": \"column\",\n \"targetKind\": \"column\",\n \"target\": {\n \"kind\": \"column\",\n \"resolver\": \"column-by-field\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"sticky\"\n ],\n \"properties\": {\n \"sticky\": {\n \"enum\": [\n \"start\",\n \"end\",\n true,\n false\n ]\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-by-key\",\n \"path\": \"columns[]\",\n \"key\": \"field\"\n }\n ],\n \"validators\": [\n \"target-column-exists\"\n ],\n \"affectedPaths\": [\n \"columns[].sticky\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"preconditions\": [\n \"config-initialized\",\n \"target-exists\"\n ]\n },\n {\n \"operationId\": \"column.sortable.set\",\n \"title\": \"Definir ordenação da coluna\",\n \"scope\": \"column\",\n \"targetKind\": \"column\",\n \"target\": {\n \"kind\": \"column\",\n \"resolver\": \"column-by-field\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"sortable\"\n ],\n \"properties\": {\n \"sortable\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-by-key\",\n \"path\": \"columns[]\",\n \"key\": \"field\"\n }\n ],\n \"validators\": [\n \"target-column-exists\"\n ],\n \"affectedPaths\": [\n \"columns[].sortable\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\",\n \"target-exists\"\n ]\n },\n {\n \"operationId\": \"column.filterable.set\",\n \"title\": \"Definir filtro da coluna\",\n \"scope\": \"column\",\n \"targetKind\": \"column\",\n \"target\": {\n \"kind\": \"column\",\n \"resolver\": \"column-by-field\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"filterable\"\n ],\n \"properties\": {\n \"filterable\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-by-key\",\n \"path\": \"columns[]\",\n \"key\": \"field\"\n }\n ],\n \"validators\": [\n \"target-column-exists\"\n ],\n \"affectedPaths\": [\n \"columns[].filterable\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\",\n \"target-exists\"\n ]\n },\n {\n \"operationId\": \"column.style.set\",\n \"title\": \"Definir estilo da célula\",\n \"scope\": \"column\",\n \"targetKind\": \"column\",\n \"target\": {\n \"kind\": \"column\",\n \"resolver\": \"column-by-field\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"style\"\n ],\n \"properties\": {\n \"style\": {\n \"type\": \"string\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-by-key\",\n \"path\": \"columns[]\",\n \"key\": \"field\"\n }\n ],\n \"validators\": [\n \"target-column-exists\",\n \"css-style-safe\"\n ],\n \"affectedPaths\": [\n \"columns[].style\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"preconditions\": [\n \"config-initialized\",\n \"target-exists\"\n ]\n },\n {\n \"operationId\": \"column.headerStyle.set\",\n \"title\": \"Definir estilo do cabeçalho\",\n \"scope\": \"column\",\n \"targetKind\": \"column\",\n \"target\": {\n \"kind\": \"column\",\n \"resolver\": \"column-by-field\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"headerStyle\"\n ],\n \"properties\": {\n \"headerStyle\": {\n \"type\": \"string\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-by-key\",\n \"path\": \"columns[]\",\n \"key\": \"field\"\n }\n ],\n \"validators\": [\n \"target-column-exists\",\n \"css-style-safe\"\n ],\n \"affectedPaths\": [\n \"columns[].headerStyle\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"preconditions\": [\n \"config-initialized\",\n \"target-exists\"\n ]\n },\n {\n \"operationId\": \"column.valueMapping.set\",\n \"title\": \"Definir mapeamento de valores\",\n \"scope\": \"column\",\n \"targetKind\": \"column\",\n \"target\": {\n \"kind\": \"column\",\n \"resolver\": \"column-by-field\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"valueMapping\"\n ],\n \"properties\": {\n \"valueMapping\": {\n \"type\": \"object\",\n \"minProperties\": 1\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-by-key\",\n \"path\": \"columns[]\",\n \"key\": \"field\"\n }\n ],\n \"validators\": [\n \"target-column-exists\",\n \"value-mapping-valid\"\n ],\n \"affectedPaths\": [\n \"columns[].valueMapping\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"preconditions\": [\n \"config-initialized\",\n \"target-exists\"\n ]\n },\n {\n \"operationId\": \"column.order.set\",\n \"title\": \"Definir ordem visual\",\n \"scope\": \"column\",\n \"targetKind\": \"column\",\n \"target\": {\n \"kind\": \"column\",\n \"resolver\": \"column-by-field\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"order\"\n ],\n \"properties\": {\n \"order\": {\n \"type\": \"number\",\n \"minimum\": 0\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-by-key\",\n \"path\": \"columns[]\",\n \"key\": \"field\"\n }\n ],\n \"validators\": [\n \"target-column-exists\"\n ],\n \"affectedPaths\": [\n \"columns[].order\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"preconditions\": [\n \"config-initialized\",\n \"target-exists\"\n ]\n },\n {\n \"operationId\": \"column.visibility.set\",\n \"title\": \"Definir visibilidade\",\n \"scope\": \"column\",\n \"targetKind\": \"column\",\n \"target\": {\n \"kind\": \"column\",\n \"resolver\": \"column-by-field\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"visible\"\n ],\n \"properties\": {\n \"visible\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-by-key\",\n \"path\": \"columns[]\",\n \"key\": \"field\"\n }\n ],\n \"validators\": [\n \"target-column-exists\"\n ],\n \"affectedPaths\": [\n \"columns[].visible\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"preconditions\": [\n \"config-initialized\",\n \"target-exists\"\n ]\n },\n {\n \"operationId\": \"column.computed.add\",\n \"title\": \"Adicionar coluna calculada\",\n \"scope\": \"global\",\n \"targetKind\": \"computedColumn\",\n \"target\": {\n \"kind\": \"computedColumn\",\n \"resolver\": \"column-by-field\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"field\",\n \"header\",\n \"expression\"\n ],\n \"properties\": {\n \"field\": {\n \"type\": \"string\",\n \"description\": \"Stable camelCase field id for the new computed column. When the user supplies a header/name, derive this id from that header instead of asking for clarification.\"\n },\n \"header\": {\n \"type\": \"string\",\n \"description\": \"User-facing label for the computed column.\"\n },\n \"expression\": {\n \"type\": \"object\",\n \"description\": \"AST Json Logic\"\n },\n \"outputType\": {}\n }\n },\n \"effects\": [\n {\n \"kind\": \"append-unique\",\n \"path\": \"columns[]\",\n \"key\": \"field\"\n }\n ],\n \"validators\": [\n \"column-field-unique\",\n \"computed-expression-valid\"\n ],\n \"affectedPaths\": [\n \"columns[]\"\n ],\n \"submissionImpact\": \"affects-schema-backed-data\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"column.renderer.set\",\n \"title\": \"Definir renderizador\",\n \"scope\": \"column\",\n \"targetKind\": \"renderer\",\n \"target\": {\n \"kind\": \"renderer\",\n \"resolver\": \"renderer-in-column\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"type\"\n ],\n \"properties\": {\n \"type\": {\n \"enum\": [\n \"icon\",\n \"image\",\n \"badge\",\n \"link\",\n \"button\",\n \"chip\",\n \"progress\",\n \"avatar\",\n \"toggle\",\n \"menu\",\n \"rating\",\n \"html\",\n \"compose\"\n ]\n },\n \"typeExpr\": {\n \"type\": \"string\"\n },\n \"button\": {\n \"type\": \"object\",\n \"required\": [\n \"action\"\n ],\n \"properties\": {\n \"label\": {\n \"type\": \"string\"\n },\n \"labelField\": {\n \"type\": \"string\"\n },\n \"icon\": {\n \"type\": \"string\"\n },\n \"color\": {\n \"enum\": [\n \"primary\",\n \"accent\",\n \"warn\"\n ]\n },\n \"variant\": {\n \"enum\": [\n \"filled\",\n \"outlined\",\n \"text\"\n ]\n },\n \"size\": {\n \"enum\": [\n \"sm\",\n \"md\",\n \"lg\"\n ]\n },\n \"ariaLabel\": {\n \"type\": \"string\"\n },\n \"disabledCondition\": {\n \"type\": \"object\",\n \"description\": \"AST Json Logic\"\n },\n \"action\": {\n \"type\": \"object\",\n \"required\": [\n \"id\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"payloadExpr\": {\n \"type\": \"string\"\n }\n }\n }\n }\n },\n \"menu\": {\n \"type\": \"object\",\n \"required\": [\n \"itemsExpr\"\n ],\n \"properties\": {\n \"itemsExpr\": {\n \"type\": \"string\"\n },\n \"ariaLabel\": {\n \"type\": \"string\"\n }\n }\n },\n \"link\": {\n \"type\": \"object\",\n \"anyOf\": [\n {\n \"required\": [\n \"href\"\n ]\n },\n {\n \"required\": [\n \"hrefField\"\n ]\n }\n ],\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n },\n \"textField\": {\n \"type\": \"string\"\n },\n \"href\": {\n \"type\": \"string\"\n },\n \"hrefField\": {\n \"type\": \"string\"\n },\n \"target\": {\n \"enum\": [\n \"_blank\",\n \"_self\",\n \"_parent\",\n \"_top\"\n ]\n },\n \"rel\": {\n \"type\": \"string\"\n }\n }\n },\n \"progress\": {\n \"type\": \"object\",\n \"required\": [\n \"valueExpr\"\n ],\n \"properties\": {\n \"valueExpr\": {\n \"type\": \"string\"\n },\n \"color\": {\n \"type\": \"string\"\n },\n \"showLabel\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"badge\": {\n \"type\": \"object\",\n \"anyOf\": [\n {\n \"required\": [\n \"text\"\n ]\n },\n {\n \"required\": [\n \"textField\"\n ]\n }\n ],\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n },\n \"textField\": {\n \"type\": \"string\"\n },\n \"color\": {\n \"type\": \"string\"\n },\n \"variant\": {\n \"enum\": [\n \"filled\",\n \"outlined\",\n \"soft\"\n ]\n },\n \"icon\": {\n \"type\": \"string\"\n },\n \"tooltip\": {\n \"type\": \"object\",\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n },\n \"position\": {\n \"enum\": [\n \"top\",\n \"right\",\n \"bottom\",\n \"left\"\n ]\n },\n \"bgColor\": {\n \"type\": \"string\"\n },\n \"delayMs\": {\n \"type\": \"number\"\n }\n }\n }\n }\n },\n \"chip\": {\n \"type\": \"object\",\n \"anyOf\": [\n {\n \"required\": [\n \"text\"\n ]\n },\n {\n \"required\": [\n \"textField\"\n ]\n }\n ],\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n },\n \"textField\": {\n \"type\": \"string\"\n },\n \"color\": {\n \"type\": \"string\"\n },\n \"variant\": {\n \"enum\": [\n \"filled\",\n \"outlined\"\n ]\n },\n \"icon\": {\n \"type\": \"string\"\n },\n \"tooltip\": {\n \"type\": \"object\",\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n },\n \"position\": {\n \"enum\": [\n \"top\",\n \"right\",\n \"bottom\",\n \"left\"\n ]\n },\n \"bgColor\": {\n \"type\": \"string\"\n },\n \"delayMs\": {\n \"type\": \"number\"\n }\n }\n }\n }\n },\n \"icon\": {\n \"type\": \"object\",\n \"anyOf\": [\n {\n \"required\": [\n \"name\"\n ]\n },\n {\n \"required\": [\n \"nameField\"\n ]\n }\n ],\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"nameField\": {\n \"type\": \"string\"\n },\n \"color\": {\n \"type\": \"string\"\n },\n \"size\": {\n \"type\": \"number\"\n },\n \"ariaLabel\": {\n \"type\": \"string\"\n }\n }\n },\n \"image\": {\n \"type\": \"object\",\n \"anyOf\": [\n {\n \"required\": [\n \"src\"\n ]\n },\n {\n \"required\": [\n \"srcField\"\n ]\n }\n ],\n \"properties\": {\n \"src\": {\n \"type\": \"string\"\n },\n \"srcField\": {\n \"type\": \"string\"\n },\n \"alt\": {\n \"type\": \"string\"\n },\n \"altField\": {\n \"type\": \"string\"\n },\n \"width\": {\n \"type\": \"number\"\n },\n \"height\": {\n \"type\": \"number\"\n },\n \"shape\": {\n \"enum\": [\n \"square\",\n \"rounded\",\n \"circle\"\n ]\n },\n \"fit\": {\n \"enum\": [\n \"cover\",\n \"contain\"\n ]\n },\n \"lazy\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"avatar\": {\n \"type\": \"object\",\n \"anyOf\": [\n {\n \"required\": [\n \"src\"\n ]\n },\n {\n \"required\": [\n \"srcField\"\n ]\n },\n {\n \"required\": [\n \"initialsField\"\n ]\n },\n {\n \"required\": [\n \"initialsExpr\"\n ]\n }\n ],\n \"properties\": {\n \"src\": {\n \"type\": \"string\"\n },\n \"srcField\": {\n \"type\": \"string\"\n },\n \"alt\": {\n \"type\": \"string\"\n },\n \"altField\": {\n \"type\": \"string\"\n },\n \"initialsField\": {\n \"type\": \"string\"\n },\n \"initialsExpr\": {\n \"type\": \"string\"\n },\n \"shape\": {\n \"enum\": [\n \"circle\",\n \"square\",\n \"rounded\"\n ]\n },\n \"size\": {\n \"type\": \"number\"\n },\n \"backgroundColor\": {\n \"type\": \"string\"\n },\n \"textColor\": {\n \"type\": \"string\"\n }\n }\n },\n \"toggle\": {\n \"type\": \"object\",\n \"required\": [\n \"stateExpr\",\n \"action\"\n ],\n \"properties\": {\n \"stateExpr\": {\n \"type\": \"string\"\n },\n \"disabledCondition\": {\n \"type\": \"object\",\n \"description\": \"AST Json Logic\"\n },\n \"ariaLabel\": {\n \"type\": \"string\"\n },\n \"action\": {\n \"type\": \"object\",\n \"required\": [\n \"id\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"payloadExpr\": {\n \"type\": \"string\"\n }\n }\n }\n }\n },\n \"rating\": {\n \"type\": \"object\",\n \"required\": [\n \"valueExpr\"\n ],\n \"properties\": {\n \"valueExpr\": {\n \"type\": \"string\"\n },\n \"max\": {\n \"type\": \"number\"\n },\n \"color\": {\n \"type\": \"string\"\n },\n \"outlineColor\": {\n \"type\": \"string\"\n },\n \"size\": {\n \"enum\": [\n \"small\",\n \"medium\",\n \"large\"\n ]\n },\n \"ariaLabel\": {\n \"type\": \"string\"\n }\n }\n },\n \"html\": {\n \"type\": \"object\",\n \"required\": [\n \"template\"\n ],\n \"properties\": {\n \"template\": {\n \"type\": \"string\"\n },\n \"sanitize\": {\n \"enum\": [\n \"strict\",\n \"basic\"\n ]\n },\n \"emptyFallback\": {\n \"type\": \"string\"\n }\n }\n },\n \"compose\": {\n \"type\": \"object\",\n \"required\": [\n \"items\"\n ],\n \"properties\": {\n \"items\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"items\": {\n \"type\": \"object\",\n \"required\": [\n \"type\"\n ],\n \"properties\": {\n \"type\": {}\n }\n }\n },\n \"layout\": {\n \"type\": \"object\",\n \"properties\": {\n \"gap\": {\n \"type\": \"number\"\n },\n \"direction\": {\n \"enum\": [\n \"row\",\n \"column\"\n ]\n },\n \"align\": {\n \"enum\": [\n \"start\",\n \"center\",\n \"end\"\n ]\n },\n \"wrap\": {\n \"type\": \"boolean\"\n },\n \"ellipsis\": {\n \"type\": \"boolean\"\n }\n }\n }\n }\n }\n },\n \"allOf\": [\n {\n \"if\": {\n \"properties\": {\n \"type\": {\n \"const\": \"button\"\n }\n }\n },\n \"then\": {\n \"required\": [\n \"button\"\n ]\n }\n },\n {\n \"if\": {\n \"properties\": {\n \"type\": {\n \"const\": \"menu\"\n }\n }\n },\n \"then\": {\n \"required\": [\n \"menu\"\n ]\n }\n },\n {\n \"if\": {\n \"properties\": {\n \"type\": {\n \"const\": \"link\"\n }\n }\n },\n \"then\": {\n \"required\": [\n \"link\"\n ]\n }\n },\n {\n \"if\": {\n \"properties\": {\n \"type\": {\n \"const\": \"progress\"\n }\n }\n },\n \"then\": {\n \"required\": [\n \"progress\"\n ]\n }\n },\n {\n \"if\": {\n \"properties\": {\n \"type\": {\n \"const\": \"badge\"\n }\n }\n },\n \"then\": {\n \"required\": [\n \"badge\"\n ]\n }\n },\n {\n \"if\": {\n \"properties\": {\n \"type\": {\n \"const\": \"chip\"\n }\n }\n },\n \"then\": {\n \"required\": [\n \"chip\"\n ]\n }\n },\n {\n \"if\": {\n \"properties\": {\n \"type\": {\n \"const\": \"icon\"\n }\n }\n },\n \"then\": {\n \"required\": [\n \"icon\"\n ]\n }\n },\n {\n \"if\": {\n \"properties\": {\n \"type\": {\n \"const\": \"image\"\n }\n }\n },\n \"then\": {\n \"required\": [\n \"image\"\n ]\n }\n },\n {\n \"if\": {\n \"properties\": {\n \"type\": {\n \"const\": \"avatar\"\n }\n }\n },\n \"then\": {\n \"required\": [\n \"avatar\"\n ]\n }\n },\n {\n \"if\": {\n \"properties\": {\n \"type\": {\n \"const\": \"toggle\"\n }\n }\n },\n \"then\": {\n \"required\": [\n \"toggle\"\n ]\n }\n },\n {\n \"if\": {\n \"properties\": {\n \"type\": {\n \"const\": \"rating\"\n }\n }\n },\n \"then\": {\n \"required\": [\n \"rating\"\n ]\n }\n },\n {\n \"if\": {\n \"properties\": {\n \"type\": {\n \"const\": \"html\"\n }\n }\n },\n \"then\": {\n \"required\": [\n \"html\"\n ]\n }\n },\n {\n \"if\": {\n \"properties\": {\n \"type\": {\n \"const\": \"compose\"\n }\n }\n },\n \"then\": {\n \"required\": [\n \"compose\"\n ]\n }\n }\n ]\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"columns[].renderer\"\n }\n ],\n \"validators\": [\n \"target-column-exists\",\n \"renderer-type-supported\",\n \"renderer-config-match\",\n \"editor-round-trip-preserve\"\n ],\n \"affectedPaths\": [\n \"columns[].renderer\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"preconditions\": [\n \"config-initialized\",\n \"target-exists\"\n ]\n },\n {\n \"operationId\": \"column.conditionalRenderer.add\",\n \"title\": \"Adicionar renderizador condicional\",\n \"scope\": \"column\",\n \"targetKind\": \"conditionalRenderer\",\n \"target\": {\n \"kind\": \"conditionalRenderer\",\n \"resolver\": \"conditional-renderer-in-column\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"condition\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"description\": \"Identificador estável do renderer condicional (usado para deduplicação)\"\n },\n \"condition\": {\n \"type\": \"object\",\n \"description\": \"AST Json Logic\"\n },\n \"tooltip\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n },\n \"position\": {\n \"enum\": [\n \"top\",\n \"right\",\n \"bottom\",\n \"left\"\n ]\n },\n \"bgColor\": {\n \"type\": \"string\"\n },\n \"delayMs\": {\n \"type\": \"number\"\n }\n }\n },\n \"animation\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\",\n \"description\": \"false desativa a animacao sem remover a regra.\"\n },\n \"preset\": {\n \"enum\": [\n \"info-soft\",\n \"success-confirm\",\n \"warning-attention\",\n \"critical-alert\",\n \"audit-review\",\n \"sync-pending\",\n \"pulse-soft\",\n \"fade-soft\",\n \"sla-warning\",\n \"sla-breach\",\n \"risk-elevated\",\n \"risk-critical\",\n \"audit-warning\",\n \"sync-warning\"\n ],\n \"description\": \"Preset semantico recomendado. Preferir preset antes de type bruto.\"\n },\n \"type\": {\n \"enum\": [\n \"pulse\",\n \"blink\",\n \"grow\",\n \"fade\",\n \"slide-in\",\n \"border-pulse\"\n ]\n },\n \"durationMs\": {\n \"type\": \"number\"\n },\n \"trigger\": {\n \"enum\": [\n \"onChange\",\n \"onAppear\",\n \"onHover\",\n \"onConditionEnter\",\n \"onConditionExit\",\n \"onDataRefresh\"\n ]\n },\n \"repeat\": {\n \"oneOf\": [\n {\n \"enum\": [\n \"once\",\n \"loop\",\n \"infinite\"\n ]\n },\n {\n \"type\": \"number\"\n }\n ]\n },\n \"delayMs\": {\n \"type\": \"number\"\n },\n \"intensity\": {\n \"enum\": [\n \"subtle\",\n \"normal\",\n \"strong\"\n ]\n }\n }\n },\n \"effects\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"scope\": {\n \"enum\": [\n \"cell\",\n \"row\",\n \"column\",\n \"table\"\n ]\n },\n \"description\": {\n \"type\": \"string\"\n },\n \"estilo\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"color\": {\n \"type\": \"string\"\n },\n \"bgColor\": {\n \"type\": \"string\"\n },\n \"bold\": {\n \"type\": \"boolean\"\n },\n \"italic\": {\n \"type\": \"boolean\"\n },\n \"underline\": {\n \"type\": \"boolean\"\n },\n \"transform\": {\n \"enum\": [\n \"uppercase\",\n \"lowercase\",\n \"capitalize\",\n null\n ]\n },\n \"opacity\": {\n \"type\": \"number\"\n },\n \"fontScale\": {\n \"type\": \"number\"\n }\n }\n },\n \"layout\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"border\": {\n \"enum\": [\n \"none\",\n \"left\",\n \"right\",\n \"top\",\n \"bottom\",\n \"all\"\n ]\n },\n \"borderColor\": {\n \"type\": \"string\"\n },\n \"borderWidth\": {\n \"type\": \"number\"\n },\n \"padding\": {\n \"type\": \"number\"\n },\n \"align\": {\n \"enum\": [\n \"start\",\n \"center\",\n \"end\"\n ]\n },\n \"elevation\": {\n \"type\": \"number\"\n }\n }\n },\n \"iconBadge\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"icon\": {\n \"type\": \"string\"\n },\n \"iconColor\": {\n \"type\": \"string\"\n },\n \"iconPos\": {\n \"enum\": [\n \"before\",\n \"after\",\n \"overlay\"\n ]\n },\n \"badgeText\": {\n \"type\": \"string\"\n },\n \"badgeStyle\": {\n \"enum\": [\n \"solid\",\n \"soft\",\n \"outline\"\n ]\n },\n \"badgeColor\": {\n \"type\": \"string\"\n }\n }\n },\n \"background\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"color\": {\n \"type\": \"string\"\n },\n \"gradient\": {\n \"type\": \"string\"\n },\n \"alpha\": {\n \"type\": \"number\"\n },\n \"blur\": {\n \"type\": \"number\"\n }\n }\n },\n \"cssClass\": {\n \"type\": \"string\"\n },\n \"inlineStyle\": {\n \"type\": \"string\"\n }\n }\n }\n },\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"description\": {\n \"type\": \"string\"\n }\n },\n \"anyOf\": [\n {\n \"required\": [\n \"renderer\"\n ]\n },\n {\n \"required\": [\n \"tooltip\"\n ]\n },\n {\n \"required\": [\n \"animation\"\n ]\n },\n {\n \"required\": [\n \"effects\"\n ]\n }\n ]\n },\n \"effects\": [\n {\n \"kind\": \"append-unique\",\n \"path\": \"columns[].conditionalRenderers[]\",\n \"key\": \"id\"\n }\n ],\n \"validators\": [\n \"target-column-exists\",\n \"computed-expression-valid\",\n \"renderer-config-match\"\n ],\n \"affectedPaths\": [\n \"columns[].conditionalRenderers[]\",\n \"columns[].conditionalRenderers[].tooltip\",\n \"columns[].conditionalRenderers[].animation\",\n \"columns[].conditionalRenderers[].effects\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"preconditions\": [\n \"config-initialized\",\n \"target-exists\"\n ]\n },\n {\n \"operationId\": \"column.conditionalStyle.add\",\n \"title\": \"Adicionar regra de estilo condicional na coluna\",\n \"scope\": \"column\",\n \"targetKind\": \"rule\",\n \"target\": {\n \"kind\": \"rule\",\n \"resolver\": \"style-rule-in-column-or-row\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"condition\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"description\": \"Identificador estável da regra de estilo da coluna\"\n },\n \"condition\": {\n \"type\": \"object\",\n \"description\": \"AST Json Logic\"\n },\n \"cssClass\": {\n \"type\": \"string\"\n },\n \"style\": {\n \"type\": \"object\"\n },\n \"tooltip\": {\n \"type\": \"object\"\n },\n \"effects\": {\n \"type\": \"array\"\n },\n \"description\": {\n \"type\": \"string\"\n }\n },\n \"anyOf\": [\n {\n \"required\": [\n \"cssClass\"\n ]\n },\n {\n \"required\": [\n \"style\"\n ]\n },\n {\n \"required\": [\n \"tooltip\"\n ]\n },\n {\n \"required\": [\n \"effects\"\n ]\n }\n ]\n },\n \"effects\": [\n {\n \"kind\": \"append-unique\",\n \"path\": \"columns[].conditionalStyles[]\",\n \"key\": \"id\"\n }\n ],\n \"validators\": [\n \"target-column-exists\",\n \"computed-expression-valid\",\n \"conditional-style-valid\"\n ],\n \"affectedPaths\": [\n \"columns[].conditionalStyles[]\",\n \"columns[].conditionalStyles[].effects\",\n \"columns[].conditionalStyles[].tooltip\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"preconditions\": [\n \"config-initialized\",\n \"target-exists\"\n ]\n },\n {\n \"operationId\": \"row.styleRule.add\",\n \"title\": \"Adicionar regra de estilo de linha\",\n \"scope\": \"global\",\n \"targetKind\": \"rule\",\n \"target\": {\n \"kind\": \"rule\",\n \"resolver\": \"style-rule-in-column-or-row\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"condition\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"description\": \"Identificador estável da regra (usado para deduplicação via append-unique)\"\n },\n \"condition\": {\n \"type\": \"object\",\n \"description\": \"AST Json Logic\"\n },\n \"style\": {\n \"type\": \"object\",\n \"description\": \"Estilo CSS (Record<string, string>)\"\n },\n \"cssClass\": {\n \"type\": \"string\"\n },\n \"effects\": {\n \"type\": \"array\"\n },\n \"description\": {\n \"type\": \"string\"\n }\n },\n \"anyOf\": [\n {\n \"required\": [\n \"cssClass\"\n ]\n },\n {\n \"required\": [\n \"style\"\n ]\n },\n {\n \"required\": [\n \"effects\"\n ]\n }\n ]\n },\n \"effects\": [\n {\n \"kind\": \"append-unique\",\n \"path\": \"rowConditionalStyles[]\",\n \"key\": \"id\"\n }\n ],\n \"validators\": [\n \"computed-expression-valid\"\n ],\n \"affectedPaths\": [\n \"rowConditionalStyles[]\",\n \"rowConditionalStyles[].effects\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"row.conditionalRenderer.add\",\n \"title\": \"Adicionar renderizador condicional de linha\",\n \"scope\": \"global\",\n \"targetKind\": \"conditionalRenderer\",\n \"target\": {\n \"kind\": \"conditionalRenderer\",\n \"resolver\": \"conditional-renderer-in-row\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"condition\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"description\": \"Identificador estavel da regra de renderer de linha\"\n },\n \"condition\": {\n \"type\": \"object\",\n \"description\": \"AST Json Logic\"\n },\n \"tooltip\": {\n \"type\": \"object\",\n \"description\": \"Tooltip de linha\"\n },\n \"effects\": {\n \"type\": \"array\"\n },\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"description\": {\n \"type\": \"string\"\n }\n },\n \"anyOf\": [\n {\n \"required\": [\n \"tooltip\"\n ]\n },\n {\n \"required\": [\n \"animation\"\n ]\n },\n {\n \"required\": [\n \"effects\"\n ]\n }\n ]\n },\n \"effects\": [\n {\n \"kind\": \"append-unique\",\n \"path\": \"rowConditionalRenderers[]\",\n \"key\": \"id\"\n }\n ],\n \"validators\": [\n \"computed-expression-valid\"\n ],\n \"affectedPaths\": [\n \"rowConditionalRenderers[]\",\n \"rowConditionalRenderers[].condition\",\n \"rowConditionalRenderers[].tooltip\",\n \"rowConditionalRenderers[].animation\",\n \"rowConditionalRenderers[].effects\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"toolbar.visibility.set\",\n \"title\": \"Definir visibilidade da toolbar\",\n \"scope\": \"global\",\n \"targetKind\": \"toolbar\",\n \"target\": {\n \"kind\": \"toolbar\",\n \"resolver\": \"toolbar-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"visible\"\n ],\n \"properties\": {\n \"visible\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"toolbar\"\n }\n ],\n \"affectedPaths\": [\n \"toolbar.visible\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"toolbar.action.add\",\n \"title\": \"Adicionar ação na toolbar\",\n \"scope\": \"global\",\n \"targetKind\": \"toolbarAction\",\n \"target\": {\n \"kind\": \"toolbarAction\",\n \"resolver\": \"action-in-toolbar-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"label\",\n \"action\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"label\": {\n \"type\": \"string\"\n },\n \"action\": {\n \"type\": \"string\"\n },\n \"icon\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"enum\": [\n \"button\",\n \"icon\",\n \"menu\"\n ],\n \"default\": \"button\"\n },\n \"visibleWhen\": {\n \"type\": \"object\",\n \"description\": \"AST Json Logic\"\n },\n \"globalAction\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"actionId\": {\n \"type\": \"string\",\n \"enum\": [\n \"toast.success\",\n \"toast.error\",\n \"dialog.alert\",\n \"dialog.open\",\n \"navigation.openExternal\",\n \"navigation.openRoute\",\n \"api.post\",\n \"api.patch\"\n ]\n },\n \"payload\": {\n \"type\": \"object\"\n },\n \"payloadExpr\": {\n \"type\": \"string\"\n }\n }\n },\n \"effects\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"required\": [\n \"kind\",\n \"globalAction\"\n ],\n \"additionalProperties\": false,\n \"properties\": {\n \"kind\": {\n \"enum\": [\n \"global-action\"\n ]\n }\n }\n }\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"append-unique\",\n \"path\": \"toolbar.actions[]\",\n \"key\": \"id\"\n }\n ],\n \"validators\": [\n \"toolbar-action-id-unique\"\n ],\n \"affectedPaths\": [\n \"toolbar.actions[]\",\n \"toolbar.actions[].visibleWhen\",\n \"toolbar.actions[].effects\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"rowAction.add\",\n \"title\": \"Adicionar ação de linha\",\n \"scope\": \"global\",\n \"targetKind\": \"rowAction\",\n \"target\": {\n \"kind\": \"rowAction\",\n \"resolver\": \"action-in-row-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"label\",\n \"action\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"label\": {\n \"type\": \"string\"\n },\n \"action\": {\n \"type\": \"string\"\n },\n \"icon\": {\n \"type\": \"string\"\n },\n \"color\": {\n \"type\": \"string\"\n },\n \"visibleWhen\": {\n \"type\": \"object\",\n \"description\": \"AST Json Logic\"\n },\n \"disabledWhen\": {\n \"type\": \"object\",\n \"description\": \"AST Json Logic\"\n },\n \"recordSurface\": {\n \"type\": \"object\",\n \"description\": \"ResourceSurfaceCatalogItem canonico preservado para abrir uma superficie relacionada ao registro da linha clicada.\"\n },\n \"effects\": {\n \"type\": \"array\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"append-unique\",\n \"path\": \"actions.row.actions[]\",\n \"key\": \"id\"\n }\n ],\n \"validators\": [\n \"row-action-id-unique\"\n ],\n \"affectedPaths\": [\n \"actions.row.actions[]\",\n \"actions.row.actions[].visibleWhen\",\n \"actions.row.actions[].disabledWhen\",\n \"actions.row.actions[].effects\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"bulkAction.add\",\n \"title\": \"Adicionar ação em lote\",\n \"scope\": \"global\",\n \"targetKind\": \"bulkAction\",\n \"target\": {\n \"kind\": \"bulkAction\",\n \"resolver\": \"action-in-bulk-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"label\",\n \"action\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"label\": {\n \"type\": \"string\"\n },\n \"action\": {\n \"type\": \"string\"\n },\n \"icon\": {\n \"type\": \"string\"\n },\n \"color\": {\n \"type\": \"string\"\n },\n \"effects\": {\n \"type\": \"array\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"append-unique\",\n \"path\": \"actions.bulk.actions[]\",\n \"key\": \"id\"\n }\n ],\n \"validators\": [\n \"bulk-action-id-unique\"\n ],\n \"affectedPaths\": [\n \"actions.bulk.actions[]\",\n \"actions.bulk.actions[].effects\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"export.enabled.set\",\n \"title\": \"Habilitar exportação\",\n \"scope\": \"global\",\n \"targetKind\": \"export\",\n \"target\": {\n \"kind\": \"export\",\n \"resolver\": \"export-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"enabled\"\n ],\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"formats\": {\n \"type\": \"array\",\n \"items\": {\n \"enum\": [\n \"excel\",\n \"pdf\",\n \"csv\",\n \"json\"\n ]\n }\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"export\"\n }\n ],\n \"affectedPaths\": [\n \"export.enabled\",\n \"export.formats\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"filter.advanced.configure\",\n \"title\": \"Configurar filtros avançados\",\n \"scope\": \"global\",\n \"targetKind\": \"filter\",\n \"target\": {\n \"kind\": \"filter\",\n \"resolver\": \"filter-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"enabled\"\n ],\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"queryBuilder\": {\n \"type\": \"boolean\"\n },\n \"savePresets\": {\n \"type\": \"boolean\"\n },\n \"settings\": {\n \"type\": \"object\",\n \"properties\": {\n \"mode\": {\n \"enum\": [\n \"filter\"\n ]\n },\n \"showAdvanced\": {\n \"type\": \"boolean\"\n },\n \"allowSaveTags\": {\n \"type\": \"boolean\"\n },\n \"alwaysVisibleFields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"selectedFieldIds\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"alwaysVisibleFieldMetadataOverrides\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"type\": \"object\"\n }\n },\n \"changeDebounceMs\": {\n \"type\": \"number\",\n \"minimum\": 0\n },\n \"useInlineSearchableSelectVariant\": {\n \"type\": \"boolean\"\n },\n \"useInlineRangeVariant\": {\n \"type\": \"boolean\"\n },\n \"useInlineDateVariant\": {\n \"type\": \"boolean\"\n },\n \"useInlineDateRangeVariant\": {\n \"type\": \"boolean\"\n }\n }\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"set-value\",\n \"path\": \"behavior.filtering.enabled\",\n \"value\": true\n },\n {\n \"kind\": \"merge-object\",\n \"path\": \"behavior.filtering.advancedFilters\"\n }\n ],\n \"affectedPaths\": [\n \"behavior.filtering.enabled\",\n \"behavior.filtering.advancedFilters.enabled\",\n \"behavior.filtering.advancedFilters.settings\"\n ],\n \"validators\": [\n \"filter-fields-exist\",\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"filter.advanced.fields.add\",\n \"title\": \"Adicionar campos aos filtros avançados\",\n \"scope\": \"global\",\n \"targetKind\": \"filter\",\n \"target\": {\n \"kind\": \"filter\",\n \"resolver\": \"filter-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"fields\"\n ],\n \"properties\": {\n \"fields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"minItems\": 1\n },\n \"selected\": {\n \"type\": \"boolean\"\n },\n \"alwaysVisible\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"set-value\",\n \"path\": \"behavior.filtering.enabled\",\n \"value\": true\n },\n {\n \"kind\": \"merge-object\",\n \"path\": \"behavior.filtering.advancedFilters\"\n }\n ],\n \"affectedPaths\": [\n \"behavior.filtering.enabled\",\n \"behavior.filtering.advancedFilters.enabled\",\n \"behavior.filtering.advancedFilters.settings\"\n ],\n \"validators\": [\n \"filter-fields-exist\",\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"filter.advanced.fields.remove\",\n \"title\": \"Remover campos dos filtros avançados\",\n \"scope\": \"global\",\n \"targetKind\": \"filter\",\n \"target\": {\n \"kind\": \"filter\",\n \"resolver\": \"filter-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"fields\"\n ],\n \"properties\": {\n \"fields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"minItems\": 1\n },\n \"selected\": {\n \"type\": \"boolean\"\n },\n \"alwaysVisible\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"set-value\",\n \"path\": \"behavior.filtering.enabled\",\n \"value\": true\n },\n {\n \"kind\": \"merge-object\",\n \"path\": \"behavior.filtering.advancedFilters\"\n }\n ],\n \"affectedPaths\": [\n \"behavior.filtering.enabled\",\n \"behavior.filtering.advancedFilters.enabled\",\n \"behavior.filtering.advancedFilters.settings\"\n ],\n \"validators\": [\n \"filter-fields-exist\",\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"grouping.set\",\n \"title\": \"Definir agrupamento\",\n \"scope\": \"global\",\n \"targetKind\": \"grouping\",\n \"target\": {\n \"kind\": \"grouping\",\n \"resolver\": \"grouping-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"enabled\"\n ],\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"fields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"expanded\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"behavior.grouping\"\n }\n ],\n \"validators\": [\n \"grouping-fields-exist\"\n ],\n \"affectedPaths\": [\n \"behavior.grouping\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"selection.mode.set\",\n \"title\": \"Definir modo de seleção\",\n \"scope\": \"global\",\n \"targetKind\": \"selection\",\n \"target\": {\n \"kind\": \"selection\",\n \"resolver\": \"selection-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"enabled\",\n \"type\"\n ],\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"type\": {\n \"enum\": [\n \"single\",\n \"multiple\"\n ]\n },\n \"mode\": {\n \"enum\": [\n \"checkbox\",\n \"row\",\n \"both\"\n ]\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"behavior.selection\"\n }\n ],\n \"affectedPaths\": [\n \"behavior.selection.enabled\",\n \"behavior.selection.type\",\n \"behavior.selection.mode\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"appearance.density.set\",\n \"title\": \"Definir densidade\",\n \"scope\": \"global\",\n \"targetKind\": \"appearance\",\n \"target\": {\n \"kind\": \"appearance\",\n \"resolver\": \"appearance-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"density\"\n ],\n \"properties\": {\n \"density\": {\n \"enum\": [\n \"compact\",\n \"comfortable\",\n \"spacious\"\n ]\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"appearance\"\n }\n ],\n \"affectedPaths\": [\n \"appearance.density\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"appearance.borders.set\",\n \"title\": \"Definir bordas\",\n \"scope\": \"global\",\n \"targetKind\": \"appearance\",\n \"target\": {\n \"kind\": \"appearance\",\n \"resolver\": \"appearance-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"showRowBorders\",\n \"showColumnBorders\"\n ],\n \"properties\": {\n \"showRowBorders\": {\n \"type\": \"boolean\"\n },\n \"showColumnBorders\": {\n \"type\": \"boolean\"\n },\n \"showOuterBorder\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"appearance.borders\"\n }\n ],\n \"affectedPaths\": [\n \"appearance.borders.showRowBorders\",\n \"appearance.borders.showColumnBorders\",\n \"appearance.borders.showOuterBorder\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"virtualization.enabled.set\",\n \"title\": \"Habilitar virtualização\",\n \"scope\": \"global\",\n \"targetKind\": \"appearance\",\n \"target\": {\n \"kind\": \"appearance\",\n \"resolver\": \"appearance-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"enabled\"\n ],\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"itemHeight\": {\n \"type\": \"number\",\n \"default\": 48\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"behavior.virtualization\"\n },\n {\n \"kind\": \"merge-object\",\n \"path\": \"performance.virtualization\"\n }\n ],\n \"affectedPaths\": [\n \"behavior.virtualization\",\n \"performance.virtualization\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"expansion.configure\",\n \"title\": \"Configurar expansão de linha\",\n \"scope\": \"global\",\n \"targetKind\": \"expansion\",\n \"target\": {\n \"kind\": \"expansion\",\n \"resolver\": \"expansion-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"contractVersion\": {\n \"type\": \"string\"\n },\n \"state\": {\n \"type\": \"object\",\n \"properties\": {\n \"mode\": {\n \"enum\": [\n \"controlled\",\n \"uncontrolled\"\n ]\n }\n }\n },\n \"interaction\": {\n \"type\": \"object\",\n \"properties\": {\n \"trigger\": {\n \"enum\": [\n \"icon\",\n \"row\",\n \"both\"\n ]\n },\n \"toggleIcon\": {\n \"type\": \"object\",\n \"properties\": {\n \"collapsed\": {\n \"type\": \"string\"\n },\n \"expanded\": {\n \"type\": \"string\"\n },\n \"ariaLabelCollapsed\": {\n \"type\": \"string\"\n },\n \"ariaLabelExpanded\": {\n \"type\": \"string\"\n }\n }\n },\n \"motion\": {\n \"type\": \"object\",\n \"properties\": {\n \"preset\": {\n \"enum\": [\n \"none\",\n \"subtle-slide\",\n \"accordion\",\n \"fade-scale\"\n ]\n },\n \"durationMs\": {\n \"type\": \"number\",\n \"minimum\": 0\n },\n \"easing\": {\n \"enum\": [\n \"standard\",\n \"emphasized\",\n \"decelerate\"\n ]\n }\n }\n },\n \"keyboard\": {\n \"type\": \"object\",\n \"properties\": {\n \"profile\": {\n \"enum\": [\n \"disclosure\",\n \"grid\"\n ]\n }\n }\n }\n }\n },\n \"limits\": {\n \"type\": \"object\",\n \"properties\": {\n \"allowMultiple\": {\n \"type\": \"boolean\"\n },\n \"maxExpandedRows\": {\n \"type\": \"number\",\n \"minimum\": 1\n },\n \"onOverflow\": {\n \"enum\": [\n \"collapseOldest\",\n \"denyNew\",\n \"collapseAll\"\n ]\n }\n }\n },\n \"collapseOn\": {\n \"type\": \"object\",\n \"properties\": {\n \"sortChange\": {\n \"type\": \"boolean\"\n },\n \"pageChange\": {\n \"type\": \"boolean\"\n },\n \"filterChange\": {\n \"type\": \"boolean\"\n },\n \"dataRefresh\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"virtualization\": {\n \"type\": \"object\",\n \"properties\": {\n \"policy\": {\n \"enum\": [\n \"fixed-height-only\",\n \"allow-dynamic-under-flag\"\n ]\n }\n }\n },\n \"persistence\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"storageKeyStrategy\": {\n \"type\": \"object\",\n \"properties\": {\n \"namespace\": {\n \"type\": \"string\"\n }\n }\n }\n }\n },\n \"security\": {\n \"type\": \"object\",\n \"properties\": {\n \"eventExposureDefault\": {\n \"type\": \"object\",\n \"properties\": {\n \"rowId\": {\n \"enum\": [\n \"redacted\",\n \"hashed\",\n \"raw\"\n ]\n },\n \"expandedKeys\": {\n \"enum\": [\n \"none\",\n \"hashed\",\n \"raw\"\n ]\n }\n }\n }\n }\n },\n \"deepLink\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"encoding\": {\n \"enum\": [\n \"csv\"\n ]\n },\n \"parsing\": {\n \"type\": \"object\",\n \"properties\": {\n \"duplicateParams\": {\n \"enum\": [\n \"firstWins\",\n \"reject\"\n ]\n }\n }\n },\n \"integrity\": {\n \"type\": \"object\",\n \"properties\": {\n \"mode\": {\n \"enum\": [\n \"opaqueToken\"\n ]\n }\n }\n },\n \"privacy\": {\n \"type\": \"object\",\n \"properties\": {\n \"mode\": {\n \"enum\": [\n \"denyByDefault\",\n \"allowByDefault\"\n ]\n }\n }\n }\n }\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"behavior.expansion\"\n }\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"affectedPaths\": [\n \"behavior.expansion\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"expansion.detailSource.configure\",\n \"title\": \"Configurar fonte remota do detalhe expansivel\",\n \"scope\": \"global\",\n \"targetKind\": \"expansion\",\n \"target\": {\n \"kind\": \"expansion\",\n \"resolver\": \"expansion-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": {\n \"mode\": {\n \"enum\": [\n \"inline\",\n \"resource\",\n \"resourcePath\",\n \"hypermedia\"\n ]\n },\n \"inlineSchema\": {\n \"type\": \"object\"\n },\n \"resource\": {\n \"type\": \"object\",\n \"properties\": {\n \"kind\": {\n \"enum\": [\n \"ui-composition\",\n \"form-schema\",\n \"table-schema\",\n \"dashboard-schema\"\n ]\n },\n \"id\": {\n \"type\": \"string\"\n },\n \"version\": {\n \"type\": \"string\"\n }\n }\n },\n \"resourcePath\": {\n \"type\": \"object\",\n \"properties\": {\n \"path\": {\n \"type\": \"string\"\n },\n \"method\": {\n \"enum\": [\n \"GET\",\n \"POST\"\n ]\n },\n \"paramsMap\": {\n \"type\": \"object\"\n }\n }\n },\n \"resourceAllowList\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"hypermedia\": {\n \"type\": \"object\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"behavior.expansion.detail.source\"\n }\n ],\n \"validators\": [\n \"remote-resource-binding-safe\",\n \"editor-round-trip-preserve\"\n ],\n \"affectedPaths\": [\n \"behavior.expansion.detail.source\",\n \"behavior.expansion.detail.source.mode\",\n \"behavior.expansion.detail.source.resourcePath\",\n \"behavior.expansion.detail.source.resourceAllowList\",\n \"behavior.expansion.detail.source.hypermedia\"\n ],\n \"submissionImpact\": \"affects-remote-binding\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"expansion.detailPresentation.configure\",\n \"title\": \"Configurar apresentacao do detalhe expansivel\",\n \"scope\": \"global\",\n \"targetKind\": \"expansion\",\n \"target\": {\n \"kind\": \"expansion\",\n \"resolver\": \"expansion-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": {\n \"schemaContract\": {\n \"type\": \"object\",\n \"properties\": {\n \"kind\": {\n \"type\": \"string\"\n },\n \"version\": {\n \"type\": \"string\"\n }\n }\n },\n \"rendering\": {\n \"type\": \"object\",\n \"properties\": {\n \"strategy\": {\n \"enum\": [\n \"registry\"\n ]\n },\n \"registryId\": {\n \"type\": \"string\"\n },\n \"hostLayout\": {\n \"enum\": [\n \"auto\",\n \"stack\",\n \"tabs\"\n ]\n },\n \"fallbackNodePolicy\": {\n \"enum\": [\n \"failClosed\",\n \"renderPlaceholder\"\n ]\n }\n }\n },\n \"height\": {\n \"type\": \"object\",\n \"properties\": {\n \"mode\": {\n \"enum\": [\n \"fixed\",\n \"dynamic\"\n ]\n },\n \"px\": {\n \"type\": \"number\",\n \"minimum\": 0\n }\n }\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"behavior.expansion.detail\"\n }\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"affectedPaths\": [\n \"behavior.expansion.detail\",\n \"behavior.expansion.detail.schemaContract\",\n \"behavior.expansion.detail.rendering\",\n \"behavior.expansion.detail.height\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"meta.configure\",\n \"title\": \"Configurar metadados\",\n \"scope\": \"global\",\n \"targetKind\": \"meta\",\n \"target\": {\n \"kind\": \"meta\",\n \"resolver\": \"table-meta-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"description\": {\n \"type\": \"string\"\n },\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"schemaId\": {\n \"type\": \"string\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"meta\"\n }\n ],\n \"affectedPaths\": [\n \"meta\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"meta.idField.set\",\n \"title\": \"Definir campo de identidade\",\n \"scope\": \"global\",\n \"targetKind\": \"meta\",\n \"target\": {\n \"kind\": \"meta\",\n \"resolver\": \"table-meta-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"idField\"\n ],\n \"properties\": {\n \"idField\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"set-value\",\n \"path\": \"meta.idField\"\n }\n ],\n \"requiresConfirmation\": true,\n \"affectedPaths\": [\n \"meta.idField\"\n ],\n \"validators\": [\n \"target-column-exists\",\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"affects-schema-backed-data\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"column.resizable.set\",\n \"title\": \"Definir redimensionamento da coluna\",\n \"scope\": \"column\",\n \"targetKind\": \"column\",\n \"target\": {\n \"kind\": \"column\",\n \"resolver\": \"column-by-field\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"resizable\"\n ],\n \"properties\": {\n \"resizable\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-by-key\",\n \"path\": \"columns[]\",\n \"key\": \"field\"\n }\n ],\n \"validators\": [\n \"target-column-exists\"\n ],\n \"affectedPaths\": [\n \"columns[].resizable\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\",\n \"target-exists\"\n ]\n },\n {\n \"operationId\": \"column.sortField.set\",\n \"title\": \"Definir campo de ordenacao da coluna\",\n \"scope\": \"column\",\n \"targetKind\": \"column\",\n \"target\": {\n \"kind\": \"column\",\n \"resolver\": \"column-by-field\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"sortField\"\n ],\n \"properties\": {\n \"sortField\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-by-key\",\n \"path\": \"columns[]\",\n \"key\": \"field\"\n }\n ],\n \"validators\": [\n \"target-column-exists\"\n ],\n \"affectedPaths\": [\n \"columns[].sortField\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\",\n \"target-exists\"\n ]\n },\n {\n \"operationId\": \"column.computed.configure\",\n \"title\": \"Configurar coluna calculada\",\n \"scope\": \"column\",\n \"targetKind\": \"computedColumn\",\n \"target\": {\n \"kind\": \"computedColumn\",\n \"resolver\": \"column-by-field\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"expression\"\n ],\n \"properties\": {\n \"expression\": {\n \"type\": \"object\",\n \"description\": \"AST Json Logic\"\n },\n \"outputType\": {},\n \"format\": {\n \"type\": \"string\"\n },\n \"dependencies\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-by-key\",\n \"path\": \"columns[]\",\n \"key\": \"field\"\n }\n ],\n \"validators\": [\n \"target-column-exists\",\n \"computed-expression-valid\",\n \"format-preset-supported\"\n ],\n \"affectedPaths\": [\n \"columns[].computed\"\n ],\n \"submissionImpact\": \"affects-schema-backed-data\",\n \"preconditions\": [\n \"config-initialized\",\n \"target-exists\"\n ]\n },\n {\n \"operationId\": \"behavior.pagination.configure\",\n \"title\": \"Configurar paginacao\",\n \"scope\": \"global\",\n \"targetKind\": \"pagination\",\n \"target\": {\n \"kind\": \"pagination\",\n \"resolver\": \"pagination-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"strategy\": {\n \"enum\": [\n \"client\",\n \"server\"\n ]\n },\n \"pageSize\": {\n \"type\": \"number\",\n \"minimum\": 1\n },\n \"pageSizeOptions\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"number\",\n \"minimum\": 1\n }\n },\n \"position\": {\n \"enum\": [\n \"top\",\n \"bottom\",\n \"both\"\n ]\n },\n \"style\": {\n \"enum\": [\n \"default\",\n \"simple\",\n \"advanced\",\n \"compact\"\n ]\n },\n \"advanced\": {\n \"type\": \"object\",\n \"properties\": {\n \"maxPageSize\": {\n \"type\": \"number\",\n \"minimum\": 1\n }\n }\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"behavior.pagination\"\n }\n ],\n \"affectedPaths\": [\n \"behavior.pagination\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"behavior.sorting.configure\",\n \"title\": \"Configurar ordenacao\",\n \"scope\": \"global\",\n \"targetKind\": \"sorting\",\n \"target\": {\n \"kind\": \"sorting\",\n \"resolver\": \"sorting-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"strategy\": {\n \"enum\": [\n \"client\",\n \"server\"\n ]\n },\n \"defaultSort\": {\n \"type\": \"object\"\n },\n \"allowClearSort\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"behavior.sorting\"\n }\n ],\n \"affectedPaths\": [\n \"behavior.sorting\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"behavior.filtering.configure\",\n \"title\": \"Configurar filtragem\",\n \"scope\": \"global\",\n \"targetKind\": \"filter\",\n \"target\": {\n \"kind\": \"filter\",\n \"resolver\": \"filter-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"strategy\": {\n \"enum\": [\n \"client\",\n \"server\"\n ]\n },\n \"columnFilters\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"defaultType\": {\n \"enum\": [\n \"text\",\n \"select\",\n \"date\",\n \"number\",\n \"boolean\"\n ]\n },\n \"position\": {\n \"enum\": [\n \"header\",\n \"subheader\",\n \"sidebar\"\n ]\n }\n }\n },\n \"advancedFilters\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"settings\": {\n \"type\": \"object\",\n \"properties\": {\n \"mode\": {\n \"enum\": [\n \"filter\"\n ]\n },\n \"showAdvanced\": {\n \"type\": \"boolean\"\n },\n \"allowSaveTags\": {\n \"type\": \"boolean\"\n },\n \"alwaysVisibleFields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"selectedFieldIds\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"alwaysVisibleFieldMetadataOverrides\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"type\": \"object\"\n }\n },\n \"changeDebounceMs\": {\n \"type\": \"number\",\n \"minimum\": 0\n },\n \"useInlineSearchableSelectVariant\": {\n \"type\": \"boolean\"\n },\n \"useInlineRangeVariant\": {\n \"type\": \"boolean\"\n },\n \"useInlineDateVariant\": {\n \"type\": \"boolean\"\n },\n \"useInlineDateRangeVariant\": {\n \"type\": \"boolean\"\n }\n }\n }\n }\n },\n \"debounceTime\": {\n \"type\": \"number\",\n \"minimum\": 0\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"behavior.filtering\"\n }\n ],\n \"affectedPaths\": [\n \"behavior.filtering\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"behavior.selection.configure\",\n \"title\": \"Configurar selecao\",\n \"scope\": \"global\",\n \"targetKind\": \"selection\",\n \"target\": {\n \"kind\": \"selection\",\n \"resolver\": \"selection-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"type\": {\n \"enum\": [\n \"single\",\n \"multiple\"\n ]\n },\n \"mode\": {\n \"enum\": [\n \"checkbox\",\n \"row\",\n \"both\"\n ]\n },\n \"allowSelectAll\": {\n \"type\": \"boolean\"\n },\n \"persistSelection\": {\n \"type\": \"boolean\"\n },\n \"maxSelections\": {\n \"type\": \"number\",\n \"minimum\": 1\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"behavior.selection\"\n }\n ],\n \"affectedPaths\": [\n \"behavior.selection\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"behavior.interaction.configure\",\n \"title\": \"Configurar interacao\",\n \"scope\": \"global\",\n \"targetKind\": \"interaction\",\n \"target\": {\n \"kind\": \"interaction\",\n \"resolver\": \"interaction-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": {\n \"rowClick\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"action\": {\n \"type\": \"string\"\n }\n }\n },\n \"keyboard\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"hover\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"highlightRow\": {\n \"type\": \"boolean\"\n }\n }\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"behavior.interaction\"\n }\n ],\n \"affectedPaths\": [\n \"behavior.interaction\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"behavior.loading.configure\",\n \"title\": \"Configurar loading\",\n \"scope\": \"global\",\n \"targetKind\": \"loading\",\n \"target\": {\n \"kind\": \"loading\",\n \"resolver\": \"loading-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": {\n \"type\": {\n \"enum\": [\n \"spinner\",\n \"skeleton\",\n \"progress\",\n \"custom\"\n ]\n },\n \"position\": {\n \"enum\": [\n \"overlay\",\n \"inline\",\n \"replace\"\n ]\n },\n \"text\": {\n \"type\": \"string\"\n },\n \"delay\": {\n \"type\": \"number\",\n \"minimum\": 0\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"behavior.loading\"\n }\n ],\n \"affectedPaths\": [\n \"behavior.loading\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"behavior.emptyState.configure\",\n \"title\": \"Configurar estado vazio\",\n \"scope\": \"global\",\n \"targetKind\": \"emptyState\",\n \"target\": {\n \"kind\": \"emptyState\",\n \"resolver\": \"empty-state-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"message\"\n ],\n \"properties\": {\n \"message\": {\n \"type\": \"string\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"behavior.emptyState\"\n }\n ],\n \"affectedPaths\": [\n \"behavior.emptyState\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"behavior.resizing.configure\",\n \"title\": \"Configurar redimensionamento\",\n \"scope\": \"global\",\n \"targetKind\": \"resizing\",\n \"target\": {\n \"kind\": \"resizing\",\n \"resolver\": \"resizing-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"minColumnWidth\": {\n \"type\": \"number\",\n \"minimum\": 1\n },\n \"maxColumnWidth\": {\n \"type\": \"number\",\n \"minimum\": 1\n },\n \"autoFit\": {\n \"type\": \"boolean\"\n },\n \"persistWidths\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"behavior.resizing\"\n }\n ],\n \"affectedPaths\": [\n \"behavior.resizing\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"behavior.dragging.configure\",\n \"title\": \"Configurar drag and drop\",\n \"scope\": \"global\",\n \"targetKind\": \"dragging\",\n \"target\": {\n \"kind\": \"dragging\",\n \"resolver\": \"dragging-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"columns\"\n ],\n \"properties\": {\n \"columns\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"behavior.dragging\"\n }\n ],\n \"affectedPaths\": [\n \"behavior.dragging\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"behavior.editing.configure\",\n \"title\": \"Configurar edicao\",\n \"scope\": \"global\",\n \"targetKind\": \"editing\",\n \"target\": {\n \"kind\": \"editing\",\n \"resolver\": \"editing-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"mode\"\n ],\n \"properties\": {\n \"mode\": {\n \"type\": \"string\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"behavior.editing\"\n }\n ],\n \"affectedPaths\": [\n \"behavior.editing\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"toolbar.configure\",\n \"title\": \"Configurar toolbar\",\n \"scope\": \"global\",\n \"targetKind\": \"toolbar\",\n \"target\": {\n \"kind\": \"toolbar\",\n \"resolver\": \"toolbar-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": {\n \"visible\": {\n \"type\": \"boolean\"\n },\n \"position\": {\n \"enum\": [\n \"top\",\n \"bottom\",\n \"both\"\n ]\n },\n \"actionsPosition\": {\n \"enum\": [\n \"top\",\n \"bottom\",\n \"both\"\n ]\n },\n \"actionsBackgroundColor\": {\n \"type\": \"string\"\n },\n \"appearance\": {\n \"type\": \"object\",\n \"properties\": {\n \"preset\": {\n \"type\": \"string\"\n },\n \"variant\": {\n \"enum\": [\n \"flat\",\n \"outlined\",\n \"elevated\",\n \"integrated\"\n ]\n },\n \"density\": {\n \"enum\": [\n \"compact\",\n \"comfortable\",\n \"spacious\"\n ]\n },\n \"shape\": {\n \"enum\": [\n \"square\",\n \"rounded\",\n \"pill\"\n ]\n },\n \"divider\": {\n \"enum\": [\n \"none\",\n \"start\",\n \"between-groups\"\n ]\n },\n \"tokens\": {\n \"type\": \"object\",\n \"properties\": {\n \"titleFg\": {\n \"type\": \"string\"\n },\n \"subtitleFg\": {\n \"type\": \"string\"\n },\n \"iconFg\": {\n \"type\": \"string\"\n },\n \"titleFontSize\": {\n \"type\": \"string\"\n },\n \"subtitleFontSize\": {\n \"type\": \"string\"\n },\n \"titleFontWeight\": {\n \"type\": \"string\"\n },\n \"identityGap\": {\n \"type\": \"string\"\n },\n \"identityFilterGap\": {\n \"type\": \"string\"\n },\n \"identityMinHeight\": {\n \"type\": \"string\"\n },\n \"identityMarginBottom\": {\n \"type\": \"string\"\n },\n \"identityIconSize\": {\n \"type\": \"string\"\n },\n \"identityIconRadius\": {\n \"type\": \"string\"\n }\n },\n \"additionalProperties\": {\n \"type\": \"string\"\n }\n }\n }\n },\n \"title\": {\n \"type\": \"string\"\n },\n \"subtitle\": {\n \"type\": \"string\"\n },\n \"icon\": {\n \"type\": \"string\"\n },\n \"textAlign\": {\n \"enum\": [\n \"start\",\n \"center\",\n \"end\"\n ]\n },\n \"layout\": {\n \"type\": \"object\",\n \"properties\": {\n \"alignment\": {\n \"enum\": [\n \"start\",\n \"center\",\n \"end\",\n \"space-between\"\n ]\n }\n }\n },\n \"filters\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"settingsMenu\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"columnsVisibility\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n }\n }\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"toolbar\"\n }\n ],\n \"validators\": [\n \"css-style-safe\"\n ],\n \"affectedPaths\": [\n \"toolbar\",\n \"toolbar.title\",\n \"toolbar.subtitle\",\n \"toolbar.icon\",\n \"toolbar.textAlign\",\n \"toolbar.appearance\",\n \"toolbar.appearance.tokens\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"actions.row.configure\",\n \"title\": \"Configurar acoes de linha\",\n \"scope\": \"global\",\n \"targetKind\": \"rowAction\",\n \"target\": {\n \"kind\": \"rowAction\",\n \"resolver\": \"action-in-row-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"display\": {\n \"enum\": [\n \"menu\",\n \"buttons\",\n \"icons\"\n ]\n },\n \"trigger\": {\n \"enum\": [\n \"hover\",\n \"always\",\n \"click\"\n ]\n },\n \"discovery\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n }\n }\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"actions.row\"\n }\n ],\n \"affectedPaths\": [\n \"actions.row\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"actions.bulk.configure\",\n \"title\": \"Configurar acoes em lote\",\n \"scope\": \"global\",\n \"targetKind\": \"bulkAction\",\n \"target\": {\n \"kind\": \"bulkAction\",\n \"resolver\": \"action-in-bulk-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"position\": {\n \"enum\": [\n \"toolbar\",\n \"floating\",\n \"both\"\n ]\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"actions.bulk\"\n }\n ],\n \"requiresConfirmation\": true,\n \"affectedPaths\": [\n \"actions.bulk\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"actions.context.configure\",\n \"title\": \"Configurar menu contextual\",\n \"scope\": \"global\",\n \"targetKind\": \"contextAction\",\n \"target\": {\n \"kind\": \"contextAction\",\n \"resolver\": \"action-in-context-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"trigger\": {\n \"enum\": [\n \"right-click\",\n \"long-press\",\n \"both\"\n ]\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"actions.context\"\n }\n ],\n \"requiresConfirmation\": true,\n \"affectedPaths\": [\n \"actions.context\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"actions.confirmations.configure\",\n \"title\": \"Configurar confirmacoes\",\n \"scope\": \"global\",\n \"targetKind\": \"contextAction\",\n \"target\": {\n \"kind\": \"contextAction\",\n \"resolver\": \"action-in-context-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"default\"\n ],\n \"properties\": {\n \"default\": {\n \"type\": \"object\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"actions.confirmations\"\n }\n ],\n \"requiresConfirmation\": true,\n \"affectedPaths\": [\n \"actions.confirmations.default\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"export.configure\",\n \"title\": \"Configurar exportacao\",\n \"scope\": \"global\",\n \"targetKind\": \"export\",\n \"target\": {\n \"kind\": \"export\",\n \"resolver\": \"export-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"formats\": {\n \"type\": \"array\",\n \"items\": {\n \"enum\": [\n \"excel\",\n \"pdf\",\n \"csv\",\n \"json\",\n \"print\"\n ]\n }\n },\n \"general\": {\n \"type\": \"object\",\n \"properties\": {\n \"includeHeaders\": {\n \"type\": \"boolean\"\n },\n \"scope\": {\n \"enum\": [\n \"auto\",\n \"selected\",\n \"filtered\",\n \"currentPage\",\n \"all\"\n ]\n },\n \"maxRows\": {\n \"type\": \"number\",\n \"minimum\": 1\n }\n }\n },\n \"excel\": {\n \"type\": \"object\",\n \"properties\": {\n \"autoFitColumns\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"pdf\": {\n \"type\": \"object\",\n \"properties\": {\n \"orientation\": {\n \"enum\": [\n \"portrait\",\n \"landscape\"\n ]\n },\n \"pageSize\": {\n \"enum\": [\n \"A4\",\n \"A3\",\n \"Letter\",\n \"Legal\"\n ]\n }\n }\n },\n \"csv\": {\n \"type\": \"object\",\n \"properties\": {\n \"delimiter\": {\n \"enum\": [\n \",\",\n \";\",\n \"|\",\n \"\\\\t\"\n ]\n }\n }\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"export\"\n }\n ],\n \"requiresConfirmation\": true,\n \"affectedPaths\": [\n \"export\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"tableRuntimeOperations.plan\",\n \"title\": \"Planejar operacoes runtime da tabela\",\n \"scope\": \"global\",\n \"targetKind\": \"runtimeOperation\",\n \"target\": {\n \"kind\": \"runtimeOperation\",\n \"resolver\": \"table-runtime-operation-contract\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"operations\"\n ],\n \"properties\": {\n \"operations\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"items\": {\n \"type\": \"object\",\n \"required\": [\n \"operationId\",\n \"input\"\n ],\n \"properties\": {\n \"operationId\": {\n \"enum\": [\n \"table.filter.apply\",\n \"table.export.run\"\n ]\n },\n \"input\": {\n \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": {\n \"criteria\": {\n \"type\": \"object\"\n },\n \"format\": {},\n \"scope\": {}\n }\n },\n \"description\": {\n \"type\": \"string\"\n }\n }\n }\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"set-value\",\n \"path\": \"tableRuntimeOperations\"\n }\n ],\n \"affectedPaths\": [\n \"tableRuntimeOperations\"\n ],\n \"validators\": [\n \"runtime-operation-declared\"\n ],\n \"submissionImpact\": \"none\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"appearance.configure\",\n \"title\": \"Configurar aparencia\",\n \"scope\": \"global\",\n \"targetKind\": \"appearance\",\n \"target\": {\n \"kind\": \"appearance\",\n \"resolver\": \"appearance-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": {\n \"density\": {\n \"enum\": [\n \"compact\",\n \"comfortable\",\n \"spacious\"\n ]\n },\n \"borders\": {\n \"type\": \"object\",\n \"properties\": {\n \"showRowBorders\": {\n \"type\": \"boolean\"\n },\n \"showColumnBorders\": {\n \"type\": \"boolean\"\n },\n \"showOuterBorder\": {\n \"type\": \"boolean\"\n },\n \"style\": {\n \"enum\": [\n \"solid\",\n \"dashed\",\n \"dotted\"\n ]\n }\n }\n },\n \"colors\": {\n \"type\": \"object\",\n \"properties\": {\n \"alternateRowBackground\": {\n \"type\": \"string\"\n },\n \"hoverBackground\": {\n \"type\": \"string\"\n }\n }\n },\n \"typography\": {\n \"type\": \"object\",\n \"properties\": {\n \"fontSize\": {\n \"type\": \"string\"\n },\n \"headerFontWeight\": {\n \"type\": \"string\"\n }\n }\n },\n \"spacing\": {\n \"type\": \"object\",\n \"properties\": {\n \"cellPadding\": {\n \"type\": \"string\"\n }\n }\n },\n \"responsive\": {\n \"type\": \"object\",\n \"properties\": {\n \"mobile\": {\n \"type\": \"object\",\n \"properties\": {\n \"horizontalScroll\": {\n \"type\": \"boolean\"\n },\n \"cardMode\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"breakpoints\": {\n \"type\": \"object\",\n \"properties\": {\n \"mobile\": {\n \"type\": \"number\",\n \"minimum\": 0\n }\n }\n }\n }\n },\n \"animations\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"elevation\": {\n \"type\": \"object\",\n \"properties\": {\n \"level\": {\n \"type\": \"number\",\n \"minimum\": 0\n }\n }\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"appearance\"\n }\n ],\n \"validators\": [\n \"css-style-safe\"\n ],\n \"affectedPaths\": [\n \"appearance\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"messages.configure\",\n \"title\": \"Configurar mensagens\",\n \"scope\": \"global\",\n \"targetKind\": \"messages\",\n \"target\": {\n \"kind\": \"messages\",\n \"resolver\": \"messages-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": {\n \"states\": {\n \"type\": \"object\",\n \"properties\": {\n \"empty\": {\n \"type\": \"string\"\n },\n \"loading\": {\n \"type\": \"string\"\n }\n }\n },\n \"actions\": {\n \"type\": \"object\",\n \"properties\": {\n \"confirmations\": {\n \"type\": \"object\",\n \"properties\": {\n \"delete\": {\n \"type\": \"string\"\n }\n }\n }\n }\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"messages\"\n }\n ],\n \"affectedPaths\": [\n \"messages\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"localization.configure\",\n \"title\": \"Configurar localizacao\",\n \"scope\": \"global\",\n \"targetKind\": \"localization\",\n \"target\": {\n \"kind\": \"localization\",\n \"resolver\": \"localization-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": {\n \"locale\": {\n \"type\": \"string\"\n },\n \"direction\": {\n \"enum\": [\n \"ltr\",\n \"rtl\"\n ]\n },\n \"dateTime\": {\n \"type\": \"object\",\n \"properties\": {\n \"dateFormat\": {\n \"type\": \"string\"\n },\n \"timeFormat\": {\n \"type\": \"string\"\n },\n \"dateTimeFormat\": {\n \"type\": \"string\"\n },\n \"firstDayOfWeek\": {\n \"enum\": [\n 0,\n 1,\n 2,\n 3,\n 4,\n 5,\n 6\n ]\n },\n \"relativeTime\": {\n \"type\": \"boolean\"\n },\n \"monthNames\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"dayNames\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n }\n },\n \"number\": {\n \"type\": \"object\",\n \"properties\": {\n \"decimalSeparator\": {\n \"type\": \"string\"\n },\n \"thousandsSeparator\": {\n \"type\": \"string\"\n },\n \"defaultPrecision\": {\n \"type\": \"number\",\n \"minimum\": 0\n },\n \"negativeSign\": {\n \"type\": \"string\"\n },\n \"negativeSignPosition\": {\n \"enum\": [\n \"before\",\n \"after\"\n ]\n }\n }\n },\n \"currency\": {\n \"type\": \"object\",\n \"properties\": {\n \"code\": {\n \"type\": \"string\"\n },\n \"symbol\": {\n \"type\": \"string\"\n },\n \"position\": {\n \"enum\": [\n \"before\",\n \"after\"\n ]\n },\n \"spacing\": {\n \"type\": \"boolean\"\n },\n \"precision\": {\n \"type\": \"number\",\n \"minimum\": 0\n }\n }\n },\n \"formatting\": {\n \"type\": \"object\",\n \"properties\": {\n \"percentageFormat\": {\n \"type\": \"string\"\n },\n \"fileSizeFormat\": {\n \"enum\": [\n \"binary\",\n \"decimal\"\n ]\n }\n }\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"localization\"\n }\n ],\n \"affectedPaths\": [\n \"localization\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"performance.configure\",\n \"title\": \"Configurar performance\",\n \"scope\": \"global\",\n \"targetKind\": \"performance\",\n \"target\": {\n \"kind\": \"performance\",\n \"resolver\": \"performance-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": {\n \"virtualization\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"itemHeight\": {\n \"type\": \"number\",\n \"minimum\": 1\n }\n }\n },\n \"debounce\": {\n \"type\": \"object\",\n \"properties\": {\n \"search\": {\n \"type\": \"number\",\n \"minimum\": 0\n },\n \"filter\": {\n \"type\": \"number\",\n \"minimum\": 0\n }\n }\n },\n \"lazyLoading\": {\n \"type\": \"object\",\n \"properties\": {\n \"images\": {\n \"type\": \"boolean\"\n }\n }\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"performance\"\n }\n ],\n \"affectedPaths\": [\n \"performance\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"data.loadingStrategy.set\",\n \"title\": \"Definir estrategia de carregamento\",\n \"scope\": \"global\",\n \"targetKind\": \"data\",\n \"target\": {\n \"kind\": \"data\",\n \"resolver\": \"data-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"loadingStrategy\"\n ],\n \"properties\": {\n \"loadingStrategy\": {\n \"enum\": [\n \"eager\",\n \"lazy\",\n \"on-demand\"\n ]\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"set-value\",\n \"path\": \"data.loadingStrategy\"\n }\n ],\n \"affectedPaths\": [\n \"data.loadingStrategy\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"accessibility.configure\",\n \"title\": \"Configurar acessibilidade\",\n \"scope\": \"global\",\n \"targetKind\": \"accessibility\",\n \"target\": {\n \"kind\": \"accessibility\",\n \"resolver\": \"accessibility-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"highContrast\": {\n \"type\": \"boolean\"\n },\n \"reduceMotion\": {\n \"type\": \"boolean\"\n },\n \"announcements\": {\n \"type\": \"object\",\n \"properties\": {\n \"liveRegion\": {\n \"enum\": [\n \"polite\",\n \"assertive\"\n ]\n }\n }\n },\n \"keyboard\": {\n \"type\": \"object\",\n \"properties\": {\n \"shortcuts\": {\n \"type\": \"boolean\"\n }\n }\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"accessibility\"\n }\n ],\n \"requiresConfirmation\": true,\n \"affectedPaths\": [\n \"accessibility\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n }\n ],\n \"validators\": [\n {\n \"validatorId\": \"target-column-exists\",\n \"level\": \"error\",\n \"code\": \"TB001\",\n \"description\": \"A coluna alvo deve existir na configuração.\"\n },\n {\n \"validatorId\": \"column-field-unique\",\n \"level\": \"error\",\n \"code\": \"TB002\",\n \"description\": \"O identificador técnico da coluna (field) deve ser único.\"\n },\n {\n \"validatorId\": \"renderer-type-supported\",\n \"level\": \"error\",\n \"code\": \"TB003\",\n \"description\": \"O tipo de renderizador deve ser suportado pelo componente.\"\n },\n {\n \"validatorId\": \"renderer-config-match\",\n \"level\": \"error\",\n \"code\": \"TB004\",\n \"description\": \"A configuração do renderizador deve corresponder ao tipo selecionado.\"\n },\n {\n \"validatorId\": \"grouping-fields-exist\",\n \"level\": \"error\",\n \"code\": \"TB005\",\n \"description\": \"Os campos de agrupamento devem existir na definição de colunas.\"\n },\n {\n \"validatorId\": \"filter-fields-exist\",\n \"level\": \"error\",\n \"code\": \"TB018\",\n \"description\": \"Os campos de filtro avançado devem existir no schema request do filtro governado.\"\n },\n {\n \"validatorId\": \"destructive-removal-confirmation\",\n \"level\": \"error\",\n \"code\": \"TB006\",\n \"description\": \"Remoções destrutivas de colunas ou ações exigem confirmação explícita.\"\n },\n {\n \"validatorId\": \"computed-expression-valid\",\n \"level\": \"error\",\n \"code\": \"TB007\",\n \"description\": \"A expressão de cálculo deve ser um AST Json Logic válido.\"\n },\n {\n \"validatorId\": \"remote-resource-binding-safe\",\n \"level\": \"error\",\n \"code\": \"TB008\",\n \"description\": \"A ligação com recurso remoto não deve conter URLs absolutas não permitidas.\"\n },\n {\n \"validatorId\": \"editor-round-trip-preserve\",\n \"level\": \"error\",\n \"code\": \"TB009\",\n \"description\": \"A edição não deve corromper propriedades críticas necessárias para o round-trip do editor.\"\n },\n {\n \"validatorId\": \"toolbar-action-id-unique\",\n \"level\": \"error\",\n \"code\": \"TB010\",\n \"description\": \"O id da ação de toolbar deve ser único em toolbar.actions[]. O efeito append-unique usa este id como chave de deduplicação.\"\n },\n {\n \"validatorId\": \"row-action-id-unique\",\n \"level\": \"error\",\n \"code\": \"TB011\",\n \"description\": \"O id da row action deve ser único em actions.row.actions[]. O efeito append-unique usa este id como chave de deduplicação.\"\n },\n {\n \"validatorId\": \"bulk-action-id-unique\",\n \"level\": \"error\",\n \"code\": \"TB017\",\n \"description\": \"O id da ação em lote deve ser único em actions.bulk.actions[]. O efeito append-unique usa este id como chave de deduplicação.\"\n },\n {\n \"validatorId\": \"format-preset-supported\",\n \"level\": \"error\",\n \"code\": \"TB012\",\n \"description\": \"O formato deve usar um preset canonico publicado em table-ai-capabilities.ts.\"\n },\n {\n \"validatorId\": \"column-width-valid\",\n \"level\": \"error\",\n \"code\": \"TB013\",\n \"description\": \"A largura deve ser auto ou uma medida simples em px, %, rem ou em.\"\n },\n {\n \"validatorId\": \"css-style-safe\",\n \"level\": \"error\",\n \"code\": \"TB014\",\n \"description\": \"Estilos inline devem permanecer em CSS simples e seguro, sem scripts, URLs perigosas ou expressoes dinamicas.\"\n },\n {\n \"validatorId\": \"value-mapping-valid\",\n \"level\": \"error\",\n \"code\": \"TB015\",\n \"description\": \"O mapeamento de valores deve ser um objeto simples com chaves estaveis e labels serializaveis.\"\n },\n {\n \"validatorId\": \"conditional-style-valid\",\n \"level\": \"error\",\n \"code\": \"TB016\",\n \"description\": \"Regras condicionais de coluna devem ter id estavel, condition Json Logic e ao menos cssClass ou style.\"\n },\n {\n \"validatorId\": \"runtime-operation-declared\",\n \"level\": \"error\",\n \"code\": \"TB019\",\n \"description\": \"Operacoes runtime devem usar operationId e input declarados em tableRuntimeOperations sem alterar a configuracao persistida.\"\n }\n ],\n \"roundTripRequirements\": [\n \"preserve-column-order\",\n \"normalize-enum-values\",\n \"maintain-renderer-precedence\",\n \"preserve-meta-ids\"\n ],\n \"presentationAffordances\": {\n \"version\": \"0.1.0\",\n \"componentId\": \"praxis-table\",\n \"defaultTargetKind\": \"column\",\n \"sourceRef\": \"praxis-ui-angular:projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts#presentationAffordances\",\n \"affordances\": [\n {\n \"id\": \"table.column.text-formatting\",\n \"targetKind\": \"column\",\n \"category\": \"format\",\n \"description\": \"Text transforms and masks for textual table columns.\",\n \"options\": [\n \"none\",\n \"uppercase\",\n \"lowercase\",\n \"titlecase\",\n \"capitalize\",\n \"uppercase|truncate|50|...\",\n \"000.000.000-00\"\n ],\n \"appliesToTypes\": [\n \"string\",\n \"text\",\n \"unknown\"\n ],\n \"unknownCompatible\": true\n },\n {\n \"id\": \"table.column.numeric-formatting\",\n \"targetKind\": \"column\",\n \"category\": \"format\",\n \"description\": \"Decimal, currency and percentage formats for numeric table columns.\",\n \"options\": [\n \"1.0-0\",\n \"1.1-1\",\n \"1.2-2\",\n \"1.0-3\",\n \"1.0-0|nosep\",\n \"BRL|symbol|2\",\n \"USD|symbol|2\",\n \"EUR|symbol|2\",\n \"BRL|code|2\",\n \"USD|code|0\",\n \"BRL|symbol|2|nosep\",\n \"EUR|symbol|2|nosep\",\n \"1.0-0|x100\",\n \"1.1-1|x100\",\n \"1.2-2|x100\"\n ],\n \"appliesToTypes\": [\n \"number\",\n \"currency\",\n \"percentage\"\n ],\n \"unknownCompatible\": false\n },\n {\n \"id\": \"table.column.date-formatting\",\n \"targetKind\": \"column\",\n \"category\": \"format\",\n \"description\": \"Date and time formats for date-like table columns.\",\n \"options\": [\n \"shortDate\",\n \"mediumDate\",\n \"longDate\",\n \"fullDate\",\n \"MMM/yyyy\",\n \"shortTime\",\n \"short\",\n \"yyyy-MM-dd\",\n \"dd/MM/yyyy\",\n \"yyyy-MM-dd HH:mm\"\n ],\n \"appliesToTypes\": [\n \"date\",\n \"datetime\",\n \"time\"\n ],\n \"unknownCompatible\": false\n },\n {\n \"id\": \"table.column.boolean-formatting\",\n \"targetKind\": \"column\",\n \"category\": \"format\",\n \"description\": \"Boolean label formats for true/false table columns.\",\n \"options\": [\n \"true-false\",\n \"yes-no\",\n \"active-inactive\",\n \"on-off\",\n \"enabled-disabled\",\n \"custom|Sim|Nao\"\n ],\n \"appliesToTypes\": [\n \"boolean\"\n ],\n \"unknownCompatible\": false\n },\n {\n \"id\": \"table.column.semantic-renderers\",\n \"targetKind\": \"column\",\n \"category\": \"renderer\",\n \"description\": \"Visual renderers for categorical, status or action-oriented table columns.\",\n \"options\": [\n \"badge\",\n \"chip\",\n \"icon\",\n \"link\",\n \"button\",\n \"progress\",\n \"avatar\",\n \"toggle\",\n \"menu\",\n \"rating\",\n \"compose\"\n ],\n \"appliesToTypes\": [\n \"string\",\n \"text\",\n \"boolean\",\n \"number\",\n \"currency\",\n \"percentage\",\n \"date\",\n \"datetime\",\n \"unknown\"\n ],\n \"unknownCompatible\": true\n },\n {\n \"id\": \"table.column.alignment-layout\",\n \"targetKind\": \"column\",\n \"category\": \"layout\",\n \"description\": \"Column alignment and composed cell layout options.\",\n \"options\": [\n \"align:start\",\n \"align:center\",\n \"align:end\",\n \"compose:row\",\n \"compose:column\",\n \"secondary-line\",\n \"prefix\",\n \"suffix\"\n ],\n \"appliesToTypes\": [\n \"string\",\n \"text\",\n \"boolean\",\n \"number\",\n \"currency\",\n \"percentage\",\n \"date\",\n \"datetime\",\n \"unknown\"\n ],\n \"unknownCompatible\": true\n }\n ]\n },\n \"examples\": [\n {\n \"id\": \"add-schema-column\",\n \"request\": \"Adicionar coluna para o campo email com o título Contato\",\n \"operationId\": \"column.add\",\n \"params\": {\n \"field\": \"email\",\n \"header\": \"Contato\",\n \"type\": \"string\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"add-computed-column\",\n \"request\": \"Criar coluna de idade baseada na data de nascimento\",\n \"operationId\": \"column.computed.add\",\n \"params\": {\n \"field\": \"idade\",\n \"header\": \"Idade\",\n \"expression\": {\n \"yearsSince\": [\n {\n \"var\": \"dataNascimento\"\n }\n ]\n },\n \"outputType\": \"number\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"add-conditional-badge\",\n \"request\": \"Mostrar badge vermelho na coluna status se o valor for \\\"atrasado\\\"\",\n \"operationId\": \"column.conditionalRenderer.add\",\n \"target\": \"status\",\n \"params\": {\n \"id\": \"badge-atrasado\",\n \"condition\": {\n \"==\": [\n {\n \"var\": \"status\"\n },\n \"atrasado\"\n ]\n },\n \"renderer\": {\n \"type\": \"badge\",\n \"badge\": {\n \"color\": \"warn\",\n \"variant\": \"filled\"\n }\n }\n },\n \"isPositive\": true\n },\n {\n \"id\": \"enable-export\",\n \"request\": \"Habilitar exportação para Excel e PDF\",\n \"operationId\": \"export.enabled.set\",\n \"params\": {\n \"enabled\": true,\n \"formats\": [\n \"excel\",\n \"pdf\"\n ]\n },\n \"isPositive\": true\n },\n {\n \"id\": \"add-row-action\",\n \"request\": \"Adicionar botão de excluir na linha\",\n \"operationId\": \"rowAction.add\",\n \"params\": {\n \"id\": \"delete\",\n \"label\": \"Excluir\",\n \"action\": \"delete\",\n \"icon\": \"delete\",\n \"color\": \"warn\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"add-row-action-open-route\",\n \"request\": \"Adicionar botão de linha para abrir detalhe com navegação interna\",\n \"operationId\": \"rowAction.add\",\n \"params\": {\n \"id\": \"details\",\n \"label\": \"Detalhes\",\n \"action\": \"navigation.openRoute\",\n \"icon\": \"open_in_new\",\n \"globalAction\": {\n \"actionId\": \"navigation.openRoute\",\n \"payload\": {\n \"path\": \"/clientes/detalhe\",\n \"query\": {\n \"id\": \"${row.id}\"\n }\n }\n }\n },\n \"isPositive\": true\n },\n {\n \"id\": \"group-by-field\",\n \"request\": \"Agrupar a tabela por departamento\",\n \"operationId\": \"grouping.set\",\n \"params\": {\n \"enabled\": true,\n \"fields\": [\n \"departamento\"\n ]\n },\n \"isPositive\": true\n },\n {\n \"id\": \"reject-invalid-renderer\",\n \"request\": \"Configurar imagem para um renderizador do tipo ícone\",\n \"operationId\": \"column.renderer.set\",\n \"target\": \"avatar\",\n \"params\": {\n \"type\": \"icon\",\n \"image\": {\n \"src\": \"...\"\n }\n },\n \"isPositive\": false\n },\n {\n \"id\": \"set-button-renderer\",\n \"request\": \"Transformar a coluna acoes em botao que executa abrir-detalhe\",\n \"operationId\": \"column.renderer.set\",\n \"target\": \"acoes\",\n \"params\": {\n \"type\": \"button\",\n \"button\": {\n \"label\": \"Abrir\",\n \"action\": {\n \"id\": \"abrir-detalhe\"\n }\n }\n },\n \"isPositive\": true\n },\n {\n \"id\": \"add-column-conditional-style\",\n \"request\": \"Destacar a coluna status quando o valor estiver bloqueado\",\n \"operationId\": \"column.conditionalStyle.add\",\n \"target\": \"status\",\n \"params\": {\n \"id\": \"status-bloqueado\",\n \"condition\": {\n \"==\": [\n {\n \"var\": \"status\"\n },\n \"bloqueado\"\n ]\n },\n \"cssClass\": \"status-bloqueado\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"set-currency-format-preset\",\n \"request\": \"Formatar a coluna total como moeda brasileira\",\n \"operationId\": \"column.format.set\",\n \"target\": \"total\",\n \"params\": {\n \"format\": \"BRL|symbol|2\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"set-cpf-format-preset\",\n \"request\": \"Formate a coluna CPF\",\n \"operationId\": \"column.format.set\",\n \"target\": \"cpf\",\n \"params\": {\n \"format\": \"000.000.000-00\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"set-long-date-format-preset\",\n \"request\": \"Mostre a data de admissão por extenso\",\n \"operationId\": \"column.format.set\",\n \"target\": \"dataAdmissao\",\n \"params\": {\n \"format\": \"longDate\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"set-basic-column-width\",\n \"request\": \"Definir a largura da coluna nome para 240px\",\n \"operationId\": \"column.width.set\",\n \"target\": \"nome\",\n \"params\": {\n \"width\": \"240px\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"set-salary-align-right\",\n \"request\": \"Alinhe o salário à direita\",\n \"operationId\": \"column.align.set\",\n \"target\": \"salario\",\n \"params\": {\n \"align\": \"right\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"make-name-sticky-start\",\n \"request\": \"Fixe a coluna funcionário no início da tabela\",\n \"operationId\": \"column.sticky.set\",\n \"target\": \"funcionario\",\n \"params\": {\n \"sticky\": \"start\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"disable-cpf-sorting\",\n \"request\": \"Não permita ordenar pela coluna CPF\",\n \"operationId\": \"column.sortable.set\",\n \"target\": \"cpf\",\n \"params\": {\n \"sortable\": false\n },\n \"isPositive\": true\n },\n {\n \"id\": \"enable-department-filter\",\n \"request\": \"Deixe o departamento disponível nos filtros\",\n \"operationId\": \"column.filterable.set\",\n \"target\": \"departamento\",\n \"params\": {\n \"filterable\": true\n },\n \"isPositive\": true\n },\n {\n \"id\": \"hide-internal-id-column\",\n \"request\": \"Oculte o ID interno da tabela\",\n \"operationId\": \"column.visibility.set\",\n \"target\": \"id\",\n \"params\": {\n \"visible\": false\n },\n \"isPositive\": true\n },\n {\n \"id\": \"map-active-status-labels\",\n \"request\": \"Mostre Sim e Não na coluna ativo\",\n \"operationId\": \"column.valueMapping.set\",\n \"target\": \"ativo\",\n \"params\": {\n \"valueMapping\": {\n \"true\": \"Sim\",\n \"false\": \"Não\"\n }\n },\n \"isPositive\": true\n },\n {\n \"id\": \"set-avatar-chip-renderer\",\n \"request\": \"Corrija o avatar do funcionário e mantenha o nome como chip\",\n \"operationId\": \"column.renderer.set\",\n \"target\": \"funcionario\",\n \"params\": {\n \"type\": \"compose\",\n \"compose\": {\n \"items\": [\n {\n \"type\": \"avatar\",\n \"avatar\": {\n \"srcField\": \"avatarUrl\",\n \"initialsField\": \"funcionario\",\n \"shape\": \"circle\",\n \"backgroundColor\": \"#E3F2FD\",\n \"textColor\": \"#0D47A1\"\n }\n },\n {\n \"type\": \"chip\",\n \"chip\": {\n \"textField\": \"funcionario\",\n \"variant\": \"soft\"\n }\n }\n ]\n }\n },\n \"isPositive\": true\n },\n {\n \"id\": \"animate-high-salary-row\",\n \"request\": \"Anime suavemente as linhas com salário acima de 30000\",\n \"operationId\": \"row.conditionalRenderer.add\",\n \"params\": {\n \"id\": \"salario-alto-pulse\",\n \"condition\": {\n \">\": [\n {\n \"var\": \"salario\"\n },\n 30000\n ]\n },\n \"animation\": {\n \"preset\": \"pulse-soft\",\n \"trigger\": \"onAppear\",\n \"intensity\": \"subtle\",\n \"repeat\": \"once\",\n \"durationMs\": 1200\n },\n \"description\": \"Destaca linhas de salário alto sem alterar os dados.\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"style-low-salary-cell\",\n \"request\": \"Para salários menores que 30000, use fundo laranja claro\",\n \"operationId\": \"column.conditionalStyle.add\",\n \"target\": \"salario\",\n \"params\": {\n \"id\": \"salario-baixo-laranja\",\n \"condition\": {\n \"<\": [\n {\n \"var\": \"salario\"\n },\n 30000\n ]\n },\n \"style\": {\n \"backgroundColor\": \"#FFF3E0\",\n \"color\": \"#8A4B00\"\n },\n \"tooltip\": {\n \"text\": \"Salário abaixo do recorte configurado\",\n \"position\": \"top\"\n }\n },\n \"isPositive\": true\n },\n {\n \"id\": \"enable-advanced-filters-human\",\n \"request\": \"Ative filtros avançados e deixe CPF e departamento sempre visíveis\",\n \"operationId\": \"filter.advanced.configure\",\n \"params\": {\n \"enabled\": true,\n \"queryBuilder\": true,\n \"savePresets\": true,\n \"settings\": {\n \"mode\": \"filter\",\n \"showAdvanced\": true,\n \"alwaysVisibleFields\": [\n \"cpf\",\n \"departamento\"\n ]\n }\n },\n \"isPositive\": true\n },\n {\n \"id\": \"add-salary-to-advanced-filters-human\",\n \"request\": \"Inclua também Salário nesses filtros\",\n \"operationId\": \"filter.advanced.fields.add\",\n \"params\": {\n \"fields\": [\n \"salario\"\n ],\n \"selected\": true,\n \"alwaysVisible\": true\n },\n \"isPositive\": true\n },\n {\n \"id\": \"remove-active-from-advanced-filters-human\",\n \"request\": \"Agora remova Ativo desses filtros\",\n \"operationId\": \"filter.advanced.fields.remove\",\n \"params\": {\n \"fields\": [\n \"ativo\"\n ],\n \"selected\": true,\n \"alwaysVisible\": true\n },\n \"isPositive\": true\n },\n {\n \"id\": \"enable-table-filters-human\",\n \"request\": \"Habilite os filtros dinâmicos da tabela\",\n \"operationId\": \"behavior.filtering.configure\",\n \"params\": {\n \"enabled\": true,\n \"strategy\": \"client\",\n \"debounceMs\": 250\n },\n \"isPositive\": true\n },\n {\n \"id\": \"compact-density-human\",\n \"request\": \"Deixe a tabela mais compacta\",\n \"operationId\": \"appearance.density.set\",\n \"params\": {\n \"density\": \"compact\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"toolbar-search-refresh-human\",\n \"request\": \"Mostre busca e botão de atualizar na toolbar\",\n \"operationId\": \"toolbar.configure\",\n \"params\": {\n \"visible\": true,\n \"showSearch\": true,\n \"showRefresh\": true\n },\n \"isPositive\": true\n },\n {\n \"id\": \"configure-server-pagination\",\n \"request\": \"Usar paginacao no servidor com 50 linhas por pagina\",\n \"operationId\": \"behavior.pagination.configure\",\n \"params\": {\n \"enabled\": true,\n \"strategy\": \"server\",\n \"pageSize\": 50,\n \"position\": \"bottom\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"configure-default-sorting\",\n \"request\": \"Ordenar inicialmente por data de criacao decrescente\",\n \"operationId\": \"behavior.sorting.configure\",\n \"params\": {\n \"enabled\": true,\n \"strategy\": \"server\",\n \"defaultSort\": {\n \"field\": \"createdAt\",\n \"direction\": \"desc\"\n }\n },\n \"isPositive\": true\n },\n {\n \"id\": \"configure-bulk-actions\",\n \"request\": \"Habilitar acoes em lote na toolbar\",\n \"operationId\": \"actions.bulk.configure\",\n \"params\": {\n \"enabled\": true,\n \"position\": \"toolbar\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"configure-localization\",\n \"request\": \"Configurar a tabela para portugues do Brasil\",\n \"operationId\": \"localization.configure\",\n \"params\": {\n \"locale\": \"pt-BR\",\n \"direction\": \"ltr\",\n \"dateTime\": {\n \"dateFormat\": \"dd/MM/yyyy\"\n }\n },\n \"isPositive\": true\n },\n {\n \"id\": \"configure-accessibility\",\n \"request\": \"Ativar alto contraste e reduzir animacoes\",\n \"operationId\": \"accessibility.configure\",\n \"params\": {\n \"enabled\": true,\n \"highContrast\": true,\n \"reduceMotion\": true,\n \"announcements\": {\n \"liveRegion\": \"polite\"\n }\n },\n \"isPositive\": true\n },\n {\n \"id\": \"require-removal-confirmation\",\n \"request\": \"Remover a coluna nome\",\n \"operationId\": \"column.remove\",\n \"target\": \"nome\",\n \"isPositive\": true\n }\n ]\n}",
21874
+ "content": "{\n \"schemaVersion\": \"1.0.0\",\n \"componentId\": \"praxis-table\",\n \"ownerPackage\": \"@praxisui/table\",\n \"configSchemaId\": \"TableConfig\",\n \"manifestVersion\": \"2.0.0\",\n \"runtimeInputs\": [\n {\n \"name\": \"config\",\n \"type\": \"TableConfig\",\n \"description\": \"Configuração completa da tabela\"\n },\n {\n \"name\": \"data\",\n \"type\": \"any[]\",\n \"description\": \"Dados a serem exibidos (modo client-side)\"\n },\n {\n \"name\": \"resourcePath\",\n \"type\": \"string\",\n \"description\": \"Caminho do recurso (API base)\"\n },\n {\n \"name\": \"queryContext\",\n \"type\": \"PraxisDataQueryContext\",\n \"description\": \"Contexto de consulta declarativo\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\",\n \"description\": \"Título da tabela\"\n },\n {\n \"name\": \"subtitle\",\n \"type\": \"string\",\n \"description\": \"Subtítulo da tabela\"\n },\n {\n \"name\": \"enableCustomization\",\n \"type\": \"boolean\",\n \"description\": \"Habilita modo de edição\"\n }\n ],\n \"editableTargets\": [\n {\n \"kind\": \"column\",\n \"resolver\": \"column-by-field\",\n \"description\": \"Colunas base da tabela\"\n },\n {\n \"kind\": \"computedColumn\",\n \"resolver\": \"column-by-field\",\n \"description\": \"Colunas calculadas\"\n },\n {\n \"kind\": \"renderer\",\n \"resolver\": \"renderer-in-column\",\n \"description\": \"Renderizador de célula\"\n },\n {\n \"kind\": \"conditionalRenderer\",\n \"resolver\": \"conditional-renderer-in-column\",\n \"description\": \"Renderizadores condicionais\"\n },\n {\n \"kind\": \"rowAction\",\n \"resolver\": \"action-in-row-config\",\n \"description\": \"Ações por linha\"\n },\n {\n \"kind\": \"toolbarAction\",\n \"resolver\": \"action-in-toolbar-config\",\n \"description\": \"Ações na barra de ferramentas\"\n },\n {\n \"kind\": \"toolbar\",\n \"resolver\": \"toolbar-config\",\n \"description\": \"Configuração da barra de ferramentas\"\n },\n {\n \"kind\": \"filter\",\n \"resolver\": \"filter-config\",\n \"description\": \"Configuração de filtragem\"\n },\n {\n \"kind\": \"grouping\",\n \"resolver\": \"grouping-config\",\n \"description\": \"Configuração de agrupamento\"\n },\n {\n \"kind\": \"selection\",\n \"resolver\": \"selection-config\",\n \"description\": \"Configuração de seleção\"\n },\n {\n \"kind\": \"export\",\n \"resolver\": \"export-config\",\n \"description\": \"Configuração de exportação\"\n },\n {\n \"kind\": \"appearance\",\n \"resolver\": \"appearance-config\",\n \"description\": \"Configurações visuais\"\n },\n {\n \"kind\": \"expansion\",\n \"resolver\": \"expansion-config\",\n \"description\": \"Configuração de detalhe/expansão\"\n },\n {\n \"kind\": \"rule\",\n \"resolver\": \"style-rule-in-column-or-row\",\n \"description\": \"Regras de estilo ou comportamento\"\n },\n {\n \"kind\": \"meta\",\n \"resolver\": \"table-meta-config\",\n \"description\": \"Metadados da configuracao\"\n },\n {\n \"kind\": \"bulkAction\",\n \"resolver\": \"action-in-bulk-config\",\n \"description\": \"Acoes em lote\"\n },\n {\n \"kind\": \"contextAction\",\n \"resolver\": \"action-in-context-config\",\n \"description\": \"Acoes de menu contextual\"\n },\n {\n \"kind\": \"pagination\",\n \"resolver\": \"pagination-config\",\n \"description\": \"Configuracao de paginacao\"\n },\n {\n \"kind\": \"sorting\",\n \"resolver\": \"sorting-config\",\n \"description\": \"Configuracao de ordenacao\"\n },\n {\n \"kind\": \"interaction\",\n \"resolver\": \"interaction-config\",\n \"description\": \"Configuracao de interacao\"\n },\n {\n \"kind\": \"loading\",\n \"resolver\": \"loading-config\",\n \"description\": \"Estados de carregamento\"\n },\n {\n \"kind\": \"emptyState\",\n \"resolver\": \"empty-state-config\",\n \"description\": \"Estado vazio\"\n },\n {\n \"kind\": \"aiAssistant\",\n \"resolver\": \"ai-assistant-config\",\n \"description\": \"Config path ai.assistant.enabled controlling the embedded table AI assistant entrypoint and session.\"\n },\n {\n \"kind\": \"resizing\",\n \"resolver\": \"resizing-config\",\n \"description\": \"Redimensionamento de colunas\"\n },\n {\n \"kind\": \"dragging\",\n \"resolver\": \"dragging-config\",\n \"description\": \"Reorganizacao por drag and drop\"\n },\n {\n \"kind\": \"editing\",\n \"resolver\": \"editing-config\",\n \"description\": \"Modo de edicao\"\n },\n {\n \"kind\": \"messages\",\n \"resolver\": \"messages-config\",\n \"description\": \"Mensagens da tabela\"\n },\n {\n \"kind\": \"localization\",\n \"resolver\": \"localization-config\",\n \"description\": \"Localizacao e formatos regionais\"\n },\n {\n \"kind\": \"performance\",\n \"resolver\": \"performance-config\",\n \"description\": \"Configuracoes de performance\"\n },\n {\n \"kind\": \"data\",\n \"resolver\": \"data-config\",\n \"description\": \"Configuracoes de dados\"\n },\n {\n \"kind\": \"runtimeOperation\",\n \"resolver\": \"table-runtime-operation-contract\",\n \"description\": \"Operacoes runtime revisaveis sem mutar a configuracao persistida\"\n },\n {\n \"kind\": \"accessibility\",\n \"resolver\": \"accessibility-config\",\n \"description\": \"Acessibilidade\"\n }\n ],\n \"operations\": [\n {\n \"operationId\": \"column.add\",\n \"title\": \"Adicionar coluna\",\n \"scope\": \"global\",\n \"targetKind\": \"column\",\n \"target\": {\n \"kind\": \"column\",\n \"resolver\": \"column-by-field\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"field\",\n \"header\"\n ],\n \"properties\": {\n \"field\": {\n \"type\": \"string\"\n },\n \"header\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"enum\": [\n \"string\",\n \"number\",\n \"date\",\n \"boolean\",\n \"currency\",\n \"percentage\",\n \"custom\"\n ],\n \"default\": \"string\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"append-unique\",\n \"path\": \"columns[]\",\n \"key\": \"field\"\n }\n ],\n \"validators\": [\n \"column-field-unique\"\n ],\n \"affectedPaths\": [\n \"columns[]\"\n ],\n \"submissionImpact\": \"affects-schema-backed-data\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"column.remove\",\n \"title\": \"Remover coluna\",\n \"scope\": \"column\",\n \"targetKind\": \"column\",\n \"target\": {\n \"kind\": \"column\",\n \"resolver\": \"column-by-field\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"properties\": {}\n },\n \"effects\": [\n {\n \"kind\": \"remove-by-key\",\n \"path\": \"columns[]\",\n \"key\": \"field\"\n }\n ],\n \"destructive\": true,\n \"requiresConfirmation\": true,\n \"validators\": [\n \"destructive-removal-confirmation\"\n ],\n \"affectedPaths\": [\n \"columns[]\"\n ],\n \"submissionImpact\": \"affects-schema-backed-data\",\n \"preconditions\": [\n \"config-initialized\",\n \"target-exists\"\n ]\n },\n {\n \"operationId\": \"column.header.set\",\n \"title\": \"Definir cabeçalho\",\n \"scope\": \"column\",\n \"targetKind\": \"column\",\n \"target\": {\n \"kind\": \"column\",\n \"resolver\": \"column-by-field\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"header\"\n ],\n \"properties\": {\n \"header\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-by-key\",\n \"path\": \"columns[]\",\n \"key\": \"field\"\n }\n ],\n \"validators\": [\n \"target-column-exists\"\n ],\n \"affectedPaths\": [\n \"columns[].header\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"preconditions\": [\n \"config-initialized\",\n \"target-exists\"\n ]\n },\n {\n \"operationId\": \"column.type.set\",\n \"title\": \"Definir tipo de dado\",\n \"scope\": \"column\",\n \"targetKind\": \"column\",\n \"target\": {\n \"kind\": \"column\",\n \"resolver\": \"column-by-field\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"type\"\n ],\n \"properties\": {\n \"type\": {}\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-by-key\",\n \"path\": \"columns[]\",\n \"key\": \"field\"\n }\n ],\n \"validators\": [\n \"target-column-exists\"\n ],\n \"affectedPaths\": [\n \"columns[].type\"\n ],\n \"submissionImpact\": \"affects-schema-backed-data\",\n \"preconditions\": [\n \"config-initialized\",\n \"target-exists\"\n ]\n },\n {\n \"operationId\": \"column.format.set\",\n \"title\": \"Definir formato\",\n \"scope\": \"column\",\n \"targetKind\": \"column\",\n \"target\": {\n \"kind\": \"column\",\n \"resolver\": \"column-by-field\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"format\"\n ],\n \"properties\": {\n \"format\": {\n \"type\": \"string\",\n \"enum\": [\n \"shortDate\",\n \"mediumDate\",\n \"longDate\",\n \"fullDate\",\n \"MMM/yyyy\",\n \"shortTime\",\n \"short\",\n \"yyyy-MM-dd\",\n \"dd/MM/yyyy\",\n \"yyyy-MM-dd HH:mm\",\n \"1.0-0\",\n \"1.1-1\",\n \"1.2-2\",\n \"1.0-3\",\n \"1.0-0|nosep\",\n \"BRL|symbol|2\",\n \"USD|symbol|2\",\n \"EUR|symbol|2\",\n \"BRL|code|2\",\n \"USD|code|0\",\n \"BRL|symbol|2|nosep\",\n \"EUR|symbol|2|nosep\",\n \"1.0-0|x100\",\n \"1.1-1|x100\",\n \"1.2-2|x100\",\n \"none\",\n \"uppercase\",\n \"lowercase\",\n \"titlecase\",\n \"capitalize\",\n \"uppercase|truncate|50|...\",\n \"000.000.000-00\",\n \"true-false\",\n \"yes-no\",\n \"active-inactive\",\n \"on-off\",\n \"enabled-disabled\",\n \"custom|Sim|Nao\"\n ],\n \"description\": \"Preset canônico do DataFormattingService.\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-by-key\",\n \"path\": \"columns[]\",\n \"key\": \"field\"\n }\n ],\n \"validators\": [\n \"target-column-exists\",\n \"format-preset-supported\"\n ],\n \"affectedPaths\": [\n \"columns[].format\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"preconditions\": [\n \"config-initialized\",\n \"target-exists\"\n ]\n },\n {\n \"operationId\": \"column.width.set\",\n \"title\": \"Definir largura da coluna\",\n \"scope\": \"column\",\n \"targetKind\": \"column\",\n \"target\": {\n \"kind\": \"column\",\n \"resolver\": \"column-by-field\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"width\"\n ],\n \"properties\": {\n \"width\": {\n \"type\": \"string\",\n \"pattern\": \"^(auto|\\\\d+(px|%|rem|em))$\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-by-key\",\n \"path\": \"columns[]\",\n \"key\": \"field\"\n }\n ],\n \"validators\": [\n \"target-column-exists\",\n \"column-width-valid\"\n ],\n \"affectedPaths\": [\n \"columns[].width\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"preconditions\": [\n \"config-initialized\",\n \"target-exists\"\n ]\n },\n {\n \"operationId\": \"column.align.set\",\n \"title\": \"Definir alinhamento da coluna\",\n \"scope\": \"column\",\n \"targetKind\": \"column\",\n \"target\": {\n \"kind\": \"column\",\n \"resolver\": \"column-by-field\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"align\"\n ],\n \"properties\": {\n \"align\": {\n \"enum\": [\n \"left\",\n \"center\",\n \"right\"\n ]\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-by-key\",\n \"path\": \"columns[]\",\n \"key\": \"field\"\n }\n ],\n \"validators\": [\n \"target-column-exists\"\n ],\n \"affectedPaths\": [\n \"columns[].align\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"preconditions\": [\n \"config-initialized\",\n \"target-exists\"\n ]\n },\n {\n \"operationId\": \"column.sticky.set\",\n \"title\": \"Definir sticky da coluna\",\n \"scope\": \"column\",\n \"targetKind\": \"column\",\n \"target\": {\n \"kind\": \"column\",\n \"resolver\": \"column-by-field\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"sticky\"\n ],\n \"properties\": {\n \"sticky\": {\n \"enum\": [\n \"start\",\n \"end\",\n true,\n false\n ]\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-by-key\",\n \"path\": \"columns[]\",\n \"key\": \"field\"\n }\n ],\n \"validators\": [\n \"target-column-exists\"\n ],\n \"affectedPaths\": [\n \"columns[].sticky\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"preconditions\": [\n \"config-initialized\",\n \"target-exists\"\n ]\n },\n {\n \"operationId\": \"column.sortable.set\",\n \"title\": \"Definir ordenação da coluna\",\n \"scope\": \"column\",\n \"targetKind\": \"column\",\n \"target\": {\n \"kind\": \"column\",\n \"resolver\": \"column-by-field\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"sortable\"\n ],\n \"properties\": {\n \"sortable\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-by-key\",\n \"path\": \"columns[]\",\n \"key\": \"field\"\n }\n ],\n \"validators\": [\n \"target-column-exists\"\n ],\n \"affectedPaths\": [\n \"columns[].sortable\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\",\n \"target-exists\"\n ]\n },\n {\n \"operationId\": \"column.filterable.set\",\n \"title\": \"Definir filtro da coluna\",\n \"scope\": \"column\",\n \"targetKind\": \"column\",\n \"target\": {\n \"kind\": \"column\",\n \"resolver\": \"column-by-field\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"filterable\"\n ],\n \"properties\": {\n \"filterable\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-by-key\",\n \"path\": \"columns[]\",\n \"key\": \"field\"\n }\n ],\n \"validators\": [\n \"target-column-exists\"\n ],\n \"affectedPaths\": [\n \"columns[].filterable\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\",\n \"target-exists\"\n ]\n },\n {\n \"operationId\": \"column.style.set\",\n \"title\": \"Definir estilo da célula\",\n \"scope\": \"column\",\n \"targetKind\": \"column\",\n \"target\": {\n \"kind\": \"column\",\n \"resolver\": \"column-by-field\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"style\"\n ],\n \"properties\": {\n \"style\": {\n \"type\": \"string\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-by-key\",\n \"path\": \"columns[]\",\n \"key\": \"field\"\n }\n ],\n \"validators\": [\n \"target-column-exists\",\n \"css-style-safe\"\n ],\n \"affectedPaths\": [\n \"columns[].style\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"preconditions\": [\n \"config-initialized\",\n \"target-exists\"\n ]\n },\n {\n \"operationId\": \"column.headerStyle.set\",\n \"title\": \"Definir estilo do cabeçalho\",\n \"scope\": \"column\",\n \"targetKind\": \"column\",\n \"target\": {\n \"kind\": \"column\",\n \"resolver\": \"column-by-field\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"headerStyle\"\n ],\n \"properties\": {\n \"headerStyle\": {\n \"type\": \"string\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-by-key\",\n \"path\": \"columns[]\",\n \"key\": \"field\"\n }\n ],\n \"validators\": [\n \"target-column-exists\",\n \"css-style-safe\"\n ],\n \"affectedPaths\": [\n \"columns[].headerStyle\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"preconditions\": [\n \"config-initialized\",\n \"target-exists\"\n ]\n },\n {\n \"operationId\": \"column.valueMapping.set\",\n \"title\": \"Definir mapeamento de valores\",\n \"scope\": \"column\",\n \"targetKind\": \"column\",\n \"target\": {\n \"kind\": \"column\",\n \"resolver\": \"column-by-field\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"valueMapping\"\n ],\n \"properties\": {\n \"valueMapping\": {\n \"type\": \"object\",\n \"minProperties\": 1\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-by-key\",\n \"path\": \"columns[]\",\n \"key\": \"field\"\n }\n ],\n \"validators\": [\n \"target-column-exists\",\n \"value-mapping-valid\"\n ],\n \"affectedPaths\": [\n \"columns[].valueMapping\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"preconditions\": [\n \"config-initialized\",\n \"target-exists\"\n ]\n },\n {\n \"operationId\": \"column.order.set\",\n \"title\": \"Definir ordem visual\",\n \"scope\": \"column\",\n \"targetKind\": \"column\",\n \"target\": {\n \"kind\": \"column\",\n \"resolver\": \"column-by-field\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"order\"\n ],\n \"properties\": {\n \"order\": {\n \"type\": \"number\",\n \"minimum\": 0\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-by-key\",\n \"path\": \"columns[]\",\n \"key\": \"field\"\n }\n ],\n \"validators\": [\n \"target-column-exists\"\n ],\n \"affectedPaths\": [\n \"columns[].order\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"preconditions\": [\n \"config-initialized\",\n \"target-exists\"\n ]\n },\n {\n \"operationId\": \"column.visibility.set\",\n \"title\": \"Definir visibilidade\",\n \"scope\": \"column\",\n \"targetKind\": \"column\",\n \"target\": {\n \"kind\": \"column\",\n \"resolver\": \"column-by-field\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"visible\"\n ],\n \"properties\": {\n \"visible\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-by-key\",\n \"path\": \"columns[]\",\n \"key\": \"field\"\n }\n ],\n \"validators\": [\n \"target-column-exists\"\n ],\n \"affectedPaths\": [\n \"columns[].visible\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"preconditions\": [\n \"config-initialized\",\n \"target-exists\"\n ]\n },\n {\n \"operationId\": \"column.computed.add\",\n \"title\": \"Adicionar coluna calculada\",\n \"scope\": \"global\",\n \"targetKind\": \"computedColumn\",\n \"target\": {\n \"kind\": \"computedColumn\",\n \"resolver\": \"column-by-field\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"field\",\n \"header\",\n \"expression\"\n ],\n \"properties\": {\n \"field\": {\n \"type\": \"string\",\n \"description\": \"Stable camelCase field id for the new computed column. When the user supplies a header/name, derive this id from that header instead of asking for clarification.\"\n },\n \"header\": {\n \"type\": \"string\",\n \"description\": \"User-facing label for the computed column.\"\n },\n \"expression\": {\n \"type\": \"object\",\n \"description\": \"AST Json Logic\"\n },\n \"outputType\": {}\n }\n },\n \"effects\": [\n {\n \"kind\": \"append-unique\",\n \"path\": \"columns[]\",\n \"key\": \"field\"\n }\n ],\n \"validators\": [\n \"column-field-unique\",\n \"computed-expression-valid\"\n ],\n \"affectedPaths\": [\n \"columns[]\"\n ],\n \"submissionImpact\": \"affects-schema-backed-data\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"column.renderer.set\",\n \"title\": \"Definir renderizador\",\n \"scope\": \"column\",\n \"targetKind\": \"renderer\",\n \"target\": {\n \"kind\": \"renderer\",\n \"resolver\": \"renderer-in-column\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"type\"\n ],\n \"properties\": {\n \"type\": {\n \"enum\": [\n \"icon\",\n \"image\",\n \"badge\",\n \"link\",\n \"button\",\n \"chip\",\n \"progress\",\n \"avatar\",\n \"toggle\",\n \"menu\",\n \"rating\",\n \"html\",\n \"compose\"\n ]\n },\n \"typeExpr\": {\n \"type\": \"string\"\n },\n \"button\": {\n \"type\": \"object\",\n \"required\": [\n \"action\"\n ],\n \"properties\": {\n \"label\": {\n \"type\": \"string\"\n },\n \"labelField\": {\n \"type\": \"string\"\n },\n \"icon\": {\n \"type\": \"string\"\n },\n \"color\": {\n \"enum\": [\n \"primary\",\n \"accent\",\n \"warn\"\n ]\n },\n \"variant\": {\n \"enum\": [\n \"filled\",\n \"outlined\",\n \"text\"\n ]\n },\n \"size\": {\n \"enum\": [\n \"sm\",\n \"md\",\n \"lg\"\n ]\n },\n \"ariaLabel\": {\n \"type\": \"string\"\n },\n \"disabledCondition\": {\n \"type\": \"object\",\n \"description\": \"AST Json Logic\"\n },\n \"action\": {\n \"type\": \"object\",\n \"required\": [\n \"id\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"payloadExpr\": {\n \"type\": \"string\"\n }\n }\n }\n }\n },\n \"menu\": {\n \"type\": \"object\",\n \"required\": [\n \"itemsExpr\"\n ],\n \"properties\": {\n \"itemsExpr\": {\n \"type\": \"string\"\n },\n \"ariaLabel\": {\n \"type\": \"string\"\n }\n }\n },\n \"link\": {\n \"type\": \"object\",\n \"anyOf\": [\n {\n \"required\": [\n \"href\"\n ]\n },\n {\n \"required\": [\n \"hrefField\"\n ]\n }\n ],\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n },\n \"textField\": {\n \"type\": \"string\"\n },\n \"href\": {\n \"type\": \"string\"\n },\n \"hrefField\": {\n \"type\": \"string\"\n },\n \"target\": {\n \"enum\": [\n \"_blank\",\n \"_self\",\n \"_parent\",\n \"_top\"\n ]\n },\n \"rel\": {\n \"type\": \"string\"\n }\n }\n },\n \"progress\": {\n \"type\": \"object\",\n \"required\": [\n \"valueExpr\"\n ],\n \"properties\": {\n \"valueExpr\": {\n \"type\": \"string\"\n },\n \"color\": {\n \"type\": \"string\"\n },\n \"showLabel\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"badge\": {\n \"type\": \"object\",\n \"anyOf\": [\n {\n \"required\": [\n \"text\"\n ]\n },\n {\n \"required\": [\n \"textField\"\n ]\n }\n ],\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n },\n \"textField\": {\n \"type\": \"string\"\n },\n \"color\": {\n \"type\": \"string\"\n },\n \"variant\": {\n \"enum\": [\n \"filled\",\n \"outlined\",\n \"soft\",\n \"plain\"\n ]\n },\n \"icon\": {\n \"type\": \"string\"\n },\n \"tooltip\": {\n \"type\": \"object\",\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n },\n \"position\": {\n \"enum\": [\n \"top\",\n \"right\",\n \"bottom\",\n \"left\"\n ]\n },\n \"bgColor\": {\n \"type\": \"string\"\n },\n \"delayMs\": {\n \"type\": \"number\"\n }\n }\n }\n }\n },\n \"chip\": {\n \"type\": \"object\",\n \"anyOf\": [\n {\n \"required\": [\n \"text\"\n ]\n },\n {\n \"required\": [\n \"textField\"\n ]\n }\n ],\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n },\n \"textField\": {\n \"type\": \"string\"\n },\n \"color\": {\n \"type\": \"string\"\n },\n \"variant\": {\n \"enum\": [\n \"filled\",\n \"outlined\"\n ]\n },\n \"icon\": {\n \"type\": \"string\"\n },\n \"tooltip\": {\n \"type\": \"object\",\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n },\n \"position\": {\n \"enum\": [\n \"top\",\n \"right\",\n \"bottom\",\n \"left\"\n ]\n },\n \"bgColor\": {\n \"type\": \"string\"\n },\n \"delayMs\": {\n \"type\": \"number\"\n }\n }\n }\n }\n },\n \"icon\": {\n \"type\": \"object\",\n \"anyOf\": [\n {\n \"required\": [\n \"name\"\n ]\n },\n {\n \"required\": [\n \"nameField\"\n ]\n }\n ],\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"nameField\": {\n \"type\": \"string\"\n },\n \"color\": {\n \"type\": \"string\"\n },\n \"size\": {\n \"type\": \"number\"\n },\n \"ariaLabel\": {\n \"type\": \"string\"\n }\n }\n },\n \"image\": {\n \"type\": \"object\",\n \"anyOf\": [\n {\n \"required\": [\n \"src\"\n ]\n },\n {\n \"required\": [\n \"srcField\"\n ]\n }\n ],\n \"properties\": {\n \"src\": {\n \"type\": \"string\"\n },\n \"srcField\": {\n \"type\": \"string\"\n },\n \"alt\": {\n \"type\": \"string\"\n },\n \"altField\": {\n \"type\": \"string\"\n },\n \"width\": {\n \"type\": \"number\"\n },\n \"height\": {\n \"type\": \"number\"\n },\n \"shape\": {\n \"enum\": [\n \"square\",\n \"rounded\",\n \"circle\"\n ]\n },\n \"fit\": {\n \"enum\": [\n \"cover\",\n \"contain\"\n ]\n },\n \"lazy\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"avatar\": {\n \"type\": \"object\",\n \"anyOf\": [\n {\n \"required\": [\n \"src\"\n ]\n },\n {\n \"required\": [\n \"srcField\"\n ]\n },\n {\n \"required\": [\n \"initialsField\"\n ]\n },\n {\n \"required\": [\n \"initialsExpr\"\n ]\n }\n ],\n \"properties\": {\n \"src\": {\n \"type\": \"string\"\n },\n \"srcField\": {\n \"type\": \"string\"\n },\n \"alt\": {\n \"type\": \"string\"\n },\n \"altField\": {\n \"type\": \"string\"\n },\n \"initialsField\": {\n \"type\": \"string\"\n },\n \"initialsExpr\": {\n \"type\": \"string\"\n },\n \"shape\": {\n \"enum\": [\n \"circle\",\n \"square\",\n \"rounded\"\n ]\n },\n \"size\": {\n \"type\": \"number\"\n },\n \"backgroundColor\": {\n \"type\": \"string\"\n },\n \"textColor\": {\n \"type\": \"string\"\n }\n }\n },\n \"toggle\": {\n \"type\": \"object\",\n \"required\": [\n \"stateExpr\",\n \"action\"\n ],\n \"properties\": {\n \"stateExpr\": {\n \"type\": \"string\"\n },\n \"disabledCondition\": {\n \"type\": \"object\",\n \"description\": \"AST Json Logic\"\n },\n \"ariaLabel\": {\n \"type\": \"string\"\n },\n \"action\": {\n \"type\": \"object\",\n \"required\": [\n \"id\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"payloadExpr\": {\n \"type\": \"string\"\n }\n }\n }\n }\n },\n \"rating\": {\n \"type\": \"object\",\n \"required\": [\n \"valueExpr\"\n ],\n \"properties\": {\n \"valueExpr\": {\n \"type\": \"string\"\n },\n \"max\": {\n \"type\": \"number\"\n },\n \"color\": {\n \"type\": \"string\"\n },\n \"outlineColor\": {\n \"type\": \"string\"\n },\n \"size\": {\n \"enum\": [\n \"small\",\n \"medium\",\n \"large\"\n ]\n },\n \"ariaLabel\": {\n \"type\": \"string\"\n }\n }\n },\n \"html\": {\n \"type\": \"object\",\n \"required\": [\n \"template\"\n ],\n \"properties\": {\n \"template\": {\n \"type\": \"string\"\n },\n \"sanitize\": {\n \"enum\": [\n \"strict\",\n \"basic\"\n ]\n },\n \"emptyFallback\": {\n \"type\": \"string\"\n }\n }\n },\n \"compose\": {\n \"type\": \"object\",\n \"required\": [\n \"items\"\n ],\n \"properties\": {\n \"items\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"items\": {\n \"type\": \"object\",\n \"required\": [\n \"type\"\n ],\n \"properties\": {\n \"type\": {}\n }\n }\n },\n \"layout\": {\n \"type\": \"object\",\n \"properties\": {\n \"gap\": {\n \"type\": \"number\"\n },\n \"direction\": {\n \"enum\": [\n \"row\",\n \"column\"\n ]\n },\n \"align\": {\n \"enum\": [\n \"start\",\n \"center\",\n \"end\"\n ]\n },\n \"wrap\": {\n \"type\": \"boolean\"\n },\n \"ellipsis\": {\n \"type\": \"boolean\"\n }\n }\n }\n }\n }\n },\n \"allOf\": [\n {\n \"if\": {\n \"properties\": {\n \"type\": {\n \"const\": \"button\"\n }\n }\n },\n \"then\": {\n \"required\": [\n \"button\"\n ]\n }\n },\n {\n \"if\": {\n \"properties\": {\n \"type\": {\n \"const\": \"menu\"\n }\n }\n },\n \"then\": {\n \"required\": [\n \"menu\"\n ]\n }\n },\n {\n \"if\": {\n \"properties\": {\n \"type\": {\n \"const\": \"link\"\n }\n }\n },\n \"then\": {\n \"required\": [\n \"link\"\n ]\n }\n },\n {\n \"if\": {\n \"properties\": {\n \"type\": {\n \"const\": \"progress\"\n }\n }\n },\n \"then\": {\n \"required\": [\n \"progress\"\n ]\n }\n },\n {\n \"if\": {\n \"properties\": {\n \"type\": {\n \"const\": \"badge\"\n }\n }\n },\n \"then\": {\n \"required\": [\n \"badge\"\n ]\n }\n },\n {\n \"if\": {\n \"properties\": {\n \"type\": {\n \"const\": \"chip\"\n }\n }\n },\n \"then\": {\n \"required\": [\n \"chip\"\n ]\n }\n },\n {\n \"if\": {\n \"properties\": {\n \"type\": {\n \"const\": \"icon\"\n }\n }\n },\n \"then\": {\n \"required\": [\n \"icon\"\n ]\n }\n },\n {\n \"if\": {\n \"properties\": {\n \"type\": {\n \"const\": \"image\"\n }\n }\n },\n \"then\": {\n \"required\": [\n \"image\"\n ]\n }\n },\n {\n \"if\": {\n \"properties\": {\n \"type\": {\n \"const\": \"avatar\"\n }\n }\n },\n \"then\": {\n \"required\": [\n \"avatar\"\n ]\n }\n },\n {\n \"if\": {\n \"properties\": {\n \"type\": {\n \"const\": \"toggle\"\n }\n }\n },\n \"then\": {\n \"required\": [\n \"toggle\"\n ]\n }\n },\n {\n \"if\": {\n \"properties\": {\n \"type\": {\n \"const\": \"rating\"\n }\n }\n },\n \"then\": {\n \"required\": [\n \"rating\"\n ]\n }\n },\n {\n \"if\": {\n \"properties\": {\n \"type\": {\n \"const\": \"html\"\n }\n }\n },\n \"then\": {\n \"required\": [\n \"html\"\n ]\n }\n },\n {\n \"if\": {\n \"properties\": {\n \"type\": {\n \"const\": \"compose\"\n }\n }\n },\n \"then\": {\n \"required\": [\n \"compose\"\n ]\n }\n }\n ]\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"columns[].renderer\"\n }\n ],\n \"validators\": [\n \"target-column-exists\",\n \"renderer-type-supported\",\n \"renderer-config-match\",\n \"editor-round-trip-preserve\"\n ],\n \"affectedPaths\": [\n \"columns[].renderer\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"preconditions\": [\n \"config-initialized\",\n \"target-exists\"\n ]\n },\n {\n \"operationId\": \"column.conditionalRenderer.add\",\n \"title\": \"Adicionar renderizador condicional\",\n \"scope\": \"column\",\n \"targetKind\": \"conditionalRenderer\",\n \"target\": {\n \"kind\": \"conditionalRenderer\",\n \"resolver\": \"conditional-renderer-in-column\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"condition\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"description\": \"Identificador estável do renderer condicional (usado para deduplicação)\"\n },\n \"condition\": {\n \"type\": \"object\",\n \"description\": \"AST Json Logic\"\n },\n \"tooltip\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"text\": {\n \"type\": \"string\"\n },\n \"position\": {\n \"enum\": [\n \"top\",\n \"right\",\n \"bottom\",\n \"left\"\n ]\n },\n \"bgColor\": {\n \"type\": \"string\"\n },\n \"delayMs\": {\n \"type\": \"number\"\n }\n }\n },\n \"animation\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\",\n \"description\": \"false desativa a animacao sem remover a regra.\"\n },\n \"preset\": {\n \"enum\": [\n \"info-soft\",\n \"success-confirm\",\n \"warning-attention\",\n \"critical-alert\",\n \"audit-review\",\n \"sync-pending\",\n \"pulse-soft\",\n \"fade-soft\",\n \"sla-warning\",\n \"sla-breach\",\n \"risk-elevated\",\n \"risk-critical\",\n \"audit-warning\",\n \"sync-warning\"\n ],\n \"description\": \"Preset semantico recomendado. Preferir preset antes de type bruto.\"\n },\n \"type\": {\n \"enum\": [\n \"pulse\",\n \"blink\",\n \"grow\",\n \"fade\",\n \"slide-in\",\n \"border-pulse\"\n ]\n },\n \"durationMs\": {\n \"type\": \"number\"\n },\n \"trigger\": {\n \"enum\": [\n \"onChange\",\n \"onAppear\",\n \"onHover\",\n \"onConditionEnter\",\n \"onConditionExit\",\n \"onDataRefresh\"\n ]\n },\n \"repeat\": {\n \"oneOf\": [\n {\n \"enum\": [\n \"once\",\n \"loop\",\n \"infinite\"\n ]\n },\n {\n \"type\": \"number\"\n }\n ]\n },\n \"delayMs\": {\n \"type\": \"number\"\n },\n \"intensity\": {\n \"enum\": [\n \"subtle\",\n \"normal\",\n \"strong\"\n ]\n }\n }\n },\n \"effects\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"scope\": {\n \"enum\": [\n \"cell\",\n \"row\",\n \"column\",\n \"table\"\n ]\n },\n \"description\": {\n \"type\": \"string\"\n },\n \"estilo\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"color\": {\n \"type\": \"string\"\n },\n \"bgColor\": {\n \"type\": \"string\"\n },\n \"bold\": {\n \"type\": \"boolean\"\n },\n \"italic\": {\n \"type\": \"boolean\"\n },\n \"underline\": {\n \"type\": \"boolean\"\n },\n \"transform\": {\n \"enum\": [\n \"uppercase\",\n \"lowercase\",\n \"capitalize\",\n null\n ]\n },\n \"opacity\": {\n \"type\": \"number\"\n },\n \"fontScale\": {\n \"type\": \"number\"\n }\n }\n },\n \"layout\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"border\": {\n \"enum\": [\n \"none\",\n \"left\",\n \"right\",\n \"top\",\n \"bottom\",\n \"all\"\n ]\n },\n \"borderColor\": {\n \"type\": \"string\"\n },\n \"borderWidth\": {\n \"type\": \"number\"\n },\n \"padding\": {\n \"type\": \"number\"\n },\n \"align\": {\n \"enum\": [\n \"start\",\n \"center\",\n \"end\"\n ]\n },\n \"elevation\": {\n \"type\": \"number\"\n }\n }\n },\n \"iconBadge\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"icon\": {\n \"type\": \"string\"\n },\n \"iconColor\": {\n \"type\": \"string\"\n },\n \"iconPos\": {\n \"enum\": [\n \"before\",\n \"after\",\n \"overlay\"\n ]\n },\n \"badgeText\": {\n \"type\": \"string\"\n },\n \"badgeStyle\": {\n \"enum\": [\n \"solid\",\n \"soft\",\n \"outline\"\n ]\n },\n \"badgeColor\": {\n \"type\": \"string\"\n }\n }\n },\n \"background\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"color\": {\n \"type\": \"string\"\n },\n \"gradient\": {\n \"type\": \"string\"\n },\n \"alpha\": {\n \"type\": \"number\"\n },\n \"blur\": {\n \"type\": \"number\"\n }\n }\n },\n \"cssClass\": {\n \"type\": \"string\"\n },\n \"inlineStyle\": {\n \"type\": \"string\"\n }\n }\n }\n },\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"description\": {\n \"type\": \"string\"\n }\n },\n \"anyOf\": [\n {\n \"required\": [\n \"renderer\"\n ]\n },\n {\n \"required\": [\n \"tooltip\"\n ]\n },\n {\n \"required\": [\n \"animation\"\n ]\n },\n {\n \"required\": [\n \"effects\"\n ]\n }\n ]\n },\n \"effects\": [\n {\n \"kind\": \"append-unique\",\n \"path\": \"columns[].conditionalRenderers[]\",\n \"key\": \"id\"\n }\n ],\n \"validators\": [\n \"target-column-exists\",\n \"computed-expression-valid\",\n \"renderer-config-match\"\n ],\n \"affectedPaths\": [\n \"columns[].conditionalRenderers[]\",\n \"columns[].conditionalRenderers[].tooltip\",\n \"columns[].conditionalRenderers[].animation\",\n \"columns[].conditionalRenderers[].effects\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"preconditions\": [\n \"config-initialized\",\n \"target-exists\"\n ]\n },\n {\n \"operationId\": \"column.conditionalStyle.add\",\n \"title\": \"Adicionar regra de estilo condicional na coluna\",\n \"scope\": \"column\",\n \"targetKind\": \"rule\",\n \"target\": {\n \"kind\": \"rule\",\n \"resolver\": \"style-rule-in-column-or-row\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"condition\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"description\": \"Identificador estável da regra de estilo da coluna\"\n },\n \"condition\": {\n \"type\": \"object\",\n \"description\": \"AST Json Logic\"\n },\n \"cssClass\": {\n \"type\": \"string\"\n },\n \"style\": {\n \"type\": \"object\"\n },\n \"tooltip\": {\n \"type\": \"object\"\n },\n \"effects\": {\n \"type\": \"array\"\n },\n \"description\": {\n \"type\": \"string\"\n }\n },\n \"anyOf\": [\n {\n \"required\": [\n \"cssClass\"\n ]\n },\n {\n \"required\": [\n \"style\"\n ]\n },\n {\n \"required\": [\n \"tooltip\"\n ]\n },\n {\n \"required\": [\n \"effects\"\n ]\n }\n ]\n },\n \"effects\": [\n {\n \"kind\": \"append-unique\",\n \"path\": \"columns[].conditionalStyles[]\",\n \"key\": \"id\"\n }\n ],\n \"validators\": [\n \"target-column-exists\",\n \"computed-expression-valid\",\n \"conditional-style-valid\"\n ],\n \"affectedPaths\": [\n \"columns[].conditionalStyles[]\",\n \"columns[].conditionalStyles[].effects\",\n \"columns[].conditionalStyles[].tooltip\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"preconditions\": [\n \"config-initialized\",\n \"target-exists\"\n ]\n },\n {\n \"operationId\": \"row.styleRule.add\",\n \"title\": \"Adicionar regra de estilo de linha\",\n \"scope\": \"global\",\n \"targetKind\": \"rule\",\n \"target\": {\n \"kind\": \"rule\",\n \"resolver\": \"style-rule-in-column-or-row\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"condition\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"description\": \"Identificador estável da regra (usado para deduplicação via append-unique)\"\n },\n \"condition\": {\n \"type\": \"object\",\n \"description\": \"AST Json Logic\"\n },\n \"style\": {\n \"type\": \"object\",\n \"description\": \"Estilo CSS (Record<string, string>)\"\n },\n \"cssClass\": {\n \"type\": \"string\"\n },\n \"effects\": {\n \"type\": \"array\"\n },\n \"description\": {\n \"type\": \"string\"\n }\n },\n \"anyOf\": [\n {\n \"required\": [\n \"cssClass\"\n ]\n },\n {\n \"required\": [\n \"style\"\n ]\n },\n {\n \"required\": [\n \"effects\"\n ]\n }\n ]\n },\n \"effects\": [\n {\n \"kind\": \"append-unique\",\n \"path\": \"rowConditionalStyles[]\",\n \"key\": \"id\"\n }\n ],\n \"validators\": [\n \"computed-expression-valid\"\n ],\n \"affectedPaths\": [\n \"rowConditionalStyles[]\",\n \"rowConditionalStyles[].effects\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"row.conditionalRenderer.add\",\n \"title\": \"Adicionar renderizador condicional de linha\",\n \"scope\": \"global\",\n \"targetKind\": \"conditionalRenderer\",\n \"target\": {\n \"kind\": \"conditionalRenderer\",\n \"resolver\": \"conditional-renderer-in-row\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"condition\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"description\": \"Identificador estavel da regra de renderer de linha\"\n },\n \"condition\": {\n \"type\": \"object\",\n \"description\": \"AST Json Logic\"\n },\n \"tooltip\": {\n \"type\": \"object\",\n \"description\": \"Tooltip de linha\"\n },\n \"effects\": {\n \"type\": \"array\"\n },\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"description\": {\n \"type\": \"string\"\n }\n },\n \"anyOf\": [\n {\n \"required\": [\n \"tooltip\"\n ]\n },\n {\n \"required\": [\n \"animation\"\n ]\n },\n {\n \"required\": [\n \"effects\"\n ]\n }\n ]\n },\n \"effects\": [\n {\n \"kind\": \"append-unique\",\n \"path\": \"rowConditionalRenderers[]\",\n \"key\": \"id\"\n }\n ],\n \"validators\": [\n \"computed-expression-valid\"\n ],\n \"affectedPaths\": [\n \"rowConditionalRenderers[]\",\n \"rowConditionalRenderers[].condition\",\n \"rowConditionalRenderers[].tooltip\",\n \"rowConditionalRenderers[].animation\",\n \"rowConditionalRenderers[].effects\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"toolbar.visibility.set\",\n \"title\": \"Definir visibilidade da toolbar\",\n \"scope\": \"global\",\n \"targetKind\": \"toolbar\",\n \"target\": {\n \"kind\": \"toolbar\",\n \"resolver\": \"toolbar-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"visible\"\n ],\n \"properties\": {\n \"visible\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"toolbar\"\n }\n ],\n \"affectedPaths\": [\n \"toolbar.visible\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"toolbar.action.add\",\n \"title\": \"Adicionar ação na toolbar\",\n \"scope\": \"global\",\n \"targetKind\": \"toolbarAction\",\n \"target\": {\n \"kind\": \"toolbarAction\",\n \"resolver\": \"action-in-toolbar-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"label\",\n \"action\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"label\": {\n \"type\": \"string\"\n },\n \"action\": {\n \"type\": \"string\"\n },\n \"icon\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"enum\": [\n \"button\",\n \"icon\",\n \"menu\"\n ],\n \"default\": \"button\"\n },\n \"visibleWhen\": {\n \"type\": \"object\",\n \"description\": \"AST Json Logic\"\n },\n \"globalAction\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"actionId\": {\n \"type\": \"string\",\n \"enum\": [\n \"toast.success\",\n \"toast.error\",\n \"dialog.alert\",\n \"dialog.open\",\n \"navigation.openExternal\",\n \"navigation.openRoute\",\n \"api.post\",\n \"api.patch\"\n ]\n },\n \"payload\": {\n \"type\": \"object\"\n },\n \"payloadExpr\": {\n \"type\": \"string\"\n }\n }\n },\n \"effects\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"required\": [\n \"kind\",\n \"globalAction\"\n ],\n \"additionalProperties\": false,\n \"properties\": {\n \"kind\": {\n \"enum\": [\n \"global-action\"\n ]\n }\n }\n }\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"append-unique\",\n \"path\": \"toolbar.actions[]\",\n \"key\": \"id\"\n }\n ],\n \"validators\": [\n \"toolbar-action-id-unique\"\n ],\n \"affectedPaths\": [\n \"toolbar.actions[]\",\n \"toolbar.actions[].visibleWhen\",\n \"toolbar.actions[].effects\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"rowAction.add\",\n \"title\": \"Adicionar ação de linha\",\n \"scope\": \"global\",\n \"targetKind\": \"rowAction\",\n \"target\": {\n \"kind\": \"rowAction\",\n \"resolver\": \"action-in-row-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"label\",\n \"action\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"label\": {\n \"type\": \"string\"\n },\n \"action\": {\n \"type\": \"string\"\n },\n \"icon\": {\n \"type\": \"string\"\n },\n \"color\": {\n \"type\": \"string\"\n },\n \"visibleWhen\": {\n \"type\": \"object\",\n \"description\": \"AST Json Logic\"\n },\n \"disabledWhen\": {\n \"type\": \"object\",\n \"description\": \"AST Json Logic\"\n },\n \"recordSurface\": {\n \"type\": \"object\",\n \"description\": \"ResourceSurfaceCatalogItem canonico preservado para abrir uma superficie relacionada ao registro da linha clicada.\"\n },\n \"effects\": {\n \"type\": \"array\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"append-unique\",\n \"path\": \"actions.row.actions[]\",\n \"key\": \"id\"\n }\n ],\n \"validators\": [\n \"row-action-id-unique\"\n ],\n \"affectedPaths\": [\n \"actions.row.actions[]\",\n \"actions.row.actions[].visibleWhen\",\n \"actions.row.actions[].disabledWhen\",\n \"actions.row.actions[].effects\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"bulkAction.add\",\n \"title\": \"Adicionar ação em lote\",\n \"scope\": \"global\",\n \"targetKind\": \"bulkAction\",\n \"target\": {\n \"kind\": \"bulkAction\",\n \"resolver\": \"action-in-bulk-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"label\",\n \"action\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"label\": {\n \"type\": \"string\"\n },\n \"action\": {\n \"type\": \"string\"\n },\n \"icon\": {\n \"type\": \"string\"\n },\n \"color\": {\n \"type\": \"string\"\n },\n \"effects\": {\n \"type\": \"array\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"append-unique\",\n \"path\": \"actions.bulk.actions[]\",\n \"key\": \"id\"\n }\n ],\n \"validators\": [\n \"bulk-action-id-unique\"\n ],\n \"affectedPaths\": [\n \"actions.bulk.actions[]\",\n \"actions.bulk.actions[].effects\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"export.enabled.set\",\n \"title\": \"Habilitar exportação\",\n \"scope\": \"global\",\n \"targetKind\": \"export\",\n \"target\": {\n \"kind\": \"export\",\n \"resolver\": \"export-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"enabled\"\n ],\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"formats\": {\n \"type\": \"array\",\n \"items\": {\n \"enum\": [\n \"excel\",\n \"pdf\",\n \"csv\",\n \"json\"\n ]\n }\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"export\"\n }\n ],\n \"affectedPaths\": [\n \"export.enabled\",\n \"export.formats\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"filter.advanced.configure\",\n \"title\": \"Configurar filtros avançados\",\n \"scope\": \"global\",\n \"targetKind\": \"filter\",\n \"target\": {\n \"kind\": \"filter\",\n \"resolver\": \"filter-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"enabled\"\n ],\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"queryBuilder\": {\n \"type\": \"boolean\"\n },\n \"savePresets\": {\n \"type\": \"boolean\"\n },\n \"settings\": {\n \"type\": \"object\",\n \"properties\": {\n \"mode\": {\n \"enum\": [\n \"filter\"\n ]\n },\n \"showAdvanced\": {\n \"type\": \"boolean\"\n },\n \"allowSaveTags\": {\n \"type\": \"boolean\"\n },\n \"alwaysVisibleFields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"selectedFieldIds\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"alwaysVisibleFieldMetadataOverrides\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"type\": \"object\"\n }\n },\n \"changeDebounceMs\": {\n \"type\": \"number\",\n \"minimum\": 0\n },\n \"useInlineSearchableSelectVariant\": {\n \"type\": \"boolean\"\n },\n \"useInlineRangeVariant\": {\n \"type\": \"boolean\"\n },\n \"useInlineDateVariant\": {\n \"type\": \"boolean\"\n },\n \"useInlineDateRangeVariant\": {\n \"type\": \"boolean\"\n }\n }\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"set-value\",\n \"path\": \"behavior.filtering.enabled\",\n \"value\": true\n },\n {\n \"kind\": \"merge-object\",\n \"path\": \"behavior.filtering.advancedFilters\"\n }\n ],\n \"affectedPaths\": [\n \"behavior.filtering.enabled\",\n \"behavior.filtering.advancedFilters.enabled\",\n \"behavior.filtering.advancedFilters.settings\"\n ],\n \"validators\": [\n \"filter-fields-exist\",\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"filter.advanced.fields.add\",\n \"title\": \"Adicionar campos aos filtros avançados\",\n \"scope\": \"global\",\n \"targetKind\": \"filter\",\n \"target\": {\n \"kind\": \"filter\",\n \"resolver\": \"filter-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"fields\"\n ],\n \"properties\": {\n \"fields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"minItems\": 1\n },\n \"selected\": {\n \"type\": \"boolean\"\n },\n \"alwaysVisible\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"set-value\",\n \"path\": \"behavior.filtering.enabled\",\n \"value\": true\n },\n {\n \"kind\": \"merge-object\",\n \"path\": \"behavior.filtering.advancedFilters\"\n }\n ],\n \"affectedPaths\": [\n \"behavior.filtering.enabled\",\n \"behavior.filtering.advancedFilters.enabled\",\n \"behavior.filtering.advancedFilters.settings\"\n ],\n \"validators\": [\n \"filter-fields-exist\",\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"filter.advanced.fields.remove\",\n \"title\": \"Remover campos dos filtros avançados\",\n \"scope\": \"global\",\n \"targetKind\": \"filter\",\n \"target\": {\n \"kind\": \"filter\",\n \"resolver\": \"filter-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"fields\"\n ],\n \"properties\": {\n \"fields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"minItems\": 1\n },\n \"selected\": {\n \"type\": \"boolean\"\n },\n \"alwaysVisible\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"set-value\",\n \"path\": \"behavior.filtering.enabled\",\n \"value\": true\n },\n {\n \"kind\": \"merge-object\",\n \"path\": \"behavior.filtering.advancedFilters\"\n }\n ],\n \"affectedPaths\": [\n \"behavior.filtering.enabled\",\n \"behavior.filtering.advancedFilters.enabled\",\n \"behavior.filtering.advancedFilters.settings\"\n ],\n \"validators\": [\n \"filter-fields-exist\",\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"grouping.set\",\n \"title\": \"Definir agrupamento\",\n \"scope\": \"global\",\n \"targetKind\": \"grouping\",\n \"target\": {\n \"kind\": \"grouping\",\n \"resolver\": \"grouping-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"enabled\"\n ],\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"fields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"expanded\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"behavior.grouping\"\n }\n ],\n \"validators\": [\n \"grouping-fields-exist\"\n ],\n \"affectedPaths\": [\n \"behavior.grouping\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"selection.mode.set\",\n \"title\": \"Definir modo de seleção\",\n \"scope\": \"global\",\n \"targetKind\": \"selection\",\n \"target\": {\n \"kind\": \"selection\",\n \"resolver\": \"selection-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"enabled\",\n \"type\"\n ],\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"type\": {\n \"enum\": [\n \"single\",\n \"multiple\"\n ]\n },\n \"mode\": {\n \"enum\": [\n \"checkbox\",\n \"row\",\n \"both\"\n ]\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"behavior.selection\"\n }\n ],\n \"affectedPaths\": [\n \"behavior.selection.enabled\",\n \"behavior.selection.type\",\n \"behavior.selection.mode\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"appearance.density.set\",\n \"title\": \"Definir densidade\",\n \"scope\": \"global\",\n \"targetKind\": \"appearance\",\n \"target\": {\n \"kind\": \"appearance\",\n \"resolver\": \"appearance-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"density\"\n ],\n \"properties\": {\n \"density\": {\n \"enum\": [\n \"compact\",\n \"comfortable\",\n \"spacious\"\n ]\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"appearance\"\n }\n ],\n \"affectedPaths\": [\n \"appearance.density\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"appearance.borders.set\",\n \"title\": \"Definir bordas\",\n \"scope\": \"global\",\n \"targetKind\": \"appearance\",\n \"target\": {\n \"kind\": \"appearance\",\n \"resolver\": \"appearance-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"showRowBorders\",\n \"showColumnBorders\"\n ],\n \"properties\": {\n \"showRowBorders\": {\n \"type\": \"boolean\"\n },\n \"showColumnBorders\": {\n \"type\": \"boolean\"\n },\n \"showOuterBorder\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"appearance.borders\"\n }\n ],\n \"affectedPaths\": [\n \"appearance.borders.showRowBorders\",\n \"appearance.borders.showColumnBorders\",\n \"appearance.borders.showOuterBorder\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"virtualization.enabled.set\",\n \"title\": \"Habilitar virtualização\",\n \"scope\": \"global\",\n \"targetKind\": \"appearance\",\n \"target\": {\n \"kind\": \"appearance\",\n \"resolver\": \"appearance-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"enabled\"\n ],\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"itemHeight\": {\n \"type\": \"number\",\n \"default\": 48\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"behavior.virtualization\"\n },\n {\n \"kind\": \"merge-object\",\n \"path\": \"performance.virtualization\"\n }\n ],\n \"affectedPaths\": [\n \"behavior.virtualization\",\n \"performance.virtualization\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"expansion.configure\",\n \"title\": \"Configurar expansão de linha\",\n \"scope\": \"global\",\n \"targetKind\": \"expansion\",\n \"target\": {\n \"kind\": \"expansion\",\n \"resolver\": \"expansion-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"contractVersion\": {\n \"type\": \"string\"\n },\n \"state\": {\n \"type\": \"object\",\n \"properties\": {\n \"mode\": {\n \"enum\": [\n \"controlled\",\n \"uncontrolled\"\n ]\n }\n }\n },\n \"interaction\": {\n \"type\": \"object\",\n \"properties\": {\n \"trigger\": {\n \"enum\": [\n \"icon\",\n \"row\",\n \"both\"\n ]\n },\n \"toggleIcon\": {\n \"type\": \"object\",\n \"properties\": {\n \"collapsed\": {\n \"type\": \"string\"\n },\n \"expanded\": {\n \"type\": \"string\"\n },\n \"ariaLabelCollapsed\": {\n \"type\": \"string\"\n },\n \"ariaLabelExpanded\": {\n \"type\": \"string\"\n }\n }\n },\n \"motion\": {\n \"type\": \"object\",\n \"properties\": {\n \"preset\": {\n \"enum\": [\n \"none\",\n \"subtle-slide\",\n \"accordion\",\n \"fade-scale\"\n ]\n },\n \"durationMs\": {\n \"type\": \"number\",\n \"minimum\": 0\n },\n \"easing\": {\n \"enum\": [\n \"standard\",\n \"emphasized\",\n \"decelerate\"\n ]\n }\n }\n },\n \"keyboard\": {\n \"type\": \"object\",\n \"properties\": {\n \"profile\": {\n \"enum\": [\n \"disclosure\",\n \"grid\"\n ]\n }\n }\n }\n }\n },\n \"limits\": {\n \"type\": \"object\",\n \"properties\": {\n \"allowMultiple\": {\n \"type\": \"boolean\"\n },\n \"maxExpandedRows\": {\n \"type\": \"number\",\n \"minimum\": 1\n },\n \"onOverflow\": {\n \"enum\": [\n \"collapseOldest\",\n \"denyNew\",\n \"collapseAll\"\n ]\n }\n }\n },\n \"collapseOn\": {\n \"type\": \"object\",\n \"properties\": {\n \"sortChange\": {\n \"type\": \"boolean\"\n },\n \"pageChange\": {\n \"type\": \"boolean\"\n },\n \"filterChange\": {\n \"type\": \"boolean\"\n },\n \"dataRefresh\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"virtualization\": {\n \"type\": \"object\",\n \"properties\": {\n \"policy\": {\n \"enum\": [\n \"fixed-height-only\",\n \"allow-dynamic-under-flag\"\n ]\n }\n }\n },\n \"persistence\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"storageKeyStrategy\": {\n \"type\": \"object\",\n \"properties\": {\n \"namespace\": {\n \"type\": \"string\"\n }\n }\n }\n }\n },\n \"security\": {\n \"type\": \"object\",\n \"properties\": {\n \"eventExposureDefault\": {\n \"type\": \"object\",\n \"properties\": {\n \"rowId\": {\n \"enum\": [\n \"redacted\",\n \"hashed\",\n \"raw\"\n ]\n },\n \"expandedKeys\": {\n \"enum\": [\n \"none\",\n \"hashed\",\n \"raw\"\n ]\n }\n }\n }\n }\n },\n \"deepLink\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"encoding\": {\n \"enum\": [\n \"csv\"\n ]\n },\n \"parsing\": {\n \"type\": \"object\",\n \"properties\": {\n \"duplicateParams\": {\n \"enum\": [\n \"firstWins\",\n \"reject\"\n ]\n }\n }\n },\n \"integrity\": {\n \"type\": \"object\",\n \"properties\": {\n \"mode\": {\n \"enum\": [\n \"opaqueToken\"\n ]\n }\n }\n },\n \"privacy\": {\n \"type\": \"object\",\n \"properties\": {\n \"mode\": {\n \"enum\": [\n \"denyByDefault\",\n \"allowByDefault\"\n ]\n }\n }\n }\n }\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"behavior.expansion\"\n }\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"affectedPaths\": [\n \"behavior.expansion\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"expansion.detailSource.configure\",\n \"title\": \"Configurar fonte remota do detalhe expansivel\",\n \"scope\": \"global\",\n \"targetKind\": \"expansion\",\n \"target\": {\n \"kind\": \"expansion\",\n \"resolver\": \"expansion-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": {\n \"mode\": {\n \"enum\": [\n \"inline\",\n \"resource\",\n \"resourcePath\",\n \"hypermedia\"\n ]\n },\n \"inlineSchema\": {\n \"type\": \"object\"\n },\n \"resource\": {\n \"type\": \"object\",\n \"properties\": {\n \"kind\": {\n \"enum\": [\n \"ui-composition\",\n \"form-schema\",\n \"table-schema\",\n \"dashboard-schema\"\n ]\n },\n \"id\": {\n \"type\": \"string\"\n },\n \"version\": {\n \"type\": \"string\"\n }\n }\n },\n \"resourcePath\": {\n \"type\": \"object\",\n \"properties\": {\n \"path\": {\n \"type\": \"string\"\n },\n \"method\": {\n \"enum\": [\n \"GET\",\n \"POST\"\n ]\n },\n \"paramsMap\": {\n \"type\": \"object\"\n }\n }\n },\n \"resourceAllowList\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"hypermedia\": {\n \"type\": \"object\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"behavior.expansion.detail.source\"\n }\n ],\n \"validators\": [\n \"remote-resource-binding-safe\",\n \"editor-round-trip-preserve\"\n ],\n \"affectedPaths\": [\n \"behavior.expansion.detail.source\",\n \"behavior.expansion.detail.source.mode\",\n \"behavior.expansion.detail.source.resourcePath\",\n \"behavior.expansion.detail.source.resourceAllowList\",\n \"behavior.expansion.detail.source.hypermedia\"\n ],\n \"submissionImpact\": \"affects-remote-binding\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"expansion.detailPresentation.configure\",\n \"title\": \"Configurar apresentacao do detalhe expansivel\",\n \"scope\": \"global\",\n \"targetKind\": \"expansion\",\n \"target\": {\n \"kind\": \"expansion\",\n \"resolver\": \"expansion-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": {\n \"schemaContract\": {\n \"type\": \"object\",\n \"properties\": {\n \"kind\": {\n \"type\": \"string\"\n },\n \"version\": {\n \"type\": \"string\"\n }\n }\n },\n \"rendering\": {\n \"type\": \"object\",\n \"properties\": {\n \"strategy\": {\n \"enum\": [\n \"registry\"\n ]\n },\n \"registryId\": {\n \"type\": \"string\"\n },\n \"hostLayout\": {\n \"enum\": [\n \"auto\",\n \"stack\",\n \"tabs\"\n ]\n },\n \"fallbackNodePolicy\": {\n \"enum\": [\n \"failClosed\",\n \"renderPlaceholder\"\n ]\n }\n }\n },\n \"height\": {\n \"type\": \"object\",\n \"properties\": {\n \"mode\": {\n \"enum\": [\n \"fixed\",\n \"dynamic\"\n ]\n },\n \"px\": {\n \"type\": \"number\",\n \"minimum\": 0\n }\n }\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"behavior.expansion.detail\"\n }\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"affectedPaths\": [\n \"behavior.expansion.detail\",\n \"behavior.expansion.detail.schemaContract\",\n \"behavior.expansion.detail.rendering\",\n \"behavior.expansion.detail.height\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"meta.configure\",\n \"title\": \"Configurar metadados\",\n \"scope\": \"global\",\n \"targetKind\": \"meta\",\n \"target\": {\n \"kind\": \"meta\",\n \"resolver\": \"table-meta-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"description\": {\n \"type\": \"string\"\n },\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"schemaId\": {\n \"type\": \"string\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"meta\"\n }\n ],\n \"affectedPaths\": [\n \"meta\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"meta.idField.set\",\n \"title\": \"Definir campo de identidade\",\n \"scope\": \"global\",\n \"targetKind\": \"meta\",\n \"target\": {\n \"kind\": \"meta\",\n \"resolver\": \"table-meta-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"idField\"\n ],\n \"properties\": {\n \"idField\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"set-value\",\n \"path\": \"meta.idField\"\n }\n ],\n \"requiresConfirmation\": true,\n \"affectedPaths\": [\n \"meta.idField\"\n ],\n \"validators\": [\n \"target-column-exists\",\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"affects-schema-backed-data\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"column.resizable.set\",\n \"title\": \"Definir redimensionamento da coluna\",\n \"scope\": \"column\",\n \"targetKind\": \"column\",\n \"target\": {\n \"kind\": \"column\",\n \"resolver\": \"column-by-field\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"resizable\"\n ],\n \"properties\": {\n \"resizable\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-by-key\",\n \"path\": \"columns[]\",\n \"key\": \"field\"\n }\n ],\n \"validators\": [\n \"target-column-exists\"\n ],\n \"affectedPaths\": [\n \"columns[].resizable\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\",\n \"target-exists\"\n ]\n },\n {\n \"operationId\": \"column.sortField.set\",\n \"title\": \"Definir campo de ordenacao da coluna\",\n \"scope\": \"column\",\n \"targetKind\": \"column\",\n \"target\": {\n \"kind\": \"column\",\n \"resolver\": \"column-by-field\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"sortField\"\n ],\n \"properties\": {\n \"sortField\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-by-key\",\n \"path\": \"columns[]\",\n \"key\": \"field\"\n }\n ],\n \"validators\": [\n \"target-column-exists\"\n ],\n \"affectedPaths\": [\n \"columns[].sortField\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\",\n \"target-exists\"\n ]\n },\n {\n \"operationId\": \"column.computed.configure\",\n \"title\": \"Configurar coluna calculada\",\n \"scope\": \"column\",\n \"targetKind\": \"computedColumn\",\n \"target\": {\n \"kind\": \"computedColumn\",\n \"resolver\": \"column-by-field\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"expression\"\n ],\n \"properties\": {\n \"expression\": {\n \"type\": \"object\",\n \"description\": \"AST Json Logic\"\n },\n \"outputType\": {},\n \"format\": {\n \"type\": \"string\"\n },\n \"dependencies\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-by-key\",\n \"path\": \"columns[]\",\n \"key\": \"field\"\n }\n ],\n \"validators\": [\n \"target-column-exists\",\n \"computed-expression-valid\",\n \"format-preset-supported\"\n ],\n \"affectedPaths\": [\n \"columns[].computed\"\n ],\n \"submissionImpact\": \"affects-schema-backed-data\",\n \"preconditions\": [\n \"config-initialized\",\n \"target-exists\"\n ]\n },\n {\n \"operationId\": \"behavior.pagination.configure\",\n \"title\": \"Configurar paginacao\",\n \"scope\": \"global\",\n \"targetKind\": \"pagination\",\n \"target\": {\n \"kind\": \"pagination\",\n \"resolver\": \"pagination-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"strategy\": {\n \"enum\": [\n \"client\",\n \"server\"\n ]\n },\n \"pageSize\": {\n \"type\": \"number\",\n \"minimum\": 1\n },\n \"pageSizeOptions\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"number\",\n \"minimum\": 1\n }\n },\n \"position\": {\n \"enum\": [\n \"top\",\n \"bottom\",\n \"both\"\n ]\n },\n \"style\": {\n \"enum\": [\n \"default\",\n \"simple\",\n \"advanced\",\n \"compact\"\n ]\n },\n \"advanced\": {\n \"type\": \"object\",\n \"properties\": {\n \"maxPageSize\": {\n \"type\": \"number\",\n \"minimum\": 1\n }\n }\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"behavior.pagination\"\n }\n ],\n \"affectedPaths\": [\n \"behavior.pagination\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"behavior.sorting.configure\",\n \"title\": \"Configurar ordenacao\",\n \"scope\": \"global\",\n \"targetKind\": \"sorting\",\n \"target\": {\n \"kind\": \"sorting\",\n \"resolver\": \"sorting-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"strategy\": {\n \"enum\": [\n \"client\",\n \"server\"\n ]\n },\n \"defaultSort\": {\n \"type\": \"object\"\n },\n \"allowClearSort\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"behavior.sorting\"\n }\n ],\n \"affectedPaths\": [\n \"behavior.sorting\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"behavior.filtering.configure\",\n \"title\": \"Configurar filtragem\",\n \"scope\": \"global\",\n \"targetKind\": \"filter\",\n \"target\": {\n \"kind\": \"filter\",\n \"resolver\": \"filter-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"strategy\": {\n \"enum\": [\n \"client\",\n \"server\"\n ]\n },\n \"columnFilters\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"defaultType\": {\n \"enum\": [\n \"text\",\n \"select\",\n \"date\",\n \"number\",\n \"boolean\"\n ]\n },\n \"position\": {\n \"enum\": [\n \"header\",\n \"subheader\",\n \"sidebar\"\n ]\n }\n }\n },\n \"advancedFilters\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"settings\": {\n \"type\": \"object\",\n \"properties\": {\n \"mode\": {\n \"enum\": [\n \"filter\"\n ]\n },\n \"showAdvanced\": {\n \"type\": \"boolean\"\n },\n \"allowSaveTags\": {\n \"type\": \"boolean\"\n },\n \"alwaysVisibleFields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"selectedFieldIds\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"alwaysVisibleFieldMetadataOverrides\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"type\": \"object\"\n }\n },\n \"changeDebounceMs\": {\n \"type\": \"number\",\n \"minimum\": 0\n },\n \"useInlineSearchableSelectVariant\": {\n \"type\": \"boolean\"\n },\n \"useInlineRangeVariant\": {\n \"type\": \"boolean\"\n },\n \"useInlineDateVariant\": {\n \"type\": \"boolean\"\n },\n \"useInlineDateRangeVariant\": {\n \"type\": \"boolean\"\n }\n }\n }\n }\n },\n \"debounceTime\": {\n \"type\": \"number\",\n \"minimum\": 0\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"behavior.filtering\"\n }\n ],\n \"affectedPaths\": [\n \"behavior.filtering\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"behavior.selection.configure\",\n \"title\": \"Configurar selecao\",\n \"scope\": \"global\",\n \"targetKind\": \"selection\",\n \"target\": {\n \"kind\": \"selection\",\n \"resolver\": \"selection-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"type\": {\n \"enum\": [\n \"single\",\n \"multiple\"\n ]\n },\n \"mode\": {\n \"enum\": [\n \"checkbox\",\n \"row\",\n \"both\"\n ]\n },\n \"allowSelectAll\": {\n \"type\": \"boolean\"\n },\n \"persistSelection\": {\n \"type\": \"boolean\"\n },\n \"maxSelections\": {\n \"type\": \"number\",\n \"minimum\": 1\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"behavior.selection\"\n }\n ],\n \"affectedPaths\": [\n \"behavior.selection\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"behavior.interaction.configure\",\n \"title\": \"Configurar interacao\",\n \"scope\": \"global\",\n \"targetKind\": \"interaction\",\n \"target\": {\n \"kind\": \"interaction\",\n \"resolver\": \"interaction-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": {\n \"rowClick\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"action\": {\n \"type\": \"string\"\n }\n }\n },\n \"keyboard\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"hover\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"highlightRow\": {\n \"type\": \"boolean\"\n }\n }\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"behavior.interaction\"\n }\n ],\n \"affectedPaths\": [\n \"behavior.interaction\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"behavior.loading.configure\",\n \"title\": \"Configurar loading\",\n \"scope\": \"global\",\n \"targetKind\": \"loading\",\n \"target\": {\n \"kind\": \"loading\",\n \"resolver\": \"loading-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": {\n \"type\": {\n \"enum\": [\n \"spinner\",\n \"skeleton\",\n \"progress\",\n \"custom\"\n ]\n },\n \"position\": {\n \"enum\": [\n \"overlay\",\n \"inline\",\n \"replace\"\n ]\n },\n \"text\": {\n \"type\": \"string\"\n },\n \"delay\": {\n \"type\": \"number\",\n \"minimum\": 0\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"behavior.loading\"\n }\n ],\n \"affectedPaths\": [\n \"behavior.loading\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"behavior.emptyState.configure\",\n \"title\": \"Configurar estado vazio\",\n \"scope\": \"global\",\n \"targetKind\": \"emptyState\",\n \"target\": {\n \"kind\": \"emptyState\",\n \"resolver\": \"empty-state-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"message\"\n ],\n \"properties\": {\n \"message\": {\n \"type\": \"string\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"behavior.emptyState\"\n }\n ],\n \"affectedPaths\": [\n \"behavior.emptyState\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"behavior.resizing.configure\",\n \"title\": \"Configurar redimensionamento\",\n \"scope\": \"global\",\n \"targetKind\": \"resizing\",\n \"target\": {\n \"kind\": \"resizing\",\n \"resolver\": \"resizing-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"minColumnWidth\": {\n \"type\": \"number\",\n \"minimum\": 1\n },\n \"maxColumnWidth\": {\n \"type\": \"number\",\n \"minimum\": 1\n },\n \"autoFit\": {\n \"type\": \"boolean\"\n },\n \"persistWidths\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"behavior.resizing\"\n }\n ],\n \"affectedPaths\": [\n \"behavior.resizing\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"behavior.dragging.configure\",\n \"title\": \"Configurar drag and drop\",\n \"scope\": \"global\",\n \"targetKind\": \"dragging\",\n \"target\": {\n \"kind\": \"dragging\",\n \"resolver\": \"dragging-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"columns\"\n ],\n \"properties\": {\n \"columns\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"behavior.dragging\"\n }\n ],\n \"affectedPaths\": [\n \"behavior.dragging\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"behavior.editing.configure\",\n \"title\": \"Configurar edicao\",\n \"scope\": \"global\",\n \"targetKind\": \"editing\",\n \"target\": {\n \"kind\": \"editing\",\n \"resolver\": \"editing-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"mode\"\n ],\n \"properties\": {\n \"mode\": {\n \"type\": \"string\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"behavior.editing\"\n }\n ],\n \"affectedPaths\": [\n \"behavior.editing\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"toolbar.configure\",\n \"title\": \"Configurar toolbar\",\n \"scope\": \"global\",\n \"targetKind\": \"toolbar\",\n \"target\": {\n \"kind\": \"toolbar\",\n \"resolver\": \"toolbar-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": {\n \"visible\": {\n \"type\": \"boolean\"\n },\n \"position\": {\n \"enum\": [\n \"top\",\n \"bottom\",\n \"both\"\n ]\n },\n \"actionsPosition\": {\n \"enum\": [\n \"top\",\n \"bottom\",\n \"both\"\n ]\n },\n \"actionsBackgroundColor\": {\n \"type\": \"string\"\n },\n \"appearance\": {\n \"type\": \"object\",\n \"properties\": {\n \"preset\": {\n \"type\": \"string\"\n },\n \"variant\": {\n \"enum\": [\n \"flat\",\n \"outlined\",\n \"elevated\",\n \"integrated\"\n ]\n },\n \"density\": {\n \"enum\": [\n \"compact\",\n \"comfortable\",\n \"spacious\"\n ]\n },\n \"shape\": {\n \"enum\": [\n \"square\",\n \"rounded\",\n \"pill\"\n ]\n },\n \"divider\": {\n \"enum\": [\n \"none\",\n \"start\",\n \"between-groups\"\n ]\n },\n \"tokens\": {\n \"type\": \"object\",\n \"properties\": {\n \"titleFg\": {\n \"type\": \"string\"\n },\n \"subtitleFg\": {\n \"type\": \"string\"\n },\n \"iconFg\": {\n \"type\": \"string\"\n },\n \"titleFontSize\": {\n \"type\": \"string\"\n },\n \"subtitleFontSize\": {\n \"type\": \"string\"\n },\n \"titleFontWeight\": {\n \"type\": \"string\"\n },\n \"identityGap\": {\n \"type\": \"string\"\n },\n \"identityFilterGap\": {\n \"type\": \"string\"\n },\n \"identityMinHeight\": {\n \"type\": \"string\"\n },\n \"identityMarginBottom\": {\n \"type\": \"string\"\n },\n \"identityIconSize\": {\n \"type\": \"string\"\n },\n \"identityIconRadius\": {\n \"type\": \"string\"\n }\n },\n \"additionalProperties\": {\n \"type\": \"string\"\n }\n }\n }\n },\n \"title\": {\n \"type\": \"string\"\n },\n \"subtitle\": {\n \"type\": \"string\"\n },\n \"icon\": {\n \"type\": \"string\"\n },\n \"textAlign\": {\n \"enum\": [\n \"start\",\n \"center\",\n \"end\"\n ]\n },\n \"layout\": {\n \"type\": \"object\",\n \"properties\": {\n \"alignment\": {\n \"enum\": [\n \"start\",\n \"center\",\n \"end\",\n \"space-between\"\n ]\n }\n }\n },\n \"filters\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"settingsMenu\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"columnsVisibility\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n }\n }\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"toolbar\"\n }\n ],\n \"validators\": [\n \"css-style-safe\"\n ],\n \"affectedPaths\": [\n \"toolbar\",\n \"toolbar.title\",\n \"toolbar.subtitle\",\n \"toolbar.icon\",\n \"toolbar.textAlign\",\n \"toolbar.appearance\",\n \"toolbar.appearance.tokens\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"actions.row.configure\",\n \"title\": \"Configurar acoes de linha\",\n \"scope\": \"global\",\n \"targetKind\": \"rowAction\",\n \"target\": {\n \"kind\": \"rowAction\",\n \"resolver\": \"action-in-row-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"display\": {\n \"enum\": [\n \"menu\",\n \"buttons\",\n \"icons\"\n ]\n },\n \"trigger\": {\n \"enum\": [\n \"hover\",\n \"always\",\n \"click\"\n ]\n },\n \"discovery\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n }\n }\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"actions.row\"\n }\n ],\n \"affectedPaths\": [\n \"actions.row\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"actions.bulk.configure\",\n \"title\": \"Configurar acoes em lote\",\n \"scope\": \"global\",\n \"targetKind\": \"bulkAction\",\n \"target\": {\n \"kind\": \"bulkAction\",\n \"resolver\": \"action-in-bulk-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"position\": {\n \"enum\": [\n \"toolbar\",\n \"floating\",\n \"both\"\n ]\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"actions.bulk\"\n }\n ],\n \"requiresConfirmation\": true,\n \"affectedPaths\": [\n \"actions.bulk\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"actions.context.configure\",\n \"title\": \"Configurar menu contextual\",\n \"scope\": \"global\",\n \"targetKind\": \"contextAction\",\n \"target\": {\n \"kind\": \"contextAction\",\n \"resolver\": \"action-in-context-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"trigger\": {\n \"enum\": [\n \"right-click\",\n \"long-press\",\n \"both\"\n ]\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"actions.context\"\n }\n ],\n \"requiresConfirmation\": true,\n \"affectedPaths\": [\n \"actions.context\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"actions.confirmations.configure\",\n \"title\": \"Configurar confirmacoes\",\n \"scope\": \"global\",\n \"targetKind\": \"contextAction\",\n \"target\": {\n \"kind\": \"contextAction\",\n \"resolver\": \"action-in-context-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"default\"\n ],\n \"properties\": {\n \"default\": {\n \"type\": \"object\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"actions.confirmations\"\n }\n ],\n \"requiresConfirmation\": true,\n \"affectedPaths\": [\n \"actions.confirmations.default\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"export.configure\",\n \"title\": \"Configurar exportacao\",\n \"scope\": \"global\",\n \"targetKind\": \"export\",\n \"target\": {\n \"kind\": \"export\",\n \"resolver\": \"export-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"formats\": {\n \"type\": \"array\",\n \"items\": {\n \"enum\": [\n \"excel\",\n \"pdf\",\n \"csv\",\n \"json\",\n \"print\"\n ]\n }\n },\n \"general\": {\n \"type\": \"object\",\n \"properties\": {\n \"includeHeaders\": {\n \"type\": \"boolean\"\n },\n \"scope\": {\n \"enum\": [\n \"auto\",\n \"selected\",\n \"filtered\",\n \"currentPage\",\n \"all\"\n ]\n },\n \"maxRows\": {\n \"type\": \"number\",\n \"minimum\": 1\n }\n }\n },\n \"excel\": {\n \"type\": \"object\",\n \"properties\": {\n \"autoFitColumns\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"pdf\": {\n \"type\": \"object\",\n \"properties\": {\n \"orientation\": {\n \"enum\": [\n \"portrait\",\n \"landscape\"\n ]\n },\n \"pageSize\": {\n \"enum\": [\n \"A4\",\n \"A3\",\n \"Letter\",\n \"Legal\"\n ]\n }\n }\n },\n \"csv\": {\n \"type\": \"object\",\n \"properties\": {\n \"delimiter\": {\n \"enum\": [\n \",\",\n \";\",\n \"|\",\n \"\\\\t\"\n ]\n }\n }\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"export\"\n }\n ],\n \"requiresConfirmation\": true,\n \"affectedPaths\": [\n \"export\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"tableRuntimeOperations.plan\",\n \"title\": \"Planejar operacoes runtime da tabela\",\n \"scope\": \"global\",\n \"targetKind\": \"runtimeOperation\",\n \"target\": {\n \"kind\": \"runtimeOperation\",\n \"resolver\": \"table-runtime-operation-contract\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"operations\"\n ],\n \"properties\": {\n \"operations\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"items\": {\n \"type\": \"object\",\n \"required\": [\n \"operationId\",\n \"input\"\n ],\n \"properties\": {\n \"operationId\": {\n \"enum\": [\n \"table.filter.apply\",\n \"table.export.run\"\n ]\n },\n \"input\": {\n \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": {\n \"criteria\": {\n \"type\": \"object\"\n },\n \"format\": {},\n \"scope\": {}\n }\n },\n \"description\": {\n \"type\": \"string\"\n }\n }\n }\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"set-value\",\n \"path\": \"tableRuntimeOperations\"\n }\n ],\n \"affectedPaths\": [\n \"tableRuntimeOperations\"\n ],\n \"validators\": [\n \"runtime-operation-declared\"\n ],\n \"submissionImpact\": \"none\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"appearance.configure\",\n \"title\": \"Configurar aparencia\",\n \"scope\": \"global\",\n \"targetKind\": \"appearance\",\n \"target\": {\n \"kind\": \"appearance\",\n \"resolver\": \"appearance-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": {\n \"density\": {\n \"enum\": [\n \"compact\",\n \"comfortable\",\n \"spacious\"\n ]\n },\n \"borders\": {\n \"type\": \"object\",\n \"properties\": {\n \"showRowBorders\": {\n \"type\": \"boolean\"\n },\n \"showColumnBorders\": {\n \"type\": \"boolean\"\n },\n \"showOuterBorder\": {\n \"type\": \"boolean\"\n },\n \"style\": {\n \"enum\": [\n \"solid\",\n \"dashed\",\n \"dotted\"\n ]\n }\n }\n },\n \"colors\": {\n \"type\": \"object\",\n \"properties\": {\n \"alternateRowBackground\": {\n \"type\": \"string\"\n },\n \"hoverBackground\": {\n \"type\": \"string\"\n }\n }\n },\n \"typography\": {\n \"type\": \"object\",\n \"properties\": {\n \"fontSize\": {\n \"type\": \"string\"\n },\n \"headerFontWeight\": {\n \"type\": \"string\"\n }\n }\n },\n \"spacing\": {\n \"type\": \"object\",\n \"properties\": {\n \"cellPadding\": {\n \"type\": \"string\"\n }\n }\n },\n \"responsive\": {\n \"type\": \"object\",\n \"properties\": {\n \"mobile\": {\n \"type\": \"object\",\n \"properties\": {\n \"horizontalScroll\": {\n \"type\": \"boolean\"\n },\n \"cardMode\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"breakpoints\": {\n \"type\": \"object\",\n \"properties\": {\n \"mobile\": {\n \"type\": \"number\",\n \"minimum\": 0\n }\n }\n }\n }\n },\n \"animations\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"elevation\": {\n \"type\": \"object\",\n \"properties\": {\n \"level\": {\n \"type\": \"number\",\n \"minimum\": 0\n }\n }\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"appearance\"\n }\n ],\n \"validators\": [\n \"css-style-safe\"\n ],\n \"affectedPaths\": [\n \"appearance\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"messages.configure\",\n \"title\": \"Configurar mensagens\",\n \"scope\": \"global\",\n \"targetKind\": \"messages\",\n \"target\": {\n \"kind\": \"messages\",\n \"resolver\": \"messages-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": {\n \"states\": {\n \"type\": \"object\",\n \"properties\": {\n \"empty\": {\n \"type\": \"string\"\n },\n \"loading\": {\n \"type\": \"string\"\n }\n }\n },\n \"actions\": {\n \"type\": \"object\",\n \"properties\": {\n \"confirmations\": {\n \"type\": \"object\",\n \"properties\": {\n \"delete\": {\n \"type\": \"string\"\n }\n }\n }\n }\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"messages\"\n }\n ],\n \"affectedPaths\": [\n \"messages\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"localization.configure\",\n \"title\": \"Configurar localizacao\",\n \"scope\": \"global\",\n \"targetKind\": \"localization\",\n \"target\": {\n \"kind\": \"localization\",\n \"resolver\": \"localization-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": {\n \"locale\": {\n \"type\": \"string\"\n },\n \"direction\": {\n \"enum\": [\n \"ltr\",\n \"rtl\"\n ]\n },\n \"dateTime\": {\n \"type\": \"object\",\n \"properties\": {\n \"dateFormat\": {\n \"type\": \"string\"\n },\n \"timeFormat\": {\n \"type\": \"string\"\n },\n \"dateTimeFormat\": {\n \"type\": \"string\"\n },\n \"firstDayOfWeek\": {\n \"enum\": [\n 0,\n 1,\n 2,\n 3,\n 4,\n 5,\n 6\n ]\n },\n \"relativeTime\": {\n \"type\": \"boolean\"\n },\n \"monthNames\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"dayNames\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n }\n },\n \"number\": {\n \"type\": \"object\",\n \"properties\": {\n \"decimalSeparator\": {\n \"type\": \"string\"\n },\n \"thousandsSeparator\": {\n \"type\": \"string\"\n },\n \"defaultPrecision\": {\n \"type\": \"number\",\n \"minimum\": 0\n },\n \"negativeSign\": {\n \"type\": \"string\"\n },\n \"negativeSignPosition\": {\n \"enum\": [\n \"before\",\n \"after\"\n ]\n }\n }\n },\n \"currency\": {\n \"type\": \"object\",\n \"properties\": {\n \"code\": {\n \"type\": \"string\"\n },\n \"symbol\": {\n \"type\": \"string\"\n },\n \"position\": {\n \"enum\": [\n \"before\",\n \"after\"\n ]\n },\n \"spacing\": {\n \"type\": \"boolean\"\n },\n \"precision\": {\n \"type\": \"number\",\n \"minimum\": 0\n }\n }\n },\n \"formatting\": {\n \"type\": \"object\",\n \"properties\": {\n \"percentageFormat\": {\n \"type\": \"string\"\n },\n \"fileSizeFormat\": {\n \"enum\": [\n \"binary\",\n \"decimal\"\n ]\n }\n }\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"localization\"\n }\n ],\n \"affectedPaths\": [\n \"localization\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"performance.configure\",\n \"title\": \"Configurar performance\",\n \"scope\": \"global\",\n \"targetKind\": \"performance\",\n \"target\": {\n \"kind\": \"performance\",\n \"resolver\": \"performance-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": {\n \"virtualization\": {\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"itemHeight\": {\n \"type\": \"number\",\n \"minimum\": 1\n }\n }\n },\n \"debounce\": {\n \"type\": \"object\",\n \"properties\": {\n \"search\": {\n \"type\": \"number\",\n \"minimum\": 0\n },\n \"filter\": {\n \"type\": \"number\",\n \"minimum\": 0\n }\n }\n },\n \"lazyLoading\": {\n \"type\": \"object\",\n \"properties\": {\n \"images\": {\n \"type\": \"boolean\"\n }\n }\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"performance\"\n }\n ],\n \"affectedPaths\": [\n \"performance\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"data.loadingStrategy.set\",\n \"title\": \"Definir estrategia de carregamento\",\n \"scope\": \"global\",\n \"targetKind\": \"data\",\n \"target\": {\n \"kind\": \"data\",\n \"resolver\": \"data-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"loadingStrategy\"\n ],\n \"properties\": {\n \"loadingStrategy\": {\n \"enum\": [\n \"eager\",\n \"lazy\",\n \"on-demand\"\n ]\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"set-value\",\n \"path\": \"data.loadingStrategy\"\n }\n ],\n \"affectedPaths\": [\n \"data.loadingStrategy\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n },\n {\n \"operationId\": \"accessibility.configure\",\n \"title\": \"Configurar acessibilidade\",\n \"scope\": \"global\",\n \"targetKind\": \"accessibility\",\n \"target\": {\n \"kind\": \"accessibility\",\n \"resolver\": \"accessibility-config\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"highContrast\": {\n \"type\": \"boolean\"\n },\n \"reduceMotion\": {\n \"type\": \"boolean\"\n },\n \"announcements\": {\n \"type\": \"object\",\n \"properties\": {\n \"liveRegion\": {\n \"enum\": [\n \"polite\",\n \"assertive\"\n ]\n }\n }\n },\n \"keyboard\": {\n \"type\": \"object\",\n \"properties\": {\n \"shortcuts\": {\n \"type\": \"boolean\"\n }\n }\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"merge-object\",\n \"path\": \"accessibility\"\n }\n ],\n \"requiresConfirmation\": true,\n \"affectedPaths\": [\n \"accessibility\"\n ],\n \"validators\": [\n \"editor-round-trip-preserve\"\n ],\n \"submissionImpact\": \"visual-only\",\n \"preconditions\": [\n \"config-initialized\"\n ]\n }\n ],\n \"validators\": [\n {\n \"validatorId\": \"target-column-exists\",\n \"level\": \"error\",\n \"code\": \"TB001\",\n \"description\": \"A coluna alvo deve existir na configuração.\"\n },\n {\n \"validatorId\": \"column-field-unique\",\n \"level\": \"error\",\n \"code\": \"TB002\",\n \"description\": \"O identificador técnico da coluna (field) deve ser único.\"\n },\n {\n \"validatorId\": \"renderer-type-supported\",\n \"level\": \"error\",\n \"code\": \"TB003\",\n \"description\": \"O tipo de renderizador deve ser suportado pelo componente.\"\n },\n {\n \"validatorId\": \"renderer-config-match\",\n \"level\": \"error\",\n \"code\": \"TB004\",\n \"description\": \"A configuração do renderizador deve corresponder ao tipo selecionado.\"\n },\n {\n \"validatorId\": \"grouping-fields-exist\",\n \"level\": \"error\",\n \"code\": \"TB005\",\n \"description\": \"Os campos de agrupamento devem existir na definição de colunas.\"\n },\n {\n \"validatorId\": \"filter-fields-exist\",\n \"level\": \"error\",\n \"code\": \"TB018\",\n \"description\": \"Os campos de filtro avançado devem existir no schema request do filtro governado.\"\n },\n {\n \"validatorId\": \"destructive-removal-confirmation\",\n \"level\": \"error\",\n \"code\": \"TB006\",\n \"description\": \"Remoções destrutivas de colunas ou ações exigem confirmação explícita.\"\n },\n {\n \"validatorId\": \"computed-expression-valid\",\n \"level\": \"error\",\n \"code\": \"TB007\",\n \"description\": \"A expressão de cálculo deve ser um AST Json Logic válido.\"\n },\n {\n \"validatorId\": \"remote-resource-binding-safe\",\n \"level\": \"error\",\n \"code\": \"TB008\",\n \"description\": \"A ligação com recurso remoto não deve conter URLs absolutas não permitidas.\"\n },\n {\n \"validatorId\": \"editor-round-trip-preserve\",\n \"level\": \"error\",\n \"code\": \"TB009\",\n \"description\": \"A edição não deve corromper propriedades críticas necessárias para o round-trip do editor.\"\n },\n {\n \"validatorId\": \"toolbar-action-id-unique\",\n \"level\": \"error\",\n \"code\": \"TB010\",\n \"description\": \"O id da ação de toolbar deve ser único em toolbar.actions[]. O efeito append-unique usa este id como chave de deduplicação.\"\n },\n {\n \"validatorId\": \"row-action-id-unique\",\n \"level\": \"error\",\n \"code\": \"TB011\",\n \"description\": \"O id da row action deve ser único em actions.row.actions[]. O efeito append-unique usa este id como chave de deduplicação.\"\n },\n {\n \"validatorId\": \"bulk-action-id-unique\",\n \"level\": \"error\",\n \"code\": \"TB017\",\n \"description\": \"O id da ação em lote deve ser único em actions.bulk.actions[]. O efeito append-unique usa este id como chave de deduplicação.\"\n },\n {\n \"validatorId\": \"format-preset-supported\",\n \"level\": \"error\",\n \"code\": \"TB012\",\n \"description\": \"O formato deve usar um preset canonico publicado em table-ai-capabilities.ts.\"\n },\n {\n \"validatorId\": \"column-width-valid\",\n \"level\": \"error\",\n \"code\": \"TB013\",\n \"description\": \"A largura deve ser auto ou uma medida simples em px, %, rem ou em.\"\n },\n {\n \"validatorId\": \"css-style-safe\",\n \"level\": \"error\",\n \"code\": \"TB014\",\n \"description\": \"Estilos inline devem permanecer em CSS simples e seguro, sem scripts, URLs perigosas ou expressoes dinamicas.\"\n },\n {\n \"validatorId\": \"value-mapping-valid\",\n \"level\": \"error\",\n \"code\": \"TB015\",\n \"description\": \"O mapeamento de valores deve ser um objeto simples com chaves estaveis e labels serializaveis.\"\n },\n {\n \"validatorId\": \"conditional-style-valid\",\n \"level\": \"error\",\n \"code\": \"TB016\",\n \"description\": \"Regras condicionais de coluna devem ter id estavel, condition Json Logic e ao menos cssClass ou style.\"\n },\n {\n \"validatorId\": \"runtime-operation-declared\",\n \"level\": \"error\",\n \"code\": \"TB019\",\n \"description\": \"Operacoes runtime devem usar operationId e input declarados em tableRuntimeOperations sem alterar a configuracao persistida.\"\n }\n ],\n \"roundTripRequirements\": [\n \"preserve-column-order\",\n \"normalize-enum-values\",\n \"maintain-renderer-precedence\",\n \"preserve-meta-ids\"\n ],\n \"presentationAffordances\": {\n \"version\": \"0.1.0\",\n \"componentId\": \"praxis-table\",\n \"defaultTargetKind\": \"column\",\n \"sourceRef\": \"praxis-ui-angular:projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts#presentationAffordances\",\n \"affordances\": [\n {\n \"id\": \"table.column.text-formatting\",\n \"targetKind\": \"column\",\n \"category\": \"format\",\n \"description\": \"Text transforms and masks for textual table columns.\",\n \"options\": [\n \"none\",\n \"uppercase\",\n \"lowercase\",\n \"titlecase\",\n \"capitalize\",\n \"uppercase|truncate|50|...\",\n \"000.000.000-00\"\n ],\n \"appliesToTypes\": [\n \"string\",\n \"text\",\n \"unknown\"\n ],\n \"unknownCompatible\": true\n },\n {\n \"id\": \"table.column.numeric-formatting\",\n \"targetKind\": \"column\",\n \"category\": \"format\",\n \"description\": \"Decimal, currency and percentage formats for numeric table columns.\",\n \"options\": [\n \"1.0-0\",\n \"1.1-1\",\n \"1.2-2\",\n \"1.0-3\",\n \"1.0-0|nosep\",\n \"BRL|symbol|2\",\n \"USD|symbol|2\",\n \"EUR|symbol|2\",\n \"BRL|code|2\",\n \"USD|code|0\",\n \"BRL|symbol|2|nosep\",\n \"EUR|symbol|2|nosep\",\n \"1.0-0|x100\",\n \"1.1-1|x100\",\n \"1.2-2|x100\"\n ],\n \"appliesToTypes\": [\n \"number\",\n \"currency\",\n \"percentage\"\n ],\n \"unknownCompatible\": false\n },\n {\n \"id\": \"table.column.date-formatting\",\n \"targetKind\": \"column\",\n \"category\": \"format\",\n \"description\": \"Date and time formats for date-like table columns.\",\n \"options\": [\n \"shortDate\",\n \"mediumDate\",\n \"longDate\",\n \"fullDate\",\n \"MMM/yyyy\",\n \"shortTime\",\n \"short\",\n \"yyyy-MM-dd\",\n \"dd/MM/yyyy\",\n \"yyyy-MM-dd HH:mm\"\n ],\n \"appliesToTypes\": [\n \"date\",\n \"datetime\",\n \"time\"\n ],\n \"unknownCompatible\": false\n },\n {\n \"id\": \"table.column.boolean-formatting\",\n \"targetKind\": \"column\",\n \"category\": \"format\",\n \"description\": \"Boolean label formats for true/false table columns.\",\n \"options\": [\n \"true-false\",\n \"yes-no\",\n \"active-inactive\",\n \"on-off\",\n \"enabled-disabled\",\n \"custom|Sim|Nao\"\n ],\n \"appliesToTypes\": [\n \"boolean\"\n ],\n \"unknownCompatible\": false\n },\n {\n \"id\": \"table.column.semantic-renderers\",\n \"targetKind\": \"column\",\n \"category\": \"renderer\",\n \"description\": \"Visual renderers for categorical, status or action-oriented table columns.\",\n \"options\": [\n \"badge\",\n \"chip\",\n \"icon\",\n \"link\",\n \"button\",\n \"progress\",\n \"avatar\",\n \"toggle\",\n \"menu\",\n \"rating\",\n \"compose\"\n ],\n \"appliesToTypes\": [\n \"string\",\n \"text\",\n \"boolean\",\n \"number\",\n \"currency\",\n \"percentage\",\n \"date\",\n \"datetime\",\n \"unknown\"\n ],\n \"unknownCompatible\": true\n },\n {\n \"id\": \"table.column.alignment-layout\",\n \"targetKind\": \"column\",\n \"category\": \"layout\",\n \"description\": \"Column alignment and composed cell layout options.\",\n \"options\": [\n \"align:start\",\n \"align:center\",\n \"align:end\",\n \"compose:row\",\n \"compose:column\",\n \"secondary-line\",\n \"prefix\",\n \"suffix\"\n ],\n \"appliesToTypes\": [\n \"string\",\n \"text\",\n \"boolean\",\n \"number\",\n \"currency\",\n \"percentage\",\n \"date\",\n \"datetime\",\n \"unknown\"\n ],\n \"unknownCompatible\": true\n }\n ]\n },\n \"examples\": [\n {\n \"id\": \"add-schema-column\",\n \"request\": \"Adicionar coluna para o campo email com o título Contato\",\n \"operationId\": \"column.add\",\n \"params\": {\n \"field\": \"email\",\n \"header\": \"Contato\",\n \"type\": \"string\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"add-computed-column\",\n \"request\": \"Criar coluna de idade baseada na data de nascimento\",\n \"operationId\": \"column.computed.add\",\n \"params\": {\n \"field\": \"idade\",\n \"header\": \"Idade\",\n \"expression\": {\n \"yearsSince\": [\n {\n \"var\": \"dataNascimento\"\n }\n ]\n },\n \"outputType\": \"number\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"add-conditional-badge\",\n \"request\": \"Mostrar badge vermelho na coluna status se o valor for \\\"atrasado\\\"\",\n \"operationId\": \"column.conditionalRenderer.add\",\n \"target\": \"status\",\n \"params\": {\n \"id\": \"badge-atrasado\",\n \"condition\": {\n \"==\": [\n {\n \"var\": \"status\"\n },\n \"atrasado\"\n ]\n },\n \"renderer\": {\n \"type\": \"badge\",\n \"badge\": {\n \"color\": \"warn\",\n \"variant\": \"filled\"\n }\n }\n },\n \"isPositive\": true\n },\n {\n \"id\": \"enable-export\",\n \"request\": \"Habilitar exportação para Excel e PDF\",\n \"operationId\": \"export.enabled.set\",\n \"params\": {\n \"enabled\": true,\n \"formats\": [\n \"excel\",\n \"pdf\"\n ]\n },\n \"isPositive\": true\n },\n {\n \"id\": \"add-row-action\",\n \"request\": \"Adicionar botão de excluir na linha\",\n \"operationId\": \"rowAction.add\",\n \"params\": {\n \"id\": \"delete\",\n \"label\": \"Excluir\",\n \"action\": \"delete\",\n \"icon\": \"delete\",\n \"color\": \"warn\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"add-row-action-open-route\",\n \"request\": \"Adicionar botão de linha para abrir detalhe com navegação interna\",\n \"operationId\": \"rowAction.add\",\n \"params\": {\n \"id\": \"details\",\n \"label\": \"Detalhes\",\n \"action\": \"navigation.openRoute\",\n \"icon\": \"open_in_new\",\n \"globalAction\": {\n \"actionId\": \"navigation.openRoute\",\n \"payload\": {\n \"path\": \"/clientes/detalhe\",\n \"query\": {\n \"id\": \"${row.id}\"\n }\n }\n }\n },\n \"isPositive\": true\n },\n {\n \"id\": \"group-by-field\",\n \"request\": \"Agrupar a tabela por departamento\",\n \"operationId\": \"grouping.set\",\n \"params\": {\n \"enabled\": true,\n \"fields\": [\n \"departamento\"\n ]\n },\n \"isPositive\": true\n },\n {\n \"id\": \"reject-invalid-renderer\",\n \"request\": \"Configurar imagem para um renderizador do tipo ícone\",\n \"operationId\": \"column.renderer.set\",\n \"target\": \"avatar\",\n \"params\": {\n \"type\": \"icon\",\n \"image\": {\n \"src\": \"...\"\n }\n },\n \"isPositive\": false\n },\n {\n \"id\": \"set-button-renderer\",\n \"request\": \"Transformar a coluna acoes em botao que executa abrir-detalhe\",\n \"operationId\": \"column.renderer.set\",\n \"target\": \"acoes\",\n \"params\": {\n \"type\": \"button\",\n \"button\": {\n \"label\": \"Abrir\",\n \"action\": {\n \"id\": \"abrir-detalhe\"\n }\n }\n },\n \"isPositive\": true\n },\n {\n \"id\": \"add-column-conditional-style\",\n \"request\": \"Destacar a coluna status quando o valor estiver bloqueado\",\n \"operationId\": \"column.conditionalStyle.add\",\n \"target\": \"status\",\n \"params\": {\n \"id\": \"status-bloqueado\",\n \"condition\": {\n \"==\": [\n {\n \"var\": \"status\"\n },\n \"bloqueado\"\n ]\n },\n \"cssClass\": \"status-bloqueado\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"set-currency-format-preset\",\n \"request\": \"Formatar a coluna total como moeda brasileira\",\n \"operationId\": \"column.format.set\",\n \"target\": \"total\",\n \"params\": {\n \"format\": \"BRL|symbol|2\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"set-cpf-format-preset\",\n \"request\": \"Formate a coluna CPF\",\n \"operationId\": \"column.format.set\",\n \"target\": \"cpf\",\n \"params\": {\n \"format\": \"000.000.000-00\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"set-long-date-format-preset\",\n \"request\": \"Mostre a data de admissão por extenso\",\n \"operationId\": \"column.format.set\",\n \"target\": \"dataAdmissao\",\n \"params\": {\n \"format\": \"longDate\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"set-basic-column-width\",\n \"request\": \"Definir a largura da coluna nome para 240px\",\n \"operationId\": \"column.width.set\",\n \"target\": \"nome\",\n \"params\": {\n \"width\": \"240px\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"set-salary-align-right\",\n \"request\": \"Alinhe o salário à direita\",\n \"operationId\": \"column.align.set\",\n \"target\": \"salario\",\n \"params\": {\n \"align\": \"right\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"make-name-sticky-start\",\n \"request\": \"Fixe a coluna funcionário no início da tabela\",\n \"operationId\": \"column.sticky.set\",\n \"target\": \"funcionario\",\n \"params\": {\n \"sticky\": \"start\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"disable-cpf-sorting\",\n \"request\": \"Não permita ordenar pela coluna CPF\",\n \"operationId\": \"column.sortable.set\",\n \"target\": \"cpf\",\n \"params\": {\n \"sortable\": false\n },\n \"isPositive\": true\n },\n {\n \"id\": \"enable-department-filter\",\n \"request\": \"Deixe o departamento disponível nos filtros\",\n \"operationId\": \"column.filterable.set\",\n \"target\": \"departamento\",\n \"params\": {\n \"filterable\": true\n },\n \"isPositive\": true\n },\n {\n \"id\": \"hide-internal-id-column\",\n \"request\": \"Oculte o ID interno da tabela\",\n \"operationId\": \"column.visibility.set\",\n \"target\": \"id\",\n \"params\": {\n \"visible\": false\n },\n \"isPositive\": true\n },\n {\n \"id\": \"map-active-status-labels\",\n \"request\": \"Mostre Sim e Não na coluna ativo\",\n \"operationId\": \"column.valueMapping.set\",\n \"target\": \"ativo\",\n \"params\": {\n \"valueMapping\": {\n \"true\": \"Sim\",\n \"false\": \"Não\"\n }\n },\n \"isPositive\": true\n },\n {\n \"id\": \"set-avatar-chip-renderer\",\n \"request\": \"Corrija o avatar do funcionário e mantenha o nome como chip\",\n \"operationId\": \"column.renderer.set\",\n \"target\": \"funcionario\",\n \"params\": {\n \"type\": \"compose\",\n \"compose\": {\n \"items\": [\n {\n \"type\": \"avatar\",\n \"avatar\": {\n \"srcField\": \"avatarUrl\",\n \"initialsField\": \"funcionario\",\n \"shape\": \"circle\",\n \"backgroundColor\": \"#E3F2FD\",\n \"textColor\": \"#0D47A1\"\n }\n },\n {\n \"type\": \"chip\",\n \"chip\": {\n \"textField\": \"funcionario\",\n \"variant\": \"soft\"\n }\n }\n ]\n }\n },\n \"isPositive\": true\n },\n {\n \"id\": \"animate-high-salary-row\",\n \"request\": \"Anime suavemente as linhas com salário acima de 30000\",\n \"operationId\": \"row.conditionalRenderer.add\",\n \"params\": {\n \"id\": \"salario-alto-pulse\",\n \"condition\": {\n \">\": [\n {\n \"var\": \"salario\"\n },\n 30000\n ]\n },\n \"animation\": {\n \"preset\": \"pulse-soft\",\n \"trigger\": \"onAppear\",\n \"intensity\": \"subtle\",\n \"repeat\": \"once\",\n \"durationMs\": 1200\n },\n \"description\": \"Destaca linhas de salário alto sem alterar os dados.\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"style-low-salary-cell\",\n \"request\": \"Para salários menores que 30000, use fundo laranja claro\",\n \"operationId\": \"column.conditionalStyle.add\",\n \"target\": \"salario\",\n \"params\": {\n \"id\": \"salario-baixo-laranja\",\n \"condition\": {\n \"<\": [\n {\n \"var\": \"salario\"\n },\n 30000\n ]\n },\n \"style\": {\n \"backgroundColor\": \"#FFF3E0\",\n \"color\": \"#8A4B00\"\n },\n \"tooltip\": {\n \"text\": \"Salário abaixo do recorte configurado\",\n \"position\": \"top\"\n }\n },\n \"isPositive\": true\n },\n {\n \"id\": \"enable-advanced-filters-human\",\n \"request\": \"Ative filtros avançados e deixe CPF e departamento sempre visíveis\",\n \"operationId\": \"filter.advanced.configure\",\n \"params\": {\n \"enabled\": true,\n \"queryBuilder\": true,\n \"savePresets\": true,\n \"settings\": {\n \"mode\": \"filter\",\n \"showAdvanced\": true,\n \"alwaysVisibleFields\": [\n \"cpf\",\n \"departamento\"\n ]\n }\n },\n \"isPositive\": true\n },\n {\n \"id\": \"add-salary-to-advanced-filters-human\",\n \"request\": \"Inclua também Salário nesses filtros\",\n \"operationId\": \"filter.advanced.fields.add\",\n \"params\": {\n \"fields\": [\n \"salario\"\n ],\n \"selected\": true,\n \"alwaysVisible\": true\n },\n \"isPositive\": true\n },\n {\n \"id\": \"remove-active-from-advanced-filters-human\",\n \"request\": \"Agora remova Ativo desses filtros\",\n \"operationId\": \"filter.advanced.fields.remove\",\n \"params\": {\n \"fields\": [\n \"ativo\"\n ],\n \"selected\": true,\n \"alwaysVisible\": true\n },\n \"isPositive\": true\n },\n {\n \"id\": \"enable-table-filters-human\",\n \"request\": \"Habilite os filtros dinâmicos da tabela\",\n \"operationId\": \"behavior.filtering.configure\",\n \"params\": {\n \"enabled\": true,\n \"strategy\": \"client\",\n \"debounceMs\": 250\n },\n \"isPositive\": true\n },\n {\n \"id\": \"compact-density-human\",\n \"request\": \"Deixe a tabela mais compacta\",\n \"operationId\": \"appearance.density.set\",\n \"params\": {\n \"density\": \"compact\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"toolbar-search-refresh-human\",\n \"request\": \"Mostre busca e botão de atualizar na toolbar\",\n \"operationId\": \"toolbar.configure\",\n \"params\": {\n \"visible\": true,\n \"showSearch\": true,\n \"showRefresh\": true\n },\n \"isPositive\": true\n },\n {\n \"id\": \"configure-server-pagination\",\n \"request\": \"Usar paginacao no servidor com 50 linhas por pagina\",\n \"operationId\": \"behavior.pagination.configure\",\n \"params\": {\n \"enabled\": true,\n \"strategy\": \"server\",\n \"pageSize\": 50,\n \"position\": \"bottom\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"configure-default-sorting\",\n \"request\": \"Ordenar inicialmente por data de criacao decrescente\",\n \"operationId\": \"behavior.sorting.configure\",\n \"params\": {\n \"enabled\": true,\n \"strategy\": \"server\",\n \"defaultSort\": {\n \"field\": \"createdAt\",\n \"direction\": \"desc\"\n }\n },\n \"isPositive\": true\n },\n {\n \"id\": \"configure-bulk-actions\",\n \"request\": \"Habilitar acoes em lote na toolbar\",\n \"operationId\": \"actions.bulk.configure\",\n \"params\": {\n \"enabled\": true,\n \"position\": \"toolbar\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"configure-localization\",\n \"request\": \"Configurar a tabela para portugues do Brasil\",\n \"operationId\": \"localization.configure\",\n \"params\": {\n \"locale\": \"pt-BR\",\n \"direction\": \"ltr\",\n \"dateTime\": {\n \"dateFormat\": \"dd/MM/yyyy\"\n }\n },\n \"isPositive\": true\n },\n {\n \"id\": \"configure-accessibility\",\n \"request\": \"Ativar alto contraste e reduzir animacoes\",\n \"operationId\": \"accessibility.configure\",\n \"params\": {\n \"enabled\": true,\n \"highContrast\": true,\n \"reduceMotion\": true,\n \"announcements\": {\n \"liveRegion\": \"polite\"\n }\n },\n \"isPositive\": true\n },\n {\n \"id\": \"require-removal-confirmation\",\n \"request\": \"Remover a coluna nome\",\n \"operationId\": \"column.remove\",\n \"target\": \"nome\",\n \"isPositive\": true\n }\n ]\n}",
21861
21875
  "sourcePointer": "praxis-ui-angular/projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
21862
- "contentHash": "7726b5843ad8ac250c39fb3130d85cacadfd3201d3ddfb47240c0f6d3904a7dc",
21876
+ "contentHash": "10127385a8188804af1d053bb80bf5edc0d307b0c39289f63f2e87834dcb7ca1",
21863
21877
  "sourceKind": "component_definition",
21864
21878
  "sourceId": "praxis-table",
21865
21879
  "corpusVersion": "1.0.0"
@@ -21867,9 +21881,9 @@
21867
21881
  {
21868
21882
  "chunkIndex": 3,
21869
21883
  "chunkKind": "context_pack",
21870
- "content": "{\n \"componentContext\": {\n \"version\": \"v1\",\n \"optionsByPath\": {\n \"appearance.density\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"compact\",\n \"label\": \"Compact\"\n },\n {\n \"value\": \"comfortable\",\n \"label\": \"Comfortable\"\n },\n {\n \"value\": \"spacious\",\n \"label\": \"Spacious\"\n }\n ]\n },\n \"export.formats\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"excel\",\n \"label\": \"Excel\"\n },\n {\n \"value\": \"pdf\",\n \"label\": \"PDF\"\n },\n {\n \"value\": \"csv\",\n \"label\": \"CSV\"\n },\n {\n \"value\": \"json\",\n \"label\": \"JSON\"\n },\n {\n \"value\": \"print\",\n \"label\": \"Print\"\n }\n ]\n },\n \"columns[].type\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"string\",\n \"label\": \"String\"\n },\n {\n \"value\": \"number\",\n \"label\": \"Number\"\n },\n {\n \"value\": \"currency\",\n \"label\": \"Currency\"\n },\n {\n \"value\": \"percentage\",\n \"label\": \"Percentage\"\n },\n {\n \"value\": \"date\",\n \"label\": \"Date\"\n },\n {\n \"value\": \"boolean\",\n \"label\": \"Boolean\"\n },\n {\n \"value\": \"custom\",\n \"label\": \"Custom\"\n }\n ]\n },\n \"columns[].format\": {\n \"mode\": \"suggested\",\n \"options\": [\n {\n \"value\": \"shortDate\",\n \"label\": \"Date short\",\n \"example\": \"01/12/2023\"\n },\n {\n \"value\": \"mediumDate\",\n \"label\": \"Date medium\",\n \"example\": \"01 Dec 2023\"\n },\n {\n \"value\": \"longDate\",\n \"label\": \"Date long\",\n \"example\": \"01 December 2023\"\n },\n {\n \"value\": \"fullDate\",\n \"label\": \"Date full\",\n \"example\": \"Friday, 01 December 2023\"\n },\n {\n \"value\": \"MMM/yyyy\",\n \"label\": \"Month/Year\",\n \"example\": \"Dec/2023\"\n },\n {\n \"value\": \"shortTime\",\n \"label\": \"Time short\",\n \"example\": \"14:30\"\n },\n {\n \"value\": \"short\",\n \"label\": \"Date+Time short\",\n \"example\": \"01/12/2023 14:30\"\n },\n {\n \"value\": \"yyyy-MM-dd\",\n \"label\": \"ISO 8601\",\n \"example\": \"2023-12-01\"\n },\n {\n \"value\": \"dd/MM/yyyy\",\n \"label\": \"Date dd/MM/yyyy\",\n \"example\": \"01/12/2023\"\n },\n {\n \"value\": \"yyyy-MM-dd HH:mm\",\n \"label\": \"DateTime yyyy-MM-dd HH:mm\",\n \"example\": \"2023-12-01 14:30\"\n },\n {\n \"value\": \"1.0-0\",\n \"label\": \"Number integer\",\n \"example\": \"1,234\"\n },\n {\n \"value\": \"1.1-1\",\n \"label\": \"Number 1 decimal\",\n \"example\": \"1,234.5\"\n },\n {\n \"value\": \"1.2-2\",\n \"label\": \"Number 2 decimals\",\n \"example\": \"1,234.56\"\n },\n {\n \"value\": \"1.0-3\",\n \"label\": \"Number up to 3 decimals\",\n \"example\": \"1,234.567\"\n },\n {\n \"value\": \"1.0-0|nosep\",\n \"label\": \"Number no grouping\",\n \"example\": \"1234\"\n },\n {\n \"value\": \"BRL|symbol|2\",\n \"label\": \"Currency BRL symbol\",\n \"example\": \"R$ 1.234,56\"\n },\n {\n \"value\": \"BRL|symbol|2|nosep\",\n \"label\": \"Currency BRL symbol (no grouping)\",\n \"example\": \"R$ 1234,56\"\n },\n {\n \"value\": \"USD|symbol|2\",\n \"label\": \"Currency USD symbol\",\n \"example\": \"US$ 1,234.56\"\n },\n {\n \"value\": \"EUR|symbol|2\",\n \"label\": \"Currency EUR symbol\",\n \"example\": \"EUR 1,234.56\"\n },\n {\n \"value\": \"BRL|code|2\",\n \"label\": \"Currency code\",\n \"example\": \"1,234.56 BRL\"\n },\n {\n \"value\": \"USD|code|0\",\n \"label\": \"Currency USD code (0 decimals)\",\n \"example\": \"1234 USD\"\n },\n {\n \"value\": \"EUR|symbol|2|nosep\",\n \"label\": \"Currency EUR symbol (no grouping)\",\n \"example\": \"EUR 1234,56\"\n },\n {\n \"value\": \"1.0-0\",\n \"label\": \"Percent 0 decimals\",\n \"example\": \"12%\"\n },\n {\n \"value\": \"1.1-1\",\n \"label\": \"Percent 1 decimal\",\n \"example\": \"12.3%\"\n },\n {\n \"value\": \"1.2-2\",\n \"label\": \"Percent 2 decimals\",\n \"example\": \"12.34%\"\n },\n {\n \"value\": \"1.0-0|x100\",\n \"label\": \"Percent 0 decimals (x100)\",\n \"example\": \"12%\"\n },\n {\n \"value\": \"1.1-1|x100\",\n \"label\": \"Percent 1 decimal (x100)\",\n \"example\": \"12.3%\"\n },\n {\n \"value\": \"1.2-2|x100\",\n \"label\": \"Percent 2 decimals (x100)\",\n \"example\": \"12.34%\"\n },\n {\n \"value\": \"none\",\n \"label\": \"String none\",\n \"example\": \"Sample\"\n },\n {\n \"value\": \"uppercase\",\n \"label\": \"String uppercase\",\n \"example\": \"SAMPLE\"\n },\n {\n \"value\": \"lowercase\",\n \"label\": \"String lowercase\",\n \"example\": \"sample\"\n },\n {\n \"value\": \"titlecase\",\n \"label\": \"String titlecase\",\n \"example\": \"Sample Text\"\n },\n {\n \"value\": \"capitalize\",\n \"label\": \"String capitalize\",\n \"example\": \"Sample\"\n },\n {\n \"value\": \"uppercase|truncate|50|...\",\n \"label\": \"String uppercase + truncate 50\",\n \"example\": \"SAMPLE...\"\n },\n {\n \"value\": \"true-false\",\n \"label\": \"Boolean true/false\",\n \"example\": \"True / False\"\n },\n {\n \"value\": \"yes-no\",\n \"label\": \"Boolean yes/no\",\n \"example\": \"Yes / No\"\n },\n {\n \"value\": \"active-inactive\",\n \"label\": \"Boolean active/inactive\",\n \"example\": \"Active / Inactive\"\n },\n {\n \"value\": \"on-off\",\n \"label\": \"Boolean on/off\",\n \"example\": \"On / Off\"\n },\n {\n \"value\": \"enabled-disabled\",\n \"label\": \"Boolean enabled/disabled\",\n \"example\": \"Enabled / Disabled\"\n },\n {\n \"value\": \"custom|Sim|Nao\",\n \"label\": \"Boolean custom (Sim/Nao)\",\n \"example\": \"Sim / Nao\"\n }\n ]\n },\n \"columns[].computed.outputType\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"string\",\n \"label\": \"String\"\n },\n {\n \"value\": \"number\",\n \"label\": \"Number\"\n },\n {\n \"value\": \"currency\",\n \"label\": \"Currency\"\n },\n {\n \"value\": \"percentage\",\n \"label\": \"Percentage\"\n },\n {\n \"value\": \"date\",\n \"label\": \"Date\"\n },\n {\n \"value\": \"boolean\",\n \"label\": \"Boolean\"\n },\n {\n \"value\": \"custom\",\n \"label\": \"Custom\"\n }\n ]\n },\n \"columns[].computed.format\": {\n \"mode\": \"suggested\",\n \"options\": [\n {\n \"value\": \"shortDate\",\n \"label\": \"Date short\",\n \"example\": \"01/12/2023\"\n },\n {\n \"value\": \"mediumDate\",\n \"label\": \"Date medium\",\n \"example\": \"01 Dec 2023\"\n },\n {\n \"value\": \"longDate\",\n \"label\": \"Date long\",\n \"example\": \"01 December 2023\"\n },\n {\n \"value\": \"fullDate\",\n \"label\": \"Date full\",\n \"example\": \"Friday, 01 December 2023\"\n },\n {\n \"value\": \"MMM/yyyy\",\n \"label\": \"Month/Year\",\n \"example\": \"Dec/2023\"\n },\n {\n \"value\": \"shortTime\",\n \"label\": \"Time short\",\n \"example\": \"14:30\"\n },\n {\n \"value\": \"short\",\n \"label\": \"Date+Time short\",\n \"example\": \"01/12/2023 14:30\"\n },\n {\n \"value\": \"yyyy-MM-dd\",\n \"label\": \"ISO 8601\",\n \"example\": \"2023-12-01\"\n },\n {\n \"value\": \"dd/MM/yyyy\",\n \"label\": \"Date dd/MM/yyyy\",\n \"example\": \"01/12/2023\"\n },\n {\n \"value\": \"yyyy-MM-dd HH:mm\",\n \"label\": \"DateTime yyyy-MM-dd HH:mm\",\n \"example\": \"2023-12-01 14:30\"\n },\n {\n \"value\": \"1.0-0\",\n \"label\": \"Number integer\",\n \"example\": \"1,234\"\n },\n {\n \"value\": \"1.1-1\",\n \"label\": \"Number 1 decimal\",\n \"example\": \"1,234.5\"\n },\n {\n \"value\": \"1.2-2\",\n \"label\": \"Number 2 decimals\",\n \"example\": \"1,234.56\"\n },\n {\n \"value\": \"1.0-3\",\n \"label\": \"Number up to 3 decimals\",\n \"example\": \"1,234.567\"\n },\n {\n \"value\": \"1.0-0|nosep\",\n \"label\": \"Number no grouping\",\n \"example\": \"1234\"\n },\n {\n \"value\": \"BRL|symbol|2\",\n \"label\": \"Currency BRL symbol\",\n \"example\": \"R$ 1.234,56\"\n },\n {\n \"value\": \"BRL|symbol|2|nosep\",\n \"label\": \"Currency BRL symbol (no grouping)\",\n \"example\": \"R$ 1234,56\"\n },\n {\n \"value\": \"USD|symbol|2\",\n \"label\": \"Currency USD symbol\",\n \"example\": \"US$ 1,234.56\"\n },\n {\n \"value\": \"EUR|symbol|2\",\n \"label\": \"Currency EUR symbol\",\n \"example\": \"EUR 1,234.56\"\n },\n {\n \"value\": \"BRL|code|2\",\n \"label\": \"Currency code\",\n \"example\": \"1,234.56 BRL\"\n },\n {\n \"value\": \"USD|code|0\",\n \"label\": \"Currency USD code (0 decimals)\",\n \"example\": \"1234 USD\"\n },\n {\n \"value\": \"EUR|symbol|2|nosep\",\n \"label\": \"Currency EUR symbol (no grouping)\",\n \"example\": \"EUR 1234,56\"\n },\n {\n \"value\": \"1.0-0\",\n \"label\": \"Percent 0 decimals\",\n \"example\": \"12%\"\n },\n {\n \"value\": \"1.1-1\",\n \"label\": \"Percent 1 decimal\",\n \"example\": \"12.3%\"\n },\n {\n \"value\": \"1.2-2\",\n \"label\": \"Percent 2 decimals\",\n \"example\": \"12.34%\"\n },\n {\n \"value\": \"1.0-0|x100\",\n \"label\": \"Percent 0 decimals (x100)\",\n \"example\": \"12%\"\n },\n {\n \"value\": \"1.1-1|x100\",\n \"label\": \"Percent 1 decimal (x100)\",\n \"example\": \"12.3%\"\n },\n {\n \"value\": \"1.2-2|x100\",\n \"label\": \"Percent 2 decimals (x100)\",\n \"example\": \"12.34%\"\n },\n {\n \"value\": \"none\",\n \"label\": \"String none\",\n \"example\": \"Sample\"\n },\n {\n \"value\": \"uppercase\",\n \"label\": \"String uppercase\",\n \"example\": \"SAMPLE\"\n },\n {\n \"value\": \"lowercase\",\n \"label\": \"String lowercase\",\n \"example\": \"sample\"\n },\n {\n \"value\": \"titlecase\",\n \"label\": \"String titlecase\",\n \"example\": \"Sample Text\"\n },\n {\n \"value\": \"capitalize\",\n \"label\": \"String capitalize\",\n \"example\": \"Sample\"\n },\n {\n \"value\": \"uppercase|truncate|50|...\",\n \"label\": \"String uppercase + truncate 50\",\n \"example\": \"SAMPLE...\"\n },\n {\n \"value\": \"true-false\",\n \"label\": \"Boolean true/false\",\n \"example\": \"True / False\"\n },\n {\n \"value\": \"yes-no\",\n \"label\": \"Boolean yes/no\",\n \"example\": \"Yes / No\"\n },\n {\n \"value\": \"active-inactive\",\n \"label\": \"Boolean active/inactive\",\n \"example\": \"Active / Inactive\"\n },\n {\n \"value\": \"on-off\",\n \"label\": \"Boolean on/off\",\n \"example\": \"On / Off\"\n },\n {\n \"value\": \"enabled-disabled\",\n \"label\": \"Boolean enabled/disabled\",\n \"example\": \"Enabled / Disabled\"\n },\n {\n \"value\": \"custom|Sim|Nao\",\n \"label\": \"Boolean custom (Sim/Nao)\",\n \"example\": \"Sim / Nao\"\n }\n ]\n },\n \"behavior.filtering.advancedFilters.settings.mode\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"filter\",\n \"label\": \"Filter\"\n }\n ]\n },\n \"behavior.expansion.state.mode\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"controlled\",\n \"label\": \"Controlled\"\n },\n {\n \"value\": \"uncontrolled\",\n \"label\": \"Uncontrolled\"\n }\n ]\n },\n \"behavior.expansion.interaction.trigger\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"icon\",\n \"label\": \"Icon\"\n },\n {\n \"value\": \"row\",\n \"label\": \"Row\"\n },\n {\n \"value\": \"both\",\n \"label\": \"Both\"\n }\n ]\n },\n \"behavior.expansion.interaction.keyboard.profile\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"disclosure\",\n \"label\": \"Disclosure\"\n },\n {\n \"value\": \"grid\",\n \"label\": \"Grid\"\n }\n ]\n },\n \"behavior.expansion.limits.onOverflow\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"collapseOldest\",\n \"label\": \"Collapse Oldest\"\n },\n {\n \"value\": \"denyNew\",\n \"label\": \"Deny New\"\n },\n {\n \"value\": \"collapseAll\",\n \"label\": \"Collapse All\"\n }\n ]\n },\n \"behavior.expansion.collapseOn.sortChange\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"true\",\n \"label\": \"Enabled\"\n },\n {\n \"value\": \"false\",\n \"label\": \"Disabled\"\n }\n ]\n },\n \"behavior.expansion.collapseOn.pageChange\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"true\",\n \"label\": \"Enabled\"\n },\n {\n \"value\": \"false\",\n \"label\": \"Disabled\"\n }\n ]\n },\n \"behavior.expansion.collapseOn.filterChange\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"true\",\n \"label\": \"Enabled\"\n },\n {\n \"value\": \"false\",\n \"label\": \"Disabled\"\n }\n ]\n },\n \"behavior.expansion.collapseOn.dataRefresh\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"true\",\n \"label\": \"Enabled\"\n },\n {\n \"value\": \"false\",\n \"label\": \"Disabled\"\n }\n ]\n },\n \"behavior.expansion.detail.source.mode\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"inline\",\n \"label\": \"Inline\"\n },\n {\n \"value\": \"resource\",\n \"label\": \"Resource\"\n },\n {\n \"value\": \"resourcePath\",\n \"label\": \"Resource Path\"\n }\n ]\n },\n \"behavior.expansion.detail.source.resource.kind\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"ui-composition\",\n \"label\": \"UI Composition\"\n },\n {\n \"value\": \"form-schema\",\n \"label\": \"Form Schema\"\n },\n {\n \"value\": \"table-schema\",\n \"label\": \"Table Schema\"\n },\n {\n \"value\": \"dashboard-schema\",\n \"label\": \"Dashboard Schema\"\n }\n ]\n },\n \"behavior.expansion.detail.source.resourcePath.method\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"GET\",\n \"label\": \"GET\"\n },\n {\n \"value\": \"POST\",\n \"label\": \"POST\"\n }\n ]\n },\n \"behavior.expansion.detail.source.resourcePath.paramsMap\": {\n \"mode\": \"suggested\",\n \"options\": [\n {\n \"value\": \"{\\\"id\\\":\\\"$row.id\\\"}\",\n \"label\": \"Row ID\"\n },\n {\n \"value\": \"{\\\"id\\\":\\\"$row.id\\\",\\\"table\\\":\\\"$ctx.tableId\\\"}\",\n \"label\": \"Row + Table\"\n }\n ]\n },\n \"behavior.expansion.detail.source.resourceAllowList[]\": {\n \"mode\": \"suggested\",\n \"options\": [\n {\n \"value\": \"api/orders/*/detail-schema\",\n \"label\": \"Orders detail schema\"\n },\n {\n \"value\": \"api/customers/*/detail-schema\",\n \"label\": \"Customers detail schema\"\n }\n ]\n },\n \"behavior.expansion.detail.rendering.strategy\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"registry\",\n \"label\": \"Registry\"\n }\n ]\n },\n \"behavior.expansion.detail.rendering.hostLayout\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"auto\",\n \"label\": \"Auto\"\n },\n {\n \"value\": \"stack\",\n \"label\": \"Stack\"\n },\n {\n \"value\": \"tabs\",\n \"label\": \"Tabs\"\n }\n ]\n },\n \"behavior.expansion.detail.rendering.fallbackNodePolicy\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"failClosed\",\n \"label\": \"Fail Closed\"\n },\n {\n \"value\": \"renderPlaceholder\",\n \"label\": \"Render Placeholder\"\n }\n ]\n },\n \"behavior.expansion.detail.height.mode\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"fixed\",\n \"label\": \"Fixed\"\n },\n {\n \"value\": \"dynamic\",\n \"label\": \"Dynamic\"\n }\n ]\n },\n \"behavior.expansion.virtualization.policy\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"fixed-height-only\",\n \"label\": \"Fixed Height Only\"\n },\n {\n \"value\": \"allow-dynamic-under-flag\",\n \"label\": \"Allow Dynamic Under Flag\"\n }\n ]\n },\n \"behavior.expansion.security.eventExposureDefault.rowId\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"redacted\",\n \"label\": \"Redacted\"\n },\n {\n \"value\": \"hashed\",\n \"label\": \"Hashed\"\n },\n {\n \"value\": \"raw\",\n \"label\": \"Raw\"\n }\n ]\n },\n \"behavior.expansion.security.eventExposureDefault.expandedKeys\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"none\",\n \"label\": \"None\"\n },\n {\n \"value\": \"hashed\",\n \"label\": \"Hashed\"\n },\n {\n \"value\": \"raw\",\n \"label\": \"Raw\"\n }\n ]\n },\n \"behavior.expansion.deepLink.encoding\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"csv\",\n \"label\": \"CSV\"\n }\n ]\n },\n \"behavior.expansion.deepLink.parsing.duplicateParams\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"firstWins\",\n \"label\": \"First Wins\"\n },\n {\n \"value\": \"reject\",\n \"label\": \"Reject\"\n }\n ]\n },\n \"behavior.expansion.deepLink.integrity.mode\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"opaqueToken\",\n \"label\": \"Opaque Token\"\n }\n ]\n },\n \"behavior.expansion.deepLink.privacy.mode\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"denyByDefault\",\n \"label\": \"Deny By Default\"\n },\n {\n \"value\": \"allowByDefault\",\n \"label\": \"Allow By Default\"\n }\n ]\n },\n \"columns[].renderer.type\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"icon\",\n \"label\": \"Icon\"\n },\n {\n \"value\": \"image\",\n \"label\": \"Image\"\n },\n {\n \"value\": \"badge\",\n \"label\": \"Badge\"\n },\n {\n \"value\": \"link\",\n \"label\": \"Link\"\n },\n {\n \"value\": \"button\",\n \"label\": \"Button\"\n },\n {\n \"value\": \"chip\",\n \"label\": \"Chip\"\n },\n {\n \"value\": \"progress\",\n \"label\": \"Progress\"\n },\n {\n \"value\": \"avatar\",\n \"label\": \"Avatar\"\n },\n {\n \"value\": \"toggle\",\n \"label\": \"Toggle\"\n },\n {\n \"value\": \"menu\",\n \"label\": \"Menu\"\n },\n {\n \"value\": \"rating\",\n \"label\": \"Rating\"\n },\n {\n \"value\": \"html\",\n \"label\": \"HTML\"\n },\n {\n \"value\": \"microVisualization\",\n \"label\": \"Micro visualization\"\n },\n {\n \"value\": \"compose\",\n \"label\": \"Compose\"\n }\n ]\n },\n \"columns[].renderer.image.shape\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"square\",\n \"label\": \"Square\"\n },\n {\n \"value\": \"rounded\",\n \"label\": \"Rounded\"\n },\n {\n \"value\": \"circle\",\n \"label\": \"Circle\"\n }\n ]\n },\n \"columns[].renderer.image.fit\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"cover\",\n \"label\": \"Cover\"\n },\n {\n \"value\": \"contain\",\n \"label\": \"Contain\"\n }\n ]\n },\n \"columns[].renderer.link.target\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"_blank\",\n \"label\": \"New tab\"\n },\n {\n \"value\": \"_self\",\n \"label\": \"Same tab\"\n },\n {\n \"value\": \"_parent\",\n \"label\": \"Parent frame\"\n },\n {\n \"value\": \"_top\",\n \"label\": \"Top frame\"\n }\n ]\n },\n \"columns[].renderer.button.variant\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"filled\",\n \"label\": \"Filled\"\n },\n {\n \"value\": \"outlined\",\n \"label\": \"Outlined\"\n },\n {\n \"value\": \"text\",\n \"label\": \"Text\"\n }\n ]\n },\n \"columns[].renderer.button.color\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"primary\",\n \"label\": \"Primary\"\n },\n {\n \"value\": \"accent\",\n \"label\": \"Accent\"\n },\n {\n \"value\": \"warn\",\n \"label\": \"Warn\"\n }\n ]\n },\n \"columns[].renderer.button.size\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"sm\",\n \"label\": \"Small\"\n },\n {\n \"value\": \"md\",\n \"label\": \"Medium\"\n },\n {\n \"value\": \"lg\",\n \"label\": \"Large\"\n }\n ]\n },\n \"columns[].renderer.badge.variant\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"filled\",\n \"label\": \"Filled\"\n },\n {\n \"value\": \"outlined\",\n \"label\": \"Outlined\"\n },\n {\n \"value\": \"soft\",\n \"label\": \"Soft\"\n }\n ]\n },\n \"columns[].renderer.chip.variant\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"filled\",\n \"label\": \"Filled\"\n },\n {\n \"value\": \"outlined\",\n \"label\": \"Outlined\"\n },\n {\n \"value\": \"soft\",\n \"label\": \"Soft\"\n }\n ]\n },\n \"columns[].renderer.rating.size\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"small\",\n \"label\": \"Small\"\n },\n {\n \"value\": \"medium\",\n \"label\": \"Medium\"\n },\n {\n \"value\": \"large\",\n \"label\": \"Large\"\n }\n ]\n },\n \"columns[].renderer.compose.items[].type\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"icon\",\n \"label\": \"Icon\"\n },\n {\n \"value\": \"image\",\n \"label\": \"Image\"\n },\n {\n \"value\": \"badge\",\n \"label\": \"Badge\"\n },\n {\n \"value\": \"link\",\n \"label\": \"Link\"\n },\n {\n \"value\": \"button\",\n \"label\": \"Button\"\n },\n {\n \"value\": \"chip\",\n \"label\": \"Chip\"\n },\n {\n \"value\": \"progress\",\n \"label\": \"Progress\"\n },\n {\n \"value\": \"avatar\",\n \"label\": \"Avatar\"\n },\n {\n \"value\": \"toggle\",\n \"label\": \"Toggle\"\n },\n {\n \"value\": \"menu\",\n \"label\": \"Menu\"\n },\n {\n \"value\": \"rating\",\n \"label\": \"Rating\"\n },\n {\n \"value\": \"html\",\n \"label\": \"HTML\"\n },\n {\n \"value\": \"microVisualization\",\n \"label\": \"Micro visualization\"\n }\n ]\n },\n \"columns[].renderer.microVisualization.visualization.valueExpr\": {},\n \"columns[].renderer.microVisualization.visualization.valueSuffixExpr\": {},\n \"columns[].renderer.microVisualization.visualization.totalExpr\": {},\n \"columns[].renderer.microVisualization.visualization.targetExpr\": {},\n \"columns[].renderer.microVisualization.visualization.baselineExpr\": {},\n \"columns[].renderer.microVisualization.visualization.segmentsExpr\": {},\n \"columns[].renderer.microVisualization.visualization.pointsExpr\": {},\n \"columns[].renderer.microVisualization.visualization.thresholdsExpr\": {},\n \"columns[].renderer.microVisualization.visualization.itemsExpr\": {},\n \"columns[].renderer.microVisualization.visualization.toneExpr\": {},\n \"columns[].renderer.microVisualization.visualization.ariaLabelExpr\": {},\n \"columns[].renderer.microVisualization.visualization.fallbackTextExpr\": {},\n \"columns[].conditionalRenderers[].renderer.type\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"icon\",\n \"label\": \"Icon\"\n },\n {\n \"value\": \"image\",\n \"label\": \"Image\"\n },\n {\n \"value\": \"badge\",\n \"label\": \"Badge\"\n },\n {\n \"value\": \"link\",\n \"label\": \"Link\"\n },\n {\n \"value\": \"button\",\n \"label\": \"Button\"\n },\n {\n \"value\": \"chip\",\n \"label\": \"Chip\"\n },\n {\n \"value\": \"progress\",\n \"label\": \"Progress\"\n },\n {\n \"value\": \"avatar\",\n \"label\": \"Avatar\"\n },\n {\n \"value\": \"toggle\",\n \"label\": \"Toggle\"\n },\n {\n \"value\": \"menu\",\n \"label\": \"Menu\"\n },\n {\n \"value\": \"rating\",\n \"label\": \"Rating\"\n },\n {\n \"value\": \"html\",\n \"label\": \"HTML\"\n },\n {\n \"value\": \"microVisualization\",\n \"label\": \"Micro visualization\"\n },\n {\n \"value\": \"compose\",\n \"label\": \"Compose\"\n }\n ]\n },\n \"columns[].conditionalRenderers[].renderer.image.shape\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"square\",\n \"label\": \"Square\"\n },\n {\n \"value\": \"rounded\",\n \"label\": \"Rounded\"\n },\n {\n \"value\": \"circle\",\n \"label\": \"Circle\"\n }\n ]\n },\n \"columns[].conditionalRenderers[].renderer.image.fit\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"cover\",\n \"label\": \"Cover\"\n },\n {\n \"value\": \"contain\",\n \"label\": \"Contain\"\n }\n ]\n },\n \"columns[].conditionalRenderers[].renderer.link.target\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"_blank\",\n \"label\": \"New tab\"\n },\n {\n \"value\": \"_self\",\n \"label\": \"Same tab\"\n },\n {\n \"value\": \"_parent\",\n \"label\": \"Parent frame\"\n },\n {\n \"value\": \"_top\",\n \"label\": \"Top frame\"\n }\n ]\n },\n \"columns[].conditionalRenderers[].renderer.button.variant\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"filled\",\n \"label\": \"Filled\"\n },\n {\n \"value\": \"outlined\",\n \"label\": \"Outlined\"\n },\n {\n \"value\": \"text\",\n \"label\": \"Text\"\n }\n ]\n },\n \"columns[].conditionalRenderers[].renderer.button.color\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"primary\",\n \"label\": \"Primary\"\n },\n {\n \"value\": \"accent\",\n \"label\": \"Accent\"\n },\n {\n \"value\": \"warn\",\n \"label\": \"Warn\"\n }\n ]\n },\n \"columns[].conditionalRenderers[].renderer.button.size\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"sm\",\n \"label\": \"Small\"\n },\n {\n \"value\": \"md\",\n \"label\": \"Medium\"\n },\n {\n \"value\": \"lg\",\n \"label\": \"Large\"\n }\n ]\n },\n \"columns[].conditionalRenderers[].renderer.badge.variant\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"filled\",\n \"label\": \"Filled\"\n },\n {\n \"value\": \"outlined\",\n \"label\": \"Outlined\"\n },\n {\n \"value\": \"soft\",\n \"label\": \"Soft\"\n }\n ]\n },\n \"columns[].conditionalRenderers[].renderer.chip.variant\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"filled\",\n \"label\": \"Filled\"\n },\n {\n \"value\": \"outlined\",\n \"label\": \"Outlined\"\n },\n {\n \"value\": \"soft\",\n \"label\": \"Soft\"\n }\n ]\n },\n \"columns[].conditionalRenderers[].renderer.rating.size\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"small\",\n \"label\": \"Small\"\n },\n {\n \"value\": \"medium\",\n \"label\": \"Medium\"\n },\n {\n \"value\": \"large\",\n \"label\": \"Large\"\n }\n ]\n },\n \"columns[].conditionalRenderers[].renderer.compose.items[].type\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"icon\",\n \"label\": \"Icon\"\n },\n {\n \"value\": \"image\",\n \"label\": \"Image\"\n },\n {\n \"value\": \"badge\",\n \"label\": \"Badge\"\n },\n {\n \"value\": \"link\",\n \"label\": \"Link\"\n },\n {\n \"value\": \"button\",\n \"label\": \"Button\"\n },\n {\n \"value\": \"chip\",\n \"label\": \"Chip\"\n },\n {\n \"value\": \"progress\",\n \"label\": \"Progress\"\n },\n {\n \"value\": \"avatar\",\n \"label\": \"Avatar\"\n },\n {\n \"value\": \"toggle\",\n \"label\": \"Toggle\"\n },\n {\n \"value\": \"menu\",\n \"label\": \"Menu\"\n },\n {\n \"value\": \"rating\",\n \"label\": \"Rating\"\n },\n {\n \"value\": \"html\",\n \"label\": \"HTML\"\n },\n {\n \"value\": \"microVisualization\",\n \"label\": \"Micro visualization\"\n }\n ]\n },\n \"actions.row.actions[].color\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"primary\",\n \"label\": \"Primary\"\n },\n {\n \"value\": \"accent\",\n \"label\": \"Accent\"\n },\n {\n \"value\": \"warn\",\n \"label\": \"Warn\"\n }\n ]\n },\n \"actions.row.actions[].icon\": {\n \"mode\": \"suggested\",\n \"options\": [\n {\n \"value\": \"edit\",\n \"label\": \"Edit\"\n },\n {\n \"value\": \"delete\",\n \"label\": \"Delete\"\n },\n {\n \"value\": \"visibility\",\n \"label\": \"View\"\n },\n {\n \"value\": \"more_vert\",\n \"label\": \"More\"\n },\n {\n \"value\": \"check\",\n \"label\": \"Approve\"\n },\n {\n \"value\": \"close\",\n \"label\": \"Reject\"\n },\n {\n \"value\": \"download\",\n \"label\": \"Download\"\n }\n ]\n },\n \"actions.row.actions[].globalAction.[actionId]\": {\n \"mode\": \"suggested\",\n \"options\": [\n {\n \"value\": \"toast.success\",\n \"label\": \"Toast success\"\n },\n {\n \"value\": \"toast.error\",\n \"label\": \"Toast error\"\n },\n {\n \"value\": \"dialog.alert\",\n \"label\": \"Dialog alert\"\n },\n {\n \"value\": \"dialog.open\",\n \"label\": \"Dialog open\"\n },\n {\n \"value\": \"navigation.openExternal\",\n \"label\": \"Open external URL\"\n },\n {\n \"value\": \"navigation.openRoute\",\n \"label\": \"Open internal route\"\n },\n {\n \"value\": \"api.post\",\n \"label\": \"API POST\"\n },\n {\n \"value\": \"api.patch\",\n \"label\": \"API PATCH\"\n }\n ]\n },\n \"rowConditionalStyles[].condition\": {\n \"mode\": \"suggested\",\n \"options\": [\n {\n \"value\": \"status == \\\"active\\\"\",\n \"label\": \"Status Active\"\n },\n {\n \"value\": \"amount < 0\",\n \"label\": \"Negative Amount\"\n },\n {\n \"value\": \"priority == \\\"high\\\"\",\n \"label\": \"High Priority\"\n }\n ]\n }\n },\n \"actionCatalog\": [\n {\n \"id\": \"ADD_COLUMN\",\n \"intentExamples\": [\n \"add column\",\n \"nova coluna\",\n \"criar coluna\",\n \"insert column\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"OBJECT\",\n \"operation\": \"create\",\n \"requiresExistingTarget\": false,\n \"params\": [\n {\n \"name\": \"field\",\n \"type\": \"STRING\",\n \"description\": \"Nome técnico da nova coluna\"\n },\n {\n \"name\": \"header\",\n \"type\": \"STRING\",\n \"description\": \"Título da coluna\"\n }\n ],\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{params.field}}\",\n \"header\": \"{{params.header}}\",\n \"visible\": true\n }\n ]\n }\n },\n {\n \"id\": \"ADD_COLUMN_COMPUTED\",\n \"intentExamples\": [\n \"calculated column\",\n \"coluna calculada\",\n \"compute\",\n \"formula\",\n \"expression\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"OBJECT\",\n \"operation\": \"create\",\n \"requiresExistingTarget\": false,\n \"params\": [\n {\n \"name\": \"field\",\n \"type\": \"STRING\",\n \"description\": \"Nome técnico da nova coluna (ex: total)\"\n },\n {\n \"name\": \"header\",\n \"type\": \"STRING\",\n \"description\": \"Título da coluna\"\n },\n {\n \"name\": \"expression\",\n \"type\": \"STRING\",\n \"description\": \"AST Json Logic canônico serializado em JSON para derived values (ex: { \\\"*\\\": [{ \\\"var\\\": \\\"quantity\\\" }, { \\\"var\\\": \\\"price\\\" }] })\"\n },\n {\n \"name\": \"type\",\n \"type\": \"ENUM\",\n \"options\": [\n \"number\",\n \"currency\",\n \"percentage\",\n \"string\",\n \"boolean\"\n ],\n \"description\": \"Tipo de dado resultante\"\n }\n ],\n \"relatedConcepts\": [\n \"computed-logic\"\n ],\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{params.field}}\",\n \"header\": \"{{params.header}}\",\n \"visible\": true,\n \"computed\": {\n \"expression\": \"{{params.expression}}\",\n \"outputType\": \"{{params.type}}\"\n }\n }\n ]\n }\n },\n {\n \"id\": \"HIDE_COLUMN\",\n \"intentExamples\": [\n \"hide column\",\n \"ocultar coluna\",\n \"esconder coluna\",\n \"invisible\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"defaultValue\": false,\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"visible\": false\n }\n ]\n }\n },\n {\n \"id\": \"SHOW_COLUMN\",\n \"intentExamples\": [\n \"show column\",\n \"mostrar coluna\",\n \"exibir coluna\",\n \"visible\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"defaultValue\": true,\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"visible\": true\n }\n ]\n }\n },\n {\n \"id\": \"RENAME_COLUMN\",\n \"intentExamples\": [\n \"rename column\",\n \"renomear coluna\",\n \"titulo\",\n \"cabecalho\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"STRING\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"header\": \"{{value}}\"\n }\n ]\n }\n },\n {\n \"id\": \"column.format.set\",\n \"intentExamples\": [\n \"format\",\n \"formatar\",\n \"date format\",\n \"number format\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"ENUM\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"format\": \"{{value}}\"\n }\n ]\n }\n },\n {\n \"id\": \"column.type.set\",\n \"intentExamples\": [\n \"type\",\n \"tipo\",\n \"data type\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"ENUM\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"type\": \"{{value}}\"\n }\n ]\n }\n },\n {\n \"id\": \"DISABLE_SORT\",\n \"intentExamples\": [\n \"disable sort\",\n \"desativar ordenacao\",\n \"sem ordenacao\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"defaultValue\": false,\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"sortable\": false\n }\n ]\n }\n },\n {\n \"id\": \"ENABLE_SORT\",\n \"intentExamples\": [\n \"enable sort\",\n \"ativar ordenacao\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"defaultValue\": true,\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"sortable\": true\n }\n ]\n }\n },\n {\n \"id\": \"column.width.set\",\n \"intentExamples\": [\n \"width\",\n \"largura\",\n \"col width\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"STRING\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"width\": \"{{value}}\"\n }\n ]\n }\n },\n {\n \"id\": \"column.order.set\",\n \"intentExamples\": [\n \"ordem visual\",\n \"mover coluna\",\n \"colocar depois de\",\n \"colocar antes de\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"NUMBER\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"order\": \"{{value}}\"\n }\n ]\n }\n },\n {\n \"id\": \"column.align.set\",\n \"intentExamples\": [\n \"align\",\n \"alinhamento\",\n \"left\",\n \"center\",\n \"right\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"ENUM\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"align\": \"{{value}}\"\n }\n ]\n }\n },\n {\n \"id\": \"column.sticky.set\",\n \"intentExamples\": [\n \"sticky\",\n \"fixar coluna\",\n \"pin column\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"ENUM\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"sticky\": \"{{value}}\"\n }\n ]\n }\n },\n {\n \"id\": \"column.renderer.type.set\",\n \"intentExamples\": [\n \"renderer\",\n \"render\",\n \"cell type\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"ENUM\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"renderer\": {\n \"type\": \"{{value}}\"\n }\n }\n ]\n }\n },\n {\n \"id\": \"column.renderer.image.shape.set\",\n \"intentExamples\": [\n \"image shape\",\n \"avatar shape\",\n \"imagem recorte\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"ENUM\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"renderer\": {\n \"type\": \"image\",\n \"image\": {\n \"shape\": \"{{value}}\"\n }\n }\n }\n ]\n }\n },\n {\n \"id\": \"column.renderer.link.target.set\",\n \"intentExamples\": [\n \"link target\",\n \"abrir em nova aba\",\n \"target blank\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"ENUM\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"renderer\": {\n \"type\": \"link\",\n \"link\": {\n \"target\": \"{{value}}\"\n }\n }\n }\n ]\n }\n },\n {\n \"id\": \"column.renderer.button.style.set\",\n \"intentExamples\": [\n \"button style\",\n \"botao estilo\",\n \"variant\",\n \"color\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"OBJECT\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"renderer\": {\n \"type\": \"button\",\n \"button\": {\n \"variant\": \"{{params.variant}}\",\n \"color\": \"{{params.color}}\"\n }\n }\n }\n ]\n }\n },\n {\n \"id\": \"SET_RENDERER_BADGE\",\n \"intentExamples\": [\n \"render badge\",\n \"exibir como badge\",\n \"status badge\",\n \"etiqueta\",\n \"tag\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"OBJECT\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"params\": [\n {\n \"name\": \"variant\",\n \"type\": \"ENUM\",\n \"options\": [\n \"filled\",\n \"outlined\",\n \"soft\"\n ],\n \"description\": \"Estilo visual do badge\"\n },\n {\n \"name\": \"color\",\n \"type\": \"ENUM\",\n \"options\": [\n \"primary\",\n \"accent\",\n \"warn\",\n \"success\",\n \"info\"\n ],\n \"description\": \"Cor semântica do badge\"\n }\n ],\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"renderer\": {\n \"type\": \"badge\",\n \"badge\": {\n \"text\": \"{{target}}\",\n \"textField\": \"{{target}}\",\n \"color\": \"{{params.color}}\",\n \"variant\": \"{{params.variant}}\"\n }\n }\n }\n ]\n }\n },\n {\n \"id\": \"SET_RENDERER_CHIP\",\n \"intentExamples\": [\n \"render chip\",\n \"exibir como chip\",\n \"chip\",\n \"pilula\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"OBJECT\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"renderer\": {\n \"type\": \"chip\",\n \"chip\": {\n \"textField\": \"{{target}}\",\n \"color\": \"{{params.color}}\",\n \"variant\": \"{{params.variant}}\"\n }\n }\n }\n ]\n }\n },\n {\n \"id\": \"SET_RENDERER_ICON\",\n \"intentExamples\": [\n \"render icon\",\n \"exibir como icone\",\n \"icone\",\n \"icon\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"OBJECT\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"renderer\": {\n \"type\": \"icon\",\n \"icon\": {\n \"name\": \"{{value}}\",\n \"color\": \"{{params.color}}\",\n \"size\": 18\n }\n }\n }\n ]\n }\n },\n {\n \"id\": \"SET_RENDERER_COMPOSE_TITLE_SUBTITLE\",\n \"intentExamples\": [\n \"compose title subtitle\",\n \"titulo e subtitulo\",\n \"two lines\",\n \"duas linhas\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"OBJECT\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"renderer\": {\n \"type\": \"compose\",\n \"compose\": {\n \"layout\": {\n \"direction\": \"column\",\n \"gap\": 4\n },\n \"items\": [\n {\n \"type\": \"value\",\n \"style\": \"font-weight: 500;\"\n },\n {\n \"type\": \"value\",\n \"textField\": \"{{params.subtitleField}}\",\n \"style\": \"font-size: 0.85em; color: var(--text-secondary);\"\n }\n ]\n }\n }\n }\n ]\n }\n },\n {\n \"id\": \"SET_RENDERER_COMPOSE_AVATAR_TEXT\",\n \"intentExamples\": [\n \"compose avatar text\",\n \"avatar e texto\",\n \"user card\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"OBJECT\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"renderer\": {\n \"type\": \"compose\",\n \"compose\": {\n \"layout\": {\n \"direction\": \"row\",\n \"gap\": 12,\n \"align\": \"center\"\n },\n \"items\": [\n {\n \"type\": \"avatar\",\n \"avatar\": {\n \"srcField\": \"{{params.imageField}}\",\n \"initialsField\": \"{{target}}\",\n \"shape\": \"circle\"\n }\n },\n {\n \"type\": \"compose\",\n \"compose\": {\n \"layout\": {\n \"direction\": \"column\",\n \"gap\": 2\n },\n \"items\": [\n {\n \"type\": \"value\",\n \"style\": \"font-weight: 500;\"\n },\n {\n \"type\": \"value\",\n \"textField\": \"{{params.subtitleField}}\",\n \"style\": \"font-size: 0.85em; opacity: 0.7;\"\n }\n ]\n }\n }\n ]\n }\n }\n }\n ]\n }\n },\n {\n \"id\": \"ENABLE_PAGINATION\",\n \"intentExamples\": [\n \"enable pagination\",\n \"paginar\",\n \"paginação\",\n \"pagination\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"defaultValue\": true,\n \"patchTemplate\": {\n \"behavior\": {\n \"pagination\": {\n \"enabled\": true,\n \"pageSize\": \"{{params.pageSize}}\"\n }\n }\n }\n },\n {\n \"id\": \"DISABLE_PAGINATION\",\n \"intentExamples\": [\n \"disable pagination\",\n \"remover paginacao\",\n \"lista infinita\",\n \"no pagination\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"defaultValue\": false,\n \"patchTemplate\": {\n \"behavior\": {\n \"pagination\": {\n \"enabled\": false\n }\n }\n }\n },\n {\n \"id\": \"ENABLE_FILTERING\",\n \"intentExamples\": [\n \"enable filtering\",\n \"ligar filtros\",\n \"filtrar\",\n \"searchable\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"defaultValue\": true,\n \"patchTemplate\": {\n \"behavior\": {\n \"filtering\": {\n \"enabled\": true\n }\n }\n }\n },\n {\n \"id\": \"DISABLE_FILTERING\",\n \"intentExamples\": [\n \"disable filtering\",\n \"desligar filtros\",\n \"no filter\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"defaultValue\": false,\n \"patchTemplate\": {\n \"behavior\": {\n \"filtering\": {\n \"enabled\": false\n }\n }\n }\n },\n {\n \"id\": \"ENABLE_ADVANCED_FILTERS\",\n \"intentExamples\": [\n \"advanced filters\",\n \"filtros avancados\",\n \"filtro complexo\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"defaultValue\": true,\n \"patchTemplate\": {\n \"behavior\": {\n \"filtering\": {\n \"advancedFilters\": {\n \"enabled\": true\n }\n }\n }\n }\n },\n {\n \"id\": \"SET_FILTER_MODE\",\n \"intentExamples\": [\n \"filter mode\",\n \"modo de filtro\",\n \"modo unico do filtro\",\n \"painel de filtro\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"ENUM\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"patchTemplate\": {\n \"behavior\": {\n \"filtering\": {\n \"advancedFilters\": {\n \"settings\": {\n \"mode\": \"{{value}}\"\n }\n }\n }\n }\n }\n },\n {\n \"id\": \"SET_ALWAYS_VISIBLE_FILTERS\",\n \"intentExamples\": [\n \"always visible filter\",\n \"filtro fixo\",\n \"fixar filtro\",\n \"pin filter\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"STRING\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"patchTemplate\": {\n \"behavior\": {\n \"filtering\": {\n \"advancedFilters\": {\n \"settings\": {\n \"alwaysVisibleFields\": [\n \"{{target}}\"\n ]\n }\n }\n }\n }\n }\n },\n {\n \"id\": \"ENABLE_FILTER_SAVING\",\n \"intentExamples\": [\n \"save filters\",\n \"salvar filtros\",\n \"filter tags\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"defaultValue\": true,\n \"patchTemplate\": {\n \"behavior\": {\n \"filtering\": {\n \"advancedFilters\": {\n \"settings\": {\n \"allowSaveTags\": true\n }\n }\n }\n }\n }\n },\n {\n \"id\": \"ENABLE_SORTING\",\n \"intentExamples\": [\n \"enable sorting\",\n \"ligar ordenacao\",\n \"ordenar\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"defaultValue\": true,\n \"patchTemplate\": {\n \"behavior\": {\n \"sorting\": {\n \"enabled\": true\n }\n }\n }\n },\n {\n \"id\": \"DISABLE_SORTING\",\n \"intentExamples\": [\n \"disable sorting\",\n \"desligar ordenacao\",\n \"no sort\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"defaultValue\": false,\n \"patchTemplate\": {\n \"behavior\": {\n \"sorting\": {\n \"enabled\": false\n }\n }\n }\n },\n {\n \"id\": \"ENABLE_SELECTION\",\n \"intentExamples\": [\n \"enable selection\",\n \"ativar selecao\",\n \"selecionavel\",\n \"selectable\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"defaultValue\": true,\n \"patchTemplate\": {\n \"behavior\": {\n \"selection\": {\n \"enabled\": true\n }\n }\n }\n },\n {\n \"id\": \"DISABLE_SELECTION\",\n \"intentExamples\": [\n \"disable selection\",\n \"remover selecao\",\n \"not selectable\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"defaultValue\": false,\n \"patchTemplate\": {\n \"behavior\": {\n \"selection\": {\n \"enabled\": false\n }\n }\n }\n },\n {\n \"id\": \"SET_SELECTION_SINGLE\",\n \"intentExamples\": [\n \"single selection\",\n \"selecao unica\",\n \"selecionar um\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"ENUM\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"defaultValue\": \"single\",\n \"patchTemplate\": {\n \"behavior\": {\n \"selection\": {\n \"type\": \"single\"\n }\n }\n }\n },\n {\n \"id\": \"SET_SELECTION_MULTIPLE\",\n \"intentExamples\": [\n \"multiple selection\",\n \"selecao multipla\",\n \"selecionar varios\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"ENUM\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"defaultValue\": \"multiple\",\n \"patchTemplate\": {\n \"behavior\": {\n \"selection\": {\n \"type\": \"multiple\"\n }\n }\n }\n },\n {\n \"id\": \"ENABLE_EXPORT\",\n \"intentExamples\": [\n \"enable export\",\n \"ativar exportacao\",\n \"botão exportar\",\n \"excel\",\n \"pdf\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"defaultValue\": true,\n \"patchTemplate\": {\n \"export\": {\n \"enabled\": true\n },\n \"toolbar\": {\n \"visible\": true\n }\n }\n },\n {\n \"id\": \"DISABLE_EXPORT\",\n \"intentExamples\": [\n \"disable export\",\n \"remover exportacao\",\n \"esconder exportar\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"defaultValue\": false,\n \"patchTemplate\": {\n \"export\": {\n \"enabled\": false\n }\n }\n },\n {\n \"id\": \"SET_DENSITY\",\n \"intentExamples\": [\n \"set density\",\n \"mudar densidade\",\n \"compacto\",\n \"confortavel\",\n \"espacoso\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"ENUM\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"patchTemplate\": {\n \"appearance\": {\n \"density\": \"{{value}}\"\n }\n }\n },\n {\n \"id\": \"SHOW_BORDERS\",\n \"intentExamples\": [\n \"show borders\",\n \"mostrar bordas\",\n \"com bordas\",\n \"grid lines\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"defaultValue\": true,\n \"patchTemplate\": {\n \"appearance\": {\n \"borders\": {\n \"showRowBorders\": true,\n \"showColumnBorders\": true\n }\n }\n }\n },\n {\n \"id\": \"HIDE_BORDERS\",\n \"intentExamples\": [\n \"hide borders\",\n \"ocultar bordas\",\n \"sem bordas\",\n \"clean look\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"defaultValue\": false,\n \"patchTemplate\": {\n \"appearance\": {\n \"borders\": {\n \"showRowBorders\": false,\n \"showColumnBorders\": false,\n \"showOuterBorder\": false\n }\n }\n }\n },\n {\n \"id\": \"ENABLE_STRIPED_ROWS\",\n \"intentExamples\": [\n \"striped rows\",\n \"zebrado\",\n \"linhas alternadas\",\n \"zebra\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"defaultValue\": true,\n \"patchTemplate\": {\n \"appearance\": {\n \"colors\": {\n \"alternateRowBackground\": \"#f7f9fc\"\n }\n }\n }\n },\n {\n \"id\": \"DISABLE_STRIPED_ROWS\",\n \"intentExamples\": [\n \"disable striped\",\n \"remover zebrado\",\n \"fundo solido\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"defaultValue\": false,\n \"patchTemplate\": {\n \"appearance\": {\n \"colors\": {}\n }\n }\n },\n {\n \"id\": \"SHOW_TOOLBAR\",\n \"intentExamples\": [\n \"show toolbar\",\n \"mostrar toolbar\",\n \"barra de ferramentas\",\n \"titulo da tabela\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"defaultValue\": true,\n \"patchTemplate\": {\n \"toolbar\": {\n \"visible\": true\n }\n }\n },\n {\n \"id\": \"HIDE_TOOLBAR\",\n \"intentExamples\": [\n \"hide toolbar\",\n \"esconder toolbar\",\n \"remover titulo\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"defaultValue\": false,\n \"patchTemplate\": {\n \"toolbar\": {\n \"visible\": false\n }\n }\n },\n {\n \"id\": \"SET_TOOLBAR_POSITION\",\n \"intentExamples\": [\n \"toolbar position\",\n \"posicao da toolbar\",\n \"toolbar no topo\",\n \"toolbar embaixo\",\n \"toolbar em cima\",\n \"toolbar ambos\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"ENUM\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"patchTemplate\": {\n \"toolbar\": {\n \"position\": \"{{value}}\"\n }\n }\n },\n {\n \"id\": \"SET_TOOLBAR_ACTIONS_POSITION\",\n \"intentExamples\": [\n \"acoes da toolbar\",\n \"barra de acoes\",\n \"acoes no topo\",\n \"acoes embaixo\",\n \"acoes em cima\",\n \"acoes em ambos\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"ENUM\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"patchTemplate\": {\n \"toolbar\": {\n \"actionsPosition\": \"{{value}}\"\n }\n }\n },\n {\n \"id\": \"SET_TOOLBAR_ACTIONS_BG\",\n \"intentExamples\": [\n \"cor barra de acoes\",\n \"fundo da barra de acoes\",\n \"background acoes\",\n \"acoes com cor\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"STRING\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"patchTemplate\": {\n \"toolbar\": {\n \"actionsBackgroundColor\": \"{{value}}\"\n }\n }\n },\n {\n \"id\": \"ENABLE_VIRTUALIZATION\",\n \"intentExamples\": [\n \"enable virtualization\",\n \"virtualizar\",\n \"scroll infinito\",\n \"performance\",\n \"large dataset\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"defaultValue\": true,\n \"patchTemplate\": {\n \"behavior\": {\n \"virtualization\": {\n \"enabled\": true,\n \"itemHeight\": 48\n }\n },\n \"performance\": {\n \"virtualization\": {\n \"enabled\": true,\n \"itemHeight\": 48\n }\n }\n }\n },\n {\n \"id\": \"DISABLE_VIRTUALIZATION\",\n \"intentExamples\": [\n \"disable virtualization\",\n \"desativar virtualizacao\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"defaultValue\": false,\n \"patchTemplate\": {\n \"behavior\": {\n \"virtualization\": {\n \"enabled\": false\n }\n },\n \"performance\": {\n \"virtualization\": {\n \"enabled\": false\n }\n }\n }\n },\n {\n \"id\": \"ENABLE_ROW_EXPANSION\",\n \"intentExamples\": [\n \"expand row\",\n \"expandir linha\",\n \"detalhe expansivel\",\n \"row details\",\n \"master detail\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"defaultValue\": true,\n \"patchTemplate\": {\n \"behavior\": {\n \"expansion\": {\n \"enabled\": true,\n \"contractVersion\": \"1.0.0\",\n \"interaction\": {\n \"trigger\": \"icon\",\n \"keyboard\": {\n \"profile\": \"disclosure\"\n }\n },\n \"limits\": {\n \"allowMultiple\": false,\n \"maxExpandedRows\": 1,\n \"onOverflow\": \"collapseOldest\"\n },\n \"detail\": {\n \"schemaContract\": {\n \"kind\": \"praxis.detail.schema\",\n \"version\": \"1.0.0\"\n },\n \"source\": {\n \"mode\": \"inline\",\n \"inlineSchema\": {\n \"layout\": \"stack\",\n \"items\": []\n }\n },\n \"rendering\": {\n \"strategy\": \"registry\",\n \"registryId\": \"praxis.detail.default\"\n }\n }\n }\n }\n }\n },\n {\n \"id\": \"SET_EXPANSION_SOURCE_MODE\",\n \"intentExamples\": [\n \"expansion source\",\n \"detail source\",\n \"schema source\",\n \"resource detail\",\n \"resourcePath detail\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"ENUM\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"patchTemplate\": {\n \"behavior\": {\n \"expansion\": {\n \"detail\": {\n \"source\": {\n \"mode\": \"{{value}}\"\n }\n }\n }\n }\n }\n },\n {\n \"id\": \"SET_EXPANSION_RESOURCE\",\n \"intentExamples\": [\n \"detail resource id\",\n \"resource detail id\",\n \"ui composition detail\",\n \"schema detail resource\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"OBJECT\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"patchTemplate\": {\n \"behavior\": {\n \"expansion\": {\n \"detail\": {\n \"source\": {\n \"mode\": \"resource\",\n \"resource\": {\n \"kind\": \"{{params.kind}}\",\n \"id\": \"{{params.id}}\",\n \"version\": \"{{params.version}}\"\n }\n }\n }\n }\n }\n }\n },\n {\n \"id\": \"SET_COLUMN_BOLD\",\n \"intentExamples\": [\n \"column bold\",\n \"coluna negrito\",\n \"destacar coluna\",\n \"bold text\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"STRING\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"style\": \"font-weight: 600;\"\n }\n ]\n }\n },\n {\n \"id\": \"SET_COLUMN_COLOR\",\n \"intentExamples\": [\n \"column color\",\n \"cor da coluna\",\n \"pintar coluna\",\n \"text color\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"STRING\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"style\": \"color: {{value}};\"\n }\n ]\n }\n },\n {\n \"id\": \"SET_HEADER_UPPERCASE\",\n \"intentExamples\": [\n \"header uppercase\",\n \"cabecalho maiuscula\",\n \"titulo caixa alta\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"STRING\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"headerStyle\": \"text-transform: uppercase;\"\n }\n ]\n }\n },\n {\n \"id\": \"SET_HEADER_BOLD\",\n \"intentExamples\": [\n \"header bold\",\n \"cabecalho negrito\",\n \"titulo forte\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"STRING\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"headerStyle\": \"font-weight: 600;\"\n }\n ]\n }\n },\n {\n \"id\": \"SET_HEADER_BG_COLOR\",\n \"intentExamples\": [\n \"header background\",\n \"fundo cabecalho\",\n \"cor titulo\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"STRING\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"headerStyle\": \"background-color: {{value}};\"\n }\n ]\n }\n },\n {\n \"id\": \"SET_HEADER_TEXT_COLOR\",\n \"intentExamples\": [\n \"header text color\",\n \"cor texto cabecalho\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"STRING\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"headerStyle\": \"color: {{value}};\"\n }\n ]\n }\n },\n {\n \"id\": \"SET_TOOLBAR_ALIGNMENT\",\n \"intentExamples\": [\n \"toolbar align\",\n \"alinhar toolbar\",\n \"alinhamento barra\",\n \"space-between\",\n \"start\",\n \"end\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"ENUM\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"patchTemplate\": {\n \"toolbar\": {\n \"layout\": {\n \"alignment\": \"{{value}}\"\n }\n }\n }\n },\n {\n \"id\": \"ENABLE_GROUPING\",\n \"intentExamples\": [\n \"group by\",\n \"agrupar por\",\n \"agrupamento\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"STRING\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"patchTemplate\": {\n \"behavior\": {\n \"grouping\": {\n \"enabled\": true,\n \"fields\": [\n \"{{target}}\"\n ],\n \"expanded\": true\n }\n }\n }\n },\n {\n \"id\": \"CLEAR_GROUPING\",\n \"intentExamples\": [\n \"ungroup\",\n \"desagrupar\",\n \"remover agrupamento\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"defaultValue\": true,\n \"patchTemplate\": {\n \"behavior\": {\n \"grouping\": {\n \"enabled\": false,\n \"fields\": []\n }\n }\n }\n },\n {\n \"id\": \"ENABLE_ROW_ACTIONS\",\n \"intentExamples\": [\n \"enable row actions\",\n \"acoes de linha\",\n \"botoes na linha\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"defaultValue\": true,\n \"patchTemplate\": {\n \"actions\": {\n \"row\": {\n \"enabled\": true,\n \"sticky\": \"end\"\n }\n }\n }\n },\n {\n \"id\": \"ADD_ROW_ACTION_ICON\",\n \"intentExamples\": [\n \"add row action\",\n \"botao de acao\",\n \"adicionar botao\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"OBJECT\",\n \"operation\": \"create\",\n \"requiresExistingTarget\": false,\n \"patchTemplate\": {\n \"actions\": {\n \"row\": {\n \"actions\": [\n {\n \"id\": \"{{id}}\",\n \"icon\": \"{{icon}}\",\n \"label\": \"{{label}}\",\n \"color\": \"{{params.color}}\",\n \"overflow\": false\n }\n ]\n }\n }\n }\n },\n {\n \"id\": \"ADD_ROW_ACTION_MENU\",\n \"intentExamples\": [\n \"add row menu\",\n \"acao no menu\",\n \"item de menu\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"OBJECT\",\n \"operation\": \"create\",\n \"requiresExistingTarget\": false,\n \"patchTemplate\": {\n \"actions\": {\n \"row\": {\n \"actions\": [\n {\n \"id\": \"{{id}}\",\n \"icon\": \"{{icon}}\",\n \"label\": \"{{label}}\",\n \"overflow\": true\n }\n ]\n }\n }\n }\n },\n {\n \"id\": \"ADD_ROW_STYLE_BG\",\n \"intentExamples\": [\n \"row background condition\",\n \"pintar linha se\",\n \"cor de fundo condicional\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"OBJECT\",\n \"operation\": \"create\",\n \"requiresExistingTarget\": false,\n \"patchTemplate\": {\n \"rowConditionalStyles\": [\n {\n \"condition\": \"{{condition}}\",\n \"style\": {\n \"background-color\": \"{{value}}\"\n }\n }\n ]\n }\n },\n {\n \"id\": \"ADD_ROW_STYLE_COLOR\",\n \"intentExamples\": [\n \"row text color condition\",\n \"cor texto linha se\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"OBJECT\",\n \"operation\": \"create\",\n \"requiresExistingTarget\": false,\n \"patchTemplate\": {\n \"rowConditionalStyles\": [\n {\n \"condition\": \"{{condition}}\",\n \"style\": {\n \"color\": \"{{value}}\"\n }\n }\n ]\n }\n },\n {\n \"id\": \"ADD_CONDITIONAL_RENDERER\",\n \"intentExamples\": [\n \"conditional renderer\",\n \"renderer condicional\",\n \"badge condicional\",\n \"chip condicional\",\n \"badge se\",\n \"chip se\",\n \"conditional badge\",\n \"conditional chip\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"OBJECT\",\n \"operation\": \"create\",\n \"requiresExistingTarget\": true,\n \"params\": [\n {\n \"name\": \"condition\",\n \"type\": \"STRING\",\n \"description\": \"Objeto JSON Logic canonico serializado, nunca DSL textual (ex: { \\\">\\\": [{ \\\"var\\\": \\\"recompensa\\\" }, 500000] })\"\n },\n {\n \"name\": \"renderer\",\n \"type\": \"STRING\",\n \"description\": \"Renderer completo com type e config (ex: { type: \\\"badge\\\", badge: { textField: \\\"recompensa\\\", color: \\\"#ff69b4\\\", variant: \\\"filled\\\" } })\"\n }\n ],\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"conditionalRenderers\": [\n {\n \"condition\": \"{{params.condition}}\",\n \"renderer\": \"{{params.renderer}}\"\n }\n ]\n }\n ]\n }\n },\n {\n \"id\": \"ADD_CONDITIONAL_ICON\",\n \"intentExamples\": [\n \"conditional icon\",\n \"icone condicional\",\n \"icone se\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"OBJECT\",\n \"operation\": \"create\",\n \"requiresExistingTarget\": true,\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"conditionalRenderers\": [\n {\n \"condition\": \"{{condition}}\",\n \"renderer\": {\n \"type\": \"icon\",\n \"icon\": {\n \"name\": \"{{value}}\",\n \"color\": \"{{params.color}}\"\n }\n }\n }\n ]\n }\n ]\n }\n }\n ],\n \"fieldResolvers\": {\n \"columns[].field\": [\n \"field\",\n \"header\"\n ],\n \"actions.row.actions[].id\": [\n \"id\",\n \"label\"\n ],\n \"rowConditionalStyles[].condition\": [\n \"condition\"\n ]\n },\n \"hints\": [\n \"Use semantic patches with columns[] and field, not JSON Patch or column indexes.\",\n \"Set columns[].type before choosing columns[].format presets to avoid mismatched formatting.\",\n \"Renderer config overrides format/valueMapping; avoid mixing unless required.\",\n \"Use ADD_CONDITIONAL_RENDERER with renderer.type + renderer.<type> config for conditional badges/chips.\",\n \"When the table already shows a status/boolean column as valueMapping or chip/badge and the user refines colors, variants, icons, animation or tooltip, preserve the target column and create conditionalRenderers per semantic value instead of repeating the same valueMapping.\",\n \"For boolean chips/badges, model true/false branches explicitly: condition {\\\"==\\\":[{\\\"var\\\":\\\"<field>\\\"},true]} for the positive label and {\\\"==\\\":[{\\\"var\\\":\\\"<field>\\\"},false]} for the negative label; use renderer.type \\\"chip\\\" or \\\"badge\\\" with text, color and variant.\",\n \"DOC: Widget purpose: data table with sorting, filtering, pagination, and actions.\",\n \"DOC: Host inputs: tableId (required), resourcePath (optional), config (optional).\",\n \"DOC: config defaults to createDefaultTableConfig(); columns may start empty.\",\n \"DOC: behavior.expansion.detail é schema-driven; altere source.mode (inline/resource/resourcePath), não use detail.type.\",\n \"DOC: Para detail.source.mode=resource, sempre informar resource.kind + resource.id + resource.version.\",\n \"DOC: Para detail.source.mode=resourcePath, sempre informar resourcePath.paramsMap + resourceAllowList[]; URL absoluta/scheme (http:, https:, data:, javascript:) é bloqueada e o runtime aplica fail-closed.\",\n \"DOC: collapseOn ativo no runtime P0A: sortChange, pageChange, filterChange e dataRefresh.\",\n \"DOC: When resourcePath is available, the table can load schema and data; ask the user to pick an API resource when missing.\",\n \"DOC: resourcePath must be the base resource path only (no /filter, /all, /{id}). CRUD endpoints are handled internally.\",\n \"DOC: columns[].computed.expression agora usa AST Json Logic canônico para derived values; não use fórmulas string.\",\n \"DOC: Operadores/funções canônicos úteis: +, -, *, /, %, min, max, cat, substr, round, ceil, floor, abs, coalesce, now, date, yearsSince, monthsSince, daysSince, len, toNumber e stringify.\",\n \"DOC: Examples: {\\\"yearsSince\\\":[{\\\"var\\\":\\\"dataNascimento\\\"}]} → idade; {\\\"yearsSince\\\":[{\\\"var\\\":\\\"dataAdmissao\\\"}]} → tempoEmpresa (anos); {\\\"monthsSince\\\":[{\\\"var\\\":\\\"dataAdmissao\\\"}]} → tempoEmpresa (meses); {\\\"daysSince\\\":[{\\\"var\\\":\\\"dataCadastro\\\"}]} → dias desde cadastro; {\\\"+\\\":[{\\\"coalesce\\\":[{\\\"var\\\":\\\"bonus\\\"},0]},{\\\"var\\\":\\\"salario\\\"}]} → total com fallback.\",\n \"### DATA ARCHETYPE TO VISUAL STRATEGY\",\n \"Apply these patterns based on the SEMANTIC NATURE of the column data:\",\n \"- STATUS/STATE (e.g., phase, stage, is_active, priority):\",\n \" -> Use \\\"badge\\\" or \\\"chip\\\" with conditional colors (success/warn/error/info).\",\n \" -> Use \\\"valueMapping\\\" to convert codes (1, \\\"A\\\") to labels (\\\"Active\\\", \\\"Approved\\\").\",\n \"- METRICS/KPI (e.g., progress, score, rating, completion):\",\n \" -> Use \\\"progress\\\" (bars), \\\"rating\\\" (stars), or \\\"percentage\\\" type.\",\n \" -> Align \\\"right\\\".\",\n \"- FINANCIAL (e.g., price, cost, balance, total):\",\n \" -> Use type \\\"currency\\\" and format \\\"BRL|symbol|2\\\" (or per locale).\",\n \" -> Align \\\"right\\\". Style: \\\"font-variant-numeric: tabular-nums\\\".\",\n \"- ENTITIES (e.g., user, product, thumb):\",\n \" -> Use \\\"avatar\\\" (for people/users) or \\\"image\\\" (for products/files).\",\n \" -> Combine with \\\"link\\\" or \\\"compose\\\" for title+subtitle layouts.\",\n \"- INTERACTIVE/NAV (e.g., details, website, download):\",\n \" -> Use \\\"button\\\" (actions), \\\"link\\\" (navigation) or \\\"icon\\\" (simple triggers).\",\n \"- BOOLEAN (e.g., has_tax, is_valid):\",\n \" -> Use \\\"toggle\\\" (if editable) or \\\"icon\\\" (check/close) or \\\"badge\\\" (Yes/No).\",\n \"- IDENTIFIERS (e.g., uuid, sku, order_id, cpf):\",\n \" -> Style: \\\"font-family: monospace\\\".\",\n \" -> CRITICAL: Do NOT use numeric formatting (like \\\"1.0-0\\\") for IDs. Treat them as strings.\",\n \" -> Consider adding a \\\"copy\\\" context action.\",\n \"- GROUPING (e.g., category, department):\",\n \" -> If the user asks to \\\"group by X\\\", use the ENABLE_GROUPING action with target=X.\",\n \"- TEMPORAL (e.g., created_at, deadline):\",\n \" -> Use type \\\"date\\\". Prefer \\\"short\\\" or \\\"shortDate\\\" for compact views.\",\n \" -> Use standard format (dd/MM/yyyy) for strict records.\"\n ]\n },\n \"aiConcepts\": {\n \"authoring-envelope\": {\n \"id\": \"authoring-envelope\",\n \"title\": \"Envelope de Autoria\",\n \"description\": \"Contrato primário de autoria usado por editor visual, editor JSON, playground e IA.\",\n \"rules\": [\n \"O JSON primário de autoria é TableAuthoringDocument com kind \\\"praxis.table.editor\\\".\",\n \"bindings.resourcePath e bindings.horizontalScroll não devem ser embutidos diretamente no TableConfig.\",\n \"meta.idField pertence ao TableConfig canônico e deve ser editado como metadado da configuração.\",\n \"TableConfig representa a projeção canônica de runtime, não o envelope completo de autoria.\",\n \"meta.schemaId e meta.serverHash são snapshots persistidos de reconciliação, não fonte primária do runtime.\"\n ],\n \"examples\": [\n \"{ kind: \\\"praxis.table.editor\\\", version: 1, config: { meta: { idField: \\\"employeeId\\\" }, columns: [{ field: \\\"name\\\", header: \\\"Nome\\\" }] }, bindings: { resourcePath: \\\"employees\\\", horizontalScroll: \\\"auto\\\" } }\"\n ],\n \"antiPatterns\": [\n \"{ columns: [{ field: \\\"name\\\", header: \\\"Nome\\\" }], __resourcePath__: \\\"employees\\\" }\",\n \"{ config: { columns: [] }, bindings: { idField: \\\"employeeId\\\" } }\"\n ]\n },\n \"meta-identity\": {\n \"id\": \"meta-identity\",\n \"title\": \"Identidade e Metadados\",\n \"description\": \"Regras para meta.* persistível (nome, descrição, tags, schemaId).\",\n \"rules\": [\n \"meta.idField deve apontar para o campo único das linhas quando configurado.\",\n \"Alterar meta.idField exige confirmação pois impacta seleção e ações por linha.\",\n \"meta.tags deve ser uma lista de strings curtas e sem espaços extras.\",\n \"meta.schemaId é referência de origem; use apenas valores conhecidos.\"\n ],\n \"examples\": [\n \"meta.name = \\\"Funcionários ativos\\\"\",\n \"meta.description = \\\"Visão de colaboradores ativos com filtros por status.\\\"\",\n \"meta.tags = [\\\"financeiro\\\", \\\"demo\\\"]\",\n \"meta.idField = \\\"employeeId\\\"\"\n ],\n \"antiPatterns\": [\n \"meta.idField = \\\"id\\\" (sem validar se existe no dataset)\",\n \"meta.tags = \\\"financeiro\\\"\"\n ]\n },\n \"columns-core\": {\n \"id\": \"columns-core\",\n \"title\": \"Colunas Básicas\",\n \"description\": \"Definições essenciais de colunas (field, header, visible, order, width).\",\n \"rules\": [\n \"columns[].field deve ser único e existir no dataset.\",\n \"Não reutilize o mesmo field em duas colunas.\",\n \"Use order para posicionar colunas; menor valor = mais à esquerda.\",\n \"width aceita valores CSS (ex.: \\\"120px\\\", \\\"10%\\\", \\\"auto\\\").\"\n ],\n \"examples\": [\n \"{ field: \\\"status\\\", header: \\\"Status\\\", visible: true, order: 2 }\",\n \"{ field: \\\"createdAt\\\", header: \\\"Criado em\\\", width: \\\"140px\\\" }\"\n ],\n \"antiPatterns\": [\n \"{ field: \\\"status\\\", header: \\\"Status\\\" } e outra coluna com field \\\"status\\\"\",\n \"{ field: \\\"price\\\", width: 120 }\"\n ]\n },\n \"columns-behavior\": {\n \"id\": \"columns-behavior\",\n \"title\": \"Comportamento de Coluna\",\n \"description\": \"Configura sortable, filterable, resizable, align e sticky.\",\n \"rules\": [\n \"sortable e filterable devem refletir o comportamento real do backend.\",\n \"resizable depende de behavior.resizing.enabled quando disponível.\",\n \"align deve ser left/center/right.\",\n \"sticky aceita true, \\\"start\\\" ou \\\"end\\\".\"\n ],\n \"examples\": [\n \"{ field: \\\"amount\\\", sortable: true, filterable: true, align: \\\"right\\\" }\",\n \"{ field: \\\"id\\\", sticky: \\\"start\\\" }\"\n ],\n \"antiPatterns\": [\n \"{ align: \\\"middle\\\" }\",\n \"{ sticky: \\\"left\\\" }\"\n ]\n },\n \"columns-styles\": {\n \"id\": \"columns-styles\",\n \"title\": \"Estilos de Coluna\",\n \"description\": \"CSS inline e classes para células e cabeçalho.\",\n \"rules\": [\n \"cssClass/headerCssClass devem ser nomes de classe válidos.\",\n \"style/headerStyle são CSS inline curtos e seguros.\",\n \"Evite !important e regras muito longas.\"\n ],\n \"examples\": [\n \"{ field: \\\"status\\\", cssClass: \\\"col-status\\\" }\",\n \"{ field: \\\"name\\\", headerStyle: \\\"text-transform: uppercase;\\\" }\"\n ],\n \"antiPatterns\": [\n \"{ headerCssClass: \\\"header title\\\" }\",\n \"{ style: \\\"background: url(javascript:...)\\\" }\"\n ]\n },\n \"columns-types\": {\n \"id\": \"columns-types\",\n \"title\": \"Tipos e Formatos de Coluna\",\n \"description\": \"Regras de type/format por tipo de dado.\",\n \"rules\": [\n \"type deve ser um dos tipos suportados (string/number/date/boolean/currency/percentage/custom).\",\n \"format deve ser compatível com type e presets do sistema.\",\n \"Para currency, use formato \\\"BRL|symbol|2\\\" ou semelhante.\",\n \"Para date, use DatePipe ou presets existentes.\"\n ],\n \"examples\": [\n \"{ field: \\\"createdAt\\\", type: \\\"date\\\", format: \\\"dd/MM/yyyy\\\" }\",\n \"{ field: \\\"amount\\\", type: \\\"currency\\\", format: \\\"BRL|symbol|2\\\" }\"\n ],\n \"antiPatterns\": [\n \"{ type: \\\"money\\\" }\",\n \"{ format: \\\"money()\\\" }\"\n ]\n },\n \"columns-formatting\": {\n \"id\": \"columns-formatting\",\n \"title\": \"Mapeamento e Formatação Avançada\",\n \"description\": \"valueMapping, format e estilos adicionais.\",\n \"rules\": [\n \"valueMapping deve usar chaves de string para mapear valores crus.\",\n \"Use format presets quando disponíveis; evite formatos inventados.\"\n ],\n \"syntax\": \"format: \\\"BRL|symbol|2\\\"\",\n \"examples\": [\n \"{ field: \\\"active\\\", valueMapping: { \\\"1\\\": \\\"Ativo\\\", \\\"0\\\": \\\"Inativo\\\" } }\"\n ],\n \"antiPatterns\": [\n \"{ valueMapping: { 1: \\\"Ativo\\\" } }\"\n ]\n },\n \"columns-internals\": {\n \"id\": \"columns-internals\",\n \"title\": \"Campos Internos de Coluna\",\n \"description\": \"Campos reservados usados por fluxos internos e importação.\",\n \"rules\": [\n \"Evite setar _styleRulesState, _generatedValueGetter, _originalApiType e _isApiField manualmente.\",\n \"Use apenas em fluxos de migração ou importação controlada.\"\n ],\n \"examples\": [\n \"(_isApiField true só quando coluna veio da API)\"\n ],\n \"antiPatterns\": [\n \"{ _generatedValueGetter: \\\"row => row.value\\\" }\"\n ]\n },\n \"computed-logic\": {\n \"id\": \"computed-logic\",\n \"title\": \"Lógica de Colunas Calculadas\",\n \"description\": \"Regras matemáticas e de sintaxe para colunas computed.\",\n \"rules\": [\n \"Use AST Json Logic canônico em columns[].computed.expression.\",\n \"Acesse campos da linha com {\\\"var\\\":\\\"field\\\"} e dependências anteriores com {\\\"var\\\":\\\"computed.total\\\"}.\",\n \"Operadores/funções disponíveis incluem +, -, *, /, %, min, max, cat, substr, round, floor, ceil, abs, coalesce, now, date, yearsSince, monthsSince, daysSince, len, toNumber e stringify.\",\n \"NÃO use prefixos como \\\"row.\\\", \\\"this.\\\" ou \\\"item.\\\", nem strings DSL.\",\n \"O resultado deve ser compatível com o outputType (number, currency, percentage, string).\"\n ],\n \"syntax\": \"{\\\"*\\\":[{\\\"var\\\":\\\"fieldA\\\"},{\\\"var\\\":\\\"fieldB\\\"}]}\",\n \"examples\": [\n \"{\\\"*\\\":[{\\\"var\\\":\\\"quantity\\\"},{\\\"var\\\":\\\"unitPrice\\\"}]}\",\n \"{\\\"/\\\":[{\\\"-\\\":[{\\\"var\\\":\\\"total\\\"},{\\\"var\\\":\\\"cost\\\"}]},{\\\"var\\\":\\\"total\\\"}]}\",\n \"{\\\"min\\\":[{\\\"var\\\":\\\"stock\\\"},100]}\",\n \"{\\\"abs\\\":[{\\\"var\\\":\\\"balance\\\"}]}\"\n ],\n \"antiPatterns\": [\n \"\\\"quantity * price\\\"\",\n \"row.quantity * row.price\",\n \"Math.max(price, 0)\",\n \"return quantity * price;\"\n ]\n },\n \"renderers-core\": {\n \"id\": \"renderers-core\",\n \"title\": \"Renderers de Coluna\",\n \"description\": \"Regras para columns[].renderer.* e tipos suportados.\",\n \"rules\": [\n \"Defina columns[].renderer.type antes de configurar detalhes.\",\n \"Para renderers interativos (button, toggle, menu), configure action.\",\n \"renderer.html deve usar template com placeholders [[field]].\",\n \"renderer.link deve preferir hrefField/textField quando o valor vem do dataset.\"\n ],\n \"examples\": [\n \"{ renderer: { type: \\\"badge\\\", badge: { textField: \\\"status\\\", color: \\\"success\\\" } } }\",\n \"{ renderer: { type: \\\"button\\\", button: { label: \\\"Editar\\\", action: { id: \\\"edit-row\\\" } } } }\"\n ],\n \"antiPatterns\": [\n \"{ renderer: { badge: { text: \\\"Ativo\\\" } } }\",\n \"{ renderer: { type: \\\"button\\\", button: { label: \\\"Editar\\\" } } }\"\n ]\n },\n \"renderer-icon\": {\n \"id\": \"renderer-icon\",\n \"title\": \"Renderer Icon\",\n \"description\": \"Configuração de renderer.icon.*\",\n \"rules\": [\n \"Use icon.name para ícone fixo ou icon.nameField para dinâmico.\",\n \"icon.size é em px.\",\n \"ariaLabel deve ser descritivo.\"\n ],\n \"examples\": [\n \"{ renderer: { type: \\\"icon\\\", icon: { name: \\\"check_circle\\\", color: \\\"success\\\", size: 18 } } }\"\n ],\n \"antiPatterns\": [\n \"{ icon: { name: \\\"check\\\" } } sem renderer.type\"\n ]\n },\n \"renderer-image\": {\n \"id\": \"renderer-image\",\n \"title\": \"Renderer Image\",\n \"description\": \"Configuração de renderer.image.*\",\n \"rules\": [\n \"Use srcField quando a URL vem do dataset.\",\n \"Defina alt/altField para acessibilidade.\",\n \"width/height são em px.\",\n \"shape deve ser square/rounded/circle.\"\n ],\n \"examples\": [\n \"{ renderer: { type: \\\"image\\\", image: { srcField: \\\"avatarUrl\\\", shape: \\\"circle\\\", width: 32, height: 32 } } }\"\n ],\n \"antiPatterns\": [\n \"{ renderer: { type: \\\"image\\\", image: { src: \\\"\\\" } } }\"\n ]\n },\n \"renderer-badge\": {\n \"id\": \"renderer-badge\",\n \"title\": \"Renderer Badge\",\n \"description\": \"Configuração de renderer.badge.*\",\n \"rules\": [\n \"Badge requer text ou textField.\",\n \"variant deve ser filled/outlined/soft.\"\n ],\n \"examples\": [\n \"{ renderer: { type: \\\"badge\\\", badge: { textField: \\\"status\\\", variant: \\\"filled\\\" } } }\"\n ],\n \"antiPatterns\": [\n \"{ badge: {} }\"\n ]\n },\n \"renderer-link\": {\n \"id\": \"renderer-link\",\n \"title\": \"Renderer Link\",\n \"description\": \"Configuração de renderer.link.*\",\n \"rules\": [\n \"Use hrefField quando URL vem do dataset.\",\n \"target deve ser _blank/_self/_parent/_top.\",\n \"rel deve ser usado com target _blank (ex.: noopener).\"\n ],\n \"examples\": [\n \"{ renderer: { type: \\\"link\\\", link: { textField: \\\"name\\\", hrefField: \\\"profileUrl\\\", target: \\\"_blank\\\", rel: \\\"noopener\\\" } } }\"\n ],\n \"antiPatterns\": [\n \"{ link: { href: \\\"javascript:alert(1)\\\" } }\"\n ]\n },\n \"renderer-button\": {\n \"id\": \"renderer-button\",\n \"title\": \"Renderer Button\",\n \"description\": \"Configuração de renderer.button.*\",\n \"rules\": [\n \"button.action.id é obrigatório para ações interativas.\",\n \"disabledCondition usa expressao condicional canonica em JSON Logic.\",\n \"variant deve ser filled/outlined/text.\"\n ],\n \"examples\": [\n \"{ renderer: { type: \\\"button\\\", button: { label: \\\"Editar\\\", action: { id: \\\"edit-row\\\" } } } }\"\n ],\n \"antiPatterns\": [\n \"{ button: { label: \\\"Editar\\\" } }\"\n ]\n },\n \"renderer-chip\": {\n \"id\": \"renderer-chip\",\n \"title\": \"Renderer Chip\",\n \"description\": \"Configuração de renderer.chip.*\",\n \"rules\": [\n \"Chip requer text ou textField.\",\n \"variant deve ser filled/outlined/soft.\"\n ],\n \"examples\": [\n \"{ renderer: { type: \\\"chip\\\", chip: { text: \\\"Ativo\\\", variant: \\\"filled\\\" } } }\"\n ],\n \"antiPatterns\": [\n \"{ chip: { variant: \\\"ghost\\\" } }\"\n ]\n },\n \"renderer-progress\": {\n \"id\": \"renderer-progress\",\n \"title\": \"Renderer Progress\",\n \"description\": \"Configuração de renderer.progress.*\",\n \"rules\": [\n \"valueExpr deve retornar 0-100.\",\n \"showLabel controla exibição do valor.\"\n ],\n \"examples\": [\n \"{ renderer: { type: \\\"progress\\\", progress: { valueExpr: \\\"progress\\\", showLabel: true } } }\"\n ],\n \"antiPatterns\": [\n \"{ progress: { valueExpr: \\\"progress/100\\\" } } sem garantir 0-100\"\n ]\n },\n \"renderer-avatar\": {\n \"id\": \"renderer-avatar\",\n \"title\": \"Renderer Avatar\",\n \"description\": \"Configuração de renderer.avatar.*\",\n \"rules\": [\n \"Use srcField para imagem dinâmica.\",\n \"initialsField deriva iniciais automaticamente a partir de um campo textual.\",\n \"initialsExpr é fallback quando não há imagem e deve retornar as iniciais prontas; não use JS arbitrário para split/map/trim.\",\n \"Use backgroundColor e textColor para colorir o círculo do avatar; para variar por linha, aplique esses campos em conditionalRenderers.\",\n \"shape deve ser circle/square/rounded.\"\n ],\n \"examples\": [\n \"{ renderer: { type: \\\"avatar\\\", avatar: { srcField: \\\"avatarUrl\\\", initialsField: \\\"name\\\" } } }\",\n \"{ renderer: { type: \\\"avatar\\\", avatar: { initialsExpr: \\\"initials\\\" } } }\",\n \"{ conditionalRenderers: [{ condition: { \\\">\\\": [{ \\\"var\\\": \\\"salary\\\" }, 30000] }, renderer: { type: \\\"avatar\\\", avatar: { initialsField: \\\"name\\\", backgroundColor: \\\"#D32F2F\\\", textColor: \\\"#FFFFFF\\\" } } }] }\"\n ],\n \"antiPatterns\": [\n \"{ avatar: { initialsExpr: \\\"name\\\" } }\",\n \"{ avatar: { shape: \\\"round\\\" } }\"\n ]\n },\n \"renderer-toggle\": {\n \"id\": \"renderer-toggle\",\n \"title\": \"Renderer Toggle\",\n \"description\": \"Configuração de renderer.toggle.*\",\n \"rules\": [\n \"toggle.action.id é obrigatório para persistir mudança.\",\n \"disabledCondition usa expressao condicional canonica em JSON Logic.\"\n ],\n \"examples\": [\n \"{ renderer: { type: \\\"toggle\\\", toggle: { stateExpr: \\\"active\\\", action: { id: \\\"toggle-active\\\" } } } }\"\n ],\n \"antiPatterns\": [\n \"{ toggle: { stateExpr: \\\"active\\\" } } sem action\"\n ]\n },\n \"renderer-menu\": {\n \"id\": \"renderer-menu\",\n \"title\": \"Renderer Menu\",\n \"description\": \"Configuração de renderer.menu.*\",\n \"rules\": [\n \"itemsExpr deve produzir lista de ações válidas.\",\n \"ariaLabel deve descrever o menu.\"\n ],\n \"examples\": [\n \"{ renderer: { type: \\\"menu\\\", menu: { itemsExpr: \\\"row.menuItems\\\", ariaLabel: \\\"Ações\\\" } } }\"\n ],\n \"antiPatterns\": [\n \"{ menu: { itemsExpr: \\\"row => row.items\\\" } }\"\n ]\n },\n \"renderer-rating\": {\n \"id\": \"renderer-rating\",\n \"title\": \"Renderer Rating\",\n \"description\": \"Configuração de renderer.rating.*\",\n \"rules\": [\n \"valueExpr deve retornar numero dentro do max.\",\n \"O renderer é somente leitura por padrão; não use readonly no schema funcional.\"\n ],\n \"examples\": [\n \"{ renderer: { type: \\\"rating\\\", rating: { valueExpr: \\\"score\\\", max: 5, ariaLabel: \\\"Nota {value} de {max}\\\" } } }\"\n ],\n \"antiPatterns\": [\n \"{ rating: { max: 0 } }\"\n ]\n },\n \"renderer-html\": {\n \"id\": \"renderer-html\",\n \"title\": \"Renderer HTML\",\n \"description\": \"Configuração de renderer.html.*\",\n \"rules\": [\n \"template deve usar placeholders [[field]].\",\n \"sanitize deve ser strict ou basic, preferindo strict.\"\n ],\n \"examples\": [\n \"{ renderer: { type: \\\"html\\\", html: { template: \\\"<strong>[[name]]</strong>\\\", sanitize: \\\"strict\\\" } } }\"\n ],\n \"antiPatterns\": [\n \"{ html: { template: \\\"<script>alert(1)</script>\\\" } }\"\n ]\n },\n \"renderer-compose\": {\n \"id\": \"renderer-compose\",\n \"title\": \"Renderer Compose\",\n \"description\": \"Composição de múltiplos renderers na mesma célula.\",\n \"rules\": [\n \"columns[].renderer.compose.items deve ser uma lista de renderers válidos.\",\n \"Defina layout (direction, gap, align) para evitar overflow.\",\n \"Evite mixar elementos interativos sem espaço suficiente.\"\n ],\n \"examples\": [\n \"{ renderer: { type: \\\"compose\\\", compose: { items: [{ type: \\\"icon\\\", icon: { name: \\\"check\\\" } }, { type: \\\"text\\\", textField: \\\"status\\\" }], layout: { direction: \\\"row\\\", gap: 8 } } } }\"\n ],\n \"antiPatterns\": [\n \"{ renderer: { type: \\\"compose\\\", compose: { items: [] } } }\"\n ]\n },\n \"conditional-json-logic\": {\n \"id\": \"conditional-json-logic\",\n \"title\": \"Expressoes Condicionais\",\n \"description\": \"Sintaxe de condições para conditionalRenderers e filtros de estilo.\",\n \"rules\": [\n \"Use objetos JSON Logic com referencias var (ex: { \\\"===\\\": [{ \\\"var\\\": \\\"status\\\" }, \\\"Ativo\\\"] }).\",\n \"Operadores suportados: ===, !==, >, <, >=, <=, and, or, !.\",\n \"Funcoes comuns: { \\\"contains\\\": [{ \\\"var\\\": \\\"name\\\" }, \\\"Silva\\\"] }.\",\n \"Pode referenciar computed.<field> quando existir.\",\n \"NAO use DSL textual, JavaScript (row., this., Math., ternario, eval) nem strings de expressao.\"\n ],\n \"syntax\": \"{\\\"and\\\":[{\\\"contains\\\":[{\\\"var\\\":\\\"status\\\"},\\\"Ativo\\\"]},{\\\">=\\\":[{\\\"var\\\":\\\"price\\\"},100]}]}\",\n \"examples\": [\n \"{\\\"===\\\":[{\\\"var\\\":\\\"status\\\"},\\\"Ativo\\\"]}\",\n \"{\\\"contains\\\":[{\\\"var\\\":\\\"name\\\"},\\\"Silva\\\"]}\",\n \"{\\\">\\\":[{\\\"var\\\":\\\"computed.total\\\"},1000]}\"\n ],\n \"antiPatterns\": [\n \"row.status == \\\"Ativo\\\"\",\n \"Math.max(price, 0) > 10\",\n \"status ? \\\"A\\\" : \\\"B\\\"\"\n ]\n },\n \"conditional-renderers\": {\n \"id\": \"conditional-renderers\",\n \"title\": \"Renderers Condicionais\",\n \"description\": \"Configura conditionalRenderers por coluna.\",\n \"rules\": [\n \"condition usa expressao condicional canonica em JSON Logic.\",\n \"renderer interno segue as mesmas regras dos renderers padrão.\",\n \"Para animar apenas uma célula/coluna quando a condição for verdadeira, use columns[].conditionalRenderers[].animation.\",\n \"enabled controla ativacao da regra.\"\n ],\n \"examples\": [\n \"{ conditionalRenderers: [{ condition: { \\\"===\\\": [{ \\\"var\\\": \\\"status\\\" }, \\\"Ativo\\\"] }, renderer: { type: \\\"badge\\\", badge: { text: \\\"Ativo\\\" } } }] }\",\n \"{ conditionalRenderers: [{ condition: { \\\">\\\": [{ \\\"var\\\": \\\"salario\\\" }, 30000] }, animation: { preset: \\\"pulse-soft\\\", trigger: \\\"onAppear\\\", intensity: \\\"subtle\\\", repeat: \\\"once\\\" } }] }\"\n ],\n \"antiPatterns\": [\n \"{ conditionalRenderers: [{ condition: \\\"row.status == \\\"Ativo\\\"\\\" }] }\",\n \"{ conditionalStyles: [{ style: { animation: \\\"pulse 1s infinite\\\" } }] }\"\n ]\n },\n \"conditional-animations\": {\n \"id\": \"conditional-animations\",\n \"title\": \"Animações Condicionais\",\n \"description\": \"Animações condicionais de linha e célula na tabela.\",\n \"rules\": [\n \"Use rowConditionalRenderers[].animation para animar a linha inteira.\",\n \"Use columns[].conditionalRenderers[].animation para animar somente o conteúdo de uma célula/coluna.\",\n \"Prefira preset semântico antes de type bruto: info-soft, success-confirm, warning-attention, critical-alert, audit-review, sync-pending, pulse-soft, fade-soft, sla-warning, sla-breach, risk-elevated, risk-critical, audit-warning ou sync-warning.\",\n \"condition sempre usa JSON Logic; não use JS, row.status ou strings de expressão.\",\n \"appearance.animations.enabled=false desativa animações; appearance.animations.specific.row/cell=false desativa o escopo correspondente.\",\n \"onConditionEnter, onConditionExit e onDataRefresh são aceitos no contrato de autoria e normalizados para gatilho de mudança no runtime.\"\n ],\n \"examples\": [\n \"{ rowConditionalRenderers: [{ id: \\\"salary-high-pulse\\\", condition: { \\\">\\\": [{ \\\"var\\\": \\\"salario\\\" }, 30000] }, animation: { preset: \\\"pulse-soft\\\", trigger: \\\"onAppear\\\", intensity: \\\"subtle\\\", repeat: \\\"once\\\", durationMs: 1200 }, enabled: true }] }\",\n \"{ columns: [{ field: \\\"status\\\", conditionalRenderers: [{ id: \\\"status-critical-alert\\\", condition: { \\\"===\\\": [{ \\\"var\\\": \\\"status\\\" }, \\\"Critico\\\"] }, animation: { preset: \\\"critical-alert\\\", trigger: \\\"onChange\\\", repeat: \\\"loop\\\", intensity: \\\"strong\\\" }, enabled: true }] }] }\"\n ],\n \"antiPatterns\": [\n \"{ rowConditionalStyles: [{ style: { animation: \\\"pulse 1s infinite\\\" } }] }\",\n \"{ rowConditionalRenderers: [{ condition: \\\"row.salario > 30000\\\", animation: { name: \\\"pulse\\\" } }] }\",\n \"{ columns: [{ conditionalStyles: [{ condition: { \\\">\\\": [{ \\\"var\\\": \\\"salario\\\" }, 30000] }, style: { animationName: \\\"pulse\\\" } }] }] }\"\n ]\n },\n \"conditional-styles\": {\n \"id\": \"conditional-styles\",\n \"title\": \"Estilos Condicionais por Coluna\",\n \"description\": \"Configura conditionalStyles.*\",\n \"rules\": [\n \"condition usa expressao condicional canonica em JSON Logic.\",\n \"cssClass define classe e style aplica inline.\",\n \"description deve ser texto curto.\"\n ],\n \"examples\": [\n \"{ conditionalStyles: [{ condition: { \\\"<\\\": [{ \\\"var\\\": \\\"amount\\\" }, 0] }, cssClass: \\\"col-negative\\\" }] }\"\n ],\n \"antiPatterns\": [\n \"{ conditionalStyles: [{ condition: \\\"row.amount < 0\\\" }] }\"\n ]\n },\n \"row-conditional-styles\": {\n \"id\": \"row-conditional-styles\",\n \"title\": \"Estilos Condicionais de Linha\",\n \"description\": \"Configura rowConditionalStyles.*\",\n \"rules\": [\n \"condition usa expressao condicional canonica em JSON Logic.\",\n \"cssClass define classe e style aplica inline.\",\n \"description deve ser texto curto.\"\n ],\n \"examples\": [\n \"{ rowConditionalStyles: [{ condition: { \\\"<\\\": [{ \\\"var\\\": \\\"amount\\\" }, 0] }, cssClass: \\\"row-negative\\\" }] }\"\n ],\n \"antiPatterns\": [\n \"{ rowConditionalStyles: [{ condition: \\\"row.amount < 0\\\" }] }\"\n ]\n },\n \"behavior-pagination\": {\n \"id\": \"behavior-pagination\",\n \"title\": \"Paginação (Behavior)\",\n \"description\": \"Configuração de behavior.pagination.*\",\n \"rules\": [\n \"strategy deve ser client ou server.\",\n \"pageSizeOptions deve incluir pageSize.\",\n \"advanced.maxPageSize limita pageSize customizado.\"\n ],\n \"examples\": [\n \"{ behavior: { pagination: { enabled: true, strategy: \\\"server\\\", pageSize: 25, pageSizeOptions: [10, 25, 50] } } }\"\n ],\n \"antiPatterns\": [\n \"{ behavior: { pagination: { strategy: \\\"server\\\" } } } sem totalItems\"\n ]\n },\n \"behavior-sorting\": {\n \"id\": \"behavior-sorting\",\n \"title\": \"Ordenação (Behavior)\",\n \"description\": \"Configuração de behavior.sorting.*\",\n \"rules\": [\n \"defaultSort pode ser objeto unico ou lista.\",\n \"multiSort true permite multiplos campos.\",\n \"allowClearSort habilita terceiro clique.\"\n ],\n \"examples\": [\n \"{ behavior: { sorting: { enabled: true, strategy: \\\"client\\\", defaultSort: { column: \\\"createdAt\\\", direction: \\\"desc\\\" } } } }\"\n ],\n \"antiPatterns\": [\n \"{ behavior: { sorting: { defaultSort: { column: \\\"\\\", direction: \\\"asc\\\" } } } }\"\n ]\n },\n \"behavior-filtering\": {\n \"id\": \"behavior-filtering\",\n \"title\": \"Filtros (Behavior)\",\n \"description\": \"Configuração de behavior.filtering.*\",\n \"rules\": [\n \"columnFilters.position deve ser header/subheader/sidebar.\",\n \"advancedFilters.settings controla o painel avançado.\",\n \"strategy deve refletir suporte do backend.\"\n ],\n \"examples\": [\n \"{ behavior: { filtering: { enabled: true, columnFilters: { enabled: true, position: \\\"header\\\" } } } }\"\n ],\n \"antiPatterns\": [\n \"{ behavior: { filtering: { enabled: true } } } sem strategy\"\n ]\n },\n \"behavior-selection\": {\n \"id\": \"behavior-selection\",\n \"title\": \"Selecao (Behavior)\",\n \"description\": \"Configuração de behavior.selection.*\",\n \"rules\": [\n \"type define single/multiple e mode define checkbox/row/both.\",\n \"persistSelection mantem selecao entre paginas.\",\n \"visual.highlightSelected define destaque da linha.\"\n ],\n \"examples\": [\n \"{ behavior: { selection: { enabled: true, type: \\\"multiple\\\", mode: \\\"checkbox\\\", persistSelection: true } } }\"\n ],\n \"antiPatterns\": [\n \"{ behavior: { selection: { type: \\\"multi\\\" } } }\"\n ]\n },\n \"behavior-interaction\": {\n \"id\": \"behavior-interaction\",\n \"title\": \"Interacao (Behavior)\",\n \"description\": \"Configuração de behavior.interaction.*\",\n \"rules\": [\n \"rowClick/rowDoubleClick.action devem ser ids conhecidos.\",\n \"customAction deve referenciar handler registrado.\",\n \"keyboard.customShortcuts mapeia teclas para ações.\"\n ],\n \"examples\": [\n \"{ behavior: { interaction: { rowClick: { enabled: true, action: \\\"view\\\" } } } }\"\n ],\n \"antiPatterns\": [\n \"{ behavior: { interaction: { rowClick: { customAction: \\\"row => fn(row)\\\" } } } }\"\n ]\n },\n \"behavior-loading\": {\n \"id\": \"behavior-loading\",\n \"title\": \"Loading (Behavior)\",\n \"description\": \"Configuração de behavior.loading.*\",\n \"rules\": [\n \"type deve ser spinner/skeleton/progress/custom.\",\n \"delay evita flicker.\",\n \"skeleton.rows deve ser numero positivo.\"\n ],\n \"examples\": [\n \"{ behavior: { loading: { type: \\\"skeleton\\\", position: \\\"replace\\\", delay: 200, skeleton: { rows: 6, animated: true } } } }\"\n ],\n \"antiPatterns\": [\n \"{ behavior: { loading: { delay: 0 } } }\"\n ]\n },\n \"behavior-empty-state\": {\n \"id\": \"behavior-empty-state\",\n \"title\": \"Estado Vazio (Behavior)\",\n \"description\": \"Configuração de behavior.emptyState.*\",\n \"rules\": [\n \"message deve ser texto curto.\",\n \"actions[].action deve ser string de acao.\",\n \"contexts permite variações por cenário.\"\n ],\n \"examples\": [\n \"{ behavior: { emptyState: { message: \\\"Sem dados\\\", actions: [{ label: \\\"Adicionar\\\", action: \\\"create\\\" }] } } }\"\n ],\n \"antiPatterns\": [\n \"{ behavior: { emptyState: { message: \\\"\\\" } } }\"\n ]\n },\n \"behavior-virtualization\": {\n \"id\": \"behavior-virtualization\",\n \"title\": \"Virtualizacao (Behavior)\",\n \"description\": \"Configuração de behavior.virtualization.*\",\n \"rules\": [\n \"itemHeight deve ser informado quando enabled.\",\n \"strategy deve ser fixed ou dynamic.\"\n ],\n \"examples\": [\n \"{ behavior: { virtualization: { enabled: true, itemHeight: 48, strategy: \\\"fixed\\\" } } }\"\n ],\n \"antiPatterns\": [\n \"{ behavior: { virtualization: { enabled: true } } }\"\n ]\n },\n \"behavior-resizing\": {\n \"id\": \"behavior-resizing\",\n \"title\": \"Resize (Behavior)\",\n \"description\": \"Configuração de behavior.resizing.*\",\n \"rules\": [\n \"minColumnWidth deve ser positivo.\",\n \"maxColumnWidth deve ser maior que minColumnWidth quando informado.\",\n \"persistWidths salva ajustes do usuario.\"\n ],\n \"examples\": [\n \"{ behavior: { resizing: { enabled: true, minColumnWidth: 80, maxColumnWidth: 520, autoFit: false, persistWidths: true } } }\"\n ],\n \"antiPatterns\": [\n \"{ behavior: { resizing: { minColumnWidth: 0 } } }\"\n ]\n },\n \"behavior-dragging\": {\n \"id\": \"behavior-dragging\",\n \"title\": \"Drag & Drop (Behavior)\",\n \"description\": \"Configuração de behavior.dragging.*\",\n \"rules\": [\n \"columns/rows controla reordenacao.\",\n \"columnDropZones deve listar zonas validas.\"\n ],\n \"examples\": [\n \"{ behavior: { dragging: { columns: true, rows: false, showDragIndicator: true } } }\"\n ],\n \"antiPatterns\": [\n \"{ behavior: { dragging: { columns: \\\"yes\\\" } } }\"\n ]\n },\n \"behavior-expansion\": {\n \"id\": \"behavior-expansion\",\n \"title\": \"Expansion (Behavior)\",\n \"description\": \"Configuração de behavior.expansion.* para detail rows schema-driven.\",\n \"rules\": [\n \"detail é sempre schema-driven; varie source.mode (inline/resource/resourcePath), não detail.type.\",\n \"detail.schemaContract.kind/version deve ser informado para validação e migração.\",\n \"Em virtualização, prefira detail.height.mode=fixed com virtualization.policy=fixed-height-only.\",\n \"Use eventExposureDefault hashed/redacted por padrão em ambiente corporativo.\"\n ],\n \"examples\": [\n \"{ behavior: { expansion: { enabled: true, state: { mode: \\\"controlled\\\" }, detail: { schemaContract: { kind: \\\"praxis.detail.schema\\\", version: \\\"1.0.0\\\" }, source: { mode: \\\"resource\\\", resource: { kind: \\\"ui-composition\\\", id: \\\"customer-detail-v2\\\", version: \\\"2.1.0\\\" } }, rendering: { strategy: \\\"registry\\\", registryId: \\\"praxis.detail.default\\\" } } } } }\"\n ],\n \"antiPatterns\": [\n \"{ behavior: { expansion: { detail: { type: \\\"template\\\", templateId: \\\"legacy-id\\\" } } } }\"\n ]\n },\n \"appearance\": {\n \"id\": \"appearance\",\n \"title\": \"Aparência e Layout\",\n \"description\": \"Densidade, bordas, cores, tipografia, espaçamento e responsividade.\",\n \"rules\": [\n \"appearance.density deve usar valores compact/comfortable/spacious.\",\n \"Cores devem usar tokens do tema ou hex válido.\",\n \"responsive.mobile.cardMode deve ser combinado com colunas prioritárias.\",\n \"Se animations.enabled for true, respeite reduceMotion.\",\n \"appearance.animations.specific.row e appearance.animations.specific.cell controlam animações condicionais por escopo.\"\n ],\n \"examples\": [\n \"{ appearance: { density: \\\"compact\\\", borders: { showRowBorders: true } } }\",\n \"{ appearance: { typography: { fontSize: \\\"14px\\\" }, spacing: { cellPadding: \\\"8px 16px\\\" } } }\"\n ],\n \"antiPatterns\": [\n \"{ appearance: { density: \\\"tiny\\\" } }\"\n ]\n },\n \"appearance-details\": {\n \"id\": \"appearance-details\",\n \"title\": \"Detalhes de Aparência\",\n \"description\": \"Bordas, cores, tipografia, spacing, elevation e responsive autoAdjust.\",\n \"rules\": [\n \"borders.style deve ser solid/dashed/dotted quando aplicável.\",\n \"typography.headerFontWeight deve ser string numerica ou token.\",\n \"responsive.autoAdjust controla ajustes automáticos em telas menores.\"\n ],\n \"examples\": [\n \"{ appearance: { borders: { showOuterBorder: true, style: \\\"solid\\\" }, colors: { alternateRowBackground: \\\"#f7f9fc\\\" } } }\",\n \"{ appearance: { responsive: { mobile: { cardMode: true, priorityColumns: [\\\"name\\\", \\\"status\\\"] } } } }\"\n ],\n \"antiPatterns\": [\n \"{ appearance: { borders: { style: \\\"double\\\" } } }\"\n ]\n },\n \"toolbar\": {\n \"id\": \"toolbar\",\n \"title\": \"Toolbar\",\n \"description\": \"Configurações gerais da toolbar.\",\n \"rules\": [\n \"toolbar.visible controla exibição global da barra.\",\n \"Use toolbar.layout.alignment para ajustar distribuição.\",\n \"toolbar.filters.enabled depende de filtering.enabled.\",\n \"settingsMenu.enabled expõe opções de densidade e colunas.\"\n ],\n \"examples\": [\n \"{ toolbar: { visible: true, position: \\\"top\\\", title: \\\"Pedidos\\\" } }\"\n ],\n \"antiPatterns\": [\n \"{ toolbar: { position: \\\"left\\\" } }\"\n ]\n },\n \"toolbar-layout\": {\n \"id\": \"toolbar-layout\",\n \"title\": \"Layout da Toolbar\",\n \"description\": \"Configuração de toolbar.layout.*\",\n \"rules\": [\n \"alignment deve ser start/center/end/space-between.\",\n \"height e padding devem ser coerentes com o tema.\"\n ],\n \"examples\": [\n \"{ toolbar: { layout: { alignment: \\\"space-between\\\", height: 56, showSeparator: true } } }\"\n ],\n \"antiPatterns\": [\n \"{ toolbar: { layout: { alignment: \\\"between\\\" } } }\"\n ]\n },\n \"toolbar-actions\": {\n \"id\": \"toolbar-actions\",\n \"title\": \"Ações da Toolbar\",\n \"description\": \"Definições de toolbar.actions[].\",\n \"rules\": [\n \"toolbar.actions[].id deve ser único.\",\n \"action deve ser string, não função JS.\",\n \"type deve ser button/icon/fab/menu.\",\n \"visibleWhen usa expressao condicional canonica em JSON Logic.\"\n ],\n \"examples\": [\n \"{ toolbar: { actions: [{ id: \\\"add\\\", label: \\\"Adicionar\\\", type: \\\"button\\\", action: \\\"create\\\", position: \\\"end\\\" }] } }\",\n \"{ toolbar: { actions: [{ id: \\\"more\\\", label: \\\"Mais\\\", type: \\\"menu\\\", action: \\\"noop\\\", children: [{ id: \\\"export\\\", label: \\\"Exportar\\\", type: \\\"button\\\", action: \\\"export\\\" }] }] } }\"\n ],\n \"antiPatterns\": [\n \"{ actions: [{ action: \\\"() => doSomething()\\\" }] }\"\n ]\n },\n \"toolbar-filters\": {\n \"id\": \"toolbar-filters\",\n \"title\": \"Filtros da Toolbar\",\n \"description\": \"Configuração de toolbar.filters.* e quickFilters.\",\n \"rules\": [\n \"quickFilters[].filter deve seguir a estrutura do filtro suportado.\",\n \"enabled depende de behavior.filtering.enabled.\"\n ],\n \"examples\": [\n \"{ toolbar: { filters: { enabled: true, quickFilters: [{ id: \\\"active\\\", label: \\\"Ativos\\\", filter: { status: \\\"active\\\" } }] } } }\"\n ],\n \"antiPatterns\": [\n \"{ toolbar: { filters: { quickFilters: [{ filter: \\\"status=active\\\" }] } } }\"\n ]\n },\n \"toolbar-settings\": {\n \"id\": \"toolbar-settings\",\n \"title\": \"Menu de Configuracoes\",\n \"description\": \"Configuração de toolbar.settingsMenu.*\",\n \"rules\": [\n \"settingsMenu.options[].type deve ser toggle/select/action.\",\n \"options deve listar valores validos quando type for select.\"\n ],\n \"examples\": [\n \"{ toolbar: { settingsMenu: { enabled: true, options: [{ id: \\\"density\\\", label: \\\"Densidade\\\", type: \\\"select\\\", options: [\\\"compact\\\", \\\"comfortable\\\", \\\"spacious\\\"] }] } } }\"\n ],\n \"antiPatterns\": [\n \"{ settingsMenu: { options: [{ type: \\\"dropdown\\\" }] } }\"\n ]\n },\n \"row-actions\": {\n \"id\": \"row-actions\",\n \"title\": \"Acoes por Linha\",\n \"description\": \"Configuração de actions.row.*\",\n \"rules\": [\n \"enabled deve estar true para mostrar coluna de ações.\",\n \"display deve ser menu/buttons/icons.\",\n \"trigger deve ser hover/always/click.\",\n \"actions[].action deve ser string.\"\n ],\n \"examples\": [\n \"{ actions: { row: { enabled: true, display: \\\"menu\\\", trigger: \\\"hover\\\", actions: [{ id: \\\"edit\\\", label: \\\"Editar\\\", action: \\\"edit\\\" }] } } }\"\n ],\n \"antiPatterns\": [\n \"{ actions: { row: { display: \\\"dropdown\\\" } } }\"\n ]\n },\n \"row-actions-advanced\": {\n \"id\": \"row-actions-advanced\",\n \"title\": \"Acoes por Linha Avancadas\",\n \"description\": \"Header, overflow, menu e comportamento avançado.\",\n \"rules\": [\n \"header.align deve ser start/center/end.\",\n \"behavior.maxInline deve ser numero ou objeto de breakpoints.\",\n \"menuIcon e menuButtonColor devem ser valores suportados.\",\n \"discovery.enabled=false mantem apenas as actions configuradas e bloqueia a descoberta contextual por HATEOAS/capabilities.\"\n ],\n \"examples\": [\n \"{ actions: { row: { header: { label: \\\"Ações\\\", align: \\\"end\\\" }, maxVisibleActions: 3, behavior: { enabled: true, maxInline: 2 } } } }\",\n \"{ actions: { row: { enabled: true, display: \\\"buttons\\\", discovery: { enabled: false }, actions: [{ id: \\\"briefing\\\", label: \\\"Briefing\\\", action: \\\"inspect-surfaces\\\" }] } } }\"\n ],\n \"antiPatterns\": [\n \"{ row: { header: { align: \\\"middle\\\" } } }\"\n ]\n },\n \"bulk-actions\": {\n \"id\": \"bulk-actions\",\n \"title\": \"Acoes em Lote\",\n \"description\": \"Configuração de actions.bulk.*\",\n \"rules\": [\n \"bulk.enabled exige selection.enabled.\",\n \"floating.position deve ser bottom-right/bottom-left/top-right/top-left.\",\n \"hideWhenEmpty evita botão flutuante quando nada selecionado.\"\n ],\n \"examples\": [\n \"{ actions: { bulk: { enabled: true, position: \\\"toolbar\\\", actions: [{ id: \\\"delete\\\", label: \\\"Excluir\\\", action: \\\"bulk-delete\\\", requiresConfirmation: true }], floating: { position: \\\"bottom-right\\\", hideWhenEmpty: true } } } }\"\n ],\n \"antiPatterns\": [\n \"{ actions: { bulk: { enabled: true } } } sem selection.enabled\"\n ]\n },\n \"context-actions\": {\n \"id\": \"context-actions\",\n \"title\": \"Menu de Contexto\",\n \"description\": \"Configuração de actions.context.*\",\n \"rules\": [\n \"trigger deve ser right-click/long-press/both.\",\n \"actions[].action deve ser string.\"\n ],\n \"examples\": [\n \"{ actions: { context: { enabled: true, trigger: \\\"right-click\\\", actions: [{ id: \\\"copy\\\", label: \\\"Copiar\\\", action: \\\"copy\\\" }] } } }\"\n ],\n \"antiPatterns\": [\n \"{ context: { trigger: \\\"click\\\" } }\"\n ]\n },\n \"actions-confirmations\": {\n \"id\": \"actions-confirmations\",\n \"title\": \"Confirmacoes de Acoes\",\n \"description\": \"Configuração de actions.confirmations.*\",\n \"rules\": [\n \"default deve conter title, message, confirmText e cancelText.\",\n \"specific usa actionId como chave.\"\n ],\n \"examples\": [\n \"{ actions: { confirmations: { default: { title: \\\"Confirmar\\\", message: \\\"Deseja continuar?\\\", confirmText: \\\"Sim\\\", cancelText: \\\"Nao\\\" }, specific: { \\\"delete\\\": { message: \\\"Excluir item?\\\" } } } } }\"\n ],\n \"antiPatterns\": [\n \"{ actions: { confirmations: { default: { title: \\\"\\\" } } } }\"\n ]\n },\n \"export-general\": {\n \"id\": \"export-general\",\n \"title\": \"Exportacao Geral\",\n \"description\": \"Configuração de export.general.*\",\n \"rules\": [\n \"includeHeaders deve ser boolean.\",\n \"scope deve ser auto, selected, filtered, currentPage ou all.\",\n \"maxRows deve limitar volume.\",\n \"includeColumns deve ser all/visible ou lista de fields.\"\n ],\n \"examples\": [\n \"{ export: { enabled: true, formats: [\\\"csv\\\"], general: { includeHeaders: true, scope: \\\"auto\\\", maxRows: 5000, includeColumns: \\\"visible\\\" } } }\"\n ],\n \"antiPatterns\": [\n \"{ export: { general: { maxRows: 0 } } }\"\n ]\n },\n \"export-excel\": {\n \"id\": \"export-excel\",\n \"title\": \"Exportacao Excel\",\n \"description\": \"Configuração de export.excel.*\",\n \"rules\": [\n \"sheetName deve ser curto e sem caracteres invalidos.\",\n \"autoFitColumns melhora legibilidade.\",\n \"styling.headerStyle e cellStyle devem ser simples.\"\n ],\n \"examples\": [\n \"{ export: { excel: { sheetName: \\\"Dados\\\", autoFitColumns: true, freezeHeaders: true, styling: { headerStyle: { fontWeight: \\\"bold\\\" } } } } }\"\n ],\n \"antiPatterns\": [\n \"{ excel: { sheetName: \\\"\\\" } }\"\n ]\n },\n \"export-pdf\": {\n \"id\": \"export-pdf\",\n \"title\": \"Exportacao PDF\",\n \"description\": \"Configuração de export.pdf.*\",\n \"rules\": [\n \"orientation deve ser portrait/landscape.\",\n \"pageSize deve ser A4/A3/Letter/Legal.\",\n \"margins devem conter top/right/bottom/left.\"\n ],\n \"examples\": [\n \"{ export: { pdf: { orientation: \\\"landscape\\\", pageSize: \\\"A4\\\", margins: { top: 10, right: 10, bottom: 10, left: 10 }, autoPageBreak: true } } }\"\n ],\n \"antiPatterns\": [\n \"{ pdf: { pageSize: \\\"A5\\\" } }\"\n ]\n },\n \"export-csv\": {\n \"id\": \"export-csv\",\n \"title\": \"Exportacao CSV\",\n \"description\": \"Configuração de export.csv.*\",\n \"rules\": [\n \"delimiter deve ser \\\",\\\", \\\";\\\", \\\"|\\\" ou \\\"\\\\t\\\".\",\n \"encoding deve ser utf-8/utf-16/iso-8859-1.\",\n \"escapeChar deve ser um caractere.\"\n ],\n \"examples\": [\n \"{ export: { csv: { delimiter: \\\";\\\", encoding: \\\"utf-8\\\", escapeChar: \\\"\\\\\\\" } } }\"\n ],\n \"antiPatterns\": [\n \"{ csv: { delimiter: \\\":\\\" } }\"\n ]\n },\n \"export-json\": {\n \"id\": \"export-json\",\n \"title\": \"Exportacao JSON\",\n \"description\": \"Configuração de export.json.*\",\n \"rules\": [\n \"format deve ser pretty ou compact.\",\n \"structure deve ser array ou object.\"\n ],\n \"examples\": [\n \"{ export: { json: { format: \\\"pretty\\\", includeMetadata: true, structure: \\\"array\\\" } } }\"\n ],\n \"antiPatterns\": [\n \"{ json: { format: \\\"full\\\" } }\"\n ]\n },\n \"export-templates\": {\n \"id\": \"export-templates\",\n \"title\": \"Templates de Exportacao\",\n \"description\": \"Configuração de export.templates[]\",\n \"rules\": [\n \"templates devem ter id, name e format válidos.\",\n \"config deve seguir o formato correspondente.\"\n ],\n \"examples\": [\n \"{ export: { templates: [{ id: \\\"resumo\\\", name: \\\"Resumo\\\", format: \\\"pdf\\\", config: {}, isDefault: false }] } }\"\n ],\n \"antiPatterns\": [\n \"{ templates: [{ id: \\\"\\\", format: \\\"xls\\\" }] }\"\n ]\n },\n \"messages\": {\n \"id\": \"messages\",\n \"title\": \"Mensagens\",\n \"description\": \"Mensagens de estados, ações, validação e exportação.\",\n \"rules\": [\n \"Mensagens devem ser curtas e claras.\",\n \"Não defina funções inline (use templates ou strings simples).\"\n ],\n \"examples\": [\n \"{ messages: { states: { empty: \\\"Sem registros.\\\" }, actions: { confirmations: { delete: \\\"Excluir?\\\" } } } }\"\n ],\n \"antiPatterns\": [\n \"{ messages: { states: { loadingWithCount: \\\"(n) => ...\\\" } } }\"\n ]\n },\n \"messages-advanced\": {\n \"id\": \"messages-advanced\",\n \"title\": \"Mensagens Avancadas\",\n \"description\": \"custom, templates e formatos por tipo.\",\n \"rules\": [\n \"templates[].template deve usar placeholders simples.\",\n \"custom é um mapa chave -> mensagem.\",\n \"formats deve seguir excel/pdf/csv/json.\"\n ],\n \"examples\": [\n \"{ messages: { export: { formats: { excel: \\\"Excel pronto\\\" } }, templates: [{ id: \\\"t1\\\", template: \\\"Exportado {count} itens\\\" }] } }\"\n ],\n \"antiPatterns\": [\n \"{ messages: { templates: [{ id: \\\"t1\\\" }] } }\"\n ]\n },\n \"localization-date-time\": {\n \"id\": \"localization-date-time\",\n \"title\": \"Localizacao de Datas\",\n \"description\": \"Configuração de localization.dateTime.*\",\n \"rules\": [\n \"dateFormat/timeFormat devem seguir DatePipe.\",\n \"firstDayOfWeek deve ser 0-6.\",\n \"monthNames e dayNames devem ter 12 e 7 entradas.\"\n ],\n \"examples\": [\n \"{ localization: { dateTime: { dateFormat: \\\"dd/MM/yyyy\\\", timeFormat: \\\"HH:mm\\\", firstDayOfWeek: 0 } } }\"\n ],\n \"antiPatterns\": [\n \"{ localization: { dateTime: { firstDayOfWeek: 7 } } }\"\n ]\n },\n \"localization-number-currency\": {\n \"id\": \"localization-number-currency\",\n \"title\": \"Localizacao de Numeros e Moeda\",\n \"description\": \"Configuração de localization.number.* e localization.currency.*\",\n \"rules\": [\n \"decimalSeparator e thousandsSeparator devem ser 1 caractere.\",\n \"negativeSignPosition deve ser before/after.\",\n \"currency.code deve ser ISO 4217.\"\n ],\n \"examples\": [\n \"{ localization: { number: { decimalSeparator: \\\",\\\", thousandsSeparator: \\\".\\\", negativeSign: \\\"-\\\", negativeSignPosition: \\\"before\\\" }, currency: { code: \\\"BRL\\\", symbol: \\\"R$\\\" } } }\"\n ],\n \"antiPatterns\": [\n \"{ localization: { currency: { code: \\\"REAL\\\" } } }\"\n ]\n },\n \"localization-formatting\": {\n \"id\": \"localization-formatting\",\n \"title\": \"Formatos Locais\",\n \"description\": \"Configuração de localization.formatting.*\",\n \"rules\": [\n \"percentageFormat e fileSizeFormat devem seguir padrao esperado.\",\n \"units deve mapear tipo -> unidade -> label.\"\n ],\n \"examples\": [\n \"{ localization: { formatting: { percentageFormat: \\\"#0.00%\\\", fileSizeFormat: \\\"decimal\\\" } } }\"\n ],\n \"antiPatterns\": [\n \"{ localization: { formatting: { percentageFormat: \\\"percent\\\" } } }\"\n ]\n },\n \"localization-translations\": {\n \"id\": \"localization-translations\",\n \"title\": \"Traducoes\",\n \"description\": \"Configuração de localization.availableLocales e translations.*\",\n \"rules\": [\n \"availableLocales deve listar locales conhecidos.\",\n \"translations deve mapear locale -> chaves de texto.\"\n ],\n \"examples\": [\n \"{ localization: { availableLocales: [\\\"pt-BR\\\", \\\"en-US\\\"], translations: { \\\"pt-BR\\\": { \\\"table.title\\\": \\\"Pedidos\\\" } } } }\"\n ],\n \"antiPatterns\": [\n \"{ translations: \\\"pt-BR\\\" }\"\n ]\n },\n \"data-cache\": {\n \"id\": \"data-cache\",\n \"title\": \"Cache de Dados\",\n \"description\": \"Configuração de data.cache.*\",\n \"rules\": [\n \"ttl e maxSize devem ser positivos.\",\n \"invalidationStrategy deve ser ttl/manual/on-update.\"\n ],\n \"examples\": [\n \"{ data: { cache: { enabled: true, ttl: 600000, maxSize: 1000, invalidationStrategy: \\\"ttl\\\" } } }\"\n ],\n \"antiPatterns\": [\n \"{ cache: { ttl: 0 } }\"\n ]\n },\n \"data-sync\": {\n \"id\": \"data-sync\",\n \"title\": \"Sincronizacao\",\n \"description\": \"Configuração de data.sync.*\",\n \"rules\": [\n \"interval deve ser em ms.\",\n \"deltaSync e autoSync devem ser boolean.\",\n \"conflictResolution deve ser client/server/manual.\"\n ],\n \"examples\": [\n \"{ data: { sync: { autoSync: true, interval: 30000, deltaSync: true, conflictResolution: \\\"server\\\" } } }\"\n ],\n \"antiPatterns\": [\n \"{ sync: { interval: -1 } }\"\n ]\n },\n \"data-validation\": {\n \"id\": \"data-validation\",\n \"title\": \"Validacao de Dados\",\n \"description\": \"Configuração de data.validation.* e rules[]\",\n \"rules\": [\n \"rules[].type deve ser required/format/range/custom.\",\n \"params deve conter dados compatíveis com o tipo.\",\n \"showInlineErrors deve ser boolean.\"\n ],\n \"examples\": [\n \"{ data: { validation: { clientSide: true, serverSide: false, showInlineErrors: true, rules: [{ field: \\\"email\\\", type: \\\"format\\\", params: { format: \\\"email\\\" }, message: \\\"Email invalido\\\" }] } } }\"\n ],\n \"antiPatterns\": [\n \"{ validation: { rules: [{ type: \\\"regex\\\" }] } }\"\n ]\n },\n \"data-transformations\": {\n \"id\": \"data-transformations\",\n \"title\": \"Transformacoes de Dados\",\n \"description\": \"Configuração de data.transformations[]\",\n \"rules\": [\n \"transform deve ser uma string suportada pelo sistema, não funcao JS.\",\n \"applyTo deve ser display/data/both.\"\n ],\n \"examples\": [\n \"{ data: { transformations: [{ id: \\\"t1\\\", field: \\\"amount\\\", type: \\\"format\\\", transform: \\\"currency\\\", applyTo: \\\"display\\\" }] } }\"\n ],\n \"antiPatterns\": [\n \"{ transformations: [{ transform: \\\"row => row.amount\\\" }] }\"\n ]\n },\n \"data-polling\": {\n \"id\": \"data-polling\",\n \"title\": \"Polling\",\n \"description\": \"Configuração de data.polling.*\",\n \"rules\": [\n \"interval deve ser em ms e razoavel.\",\n \"exponentialBackoff deve ser boolean.\"\n ],\n \"examples\": [\n \"{ data: { polling: { enabled: true, interval: 30000, onlyWhenActive: true, exponentialBackoff: true } } }\"\n ],\n \"antiPatterns\": [\n \"{ polling: { interval: 100 } }\"\n ]\n },\n \"performance-virtualization\": {\n \"id\": \"performance-virtualization\",\n \"title\": \"Performance Virtualization\",\n \"description\": \"Configuração de performance.virtualization.*\",\n \"rules\": [\n \"itemHeight deve ser informado quando enabled.\",\n \"strategy deve ser fixed/dynamic.\"\n ],\n \"examples\": [\n \"{ performance: { virtualization: { enabled: true, itemHeight: 48 } } }\"\n ],\n \"antiPatterns\": [\n \"{ performance: { virtualization: { enabled: true } } }\"\n ]\n },\n \"performance-debounce\": {\n \"id\": \"performance-debounce\",\n \"title\": \"Performance Debounce\",\n \"description\": \"Configuração de performance.debounce.*\",\n \"rules\": [\n \"valores devem estar em ms (ex.: 200-500).\"\n ],\n \"examples\": [\n \"{ performance: { debounce: { search: 300, filter: 300, resize: 200, scroll: 200 } } }\"\n ],\n \"antiPatterns\": [\n \"{ debounce: { search: -1 } }\"\n ]\n },\n \"performance-memory\": {\n \"id\": \"performance-memory\",\n \"title\": \"Performance Memory\",\n \"description\": \"Configuração de performance.memory.*\",\n \"rules\": [\n \"maxRows deve limitar o volume em memoria.\",\n \"cleanupInterval deve ser em ms.\"\n ],\n \"examples\": [\n \"{ performance: { memory: { maxRows: 5000, autoCleanup: true, cleanupInterval: 60000 } } }\"\n ],\n \"antiPatterns\": [\n \"{ memory: { maxRows: 0 } }\"\n ]\n },\n \"performance-rendering\": {\n \"id\": \"performance-rendering\",\n \"title\": \"Performance Rendering\",\n \"description\": \"Configuração de performance.rendering.*\",\n \"rules\": [\n \"batchUpdates true requer batchSize coerente.\",\n \"optimizeReRenders melhora atualizações frequentes.\"\n ],\n \"examples\": [\n \"{ performance: { rendering: { useRAF: true, batchUpdates: true, batchSize: 50, optimizeReRenders: true } } }\"\n ],\n \"antiPatterns\": [\n \"{ rendering: { batchSize: 0 } }\"\n ]\n },\n \"performance-lazy-loading\": {\n \"id\": \"performance-lazy-loading\",\n \"title\": \"Performance Lazy Loading\",\n \"description\": \"Configuração de performance.lazyLoading.*\",\n \"rules\": [\n \"threshold deve ser numero positivo.\",\n \"components e images devem ser boolean.\"\n ],\n \"examples\": [\n \"{ performance: { lazyLoading: { images: true, components: true, threshold: 200 } } }\"\n ],\n \"antiPatterns\": [\n \"{ lazyLoading: { threshold: -1 } }\"\n ]\n },\n \"accessibility-core\": {\n \"id\": \"accessibility-core\",\n \"title\": \"Acessibilidade\",\n \"description\": \"Configuração base de accessibility.*\",\n \"rules\": [\n \"enabled deve ser true em apps com requisitos a11y.\",\n \"reduceMotion deve desativar animacoes nao essenciais.\"\n ],\n \"examples\": [\n \"{ accessibility: { enabled: true, reduceMotion: true } }\"\n ],\n \"antiPatterns\": [\n \"{ accessibility: { enabled: true, reduceMotion: \\\"yes\\\" } }\"\n ]\n },\n \"accessibility-announcements\": {\n \"id\": \"accessibility-announcements\",\n \"title\": \"Acessibilidade Anuncios\",\n \"description\": \"Configuração de accessibility.announcements.*\",\n \"rules\": [\n \"dataChanges, userActions e loadingStates devem ser boolean.\",\n \"liveRegion deve ser polite ou assertive.\"\n ],\n \"examples\": [\n \"{ accessibility: { announcements: { dataChanges: true, userActions: true, loadingStates: true, liveRegion: \\\"polite\\\" } } }\"\n ],\n \"antiPatterns\": [\n \"{ announcements: { liveRegion: \\\"loud\\\" } }\"\n ]\n },\n \"accessibility-keyboard\": {\n \"id\": \"accessibility-keyboard\",\n \"title\": \"Acessibilidade Teclado\",\n \"description\": \"Configuração de accessibility.keyboard.*\",\n \"rules\": [\n \"tabNavigation e arrowNavigation devem ser boolean.\",\n \"shortcuts e skipLinks devem ser boolean.\",\n \"focusTrap deve ser boolean.\"\n ],\n \"examples\": [\n \"{ accessibility: { keyboard: { tabNavigation: true, arrowNavigation: true, shortcuts: true, skipLinks: true, focusTrap: false } } }\"\n ],\n \"antiPatterns\": [\n \"{ keyboard: { tabNavigation: \\\"yes\\\" } }\"\n ]\n },\n \"accessibility-aria-labels\": {\n \"id\": \"accessibility-aria-labels\",\n \"title\": \"Acessibilidade ARIA\",\n \"description\": \"Configuração de accessibility.ariaLabels.*\",\n \"rules\": [\n \"ariaLabels deve mapear chaves conhecidas para textos curtos.\"\n ],\n \"examples\": [\n \"{ accessibility: { ariaLabels: { table: \\\"Tabela de pedidos\\\" } } }\"\n ],\n \"antiPatterns\": [\n \"{ ariaLabels: { table: \\\"\\\" } }\"\n ]\n },\n \"theme-core\": {\n \"id\": \"theme-core\",\n \"title\": \"Tema Base\",\n \"description\": \"Configuração de theme.primary/secondary/darkMode.\",\n \"rules\": [\n \"primary e secondary devem ser cores validas (hex ou token).\",\n \"darkMode deve ser boolean.\"\n ],\n \"examples\": [\n \"{ theme: { primary: \\\"#1976d2\\\", secondary: \\\"#ff9800\\\" } }\"\n ],\n \"antiPatterns\": [\n \"{ theme: { primary: \\\"blue\\\" } }\"\n ]\n },\n \"theme-custom\": {\n \"id\": \"theme-custom\",\n \"title\": \"Tema Customizado\",\n \"description\": \"Configuração de theme.custom e theme.cssVariables.\",\n \"rules\": [\n \"cssVariables deve usar nomes CSS validos (ex.: --table-bg).\",\n \"custom deve ser mapa simples de tokens.\"\n ],\n \"examples\": [\n \"{ theme: { custom: { headerBg: \\\"var(--md-sys-color-surface-container)\\\" }, cssVariables: { \\\"--table-bg\\\": \\\"var(--md-sys-color-surface)\\\" } } }\"\n ],\n \"antiPatterns\": [\n \"{ theme: { cssVariables: { \\\"table-bg\\\": \\\"var(--md-sys-color-surface)\\\" } } }\"\n ]\n },\n \"plugins\": {\n \"id\": \"plugins\",\n \"title\": \"Plugins\",\n \"description\": \"Configuração de plugins[].\",\n \"rules\": [\n \"plugins[].id, name e version sao obrigatorios.\",\n \"hooks deve mapear eventos para handlers conhecidos.\"\n ],\n \"examples\": [\n \"{ plugins: [{ id: \\\"audit\\\", name: \\\"Audit Logger\\\", version: \\\"1.2.0\\\", enabled: true }] }\"\n ],\n \"antiPatterns\": [\n \"{ plugins: [{ name: \\\"Audit\\\" }] }\"\n ]\n },\n \"editor-extras\": {\n \"id\": \"editor-extras\",\n \"title\": \"Extras do Editor\",\n \"description\": \"Envelope de autoria usado pelo editor e pelo playground.\",\n \"rules\": [\n \"bindings.resourcePath deve ser path valido da API quando presente.\",\n \"config.meta.idField deve refletir a chave primaria quando configurado.\",\n \"bindings.horizontalScroll deve ser auto/wrap/none.\"\n ],\n \"examples\": [\n \"{ kind: \\\"praxis.table.editor\\\", version: 1, config: { meta: { idField: \\\"employeeId\\\" }, columns: [] }, bindings: { resourcePath: \\\"/api/employees\\\", horizontalScroll: \\\"auto\\\" } }\"\n ],\n \"antiPatterns\": [\n \"{ kind: \\\"praxis.table.editor\\\", version: 1, config: { columns: [] }, bindings: { horizontalScroll: \\\"left\\\" } }\"\n ]\n }\n }\n}",
21884
+ "content": "{\n \"componentContext\": {\n \"version\": \"v1\",\n \"optionsByPath\": {\n \"appearance.density\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"compact\",\n \"label\": \"Compact\"\n },\n {\n \"value\": \"comfortable\",\n \"label\": \"Comfortable\"\n },\n {\n \"value\": \"spacious\",\n \"label\": \"Spacious\"\n }\n ]\n },\n \"export.formats\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"excel\",\n \"label\": \"Excel\"\n },\n {\n \"value\": \"pdf\",\n \"label\": \"PDF\"\n },\n {\n \"value\": \"csv\",\n \"label\": \"CSV\"\n },\n {\n \"value\": \"json\",\n \"label\": \"JSON\"\n },\n {\n \"value\": \"print\",\n \"label\": \"Print\"\n }\n ]\n },\n \"columns[].type\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"string\",\n \"label\": \"String\"\n },\n {\n \"value\": \"number\",\n \"label\": \"Number\"\n },\n {\n \"value\": \"currency\",\n \"label\": \"Currency\"\n },\n {\n \"value\": \"percentage\",\n \"label\": \"Percentage\"\n },\n {\n \"value\": \"date\",\n \"label\": \"Date\"\n },\n {\n \"value\": \"boolean\",\n \"label\": \"Boolean\"\n },\n {\n \"value\": \"custom\",\n \"label\": \"Custom\"\n }\n ]\n },\n \"columns[].format\": {\n \"mode\": \"suggested\",\n \"options\": [\n {\n \"value\": \"shortDate\",\n \"label\": \"Date short\",\n \"example\": \"01/12/2023\"\n },\n {\n \"value\": \"mediumDate\",\n \"label\": \"Date medium\",\n \"example\": \"01 Dec 2023\"\n },\n {\n \"value\": \"longDate\",\n \"label\": \"Date long\",\n \"example\": \"01 December 2023\"\n },\n {\n \"value\": \"fullDate\",\n \"label\": \"Date full\",\n \"example\": \"Friday, 01 December 2023\"\n },\n {\n \"value\": \"MMM/yyyy\",\n \"label\": \"Month/Year\",\n \"example\": \"Dec/2023\"\n },\n {\n \"value\": \"shortTime\",\n \"label\": \"Time short\",\n \"example\": \"14:30\"\n },\n {\n \"value\": \"short\",\n \"label\": \"Date+Time short\",\n \"example\": \"01/12/2023 14:30\"\n },\n {\n \"value\": \"yyyy-MM-dd\",\n \"label\": \"ISO 8601\",\n \"example\": \"2023-12-01\"\n },\n {\n \"value\": \"dd/MM/yyyy\",\n \"label\": \"Date dd/MM/yyyy\",\n \"example\": \"01/12/2023\"\n },\n {\n \"value\": \"yyyy-MM-dd HH:mm\",\n \"label\": \"DateTime yyyy-MM-dd HH:mm\",\n \"example\": \"2023-12-01 14:30\"\n },\n {\n \"value\": \"1.0-0\",\n \"label\": \"Number integer\",\n \"example\": \"1,234\"\n },\n {\n \"value\": \"1.1-1\",\n \"label\": \"Number 1 decimal\",\n \"example\": \"1,234.5\"\n },\n {\n \"value\": \"1.2-2\",\n \"label\": \"Number 2 decimals\",\n \"example\": \"1,234.56\"\n },\n {\n \"value\": \"1.0-3\",\n \"label\": \"Number up to 3 decimals\",\n \"example\": \"1,234.567\"\n },\n {\n \"value\": \"1.0-0|nosep\",\n \"label\": \"Number no grouping\",\n \"example\": \"1234\"\n },\n {\n \"value\": \"BRL|symbol|2\",\n \"label\": \"Currency BRL symbol\",\n \"example\": \"R$ 1.234,56\"\n },\n {\n \"value\": \"BRL|symbol|2|nosep\",\n \"label\": \"Currency BRL symbol (no grouping)\",\n \"example\": \"R$ 1234,56\"\n },\n {\n \"value\": \"USD|symbol|2\",\n \"label\": \"Currency USD symbol\",\n \"example\": \"US$ 1,234.56\"\n },\n {\n \"value\": \"EUR|symbol|2\",\n \"label\": \"Currency EUR symbol\",\n \"example\": \"EUR 1,234.56\"\n },\n {\n \"value\": \"BRL|code|2\",\n \"label\": \"Currency code\",\n \"example\": \"1,234.56 BRL\"\n },\n {\n \"value\": \"USD|code|0\",\n \"label\": \"Currency USD code (0 decimals)\",\n \"example\": \"1234 USD\"\n },\n {\n \"value\": \"EUR|symbol|2|nosep\",\n \"label\": \"Currency EUR symbol (no grouping)\",\n \"example\": \"EUR 1234,56\"\n },\n {\n \"value\": \"1.0-0\",\n \"label\": \"Percent 0 decimals\",\n \"example\": \"12%\"\n },\n {\n \"value\": \"1.1-1\",\n \"label\": \"Percent 1 decimal\",\n \"example\": \"12.3%\"\n },\n {\n \"value\": \"1.2-2\",\n \"label\": \"Percent 2 decimals\",\n \"example\": \"12.34%\"\n },\n {\n \"value\": \"1.0-0|x100\",\n \"label\": \"Percent 0 decimals (x100)\",\n \"example\": \"12%\"\n },\n {\n \"value\": \"1.1-1|x100\",\n \"label\": \"Percent 1 decimal (x100)\",\n \"example\": \"12.3%\"\n },\n {\n \"value\": \"1.2-2|x100\",\n \"label\": \"Percent 2 decimals (x100)\",\n \"example\": \"12.34%\"\n },\n {\n \"value\": \"none\",\n \"label\": \"String none\",\n \"example\": \"Sample\"\n },\n {\n \"value\": \"uppercase\",\n \"label\": \"String uppercase\",\n \"example\": \"SAMPLE\"\n },\n {\n \"value\": \"lowercase\",\n \"label\": \"String lowercase\",\n \"example\": \"sample\"\n },\n {\n \"value\": \"titlecase\",\n \"label\": \"String titlecase\",\n \"example\": \"Sample Text\"\n },\n {\n \"value\": \"capitalize\",\n \"label\": \"String capitalize\",\n \"example\": \"Sample\"\n },\n {\n \"value\": \"uppercase|truncate|50|...\",\n \"label\": \"String uppercase + truncate 50\",\n \"example\": \"SAMPLE...\"\n },\n {\n \"value\": \"true-false\",\n \"label\": \"Boolean true/false\",\n \"example\": \"True / False\"\n },\n {\n \"value\": \"yes-no\",\n \"label\": \"Boolean yes/no\",\n \"example\": \"Yes / No\"\n },\n {\n \"value\": \"active-inactive\",\n \"label\": \"Boolean active/inactive\",\n \"example\": \"Active / Inactive\"\n },\n {\n \"value\": \"on-off\",\n \"label\": \"Boolean on/off\",\n \"example\": \"On / Off\"\n },\n {\n \"value\": \"enabled-disabled\",\n \"label\": \"Boolean enabled/disabled\",\n \"example\": \"Enabled / Disabled\"\n },\n {\n \"value\": \"custom|Sim|Nao\",\n \"label\": \"Boolean custom (Sim/Nao)\",\n \"example\": \"Sim / Nao\"\n }\n ]\n },\n \"columns[].computed.outputType\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"string\",\n \"label\": \"String\"\n },\n {\n \"value\": \"number\",\n \"label\": \"Number\"\n },\n {\n \"value\": \"currency\",\n \"label\": \"Currency\"\n },\n {\n \"value\": \"percentage\",\n \"label\": \"Percentage\"\n },\n {\n \"value\": \"date\",\n \"label\": \"Date\"\n },\n {\n \"value\": \"boolean\",\n \"label\": \"Boolean\"\n },\n {\n \"value\": \"custom\",\n \"label\": \"Custom\"\n }\n ]\n },\n \"columns[].computed.format\": {\n \"mode\": \"suggested\",\n \"options\": [\n {\n \"value\": \"shortDate\",\n \"label\": \"Date short\",\n \"example\": \"01/12/2023\"\n },\n {\n \"value\": \"mediumDate\",\n \"label\": \"Date medium\",\n \"example\": \"01 Dec 2023\"\n },\n {\n \"value\": \"longDate\",\n \"label\": \"Date long\",\n \"example\": \"01 December 2023\"\n },\n {\n \"value\": \"fullDate\",\n \"label\": \"Date full\",\n \"example\": \"Friday, 01 December 2023\"\n },\n {\n \"value\": \"MMM/yyyy\",\n \"label\": \"Month/Year\",\n \"example\": \"Dec/2023\"\n },\n {\n \"value\": \"shortTime\",\n \"label\": \"Time short\",\n \"example\": \"14:30\"\n },\n {\n \"value\": \"short\",\n \"label\": \"Date+Time short\",\n \"example\": \"01/12/2023 14:30\"\n },\n {\n \"value\": \"yyyy-MM-dd\",\n \"label\": \"ISO 8601\",\n \"example\": \"2023-12-01\"\n },\n {\n \"value\": \"dd/MM/yyyy\",\n \"label\": \"Date dd/MM/yyyy\",\n \"example\": \"01/12/2023\"\n },\n {\n \"value\": \"yyyy-MM-dd HH:mm\",\n \"label\": \"DateTime yyyy-MM-dd HH:mm\",\n \"example\": \"2023-12-01 14:30\"\n },\n {\n \"value\": \"1.0-0\",\n \"label\": \"Number integer\",\n \"example\": \"1,234\"\n },\n {\n \"value\": \"1.1-1\",\n \"label\": \"Number 1 decimal\",\n \"example\": \"1,234.5\"\n },\n {\n \"value\": \"1.2-2\",\n \"label\": \"Number 2 decimals\",\n \"example\": \"1,234.56\"\n },\n {\n \"value\": \"1.0-3\",\n \"label\": \"Number up to 3 decimals\",\n \"example\": \"1,234.567\"\n },\n {\n \"value\": \"1.0-0|nosep\",\n \"label\": \"Number no grouping\",\n \"example\": \"1234\"\n },\n {\n \"value\": \"BRL|symbol|2\",\n \"label\": \"Currency BRL symbol\",\n \"example\": \"R$ 1.234,56\"\n },\n {\n \"value\": \"BRL|symbol|2|nosep\",\n \"label\": \"Currency BRL symbol (no grouping)\",\n \"example\": \"R$ 1234,56\"\n },\n {\n \"value\": \"USD|symbol|2\",\n \"label\": \"Currency USD symbol\",\n \"example\": \"US$ 1,234.56\"\n },\n {\n \"value\": \"EUR|symbol|2\",\n \"label\": \"Currency EUR symbol\",\n \"example\": \"EUR 1,234.56\"\n },\n {\n \"value\": \"BRL|code|2\",\n \"label\": \"Currency code\",\n \"example\": \"1,234.56 BRL\"\n },\n {\n \"value\": \"USD|code|0\",\n \"label\": \"Currency USD code (0 decimals)\",\n \"example\": \"1234 USD\"\n },\n {\n \"value\": \"EUR|symbol|2|nosep\",\n \"label\": \"Currency EUR symbol (no grouping)\",\n \"example\": \"EUR 1234,56\"\n },\n {\n \"value\": \"1.0-0\",\n \"label\": \"Percent 0 decimals\",\n \"example\": \"12%\"\n },\n {\n \"value\": \"1.1-1\",\n \"label\": \"Percent 1 decimal\",\n \"example\": \"12.3%\"\n },\n {\n \"value\": \"1.2-2\",\n \"label\": \"Percent 2 decimals\",\n \"example\": \"12.34%\"\n },\n {\n \"value\": \"1.0-0|x100\",\n \"label\": \"Percent 0 decimals (x100)\",\n \"example\": \"12%\"\n },\n {\n \"value\": \"1.1-1|x100\",\n \"label\": \"Percent 1 decimal (x100)\",\n \"example\": \"12.3%\"\n },\n {\n \"value\": \"1.2-2|x100\",\n \"label\": \"Percent 2 decimals (x100)\",\n \"example\": \"12.34%\"\n },\n {\n \"value\": \"none\",\n \"label\": \"String none\",\n \"example\": \"Sample\"\n },\n {\n \"value\": \"uppercase\",\n \"label\": \"String uppercase\",\n \"example\": \"SAMPLE\"\n },\n {\n \"value\": \"lowercase\",\n \"label\": \"String lowercase\",\n \"example\": \"sample\"\n },\n {\n \"value\": \"titlecase\",\n \"label\": \"String titlecase\",\n \"example\": \"Sample Text\"\n },\n {\n \"value\": \"capitalize\",\n \"label\": \"String capitalize\",\n \"example\": \"Sample\"\n },\n {\n \"value\": \"uppercase|truncate|50|...\",\n \"label\": \"String uppercase + truncate 50\",\n \"example\": \"SAMPLE...\"\n },\n {\n \"value\": \"true-false\",\n \"label\": \"Boolean true/false\",\n \"example\": \"True / False\"\n },\n {\n \"value\": \"yes-no\",\n \"label\": \"Boolean yes/no\",\n \"example\": \"Yes / No\"\n },\n {\n \"value\": \"active-inactive\",\n \"label\": \"Boolean active/inactive\",\n \"example\": \"Active / Inactive\"\n },\n {\n \"value\": \"on-off\",\n \"label\": \"Boolean on/off\",\n \"example\": \"On / Off\"\n },\n {\n \"value\": \"enabled-disabled\",\n \"label\": \"Boolean enabled/disabled\",\n \"example\": \"Enabled / Disabled\"\n },\n {\n \"value\": \"custom|Sim|Nao\",\n \"label\": \"Boolean custom (Sim/Nao)\",\n \"example\": \"Sim / Nao\"\n }\n ]\n },\n \"behavior.filtering.advancedFilters.settings.mode\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"filter\",\n \"label\": \"Filter\"\n }\n ]\n },\n \"behavior.expansion.state.mode\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"controlled\",\n \"label\": \"Controlled\"\n },\n {\n \"value\": \"uncontrolled\",\n \"label\": \"Uncontrolled\"\n }\n ]\n },\n \"behavior.expansion.interaction.trigger\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"icon\",\n \"label\": \"Icon\"\n },\n {\n \"value\": \"row\",\n \"label\": \"Row\"\n },\n {\n \"value\": \"both\",\n \"label\": \"Both\"\n }\n ]\n },\n \"behavior.expansion.interaction.keyboard.profile\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"disclosure\",\n \"label\": \"Disclosure\"\n },\n {\n \"value\": \"grid\",\n \"label\": \"Grid\"\n }\n ]\n },\n \"behavior.expansion.limits.onOverflow\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"collapseOldest\",\n \"label\": \"Collapse Oldest\"\n },\n {\n \"value\": \"denyNew\",\n \"label\": \"Deny New\"\n },\n {\n \"value\": \"collapseAll\",\n \"label\": \"Collapse All\"\n }\n ]\n },\n \"behavior.expansion.collapseOn.sortChange\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"true\",\n \"label\": \"Enabled\"\n },\n {\n \"value\": \"false\",\n \"label\": \"Disabled\"\n }\n ]\n },\n \"behavior.expansion.collapseOn.pageChange\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"true\",\n \"label\": \"Enabled\"\n },\n {\n \"value\": \"false\",\n \"label\": \"Disabled\"\n }\n ]\n },\n \"behavior.expansion.collapseOn.filterChange\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"true\",\n \"label\": \"Enabled\"\n },\n {\n \"value\": \"false\",\n \"label\": \"Disabled\"\n }\n ]\n },\n \"behavior.expansion.collapseOn.dataRefresh\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"true\",\n \"label\": \"Enabled\"\n },\n {\n \"value\": \"false\",\n \"label\": \"Disabled\"\n }\n ]\n },\n \"behavior.expansion.detail.source.mode\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"inline\",\n \"label\": \"Inline\"\n },\n {\n \"value\": \"resource\",\n \"label\": \"Resource\"\n },\n {\n \"value\": \"resourcePath\",\n \"label\": \"Resource Path\"\n }\n ]\n },\n \"behavior.expansion.detail.source.resource.kind\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"ui-composition\",\n \"label\": \"UI Composition\"\n },\n {\n \"value\": \"form-schema\",\n \"label\": \"Form Schema\"\n },\n {\n \"value\": \"table-schema\",\n \"label\": \"Table Schema\"\n },\n {\n \"value\": \"dashboard-schema\",\n \"label\": \"Dashboard Schema\"\n }\n ]\n },\n \"behavior.expansion.detail.source.resourcePath.method\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"GET\",\n \"label\": \"GET\"\n },\n {\n \"value\": \"POST\",\n \"label\": \"POST\"\n }\n ]\n },\n \"behavior.expansion.detail.source.resourcePath.paramsMap\": {\n \"mode\": \"suggested\",\n \"options\": [\n {\n \"value\": \"{\\\"id\\\":\\\"$row.id\\\"}\",\n \"label\": \"Row ID\"\n },\n {\n \"value\": \"{\\\"id\\\":\\\"$row.id\\\",\\\"table\\\":\\\"$ctx.tableId\\\"}\",\n \"label\": \"Row + Table\"\n }\n ]\n },\n \"behavior.expansion.detail.source.resourceAllowList[]\": {\n \"mode\": \"suggested\",\n \"options\": [\n {\n \"value\": \"api/orders/*/detail-schema\",\n \"label\": \"Orders detail schema\"\n },\n {\n \"value\": \"api/customers/*/detail-schema\",\n \"label\": \"Customers detail schema\"\n }\n ]\n },\n \"behavior.expansion.detail.rendering.strategy\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"registry\",\n \"label\": \"Registry\"\n }\n ]\n },\n \"behavior.expansion.detail.rendering.hostLayout\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"auto\",\n \"label\": \"Auto\"\n },\n {\n \"value\": \"stack\",\n \"label\": \"Stack\"\n },\n {\n \"value\": \"tabs\",\n \"label\": \"Tabs\"\n }\n ]\n },\n \"behavior.expansion.detail.rendering.fallbackNodePolicy\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"failClosed\",\n \"label\": \"Fail Closed\"\n },\n {\n \"value\": \"renderPlaceholder\",\n \"label\": \"Render Placeholder\"\n }\n ]\n },\n \"behavior.expansion.detail.height.mode\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"fixed\",\n \"label\": \"Fixed\"\n },\n {\n \"value\": \"dynamic\",\n \"label\": \"Dynamic\"\n }\n ]\n },\n \"behavior.expansion.virtualization.policy\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"fixed-height-only\",\n \"label\": \"Fixed Height Only\"\n },\n {\n \"value\": \"allow-dynamic-under-flag\",\n \"label\": \"Allow Dynamic Under Flag\"\n }\n ]\n },\n \"behavior.expansion.security.eventExposureDefault.rowId\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"redacted\",\n \"label\": \"Redacted\"\n },\n {\n \"value\": \"hashed\",\n \"label\": \"Hashed\"\n },\n {\n \"value\": \"raw\",\n \"label\": \"Raw\"\n }\n ]\n },\n \"behavior.expansion.security.eventExposureDefault.expandedKeys\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"none\",\n \"label\": \"None\"\n },\n {\n \"value\": \"hashed\",\n \"label\": \"Hashed\"\n },\n {\n \"value\": \"raw\",\n \"label\": \"Raw\"\n }\n ]\n },\n \"behavior.expansion.deepLink.encoding\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"csv\",\n \"label\": \"CSV\"\n }\n ]\n },\n \"behavior.expansion.deepLink.parsing.duplicateParams\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"firstWins\",\n \"label\": \"First Wins\"\n },\n {\n \"value\": \"reject\",\n \"label\": \"Reject\"\n }\n ]\n },\n \"behavior.expansion.deepLink.integrity.mode\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"opaqueToken\",\n \"label\": \"Opaque Token\"\n }\n ]\n },\n \"behavior.expansion.deepLink.privacy.mode\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"denyByDefault\",\n \"label\": \"Deny By Default\"\n },\n {\n \"value\": \"allowByDefault\",\n \"label\": \"Allow By Default\"\n }\n ]\n },\n \"columns[].renderer.type\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"icon\",\n \"label\": \"Icon\"\n },\n {\n \"value\": \"image\",\n \"label\": \"Image\"\n },\n {\n \"value\": \"badge\",\n \"label\": \"Badge\"\n },\n {\n \"value\": \"link\",\n \"label\": \"Link\"\n },\n {\n \"value\": \"button\",\n \"label\": \"Button\"\n },\n {\n \"value\": \"chip\",\n \"label\": \"Chip\"\n },\n {\n \"value\": \"progress\",\n \"label\": \"Progress\"\n },\n {\n \"value\": \"avatar\",\n \"label\": \"Avatar\"\n },\n {\n \"value\": \"toggle\",\n \"label\": \"Toggle\"\n },\n {\n \"value\": \"menu\",\n \"label\": \"Menu\"\n },\n {\n \"value\": \"rating\",\n \"label\": \"Rating\"\n },\n {\n \"value\": \"html\",\n \"label\": \"HTML\"\n },\n {\n \"value\": \"microVisualization\",\n \"label\": \"Micro visualization\"\n },\n {\n \"value\": \"compose\",\n \"label\": \"Compose\"\n }\n ]\n },\n \"columns[].renderer.image.shape\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"square\",\n \"label\": \"Square\"\n },\n {\n \"value\": \"rounded\",\n \"label\": \"Rounded\"\n },\n {\n \"value\": \"circle\",\n \"label\": \"Circle\"\n }\n ]\n },\n \"columns[].renderer.image.fit\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"cover\",\n \"label\": \"Cover\"\n },\n {\n \"value\": \"contain\",\n \"label\": \"Contain\"\n }\n ]\n },\n \"columns[].renderer.link.target\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"_blank\",\n \"label\": \"New tab\"\n },\n {\n \"value\": \"_self\",\n \"label\": \"Same tab\"\n },\n {\n \"value\": \"_parent\",\n \"label\": \"Parent frame\"\n },\n {\n \"value\": \"_top\",\n \"label\": \"Top frame\"\n }\n ]\n },\n \"columns[].renderer.button.variant\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"filled\",\n \"label\": \"Filled\"\n },\n {\n \"value\": \"outlined\",\n \"label\": \"Outlined\"\n },\n {\n \"value\": \"text\",\n \"label\": \"Text\"\n }\n ]\n },\n \"columns[].renderer.button.color\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"primary\",\n \"label\": \"Primary\"\n },\n {\n \"value\": \"accent\",\n \"label\": \"Accent\"\n },\n {\n \"value\": \"warn\",\n \"label\": \"Warn\"\n }\n ]\n },\n \"columns[].renderer.button.size\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"sm\",\n \"label\": \"Small\"\n },\n {\n \"value\": \"md\",\n \"label\": \"Medium\"\n },\n {\n \"value\": \"lg\",\n \"label\": \"Large\"\n }\n ]\n },\n \"columns[].renderer.badge.variant\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"filled\",\n \"label\": \"Filled\"\n },\n {\n \"value\": \"outlined\",\n \"label\": \"Outlined\"\n },\n {\n \"value\": \"soft\",\n \"label\": \"Soft\"\n },\n {\n \"value\": \"plain\",\n \"label\": \"Plain\"\n }\n ]\n },\n \"columns[].renderer.chip.variant\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"filled\",\n \"label\": \"Filled\"\n },\n {\n \"value\": \"outlined\",\n \"label\": \"Outlined\"\n },\n {\n \"value\": \"soft\",\n \"label\": \"Soft\"\n },\n {\n \"value\": \"plain\",\n \"label\": \"Plain\"\n }\n ]\n },\n \"columns[].renderer.rating.size\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"small\",\n \"label\": \"Small\"\n },\n {\n \"value\": \"medium\",\n \"label\": \"Medium\"\n },\n {\n \"value\": \"large\",\n \"label\": \"Large\"\n }\n ]\n },\n \"columns[].renderer.compose.items[].type\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"icon\",\n \"label\": \"Icon\"\n },\n {\n \"value\": \"image\",\n \"label\": \"Image\"\n },\n {\n \"value\": \"badge\",\n \"label\": \"Badge\"\n },\n {\n \"value\": \"link\",\n \"label\": \"Link\"\n },\n {\n \"value\": \"button\",\n \"label\": \"Button\"\n },\n {\n \"value\": \"chip\",\n \"label\": \"Chip\"\n },\n {\n \"value\": \"progress\",\n \"label\": \"Progress\"\n },\n {\n \"value\": \"avatar\",\n \"label\": \"Avatar\"\n },\n {\n \"value\": \"toggle\",\n \"label\": \"Toggle\"\n },\n {\n \"value\": \"menu\",\n \"label\": \"Menu\"\n },\n {\n \"value\": \"rating\",\n \"label\": \"Rating\"\n },\n {\n \"value\": \"html\",\n \"label\": \"HTML\"\n },\n {\n \"value\": \"microVisualization\",\n \"label\": \"Micro visualization\"\n }\n ]\n },\n \"columns[].renderer.microVisualization.visualization.valueExpr\": {},\n \"columns[].renderer.microVisualization.visualization.valueSuffixExpr\": {},\n \"columns[].renderer.microVisualization.visualization.totalExpr\": {},\n \"columns[].renderer.microVisualization.visualization.targetExpr\": {},\n \"columns[].renderer.microVisualization.visualization.baselineExpr\": {},\n \"columns[].renderer.microVisualization.visualization.segmentsExpr\": {},\n \"columns[].renderer.microVisualization.visualization.pointsExpr\": {},\n \"columns[].renderer.microVisualization.visualization.thresholdsExpr\": {},\n \"columns[].renderer.microVisualization.visualization.itemsExpr\": {},\n \"columns[].renderer.microVisualization.visualization.toneExpr\": {},\n \"columns[].renderer.microVisualization.visualization.ariaLabelExpr\": {},\n \"columns[].renderer.microVisualization.visualization.fallbackTextExpr\": {},\n \"columns[].conditionalRenderers[].renderer.type\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"icon\",\n \"label\": \"Icon\"\n },\n {\n \"value\": \"image\",\n \"label\": \"Image\"\n },\n {\n \"value\": \"badge\",\n \"label\": \"Badge\"\n },\n {\n \"value\": \"link\",\n \"label\": \"Link\"\n },\n {\n \"value\": \"button\",\n \"label\": \"Button\"\n },\n {\n \"value\": \"chip\",\n \"label\": \"Chip\"\n },\n {\n \"value\": \"progress\",\n \"label\": \"Progress\"\n },\n {\n \"value\": \"avatar\",\n \"label\": \"Avatar\"\n },\n {\n \"value\": \"toggle\",\n \"label\": \"Toggle\"\n },\n {\n \"value\": \"menu\",\n \"label\": \"Menu\"\n },\n {\n \"value\": \"rating\",\n \"label\": \"Rating\"\n },\n {\n \"value\": \"html\",\n \"label\": \"HTML\"\n },\n {\n \"value\": \"microVisualization\",\n \"label\": \"Micro visualization\"\n },\n {\n \"value\": \"compose\",\n \"label\": \"Compose\"\n }\n ]\n },\n \"columns[].conditionalRenderers[].renderer.image.shape\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"square\",\n \"label\": \"Square\"\n },\n {\n \"value\": \"rounded\",\n \"label\": \"Rounded\"\n },\n {\n \"value\": \"circle\",\n \"label\": \"Circle\"\n }\n ]\n },\n \"columns[].conditionalRenderers[].renderer.image.fit\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"cover\",\n \"label\": \"Cover\"\n },\n {\n \"value\": \"contain\",\n \"label\": \"Contain\"\n }\n ]\n },\n \"columns[].conditionalRenderers[].renderer.link.target\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"_blank\",\n \"label\": \"New tab\"\n },\n {\n \"value\": \"_self\",\n \"label\": \"Same tab\"\n },\n {\n \"value\": \"_parent\",\n \"label\": \"Parent frame\"\n },\n {\n \"value\": \"_top\",\n \"label\": \"Top frame\"\n }\n ]\n },\n \"columns[].conditionalRenderers[].renderer.button.variant\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"filled\",\n \"label\": \"Filled\"\n },\n {\n \"value\": \"outlined\",\n \"label\": \"Outlined\"\n },\n {\n \"value\": \"text\",\n \"label\": \"Text\"\n }\n ]\n },\n \"columns[].conditionalRenderers[].renderer.button.color\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"primary\",\n \"label\": \"Primary\"\n },\n {\n \"value\": \"accent\",\n \"label\": \"Accent\"\n },\n {\n \"value\": \"warn\",\n \"label\": \"Warn\"\n }\n ]\n },\n \"columns[].conditionalRenderers[].renderer.button.size\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"sm\",\n \"label\": \"Small\"\n },\n {\n \"value\": \"md\",\n \"label\": \"Medium\"\n },\n {\n \"value\": \"lg\",\n \"label\": \"Large\"\n }\n ]\n },\n \"columns[].conditionalRenderers[].renderer.badge.variant\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"filled\",\n \"label\": \"Filled\"\n },\n {\n \"value\": \"outlined\",\n \"label\": \"Outlined\"\n },\n {\n \"value\": \"soft\",\n \"label\": \"Soft\"\n }\n ]\n },\n \"columns[].conditionalRenderers[].renderer.chip.variant\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"filled\",\n \"label\": \"Filled\"\n },\n {\n \"value\": \"outlined\",\n \"label\": \"Outlined\"\n },\n {\n \"value\": \"soft\",\n \"label\": \"Soft\"\n }\n ]\n },\n \"columns[].conditionalRenderers[].renderer.rating.size\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"small\",\n \"label\": \"Small\"\n },\n {\n \"value\": \"medium\",\n \"label\": \"Medium\"\n },\n {\n \"value\": \"large\",\n \"label\": \"Large\"\n }\n ]\n },\n \"columns[].conditionalRenderers[].renderer.compose.items[].type\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"icon\",\n \"label\": \"Icon\"\n },\n {\n \"value\": \"image\",\n \"label\": \"Image\"\n },\n {\n \"value\": \"badge\",\n \"label\": \"Badge\"\n },\n {\n \"value\": \"link\",\n \"label\": \"Link\"\n },\n {\n \"value\": \"button\",\n \"label\": \"Button\"\n },\n {\n \"value\": \"chip\",\n \"label\": \"Chip\"\n },\n {\n \"value\": \"progress\",\n \"label\": \"Progress\"\n },\n {\n \"value\": \"avatar\",\n \"label\": \"Avatar\"\n },\n {\n \"value\": \"toggle\",\n \"label\": \"Toggle\"\n },\n {\n \"value\": \"menu\",\n \"label\": \"Menu\"\n },\n {\n \"value\": \"rating\",\n \"label\": \"Rating\"\n },\n {\n \"value\": \"html\",\n \"label\": \"HTML\"\n },\n {\n \"value\": \"microVisualization\",\n \"label\": \"Micro visualization\"\n }\n ]\n },\n \"actions.row.actions[].color\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"primary\",\n \"label\": \"Primary\"\n },\n {\n \"value\": \"accent\",\n \"label\": \"Accent\"\n },\n {\n \"value\": \"warn\",\n \"label\": \"Warn\"\n }\n ]\n },\n \"actions.row.actions[].icon\": {\n \"mode\": \"suggested\",\n \"options\": [\n {\n \"value\": \"edit\",\n \"label\": \"Edit\"\n },\n {\n \"value\": \"delete\",\n \"label\": \"Delete\"\n },\n {\n \"value\": \"visibility\",\n \"label\": \"View\"\n },\n {\n \"value\": \"more_vert\",\n \"label\": \"More\"\n },\n {\n \"value\": \"check\",\n \"label\": \"Approve\"\n },\n {\n \"value\": \"close\",\n \"label\": \"Reject\"\n },\n {\n \"value\": \"download\",\n \"label\": \"Download\"\n }\n ]\n },\n \"actions.row.actions[].globalAction.[actionId]\": {\n \"mode\": \"suggested\",\n \"options\": [\n {\n \"value\": \"toast.success\",\n \"label\": \"Toast success\"\n },\n {\n \"value\": \"toast.error\",\n \"label\": \"Toast error\"\n },\n {\n \"value\": \"dialog.alert\",\n \"label\": \"Dialog alert\"\n },\n {\n \"value\": \"dialog.open\",\n \"label\": \"Dialog open\"\n },\n {\n \"value\": \"navigation.openExternal\",\n \"label\": \"Open external URL\"\n },\n {\n \"value\": \"navigation.openRoute\",\n \"label\": \"Open internal route\"\n },\n {\n \"value\": \"api.post\",\n \"label\": \"API POST\"\n },\n {\n \"value\": \"api.patch\",\n \"label\": \"API PATCH\"\n }\n ]\n },\n \"rowConditionalStyles[].condition\": {\n \"mode\": \"suggested\",\n \"options\": [\n {\n \"value\": \"status == \\\"active\\\"\",\n \"label\": \"Status Active\"\n },\n {\n \"value\": \"amount < 0\",\n \"label\": \"Negative Amount\"\n },\n {\n \"value\": \"priority == \\\"high\\\"\",\n \"label\": \"High Priority\"\n }\n ]\n }\n },\n \"actionCatalog\": [\n {\n \"id\": \"ADD_COLUMN\",\n \"intentExamples\": [\n \"add column\",\n \"nova coluna\",\n \"criar coluna\",\n \"insert column\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"OBJECT\",\n \"operation\": \"create\",\n \"requiresExistingTarget\": false,\n \"params\": [\n {\n \"name\": \"field\",\n \"type\": \"STRING\",\n \"description\": \"Nome técnico da nova coluna\"\n },\n {\n \"name\": \"header\",\n \"type\": \"STRING\",\n \"description\": \"Título da coluna\"\n }\n ],\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{params.field}}\",\n \"header\": \"{{params.header}}\",\n \"visible\": true\n }\n ]\n }\n },\n {\n \"id\": \"ADD_COLUMN_COMPUTED\",\n \"intentExamples\": [\n \"calculated column\",\n \"coluna calculada\",\n \"compute\",\n \"formula\",\n \"expression\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"OBJECT\",\n \"operation\": \"create\",\n \"requiresExistingTarget\": false,\n \"params\": [\n {\n \"name\": \"field\",\n \"type\": \"STRING\",\n \"description\": \"Nome técnico da nova coluna (ex: total)\"\n },\n {\n \"name\": \"header\",\n \"type\": \"STRING\",\n \"description\": \"Título da coluna\"\n },\n {\n \"name\": \"expression\",\n \"type\": \"STRING\",\n \"description\": \"AST Json Logic canônico serializado em JSON para derived values (ex: { \\\"*\\\": [{ \\\"var\\\": \\\"quantity\\\" }, { \\\"var\\\": \\\"price\\\" }] })\"\n },\n {\n \"name\": \"type\",\n \"type\": \"ENUM\",\n \"options\": [\n \"number\",\n \"currency\",\n \"percentage\",\n \"string\",\n \"boolean\"\n ],\n \"description\": \"Tipo de dado resultante\"\n }\n ],\n \"relatedConcepts\": [\n \"computed-logic\"\n ],\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{params.field}}\",\n \"header\": \"{{params.header}}\",\n \"visible\": true,\n \"computed\": {\n \"expression\": \"{{params.expression}}\",\n \"outputType\": \"{{params.type}}\"\n }\n }\n ]\n }\n },\n {\n \"id\": \"HIDE_COLUMN\",\n \"intentExamples\": [\n \"hide column\",\n \"ocultar coluna\",\n \"esconder coluna\",\n \"invisible\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"defaultValue\": false,\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"visible\": false\n }\n ]\n }\n },\n {\n \"id\": \"SHOW_COLUMN\",\n \"intentExamples\": [\n \"show column\",\n \"mostrar coluna\",\n \"exibir coluna\",\n \"visible\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"defaultValue\": true,\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"visible\": true\n }\n ]\n }\n },\n {\n \"id\": \"RENAME_COLUMN\",\n \"intentExamples\": [\n \"rename column\",\n \"renomear coluna\",\n \"titulo\",\n \"cabecalho\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"STRING\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"header\": \"{{value}}\"\n }\n ]\n }\n },\n {\n \"id\": \"column.format.set\",\n \"intentExamples\": [\n \"format\",\n \"formatar\",\n \"date format\",\n \"number format\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"ENUM\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"format\": \"{{value}}\"\n }\n ]\n }\n },\n {\n \"id\": \"column.type.set\",\n \"intentExamples\": [\n \"type\",\n \"tipo\",\n \"data type\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"ENUM\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"type\": \"{{value}}\"\n }\n ]\n }\n },\n {\n \"id\": \"DISABLE_SORT\",\n \"intentExamples\": [\n \"disable sort\",\n \"desativar ordenacao\",\n \"sem ordenacao\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"defaultValue\": false,\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"sortable\": false\n }\n ]\n }\n },\n {\n \"id\": \"ENABLE_SORT\",\n \"intentExamples\": [\n \"enable sort\",\n \"ativar ordenacao\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"defaultValue\": true,\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"sortable\": true\n }\n ]\n }\n },\n {\n \"id\": \"column.width.set\",\n \"intentExamples\": [\n \"width\",\n \"largura\",\n \"col width\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"STRING\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"width\": \"{{value}}\"\n }\n ]\n }\n },\n {\n \"id\": \"column.order.set\",\n \"intentExamples\": [\n \"ordem visual\",\n \"mover coluna\",\n \"colocar depois de\",\n \"colocar antes de\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"NUMBER\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"order\": \"{{value}}\"\n }\n ]\n }\n },\n {\n \"id\": \"column.align.set\",\n \"intentExamples\": [\n \"align\",\n \"alinhamento\",\n \"left\",\n \"center\",\n \"right\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"ENUM\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"align\": \"{{value}}\"\n }\n ]\n }\n },\n {\n \"id\": \"column.sticky.set\",\n \"intentExamples\": [\n \"sticky\",\n \"fixar coluna\",\n \"pin column\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"ENUM\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"sticky\": \"{{value}}\"\n }\n ]\n }\n },\n {\n \"id\": \"column.renderer.type.set\",\n \"intentExamples\": [\n \"renderer\",\n \"render\",\n \"cell type\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"ENUM\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"renderer\": {\n \"type\": \"{{value}}\"\n }\n }\n ]\n }\n },\n {\n \"id\": \"column.renderer.image.shape.set\",\n \"intentExamples\": [\n \"image shape\",\n \"avatar shape\",\n \"imagem recorte\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"ENUM\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"renderer\": {\n \"type\": \"image\",\n \"image\": {\n \"shape\": \"{{value}}\"\n }\n }\n }\n ]\n }\n },\n {\n \"id\": \"column.renderer.link.target.set\",\n \"intentExamples\": [\n \"link target\",\n \"abrir em nova aba\",\n \"target blank\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"ENUM\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"renderer\": {\n \"type\": \"link\",\n \"link\": {\n \"target\": \"{{value}}\"\n }\n }\n }\n ]\n }\n },\n {\n \"id\": \"column.renderer.button.style.set\",\n \"intentExamples\": [\n \"button style\",\n \"botao estilo\",\n \"variant\",\n \"color\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"OBJECT\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"renderer\": {\n \"type\": \"button\",\n \"button\": {\n \"variant\": \"{{params.variant}}\",\n \"color\": \"{{params.color}}\"\n }\n }\n }\n ]\n }\n },\n {\n \"id\": \"SET_RENDERER_BADGE\",\n \"intentExamples\": [\n \"render badge\",\n \"exibir como badge\",\n \"status badge\",\n \"etiqueta\",\n \"tag\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"OBJECT\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"params\": [\n {\n \"name\": \"variant\",\n \"type\": \"ENUM\",\n \"options\": [\n \"filled\",\n \"outlined\",\n \"soft\",\n \"plain\"\n ],\n \"description\": \"Estilo visual do badge\"\n },\n {\n \"name\": \"color\",\n \"type\": \"ENUM\",\n \"options\": [\n \"primary\",\n \"accent\",\n \"warn\",\n \"success\",\n \"info\"\n ],\n \"description\": \"Cor semântica do badge\"\n }\n ],\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"renderer\": {\n \"type\": \"badge\",\n \"badge\": {\n \"text\": \"{{target}}\",\n \"textField\": \"{{target}}\",\n \"color\": \"{{params.color}}\",\n \"variant\": \"{{params.variant}}\"\n }\n }\n }\n ]\n }\n },\n {\n \"id\": \"SET_RENDERER_CHIP\",\n \"intentExamples\": [\n \"render chip\",\n \"exibir como chip\",\n \"chip\",\n \"pilula\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"OBJECT\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"renderer\": {\n \"type\": \"chip\",\n \"chip\": {\n \"textField\": \"{{target}}\",\n \"color\": \"{{params.color}}\",\n \"variant\": \"{{params.variant}}\"\n }\n }\n }\n ]\n }\n },\n {\n \"id\": \"SET_RENDERER_ICON\",\n \"intentExamples\": [\n \"render icon\",\n \"exibir como icone\",\n \"icone\",\n \"icon\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"OBJECT\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"renderer\": {\n \"type\": \"icon\",\n \"icon\": {\n \"name\": \"{{value}}\",\n \"color\": \"{{params.color}}\",\n \"size\": 18\n }\n }\n }\n ]\n }\n },\n {\n \"id\": \"SET_RENDERER_COMPOSE_TITLE_SUBTITLE\",\n \"intentExamples\": [\n \"compose title subtitle\",\n \"titulo e subtitulo\",\n \"two lines\",\n \"duas linhas\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"OBJECT\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"renderer\": {\n \"type\": \"compose\",\n \"compose\": {\n \"layout\": {\n \"direction\": \"column\",\n \"gap\": 4\n },\n \"items\": [\n {\n \"type\": \"value\",\n \"style\": \"font-weight: 500;\"\n },\n {\n \"type\": \"value\",\n \"textField\": \"{{params.subtitleField}}\",\n \"style\": \"font-size: 0.85em; color: var(--text-secondary);\"\n }\n ]\n }\n }\n }\n ]\n }\n },\n {\n \"id\": \"SET_RENDERER_COMPOSE_AVATAR_TEXT\",\n \"intentExamples\": [\n \"compose avatar text\",\n \"avatar e texto\",\n \"user card\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"OBJECT\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"renderer\": {\n \"type\": \"compose\",\n \"compose\": {\n \"layout\": {\n \"direction\": \"row\",\n \"gap\": 12,\n \"align\": \"center\"\n },\n \"items\": [\n {\n \"type\": \"avatar\",\n \"avatar\": {\n \"srcField\": \"{{params.imageField}}\",\n \"initialsField\": \"{{target}}\",\n \"shape\": \"circle\"\n }\n },\n {\n \"type\": \"compose\",\n \"compose\": {\n \"layout\": {\n \"direction\": \"column\",\n \"gap\": 2\n },\n \"items\": [\n {\n \"type\": \"value\",\n \"style\": \"font-weight: 500;\"\n },\n {\n \"type\": \"value\",\n \"textField\": \"{{params.subtitleField}}\",\n \"style\": \"font-size: 0.85em; opacity: 0.7;\"\n }\n ]\n }\n }\n ]\n }\n }\n }\n ]\n }\n },\n {\n \"id\": \"ENABLE_PAGINATION\",\n \"intentExamples\": [\n \"enable pagination\",\n \"paginar\",\n \"paginação\",\n \"pagination\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"defaultValue\": true,\n \"patchTemplate\": {\n \"behavior\": {\n \"pagination\": {\n \"enabled\": true,\n \"pageSize\": \"{{params.pageSize}}\"\n }\n }\n }\n },\n {\n \"id\": \"DISABLE_PAGINATION\",\n \"intentExamples\": [\n \"disable pagination\",\n \"remover paginacao\",\n \"lista infinita\",\n \"no pagination\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"defaultValue\": false,\n \"patchTemplate\": {\n \"behavior\": {\n \"pagination\": {\n \"enabled\": false\n }\n }\n }\n },\n {\n \"id\": \"ENABLE_FILTERING\",\n \"intentExamples\": [\n \"enable filtering\",\n \"ligar filtros\",\n \"filtrar\",\n \"searchable\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"defaultValue\": true,\n \"patchTemplate\": {\n \"behavior\": {\n \"filtering\": {\n \"enabled\": true\n }\n }\n }\n },\n {\n \"id\": \"DISABLE_FILTERING\",\n \"intentExamples\": [\n \"disable filtering\",\n \"desligar filtros\",\n \"no filter\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"defaultValue\": false,\n \"patchTemplate\": {\n \"behavior\": {\n \"filtering\": {\n \"enabled\": false\n }\n }\n }\n },\n {\n \"id\": \"ENABLE_ADVANCED_FILTERS\",\n \"intentExamples\": [\n \"advanced filters\",\n \"filtros avancados\",\n \"filtro complexo\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"defaultValue\": true,\n \"patchTemplate\": {\n \"behavior\": {\n \"filtering\": {\n \"advancedFilters\": {\n \"enabled\": true\n }\n }\n }\n }\n },\n {\n \"id\": \"SET_FILTER_MODE\",\n \"intentExamples\": [\n \"filter mode\",\n \"modo de filtro\",\n \"modo unico do filtro\",\n \"painel de filtro\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"ENUM\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"patchTemplate\": {\n \"behavior\": {\n \"filtering\": {\n \"advancedFilters\": {\n \"settings\": {\n \"mode\": \"{{value}}\"\n }\n }\n }\n }\n }\n },\n {\n \"id\": \"SET_ALWAYS_VISIBLE_FILTERS\",\n \"intentExamples\": [\n \"always visible filter\",\n \"filtro fixo\",\n \"fixar filtro\",\n \"pin filter\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"STRING\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"patchTemplate\": {\n \"behavior\": {\n \"filtering\": {\n \"advancedFilters\": {\n \"settings\": {\n \"alwaysVisibleFields\": [\n \"{{target}}\"\n ]\n }\n }\n }\n }\n }\n },\n {\n \"id\": \"ENABLE_FILTER_SAVING\",\n \"intentExamples\": [\n \"save filters\",\n \"salvar filtros\",\n \"filter tags\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"defaultValue\": true,\n \"patchTemplate\": {\n \"behavior\": {\n \"filtering\": {\n \"advancedFilters\": {\n \"settings\": {\n \"allowSaveTags\": true\n }\n }\n }\n }\n }\n },\n {\n \"id\": \"ENABLE_SORTING\",\n \"intentExamples\": [\n \"enable sorting\",\n \"ligar ordenacao\",\n \"ordenar\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"defaultValue\": true,\n \"patchTemplate\": {\n \"behavior\": {\n \"sorting\": {\n \"enabled\": true\n }\n }\n }\n },\n {\n \"id\": \"DISABLE_SORTING\",\n \"intentExamples\": [\n \"disable sorting\",\n \"desligar ordenacao\",\n \"no sort\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"defaultValue\": false,\n \"patchTemplate\": {\n \"behavior\": {\n \"sorting\": {\n \"enabled\": false\n }\n }\n }\n },\n {\n \"id\": \"ENABLE_SELECTION\",\n \"intentExamples\": [\n \"enable selection\",\n \"ativar selecao\",\n \"selecionavel\",\n \"selectable\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"defaultValue\": true,\n \"patchTemplate\": {\n \"behavior\": {\n \"selection\": {\n \"enabled\": true\n }\n }\n }\n },\n {\n \"id\": \"DISABLE_SELECTION\",\n \"intentExamples\": [\n \"disable selection\",\n \"remover selecao\",\n \"not selectable\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"defaultValue\": false,\n \"patchTemplate\": {\n \"behavior\": {\n \"selection\": {\n \"enabled\": false\n }\n }\n }\n },\n {\n \"id\": \"SET_SELECTION_SINGLE\",\n \"intentExamples\": [\n \"single selection\",\n \"selecao unica\",\n \"selecionar um\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"ENUM\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"defaultValue\": \"single\",\n \"patchTemplate\": {\n \"behavior\": {\n \"selection\": {\n \"type\": \"single\"\n }\n }\n }\n },\n {\n \"id\": \"SET_SELECTION_MULTIPLE\",\n \"intentExamples\": [\n \"multiple selection\",\n \"selecao multipla\",\n \"selecionar varios\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"ENUM\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"defaultValue\": \"multiple\",\n \"patchTemplate\": {\n \"behavior\": {\n \"selection\": {\n \"type\": \"multiple\"\n }\n }\n }\n },\n {\n \"id\": \"ENABLE_EXPORT\",\n \"intentExamples\": [\n \"enable export\",\n \"ativar exportacao\",\n \"botão exportar\",\n \"excel\",\n \"pdf\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"defaultValue\": true,\n \"patchTemplate\": {\n \"export\": {\n \"enabled\": true\n },\n \"toolbar\": {\n \"visible\": true\n }\n }\n },\n {\n \"id\": \"DISABLE_EXPORT\",\n \"intentExamples\": [\n \"disable export\",\n \"remover exportacao\",\n \"esconder exportar\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"defaultValue\": false,\n \"patchTemplate\": {\n \"export\": {\n \"enabled\": false\n }\n }\n },\n {\n \"id\": \"SET_DENSITY\",\n \"intentExamples\": [\n \"set density\",\n \"mudar densidade\",\n \"compacto\",\n \"confortavel\",\n \"espacoso\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"ENUM\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"patchTemplate\": {\n \"appearance\": {\n \"density\": \"{{value}}\"\n }\n }\n },\n {\n \"id\": \"SHOW_BORDERS\",\n \"intentExamples\": [\n \"show borders\",\n \"mostrar bordas\",\n \"com bordas\",\n \"grid lines\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"defaultValue\": true,\n \"patchTemplate\": {\n \"appearance\": {\n \"borders\": {\n \"showRowBorders\": true,\n \"showColumnBorders\": true\n }\n }\n }\n },\n {\n \"id\": \"HIDE_BORDERS\",\n \"intentExamples\": [\n \"hide borders\",\n \"ocultar bordas\",\n \"sem bordas\",\n \"clean look\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"defaultValue\": false,\n \"patchTemplate\": {\n \"appearance\": {\n \"borders\": {\n \"showRowBorders\": false,\n \"showColumnBorders\": false,\n \"showOuterBorder\": false\n }\n }\n }\n },\n {\n \"id\": \"ENABLE_STRIPED_ROWS\",\n \"intentExamples\": [\n \"striped rows\",\n \"zebrado\",\n \"linhas alternadas\",\n \"zebra\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"defaultValue\": true,\n \"patchTemplate\": {\n \"appearance\": {\n \"colors\": {\n \"alternateRowBackground\": \"#f7f9fc\"\n }\n }\n }\n },\n {\n \"id\": \"DISABLE_STRIPED_ROWS\",\n \"intentExamples\": [\n \"disable striped\",\n \"remover zebrado\",\n \"fundo solido\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"defaultValue\": false,\n \"patchTemplate\": {\n \"appearance\": {\n \"colors\": {}\n }\n }\n },\n {\n \"id\": \"SHOW_TOOLBAR\",\n \"intentExamples\": [\n \"show toolbar\",\n \"mostrar toolbar\",\n \"barra de ferramentas\",\n \"titulo da tabela\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"defaultValue\": true,\n \"patchTemplate\": {\n \"toolbar\": {\n \"visible\": true\n }\n }\n },\n {\n \"id\": \"HIDE_TOOLBAR\",\n \"intentExamples\": [\n \"hide toolbar\",\n \"esconder toolbar\",\n \"remover titulo\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"defaultValue\": false,\n \"patchTemplate\": {\n \"toolbar\": {\n \"visible\": false\n }\n }\n },\n {\n \"id\": \"SET_TOOLBAR_POSITION\",\n \"intentExamples\": [\n \"toolbar position\",\n \"posicao da toolbar\",\n \"toolbar no topo\",\n \"toolbar embaixo\",\n \"toolbar em cima\",\n \"toolbar ambos\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"ENUM\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"patchTemplate\": {\n \"toolbar\": {\n \"position\": \"{{value}}\"\n }\n }\n },\n {\n \"id\": \"SET_TOOLBAR_ACTIONS_POSITION\",\n \"intentExamples\": [\n \"acoes da toolbar\",\n \"barra de acoes\",\n \"acoes no topo\",\n \"acoes embaixo\",\n \"acoes em cima\",\n \"acoes em ambos\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"ENUM\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"patchTemplate\": {\n \"toolbar\": {\n \"actionsPosition\": \"{{value}}\"\n }\n }\n },\n {\n \"id\": \"SET_TOOLBAR_ACTIONS_BG\",\n \"intentExamples\": [\n \"cor barra de acoes\",\n \"fundo da barra de acoes\",\n \"background acoes\",\n \"acoes com cor\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"STRING\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"patchTemplate\": {\n \"toolbar\": {\n \"actionsBackgroundColor\": \"{{value}}\"\n }\n }\n },\n {\n \"id\": \"ENABLE_VIRTUALIZATION\",\n \"intentExamples\": [\n \"enable virtualization\",\n \"virtualizar\",\n \"scroll infinito\",\n \"performance\",\n \"large dataset\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"defaultValue\": true,\n \"patchTemplate\": {\n \"behavior\": {\n \"virtualization\": {\n \"enabled\": true,\n \"itemHeight\": 48\n }\n },\n \"performance\": {\n \"virtualization\": {\n \"enabled\": true,\n \"itemHeight\": 48\n }\n }\n }\n },\n {\n \"id\": \"DISABLE_VIRTUALIZATION\",\n \"intentExamples\": [\n \"disable virtualization\",\n \"desativar virtualizacao\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"defaultValue\": false,\n \"patchTemplate\": {\n \"behavior\": {\n \"virtualization\": {\n \"enabled\": false\n }\n },\n \"performance\": {\n \"virtualization\": {\n \"enabled\": false\n }\n }\n }\n },\n {\n \"id\": \"ENABLE_ROW_EXPANSION\",\n \"intentExamples\": [\n \"expand row\",\n \"expandir linha\",\n \"detalhe expansivel\",\n \"row details\",\n \"master detail\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"defaultValue\": true,\n \"patchTemplate\": {\n \"behavior\": {\n \"expansion\": {\n \"enabled\": true,\n \"contractVersion\": \"1.0.0\",\n \"interaction\": {\n \"trigger\": \"icon\",\n \"keyboard\": {\n \"profile\": \"disclosure\"\n }\n },\n \"limits\": {\n \"allowMultiple\": false,\n \"maxExpandedRows\": 1,\n \"onOverflow\": \"collapseOldest\"\n },\n \"detail\": {\n \"schemaContract\": {\n \"kind\": \"praxis.detail.schema\",\n \"version\": \"1.0.0\"\n },\n \"source\": {\n \"mode\": \"inline\",\n \"inlineSchema\": {\n \"layout\": \"stack\",\n \"items\": []\n }\n },\n \"rendering\": {\n \"strategy\": \"registry\",\n \"registryId\": \"praxis.detail.default\"\n }\n }\n }\n }\n }\n },\n {\n \"id\": \"SET_EXPANSION_SOURCE_MODE\",\n \"intentExamples\": [\n \"expansion source\",\n \"detail source\",\n \"schema source\",\n \"resource detail\",\n \"resourcePath detail\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"ENUM\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"patchTemplate\": {\n \"behavior\": {\n \"expansion\": {\n \"detail\": {\n \"source\": {\n \"mode\": \"{{value}}\"\n }\n }\n }\n }\n }\n },\n {\n \"id\": \"SET_EXPANSION_RESOURCE\",\n \"intentExamples\": [\n \"detail resource id\",\n \"resource detail id\",\n \"ui composition detail\",\n \"schema detail resource\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"OBJECT\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"patchTemplate\": {\n \"behavior\": {\n \"expansion\": {\n \"detail\": {\n \"source\": {\n \"mode\": \"resource\",\n \"resource\": {\n \"kind\": \"{{params.kind}}\",\n \"id\": \"{{params.id}}\",\n \"version\": \"{{params.version}}\"\n }\n }\n }\n }\n }\n }\n },\n {\n \"id\": \"SET_COLUMN_BOLD\",\n \"intentExamples\": [\n \"column bold\",\n \"coluna negrito\",\n \"destacar coluna\",\n \"bold text\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"STRING\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"style\": \"font-weight: 600;\"\n }\n ]\n }\n },\n {\n \"id\": \"SET_COLUMN_COLOR\",\n \"intentExamples\": [\n \"column color\",\n \"cor da coluna\",\n \"pintar coluna\",\n \"text color\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"STRING\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"style\": \"color: {{value}};\"\n }\n ]\n }\n },\n {\n \"id\": \"SET_HEADER_UPPERCASE\",\n \"intentExamples\": [\n \"header uppercase\",\n \"cabecalho maiuscula\",\n \"titulo caixa alta\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"STRING\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"headerStyle\": \"text-transform: uppercase;\"\n }\n ]\n }\n },\n {\n \"id\": \"SET_HEADER_BOLD\",\n \"intentExamples\": [\n \"header bold\",\n \"cabecalho negrito\",\n \"titulo forte\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"STRING\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"headerStyle\": \"font-weight: 600;\"\n }\n ]\n }\n },\n {\n \"id\": \"SET_HEADER_BG_COLOR\",\n \"intentExamples\": [\n \"header background\",\n \"fundo cabecalho\",\n \"cor titulo\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"STRING\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"headerStyle\": \"background-color: {{value}};\"\n }\n ]\n }\n },\n {\n \"id\": \"SET_HEADER_TEXT_COLOR\",\n \"intentExamples\": [\n \"header text color\",\n \"cor texto cabecalho\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"STRING\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"headerStyle\": \"color: {{value}};\"\n }\n ]\n }\n },\n {\n \"id\": \"SET_TOOLBAR_ALIGNMENT\",\n \"intentExamples\": [\n \"toolbar align\",\n \"alinhar toolbar\",\n \"alinhamento barra\",\n \"space-between\",\n \"start\",\n \"end\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"ENUM\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"patchTemplate\": {\n \"toolbar\": {\n \"layout\": {\n \"alignment\": \"{{value}}\"\n }\n }\n }\n },\n {\n \"id\": \"ENABLE_GROUPING\",\n \"intentExamples\": [\n \"group by\",\n \"agrupar por\",\n \"agrupamento\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"STRING\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": true,\n \"patchTemplate\": {\n \"behavior\": {\n \"grouping\": {\n \"enabled\": true,\n \"fields\": [\n \"{{target}}\"\n ],\n \"expanded\": true\n }\n }\n }\n },\n {\n \"id\": \"CLEAR_GROUPING\",\n \"intentExamples\": [\n \"ungroup\",\n \"desagrupar\",\n \"remover agrupamento\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"defaultValue\": true,\n \"patchTemplate\": {\n \"behavior\": {\n \"grouping\": {\n \"enabled\": false,\n \"fields\": []\n }\n }\n }\n },\n {\n \"id\": \"ENABLE_ROW_ACTIONS\",\n \"intentExamples\": [\n \"enable row actions\",\n \"acoes de linha\",\n \"botoes na linha\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"BOOLEAN\",\n \"operation\": \"update\",\n \"requiresExistingTarget\": false,\n \"defaultValue\": true,\n \"patchTemplate\": {\n \"actions\": {\n \"row\": {\n \"enabled\": true,\n \"sticky\": \"end\"\n }\n }\n }\n },\n {\n \"id\": \"ADD_ROW_ACTION_ICON\",\n \"intentExamples\": [\n \"add row action\",\n \"botao de acao\",\n \"adicionar botao\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"OBJECT\",\n \"operation\": \"create\",\n \"requiresExistingTarget\": false,\n \"patchTemplate\": {\n \"actions\": {\n \"row\": {\n \"actions\": [\n {\n \"id\": \"{{id}}\",\n \"icon\": \"{{icon}}\",\n \"label\": \"{{label}}\",\n \"color\": \"{{params.color}}\",\n \"overflow\": false\n }\n ]\n }\n }\n }\n },\n {\n \"id\": \"ADD_ROW_ACTION_MENU\",\n \"intentExamples\": [\n \"add row menu\",\n \"acao no menu\",\n \"item de menu\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"OBJECT\",\n \"operation\": \"create\",\n \"requiresExistingTarget\": false,\n \"patchTemplate\": {\n \"actions\": {\n \"row\": {\n \"actions\": [\n {\n \"id\": \"{{id}}\",\n \"icon\": \"{{icon}}\",\n \"label\": \"{{label}}\",\n \"overflow\": true\n }\n ]\n }\n }\n }\n },\n {\n \"id\": \"ADD_ROW_STYLE_BG\",\n \"intentExamples\": [\n \"row background condition\",\n \"pintar linha se\",\n \"cor de fundo condicional\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"OBJECT\",\n \"operation\": \"create\",\n \"requiresExistingTarget\": false,\n \"patchTemplate\": {\n \"rowConditionalStyles\": [\n {\n \"condition\": \"{{condition}}\",\n \"style\": {\n \"background-color\": \"{{value}}\"\n }\n }\n ]\n }\n },\n {\n \"id\": \"ADD_ROW_STYLE_COLOR\",\n \"intentExamples\": [\n \"row text color condition\",\n \"cor texto linha se\"\n ],\n \"scope\": \"GLOBAL\",\n \"valueType\": \"OBJECT\",\n \"operation\": \"create\",\n \"requiresExistingTarget\": false,\n \"patchTemplate\": {\n \"rowConditionalStyles\": [\n {\n \"condition\": \"{{condition}}\",\n \"style\": {\n \"color\": \"{{value}}\"\n }\n }\n ]\n }\n },\n {\n \"id\": \"ADD_CONDITIONAL_RENDERER\",\n \"intentExamples\": [\n \"conditional renderer\",\n \"renderer condicional\",\n \"badge condicional\",\n \"chip condicional\",\n \"badge se\",\n \"chip se\",\n \"conditional badge\",\n \"conditional chip\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"OBJECT\",\n \"operation\": \"create\",\n \"requiresExistingTarget\": true,\n \"params\": [\n {\n \"name\": \"condition\",\n \"type\": \"STRING\",\n \"description\": \"Objeto JSON Logic canonico serializado, nunca DSL textual (ex: { \\\">\\\": [{ \\\"var\\\": \\\"recompensa\\\" }, 500000] })\"\n },\n {\n \"name\": \"renderer\",\n \"type\": \"STRING\",\n \"description\": \"Renderer completo com type e config (ex: { type: \\\"badge\\\", badge: { textField: \\\"recompensa\\\", color: \\\"#ff69b4\\\", variant: \\\"filled\\\" } })\"\n }\n ],\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"conditionalRenderers\": [\n {\n \"condition\": \"{{params.condition}}\",\n \"renderer\": \"{{params.renderer}}\"\n }\n ]\n }\n ]\n }\n },\n {\n \"id\": \"ADD_CONDITIONAL_ICON\",\n \"intentExamples\": [\n \"conditional icon\",\n \"icone condicional\",\n \"icone se\"\n ],\n \"scope\": \"COLUMN\",\n \"valueType\": \"OBJECT\",\n \"operation\": \"create\",\n \"requiresExistingTarget\": true,\n \"patchTemplate\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"conditionalRenderers\": [\n {\n \"condition\": \"{{condition}}\",\n \"renderer\": {\n \"type\": \"icon\",\n \"icon\": {\n \"name\": \"{{value}}\",\n \"color\": \"{{params.color}}\"\n }\n }\n }\n ]\n }\n ]\n }\n }\n ],\n \"fieldResolvers\": {\n \"columns[].field\": [\n \"field\",\n \"header\"\n ],\n \"actions.row.actions[].id\": [\n \"id\",\n \"label\"\n ],\n \"rowConditionalStyles[].condition\": [\n \"condition\"\n ]\n },\n \"hints\": [\n \"Use semantic patches with columns[] and field, not JSON Patch or column indexes.\",\n \"Set columns[].type before choosing columns[].format presets to avoid mismatched formatting.\",\n \"Renderer config overrides format/valueMapping; avoid mixing unless required.\",\n \"Use ADD_CONDITIONAL_RENDERER with renderer.type + renderer.<type> config for conditional badges/chips.\",\n \"When the table already shows a status/boolean column as valueMapping or chip/badge and the user refines colors, variants, icons, animation or tooltip, preserve the target column and create conditionalRenderers per semantic value instead of repeating the same valueMapping.\",\n \"For boolean chips/badges, model true/false branches explicitly: condition {\\\"==\\\":[{\\\"var\\\":\\\"<field>\\\"},true]} for the positive label and {\\\"==\\\":[{\\\"var\\\":\\\"<field>\\\"},false]} for the negative label; use renderer.type \\\"chip\\\" or \\\"badge\\\" with text, color and variant.\",\n \"DOC: Widget purpose: data table with sorting, filtering, pagination, and actions.\",\n \"DOC: Host inputs: tableId (required), resourcePath (optional), config (optional).\",\n \"DOC: config defaults to createDefaultTableConfig(); columns may start empty.\",\n \"DOC: behavior.expansion.detail é schema-driven; altere source.mode (inline/resource/resourcePath), não use detail.type.\",\n \"DOC: Para detail.source.mode=resource, sempre informar resource.kind + resource.id + resource.version.\",\n \"DOC: Para detail.source.mode=resourcePath, sempre informar resourcePath.paramsMap + resourceAllowList[]; URL absoluta/scheme (http:, https:, data:, javascript:) é bloqueada e o runtime aplica fail-closed.\",\n \"DOC: collapseOn ativo no runtime P0A: sortChange, pageChange, filterChange e dataRefresh.\",\n \"DOC: When resourcePath is available, the table can load schema and data; ask the user to pick an API resource when missing.\",\n \"DOC: resourcePath must be the base resource path only (no /filter, /all, /{id}). CRUD endpoints are handled internally.\",\n \"DOC: columns[].computed.expression agora usa AST Json Logic canônico para derived values; não use fórmulas string.\",\n \"DOC: Operadores/funções canônicos úteis: +, -, *, /, %, min, max, cat, substr, round, ceil, floor, abs, coalesce, now, date, yearsSince, monthsSince, daysSince, len, toNumber e stringify.\",\n \"DOC: Examples: {\\\"yearsSince\\\":[{\\\"var\\\":\\\"dataNascimento\\\"}]} → idade; {\\\"yearsSince\\\":[{\\\"var\\\":\\\"dataAdmissao\\\"}]} → tempoEmpresa (anos); {\\\"monthsSince\\\":[{\\\"var\\\":\\\"dataAdmissao\\\"}]} → tempoEmpresa (meses); {\\\"daysSince\\\":[{\\\"var\\\":\\\"dataCadastro\\\"}]} → dias desde cadastro; {\\\"+\\\":[{\\\"coalesce\\\":[{\\\"var\\\":\\\"bonus\\\"},0]},{\\\"var\\\":\\\"salario\\\"}]} → total com fallback.\",\n \"### DATA ARCHETYPE TO VISUAL STRATEGY\",\n \"Apply these patterns based on the SEMANTIC NATURE of the column data:\",\n \"- STATUS/STATE (e.g., phase, stage, is_active, priority):\",\n \" -> Use \\\"badge\\\" or \\\"chip\\\" with conditional colors (success/warn/error/info).\",\n \" -> Use \\\"valueMapping\\\" to convert codes (1, \\\"A\\\") to labels (\\\"Active\\\", \\\"Approved\\\").\",\n \"- METRICS/KPI (e.g., progress, score, rating, completion):\",\n \" -> Use \\\"progress\\\" (bars), \\\"rating\\\" (stars), or \\\"percentage\\\" type.\",\n \" -> Align \\\"right\\\".\",\n \"- FINANCIAL (e.g., price, cost, balance, total):\",\n \" -> Use type \\\"currency\\\" and format \\\"BRL|symbol|2\\\" (or per locale).\",\n \" -> Align \\\"right\\\". Style: \\\"font-variant-numeric: tabular-nums\\\".\",\n \"- ENTITIES (e.g., user, product, thumb):\",\n \" -> Use \\\"avatar\\\" (for people/users) or \\\"image\\\" (for products/files).\",\n \" -> Combine with \\\"link\\\" or \\\"compose\\\" for title+subtitle layouts.\",\n \"- INTERACTIVE/NAV (e.g., details, website, download):\",\n \" -> Use \\\"button\\\" (actions), \\\"link\\\" (navigation) or \\\"icon\\\" (simple triggers).\",\n \"- BOOLEAN (e.g., has_tax, is_valid):\",\n \" -> Use \\\"toggle\\\" (if editable) or \\\"icon\\\" (check/close) or \\\"badge\\\" (Yes/No).\",\n \"- IDENTIFIERS (e.g., uuid, sku, order_id, cpf):\",\n \" -> Style: \\\"font-family: monospace\\\".\",\n \" -> CRITICAL: Do NOT use numeric formatting (like \\\"1.0-0\\\") for IDs. Treat them as strings.\",\n \" -> Consider adding a \\\"copy\\\" context action.\",\n \"- GROUPING (e.g., category, department):\",\n \" -> If the user asks to \\\"group by X\\\", use the ENABLE_GROUPING action with target=X.\",\n \"- TEMPORAL (e.g., created_at, deadline):\",\n \" -> Use type \\\"date\\\". Prefer \\\"short\\\" or \\\"shortDate\\\" for compact views.\",\n \" -> Use standard format (dd/MM/yyyy) for strict records.\"\n ]\n },\n \"aiConcepts\": {\n \"authoring-envelope\": {\n \"id\": \"authoring-envelope\",\n \"title\": \"Envelope de Autoria\",\n \"description\": \"Contrato primário de autoria usado por editor visual, editor JSON, playground e IA.\",\n \"rules\": [\n \"O JSON primário de autoria é TableAuthoringDocument com kind \\\"praxis.table.editor\\\".\",\n \"bindings.resourcePath e bindings.horizontalScroll não devem ser embutidos diretamente no TableConfig.\",\n \"meta.idField pertence ao TableConfig canônico e deve ser editado como metadado da configuração.\",\n \"TableConfig representa a projeção canônica de runtime, não o envelope completo de autoria.\",\n \"meta.schemaId e meta.serverHash são snapshots persistidos de reconciliação, não fonte primária do runtime.\"\n ],\n \"examples\": [\n \"{ kind: \\\"praxis.table.editor\\\", version: 1, config: { meta: { idField: \\\"employeeId\\\" }, columns: [{ field: \\\"name\\\", header: \\\"Nome\\\" }] }, bindings: { resourcePath: \\\"employees\\\", horizontalScroll: \\\"auto\\\" } }\"\n ],\n \"antiPatterns\": [\n \"{ columns: [{ field: \\\"name\\\", header: \\\"Nome\\\" }], __resourcePath__: \\\"employees\\\" }\",\n \"{ config: { columns: [] }, bindings: { idField: \\\"employeeId\\\" } }\"\n ]\n },\n \"meta-identity\": {\n \"id\": \"meta-identity\",\n \"title\": \"Identidade e Metadados\",\n \"description\": \"Regras para meta.* persistível (nome, descrição, tags, schemaId).\",\n \"rules\": [\n \"meta.idField deve apontar para o campo único das linhas quando configurado.\",\n \"Alterar meta.idField exige confirmação pois impacta seleção e ações por linha.\",\n \"meta.tags deve ser uma lista de strings curtas e sem espaços extras.\",\n \"meta.schemaId é referência de origem; use apenas valores conhecidos.\"\n ],\n \"examples\": [\n \"meta.name = \\\"Funcionários ativos\\\"\",\n \"meta.description = \\\"Visão de colaboradores ativos com filtros por status.\\\"\",\n \"meta.tags = [\\\"financeiro\\\", \\\"demo\\\"]\",\n \"meta.idField = \\\"employeeId\\\"\"\n ],\n \"antiPatterns\": [\n \"meta.idField = \\\"id\\\" (sem validar se existe no dataset)\",\n \"meta.tags = \\\"financeiro\\\"\"\n ]\n },\n \"columns-core\": {\n \"id\": \"columns-core\",\n \"title\": \"Colunas Básicas\",\n \"description\": \"Definições essenciais de colunas (field, header, visible, order, width).\",\n \"rules\": [\n \"columns[].field deve ser único e existir no dataset.\",\n \"Não reutilize o mesmo field em duas colunas.\",\n \"Use order para posicionar colunas; menor valor = mais à esquerda.\",\n \"width aceita valores CSS (ex.: \\\"120px\\\", \\\"10%\\\", \\\"auto\\\").\"\n ],\n \"examples\": [\n \"{ field: \\\"status\\\", header: \\\"Status\\\", visible: true, order: 2 }\",\n \"{ field: \\\"createdAt\\\", header: \\\"Criado em\\\", width: \\\"140px\\\" }\"\n ],\n \"antiPatterns\": [\n \"{ field: \\\"status\\\", header: \\\"Status\\\" } e outra coluna com field \\\"status\\\"\",\n \"{ field: \\\"price\\\", width: 120 }\"\n ]\n },\n \"columns-behavior\": {\n \"id\": \"columns-behavior\",\n \"title\": \"Comportamento de Coluna\",\n \"description\": \"Configura sortable, filterable, resizable, align e sticky.\",\n \"rules\": [\n \"sortable e filterable devem refletir o comportamento real do backend.\",\n \"resizable depende de behavior.resizing.enabled quando disponível.\",\n \"align deve ser left/center/right.\",\n \"sticky aceita true, \\\"start\\\" ou \\\"end\\\".\"\n ],\n \"examples\": [\n \"{ field: \\\"amount\\\", sortable: true, filterable: true, align: \\\"right\\\" }\",\n \"{ field: \\\"id\\\", sticky: \\\"start\\\" }\"\n ],\n \"antiPatterns\": [\n \"{ align: \\\"middle\\\" }\",\n \"{ sticky: \\\"left\\\" }\"\n ]\n },\n \"columns-styles\": {\n \"id\": \"columns-styles\",\n \"title\": \"Estilos de Coluna\",\n \"description\": \"CSS inline e classes para células e cabeçalho.\",\n \"rules\": [\n \"cssClass/headerCssClass devem ser nomes de classe válidos.\",\n \"style/headerStyle são CSS inline curtos e seguros.\",\n \"Evite !important e regras muito longas.\"\n ],\n \"examples\": [\n \"{ field: \\\"status\\\", cssClass: \\\"col-status\\\" }\",\n \"{ field: \\\"name\\\", headerStyle: \\\"text-transform: uppercase;\\\" }\"\n ],\n \"antiPatterns\": [\n \"{ headerCssClass: \\\"header title\\\" }\",\n \"{ style: \\\"background: url(javascript:...)\\\" }\"\n ]\n },\n \"columns-types\": {\n \"id\": \"columns-types\",\n \"title\": \"Tipos e Formatos de Coluna\",\n \"description\": \"Regras de type/format por tipo de dado.\",\n \"rules\": [\n \"type deve ser um dos tipos suportados (string/number/date/boolean/currency/percentage/custom).\",\n \"format deve ser compatível com type e presets do sistema.\",\n \"Para currency, use formato \\\"BRL|symbol|2\\\" ou semelhante.\",\n \"Para date, use DatePipe ou presets existentes.\"\n ],\n \"examples\": [\n \"{ field: \\\"createdAt\\\", type: \\\"date\\\", format: \\\"dd/MM/yyyy\\\" }\",\n \"{ field: \\\"amount\\\", type: \\\"currency\\\", format: \\\"BRL|symbol|2\\\" }\"\n ],\n \"antiPatterns\": [\n \"{ type: \\\"money\\\" }\",\n \"{ format: \\\"money()\\\" }\"\n ]\n },\n \"columns-formatting\": {\n \"id\": \"columns-formatting\",\n \"title\": \"Mapeamento e Formatação Avançada\",\n \"description\": \"valueMapping, format e estilos adicionais.\",\n \"rules\": [\n \"valueMapping deve usar chaves de string para mapear valores crus.\",\n \"Use format presets quando disponíveis; evite formatos inventados.\"\n ],\n \"syntax\": \"format: \\\"BRL|symbol|2\\\"\",\n \"examples\": [\n \"{ field: \\\"active\\\", valueMapping: { \\\"1\\\": \\\"Ativo\\\", \\\"0\\\": \\\"Inativo\\\" } }\"\n ],\n \"antiPatterns\": [\n \"{ valueMapping: { 1: \\\"Ativo\\\" } }\"\n ]\n },\n \"columns-internals\": {\n \"id\": \"columns-internals\",\n \"title\": \"Campos Internos de Coluna\",\n \"description\": \"Campos reservados usados por fluxos internos e importação.\",\n \"rules\": [\n \"Evite setar _styleRulesState, _generatedValueGetter, _originalApiType e _isApiField manualmente.\",\n \"Use apenas em fluxos de migração ou importação controlada.\"\n ],\n \"examples\": [\n \"(_isApiField true só quando coluna veio da API)\"\n ],\n \"antiPatterns\": [\n \"{ _generatedValueGetter: \\\"row => row.value\\\" }\"\n ]\n },\n \"computed-logic\": {\n \"id\": \"computed-logic\",\n \"title\": \"Lógica de Colunas Calculadas\",\n \"description\": \"Regras matemáticas e de sintaxe para colunas computed.\",\n \"rules\": [\n \"Use AST Json Logic canônico em columns[].computed.expression.\",\n \"Acesse campos da linha com {\\\"var\\\":\\\"field\\\"} e dependências anteriores com {\\\"var\\\":\\\"computed.total\\\"}.\",\n \"Operadores/funções disponíveis incluem +, -, *, /, %, min, max, cat, substr, round, floor, ceil, abs, coalesce, now, date, yearsSince, monthsSince, daysSince, len, toNumber e stringify.\",\n \"NÃO use prefixos como \\\"row.\\\", \\\"this.\\\" ou \\\"item.\\\", nem strings DSL.\",\n \"O resultado deve ser compatível com o outputType (number, currency, percentage, string).\"\n ],\n \"syntax\": \"{\\\"*\\\":[{\\\"var\\\":\\\"fieldA\\\"},{\\\"var\\\":\\\"fieldB\\\"}]}\",\n \"examples\": [\n \"{\\\"*\\\":[{\\\"var\\\":\\\"quantity\\\"},{\\\"var\\\":\\\"unitPrice\\\"}]}\",\n \"{\\\"/\\\":[{\\\"-\\\":[{\\\"var\\\":\\\"total\\\"},{\\\"var\\\":\\\"cost\\\"}]},{\\\"var\\\":\\\"total\\\"}]}\",\n \"{\\\"min\\\":[{\\\"var\\\":\\\"stock\\\"},100]}\",\n \"{\\\"abs\\\":[{\\\"var\\\":\\\"balance\\\"}]}\"\n ],\n \"antiPatterns\": [\n \"\\\"quantity * price\\\"\",\n \"row.quantity * row.price\",\n \"Math.max(price, 0)\",\n \"return quantity * price;\"\n ]\n },\n \"renderers-core\": {\n \"id\": \"renderers-core\",\n \"title\": \"Renderers de Coluna\",\n \"description\": \"Regras para columns[].renderer.* e tipos suportados.\",\n \"rules\": [\n \"Defina columns[].renderer.type antes de configurar detalhes.\",\n \"Para renderers interativos (button, toggle, menu), configure action.\",\n \"renderer.html deve usar template com placeholders [[field]].\",\n \"renderer.link deve preferir hrefField/textField quando o valor vem do dataset.\"\n ],\n \"examples\": [\n \"{ renderer: { type: \\\"badge\\\", badge: { textField: \\\"status\\\", color: \\\"success\\\" } } }\",\n \"{ renderer: { type: \\\"button\\\", button: { label: \\\"Editar\\\", action: { id: \\\"edit-row\\\" } } } }\"\n ],\n \"antiPatterns\": [\n \"{ renderer: { badge: { text: \\\"Ativo\\\" } } }\",\n \"{ renderer: { type: \\\"button\\\", button: { label: \\\"Editar\\\" } } }\"\n ]\n },\n \"renderer-icon\": {\n \"id\": \"renderer-icon\",\n \"title\": \"Renderer Icon\",\n \"description\": \"Configuração de renderer.icon.*\",\n \"rules\": [\n \"Use icon.name para ícone fixo ou icon.nameField para dinâmico.\",\n \"icon.size é em px.\",\n \"ariaLabel deve ser descritivo.\"\n ],\n \"examples\": [\n \"{ renderer: { type: \\\"icon\\\", icon: { name: \\\"check_circle\\\", color: \\\"success\\\", size: 18 } } }\"\n ],\n \"antiPatterns\": [\n \"{ icon: { name: \\\"check\\\" } } sem renderer.type\"\n ]\n },\n \"renderer-image\": {\n \"id\": \"renderer-image\",\n \"title\": \"Renderer Image\",\n \"description\": \"Configuração de renderer.image.*\",\n \"rules\": [\n \"Use srcField quando a URL vem do dataset.\",\n \"Defina alt/altField para acessibilidade.\",\n \"width/height são em px.\",\n \"shape deve ser square/rounded/circle.\"\n ],\n \"examples\": [\n \"{ renderer: { type: \\\"image\\\", image: { srcField: \\\"avatarUrl\\\", shape: \\\"circle\\\", width: 32, height: 32 } } }\"\n ],\n \"antiPatterns\": [\n \"{ renderer: { type: \\\"image\\\", image: { src: \\\"\\\" } } }\"\n ]\n },\n \"renderer-badge\": {\n \"id\": \"renderer-badge\",\n \"title\": \"Renderer Badge\",\n \"description\": \"Configuração de renderer.badge.*\",\n \"rules\": [\n \"Badge requer text ou textField.\",\n \"variant deve ser filled/outlined/soft/plain.\"\n ],\n \"examples\": [\n \"{ renderer: { type: \\\"badge\\\", badge: { textField: \\\"status\\\", variant: \\\"filled\\\" } } }\"\n ],\n \"antiPatterns\": [\n \"{ badge: {} }\"\n ]\n },\n \"renderer-link\": {\n \"id\": \"renderer-link\",\n \"title\": \"Renderer Link\",\n \"description\": \"Configuração de renderer.link.*\",\n \"rules\": [\n \"Use hrefField quando URL vem do dataset.\",\n \"target deve ser _blank/_self/_parent/_top.\",\n \"rel deve ser usado com target _blank (ex.: noopener).\"\n ],\n \"examples\": [\n \"{ renderer: { type: \\\"link\\\", link: { textField: \\\"name\\\", hrefField: \\\"profileUrl\\\", target: \\\"_blank\\\", rel: \\\"noopener\\\" } } }\"\n ],\n \"antiPatterns\": [\n \"{ link: { href: \\\"javascript:alert(1)\\\" } }\"\n ]\n },\n \"renderer-button\": {\n \"id\": \"renderer-button\",\n \"title\": \"Renderer Button\",\n \"description\": \"Configuração de renderer.button.*\",\n \"rules\": [\n \"button.action.id é obrigatório para ações interativas.\",\n \"disabledCondition usa expressao condicional canonica em JSON Logic.\",\n \"variant deve ser filled/outlined/text.\"\n ],\n \"examples\": [\n \"{ renderer: { type: \\\"button\\\", button: { label: \\\"Editar\\\", action: { id: \\\"edit-row\\\" } } } }\"\n ],\n \"antiPatterns\": [\n \"{ button: { label: \\\"Editar\\\" } }\"\n ]\n },\n \"renderer-chip\": {\n \"id\": \"renderer-chip\",\n \"title\": \"Renderer Chip\",\n \"description\": \"Configuração de renderer.chip.*\",\n \"rules\": [\n \"Chip requer text ou textField.\",\n \"variant deve ser filled/outlined/soft/plain.\"\n ],\n \"examples\": [\n \"{ renderer: { type: \\\"chip\\\", chip: { text: \\\"Ativo\\\", variant: \\\"filled\\\" } } }\"\n ],\n \"antiPatterns\": [\n \"{ chip: { variant: \\\"ghost\\\" } }\"\n ]\n },\n \"renderer-progress\": {\n \"id\": \"renderer-progress\",\n \"title\": \"Renderer Progress\",\n \"description\": \"Configuração de renderer.progress.*\",\n \"rules\": [\n \"valueExpr deve retornar 0-100.\",\n \"showLabel controla exibição do valor.\"\n ],\n \"examples\": [\n \"{ renderer: { type: \\\"progress\\\", progress: { valueExpr: \\\"progress\\\", showLabel: true } } }\"\n ],\n \"antiPatterns\": [\n \"{ progress: { valueExpr: \\\"progress/100\\\" } } sem garantir 0-100\"\n ]\n },\n \"renderer-avatar\": {\n \"id\": \"renderer-avatar\",\n \"title\": \"Renderer Avatar\",\n \"description\": \"Configuração de renderer.avatar.*\",\n \"rules\": [\n \"Use srcField para imagem dinâmica.\",\n \"initialsField deriva iniciais automaticamente a partir de um campo textual.\",\n \"initialsExpr é fallback quando não há imagem e deve retornar as iniciais prontas; não use JS arbitrário para split/map/trim.\",\n \"Use backgroundColor e textColor para colorir o círculo do avatar; para variar por linha, aplique esses campos em conditionalRenderers.\",\n \"shape deve ser circle/square/rounded.\"\n ],\n \"examples\": [\n \"{ renderer: { type: \\\"avatar\\\", avatar: { srcField: \\\"avatarUrl\\\", initialsField: \\\"name\\\" } } }\",\n \"{ renderer: { type: \\\"avatar\\\", avatar: { initialsExpr: \\\"initials\\\" } } }\",\n \"{ conditionalRenderers: [{ condition: { \\\">\\\": [{ \\\"var\\\": \\\"salary\\\" }, 30000] }, renderer: { type: \\\"avatar\\\", avatar: { initialsField: \\\"name\\\", backgroundColor: \\\"#D32F2F\\\", textColor: \\\"#FFFFFF\\\" } } }] }\"\n ],\n \"antiPatterns\": [\n \"{ avatar: { initialsExpr: \\\"name\\\" } }\",\n \"{ avatar: { shape: \\\"round\\\" } }\"\n ]\n },\n \"renderer-toggle\": {\n \"id\": \"renderer-toggle\",\n \"title\": \"Renderer Toggle\",\n \"description\": \"Configuração de renderer.toggle.*\",\n \"rules\": [\n \"toggle.action.id é obrigatório para persistir mudança.\",\n \"disabledCondition usa expressao condicional canonica em JSON Logic.\"\n ],\n \"examples\": [\n \"{ renderer: { type: \\\"toggle\\\", toggle: { stateExpr: \\\"active\\\", action: { id: \\\"toggle-active\\\" } } } }\"\n ],\n \"antiPatterns\": [\n \"{ toggle: { stateExpr: \\\"active\\\" } } sem action\"\n ]\n },\n \"renderer-menu\": {\n \"id\": \"renderer-menu\",\n \"title\": \"Renderer Menu\",\n \"description\": \"Configuração de renderer.menu.*\",\n \"rules\": [\n \"itemsExpr deve produzir lista de ações válidas.\",\n \"ariaLabel deve descrever o menu.\"\n ],\n \"examples\": [\n \"{ renderer: { type: \\\"menu\\\", menu: { itemsExpr: \\\"row.menuItems\\\", ariaLabel: \\\"Ações\\\" } } }\"\n ],\n \"antiPatterns\": [\n \"{ menu: { itemsExpr: \\\"row => row.items\\\" } }\"\n ]\n },\n \"renderer-rating\": {\n \"id\": \"renderer-rating\",\n \"title\": \"Renderer Rating\",\n \"description\": \"Configuração de renderer.rating.*\",\n \"rules\": [\n \"valueExpr deve retornar numero dentro do max.\",\n \"O renderer é somente leitura por padrão; não use readonly no schema funcional.\"\n ],\n \"examples\": [\n \"{ renderer: { type: \\\"rating\\\", rating: { valueExpr: \\\"score\\\", max: 5, ariaLabel: \\\"Nota {value} de {max}\\\" } } }\"\n ],\n \"antiPatterns\": [\n \"{ rating: { max: 0 } }\"\n ]\n },\n \"renderer-html\": {\n \"id\": \"renderer-html\",\n \"title\": \"Renderer HTML\",\n \"description\": \"Configuração de renderer.html.*\",\n \"rules\": [\n \"template deve usar placeholders [[field]].\",\n \"sanitize deve ser strict ou basic, preferindo strict.\"\n ],\n \"examples\": [\n \"{ renderer: { type: \\\"html\\\", html: { template: \\\"<strong>[[name]]</strong>\\\", sanitize: \\\"strict\\\" } } }\"\n ],\n \"antiPatterns\": [\n \"{ html: { template: \\\"<script>alert(1)</script>\\\" } }\"\n ]\n },\n \"renderer-compose\": {\n \"id\": \"renderer-compose\",\n \"title\": \"Renderer Compose\",\n \"description\": \"Composição de múltiplos renderers na mesma célula.\",\n \"rules\": [\n \"columns[].renderer.compose.items deve ser uma lista de renderers válidos.\",\n \"Defina layout (direction, gap, align) para evitar overflow.\",\n \"Evite mixar elementos interativos sem espaço suficiente.\"\n ],\n \"examples\": [\n \"{ renderer: { type: \\\"compose\\\", compose: { items: [{ type: \\\"icon\\\", icon: { name: \\\"check\\\" } }, { type: \\\"text\\\", textField: \\\"status\\\" }], layout: { direction: \\\"row\\\", gap: 8 } } } }\"\n ],\n \"antiPatterns\": [\n \"{ renderer: { type: \\\"compose\\\", compose: { items: [] } } }\"\n ]\n },\n \"conditional-json-logic\": {\n \"id\": \"conditional-json-logic\",\n \"title\": \"Expressoes Condicionais\",\n \"description\": \"Sintaxe de condições para conditionalRenderers e filtros de estilo.\",\n \"rules\": [\n \"Use objetos JSON Logic com referencias var (ex: { \\\"===\\\": [{ \\\"var\\\": \\\"status\\\" }, \\\"Ativo\\\"] }).\",\n \"Operadores suportados: ===, !==, >, <, >=, <=, and, or, !.\",\n \"Funcoes comuns: { \\\"contains\\\": [{ \\\"var\\\": \\\"name\\\" }, \\\"Silva\\\"] }.\",\n \"Pode referenciar computed.<field> quando existir.\",\n \"NAO use DSL textual, JavaScript (row., this., Math., ternario, eval) nem strings de expressao.\"\n ],\n \"syntax\": \"{\\\"and\\\":[{\\\"contains\\\":[{\\\"var\\\":\\\"status\\\"},\\\"Ativo\\\"]},{\\\">=\\\":[{\\\"var\\\":\\\"price\\\"},100]}]}\",\n \"examples\": [\n \"{\\\"===\\\":[{\\\"var\\\":\\\"status\\\"},\\\"Ativo\\\"]}\",\n \"{\\\"contains\\\":[{\\\"var\\\":\\\"name\\\"},\\\"Silva\\\"]}\",\n \"{\\\">\\\":[{\\\"var\\\":\\\"computed.total\\\"},1000]}\"\n ],\n \"antiPatterns\": [\n \"row.status == \\\"Ativo\\\"\",\n \"Math.max(price, 0) > 10\",\n \"status ? \\\"A\\\" : \\\"B\\\"\"\n ]\n },\n \"conditional-renderers\": {\n \"id\": \"conditional-renderers\",\n \"title\": \"Renderers Condicionais\",\n \"description\": \"Configura conditionalRenderers por coluna.\",\n \"rules\": [\n \"condition usa expressao condicional canonica em JSON Logic.\",\n \"renderer interno segue as mesmas regras dos renderers padrão.\",\n \"Para animar apenas uma célula/coluna quando a condição for verdadeira, use columns[].conditionalRenderers[].animation.\",\n \"enabled controla ativacao da regra.\"\n ],\n \"examples\": [\n \"{ conditionalRenderers: [{ condition: { \\\"===\\\": [{ \\\"var\\\": \\\"status\\\" }, \\\"Ativo\\\"] }, renderer: { type: \\\"badge\\\", badge: { text: \\\"Ativo\\\" } } }] }\",\n \"{ conditionalRenderers: [{ condition: { \\\">\\\": [{ \\\"var\\\": \\\"salario\\\" }, 30000] }, animation: { preset: \\\"pulse-soft\\\", trigger: \\\"onAppear\\\", intensity: \\\"subtle\\\", repeat: \\\"once\\\" } }] }\"\n ],\n \"antiPatterns\": [\n \"{ conditionalRenderers: [{ condition: \\\"row.status == \\\"Ativo\\\"\\\" }] }\",\n \"{ conditionalStyles: [{ style: { animation: \\\"pulse 1s infinite\\\" } }] }\"\n ]\n },\n \"conditional-animations\": {\n \"id\": \"conditional-animations\",\n \"title\": \"Animações Condicionais\",\n \"description\": \"Animações condicionais de linha e célula na tabela.\",\n \"rules\": [\n \"Use rowConditionalRenderers[].animation para animar a linha inteira.\",\n \"Use columns[].conditionalRenderers[].animation para animar somente o conteúdo de uma célula/coluna.\",\n \"Prefira preset semântico antes de type bruto: info-soft, success-confirm, warning-attention, critical-alert, audit-review, sync-pending, pulse-soft, fade-soft, sla-warning, sla-breach, risk-elevated, risk-critical, audit-warning ou sync-warning.\",\n \"condition sempre usa JSON Logic; não use JS, row.status ou strings de expressão.\",\n \"appearance.animations.enabled=false desativa animações; appearance.animations.specific.row/cell=false desativa o escopo correspondente.\",\n \"onConditionEnter, onConditionExit e onDataRefresh são aceitos no contrato de autoria e normalizados para gatilho de mudança no runtime.\"\n ],\n \"examples\": [\n \"{ rowConditionalRenderers: [{ id: \\\"salary-high-pulse\\\", condition: { \\\">\\\": [{ \\\"var\\\": \\\"salario\\\" }, 30000] }, animation: { preset: \\\"pulse-soft\\\", trigger: \\\"onAppear\\\", intensity: \\\"subtle\\\", repeat: \\\"once\\\", durationMs: 1200 }, enabled: true }] }\",\n \"{ columns: [{ field: \\\"status\\\", conditionalRenderers: [{ id: \\\"status-critical-alert\\\", condition: { \\\"===\\\": [{ \\\"var\\\": \\\"status\\\" }, \\\"Critico\\\"] }, animation: { preset: \\\"critical-alert\\\", trigger: \\\"onChange\\\", repeat: \\\"loop\\\", intensity: \\\"strong\\\" }, enabled: true }] }] }\"\n ],\n \"antiPatterns\": [\n \"{ rowConditionalStyles: [{ style: { animation: \\\"pulse 1s infinite\\\" } }] }\",\n \"{ rowConditionalRenderers: [{ condition: \\\"row.salario > 30000\\\", animation: { name: \\\"pulse\\\" } }] }\",\n \"{ columns: [{ conditionalStyles: [{ condition: { \\\">\\\": [{ \\\"var\\\": \\\"salario\\\" }, 30000] }, style: { animationName: \\\"pulse\\\" } }] }] }\"\n ]\n },\n \"conditional-styles\": {\n \"id\": \"conditional-styles\",\n \"title\": \"Estilos Condicionais por Coluna\",\n \"description\": \"Configura conditionalStyles.*\",\n \"rules\": [\n \"condition usa expressao condicional canonica em JSON Logic.\",\n \"cssClass define classe e style aplica inline.\",\n \"description deve ser texto curto.\"\n ],\n \"examples\": [\n \"{ conditionalStyles: [{ condition: { \\\"<\\\": [{ \\\"var\\\": \\\"amount\\\" }, 0] }, cssClass: \\\"col-negative\\\" }] }\"\n ],\n \"antiPatterns\": [\n \"{ conditionalStyles: [{ condition: \\\"row.amount < 0\\\" }] }\"\n ]\n },\n \"row-conditional-styles\": {\n \"id\": \"row-conditional-styles\",\n \"title\": \"Estilos Condicionais de Linha\",\n \"description\": \"Configura rowConditionalStyles.*\",\n \"rules\": [\n \"condition usa expressao condicional canonica em JSON Logic.\",\n \"cssClass define classe e style aplica inline.\",\n \"description deve ser texto curto.\"\n ],\n \"examples\": [\n \"{ rowConditionalStyles: [{ condition: { \\\"<\\\": [{ \\\"var\\\": \\\"amount\\\" }, 0] }, cssClass: \\\"row-negative\\\" }] }\"\n ],\n \"antiPatterns\": [\n \"{ rowConditionalStyles: [{ condition: \\\"row.amount < 0\\\" }] }\"\n ]\n },\n \"behavior-pagination\": {\n \"id\": \"behavior-pagination\",\n \"title\": \"Paginação (Behavior)\",\n \"description\": \"Configuração de behavior.pagination.*\",\n \"rules\": [\n \"strategy deve ser client ou server.\",\n \"pageSizeOptions deve incluir pageSize.\",\n \"advanced.maxPageSize limita pageSize customizado.\"\n ],\n \"examples\": [\n \"{ behavior: { pagination: { enabled: true, strategy: \\\"server\\\", pageSize: 25, pageSizeOptions: [10, 25, 50] } } }\"\n ],\n \"antiPatterns\": [\n \"{ behavior: { pagination: { strategy: \\\"server\\\" } } } sem totalItems\"\n ]\n },\n \"behavior-sorting\": {\n \"id\": \"behavior-sorting\",\n \"title\": \"Ordenação (Behavior)\",\n \"description\": \"Configuração de behavior.sorting.*\",\n \"rules\": [\n \"defaultSort pode ser objeto unico ou lista.\",\n \"multiSort true permite multiplos campos.\",\n \"allowClearSort habilita terceiro clique.\"\n ],\n \"examples\": [\n \"{ behavior: { sorting: { enabled: true, strategy: \\\"client\\\", defaultSort: { column: \\\"createdAt\\\", direction: \\\"desc\\\" } } } }\"\n ],\n \"antiPatterns\": [\n \"{ behavior: { sorting: { defaultSort: { column: \\\"\\\", direction: \\\"asc\\\" } } } }\"\n ]\n },\n \"behavior-filtering\": {\n \"id\": \"behavior-filtering\",\n \"title\": \"Filtros (Behavior)\",\n \"description\": \"Configuração de behavior.filtering.*\",\n \"rules\": [\n \"columnFilters.position deve ser header/subheader/sidebar.\",\n \"advancedFilters.settings controla o painel avançado.\",\n \"strategy deve refletir suporte do backend.\"\n ],\n \"examples\": [\n \"{ behavior: { filtering: { enabled: true, columnFilters: { enabled: true, position: \\\"header\\\" } } } }\"\n ],\n \"antiPatterns\": [\n \"{ behavior: { filtering: { enabled: true } } } sem strategy\"\n ]\n },\n \"behavior-selection\": {\n \"id\": \"behavior-selection\",\n \"title\": \"Selecao (Behavior)\",\n \"description\": \"Configuração de behavior.selection.*\",\n \"rules\": [\n \"type define single/multiple e mode define checkbox/row/both.\",\n \"persistSelection mantem selecao entre paginas.\",\n \"visual.highlightSelected define destaque da linha.\"\n ],\n \"examples\": [\n \"{ behavior: { selection: { enabled: true, type: \\\"multiple\\\", mode: \\\"checkbox\\\", persistSelection: true } } }\"\n ],\n \"antiPatterns\": [\n \"{ behavior: { selection: { type: \\\"multi\\\" } } }\"\n ]\n },\n \"behavior-interaction\": {\n \"id\": \"behavior-interaction\",\n \"title\": \"Interacao (Behavior)\",\n \"description\": \"Configuração de behavior.interaction.*\",\n \"rules\": [\n \"rowClick/rowDoubleClick.action devem ser ids conhecidos.\",\n \"customAction deve referenciar handler registrado.\",\n \"keyboard.customShortcuts mapeia teclas para ações.\"\n ],\n \"examples\": [\n \"{ behavior: { interaction: { rowClick: { enabled: true, action: \\\"view\\\" } } } }\"\n ],\n \"antiPatterns\": [\n \"{ behavior: { interaction: { rowClick: { customAction: \\\"row => fn(row)\\\" } } } }\"\n ]\n },\n \"behavior-loading\": {\n \"id\": \"behavior-loading\",\n \"title\": \"Loading (Behavior)\",\n \"description\": \"Configuração de behavior.loading.*\",\n \"rules\": [\n \"type deve ser spinner/skeleton/progress/custom.\",\n \"delay evita flicker.\",\n \"skeleton.rows deve ser numero positivo.\"\n ],\n \"examples\": [\n \"{ behavior: { loading: { type: \\\"skeleton\\\", position: \\\"replace\\\", delay: 200, skeleton: { rows: 6, animated: true } } } }\"\n ],\n \"antiPatterns\": [\n \"{ behavior: { loading: { delay: 0 } } }\"\n ]\n },\n \"behavior-empty-state\": {\n \"id\": \"behavior-empty-state\",\n \"title\": \"Estado Vazio (Behavior)\",\n \"description\": \"Configuração de behavior.emptyState.*\",\n \"rules\": [\n \"message deve ser texto curto.\",\n \"actions[].action deve ser string de acao.\",\n \"contexts permite variações por cenário.\"\n ],\n \"examples\": [\n \"{ behavior: { emptyState: { message: \\\"Sem dados\\\", actions: [{ label: \\\"Adicionar\\\", action: \\\"create\\\" }] } } }\"\n ],\n \"antiPatterns\": [\n \"{ behavior: { emptyState: { message: \\\"\\\" } } }\"\n ]\n },\n \"behavior-virtualization\": {\n \"id\": \"behavior-virtualization\",\n \"title\": \"Virtualizacao (Behavior)\",\n \"description\": \"Configuração de behavior.virtualization.*\",\n \"rules\": [\n \"itemHeight deve ser informado quando enabled.\",\n \"strategy deve ser fixed ou dynamic.\"\n ],\n \"examples\": [\n \"{ behavior: { virtualization: { enabled: true, itemHeight: 48, strategy: \\\"fixed\\\" } } }\"\n ],\n \"antiPatterns\": [\n \"{ behavior: { virtualization: { enabled: true } } }\"\n ]\n },\n \"behavior-resizing\": {\n \"id\": \"behavior-resizing\",\n \"title\": \"Resize (Behavior)\",\n \"description\": \"Configuração de behavior.resizing.*\",\n \"rules\": [\n \"minColumnWidth deve ser positivo.\",\n \"maxColumnWidth deve ser maior que minColumnWidth quando informado.\",\n \"persistWidths salva ajustes do usuario.\"\n ],\n \"examples\": [\n \"{ behavior: { resizing: { enabled: true, minColumnWidth: 80, maxColumnWidth: 520, autoFit: false, persistWidths: true } } }\"\n ],\n \"antiPatterns\": [\n \"{ behavior: { resizing: { minColumnWidth: 0 } } }\"\n ]\n },\n \"behavior-dragging\": {\n \"id\": \"behavior-dragging\",\n \"title\": \"Drag & Drop (Behavior)\",\n \"description\": \"Configuração de behavior.dragging.*\",\n \"rules\": [\n \"columns/rows controla reordenacao.\",\n \"columnDropZones deve listar zonas validas.\"\n ],\n \"examples\": [\n \"{ behavior: { dragging: { columns: true, rows: false, showDragIndicator: true } } }\"\n ],\n \"antiPatterns\": [\n \"{ behavior: { dragging: { columns: \\\"yes\\\" } } }\"\n ]\n },\n \"behavior-expansion\": {\n \"id\": \"behavior-expansion\",\n \"title\": \"Expansion (Behavior)\",\n \"description\": \"Configuração de behavior.expansion.* para detail rows schema-driven.\",\n \"rules\": [\n \"detail é sempre schema-driven; varie source.mode (inline/resource/resourcePath), não detail.type.\",\n \"detail.schemaContract.kind/version deve ser informado para validação e migração.\",\n \"Em virtualização, prefira detail.height.mode=fixed com virtualization.policy=fixed-height-only.\",\n \"Use eventExposureDefault hashed/redacted por padrão em ambiente corporativo.\"\n ],\n \"examples\": [\n \"{ behavior: { expansion: { enabled: true, state: { mode: \\\"controlled\\\" }, detail: { schemaContract: { kind: \\\"praxis.detail.schema\\\", version: \\\"1.0.0\\\" }, source: { mode: \\\"resource\\\", resource: { kind: \\\"ui-composition\\\", id: \\\"customer-detail-v2\\\", version: \\\"2.1.0\\\" } }, rendering: { strategy: \\\"registry\\\", registryId: \\\"praxis.detail.default\\\" } } } } }\"\n ],\n \"antiPatterns\": [\n \"{ behavior: { expansion: { detail: { type: \\\"template\\\", templateId: \\\"legacy-id\\\" } } } }\"\n ]\n },\n \"appearance\": {\n \"id\": \"appearance\",\n \"title\": \"Aparência e Layout\",\n \"description\": \"Densidade, bordas, cores, tipografia, espaçamento e responsividade.\",\n \"rules\": [\n \"appearance.density deve usar valores compact/comfortable/spacious.\",\n \"Cores devem usar tokens do tema ou hex válido.\",\n \"responsive.mobile.cardMode deve ser combinado com colunas prioritárias.\",\n \"Se animations.enabled for true, respeite reduceMotion.\",\n \"appearance.animations.specific.row e appearance.animations.specific.cell controlam animações condicionais por escopo.\"\n ],\n \"examples\": [\n \"{ appearance: { density: \\\"compact\\\", borders: { showRowBorders: true } } }\",\n \"{ appearance: { typography: { fontSize: \\\"14px\\\" }, spacing: { cellPadding: \\\"8px 16px\\\" } } }\"\n ],\n \"antiPatterns\": [\n \"{ appearance: { density: \\\"tiny\\\" } }\"\n ]\n },\n \"appearance-details\": {\n \"id\": \"appearance-details\",\n \"title\": \"Detalhes de Aparência\",\n \"description\": \"Bordas, cores, tipografia, spacing, elevation e responsive autoAdjust.\",\n \"rules\": [\n \"borders.style deve ser solid/dashed/dotted quando aplicável.\",\n \"typography.headerFontWeight deve ser string numerica ou token.\",\n \"responsive.autoAdjust controla ajustes automáticos em telas menores.\"\n ],\n \"examples\": [\n \"{ appearance: { borders: { showOuterBorder: true, style: \\\"solid\\\" }, colors: { alternateRowBackground: \\\"#f7f9fc\\\" } } }\",\n \"{ appearance: { responsive: { mobile: { cardMode: true, priorityColumns: [\\\"name\\\", \\\"status\\\"] } } } }\"\n ],\n \"antiPatterns\": [\n \"{ appearance: { borders: { style: \\\"double\\\" } } }\"\n ]\n },\n \"toolbar\": {\n \"id\": \"toolbar\",\n \"title\": \"Toolbar\",\n \"description\": \"Configurações gerais da toolbar.\",\n \"rules\": [\n \"toolbar.visible controla exibição global da barra.\",\n \"Use toolbar.layout.alignment para ajustar distribuição.\",\n \"toolbar.filters.enabled depende de filtering.enabled.\",\n \"settingsMenu.enabled expõe opções de densidade e colunas.\"\n ],\n \"examples\": [\n \"{ toolbar: { visible: true, position: \\\"top\\\", title: \\\"Pedidos\\\" } }\"\n ],\n \"antiPatterns\": [\n \"{ toolbar: { position: \\\"left\\\" } }\"\n ]\n },\n \"toolbar-layout\": {\n \"id\": \"toolbar-layout\",\n \"title\": \"Layout da Toolbar\",\n \"description\": \"Configuração de toolbar.layout.*\",\n \"rules\": [\n \"alignment deve ser start/center/end/space-between.\",\n \"height e padding devem ser coerentes com o tema.\"\n ],\n \"examples\": [\n \"{ toolbar: { layout: { alignment: \\\"space-between\\\", height: 56, showSeparator: true } } }\"\n ],\n \"antiPatterns\": [\n \"{ toolbar: { layout: { alignment: \\\"between\\\" } } }\"\n ]\n },\n \"toolbar-actions\": {\n \"id\": \"toolbar-actions\",\n \"title\": \"Ações da Toolbar\",\n \"description\": \"Definições de toolbar.actions[].\",\n \"rules\": [\n \"toolbar.actions[].id deve ser único.\",\n \"action deve ser string, não função JS.\",\n \"type deve ser button/icon/fab/menu.\",\n \"visibleWhen usa expressao condicional canonica em JSON Logic.\"\n ],\n \"examples\": [\n \"{ toolbar: { actions: [{ id: \\\"add\\\", label: \\\"Adicionar\\\", type: \\\"button\\\", action: \\\"create\\\", position: \\\"end\\\" }] } }\",\n \"{ toolbar: { actions: [{ id: \\\"more\\\", label: \\\"Mais\\\", type: \\\"menu\\\", action: \\\"noop\\\", children: [{ id: \\\"export\\\", label: \\\"Exportar\\\", type: \\\"button\\\", action: \\\"export\\\" }] }] } }\"\n ],\n \"antiPatterns\": [\n \"{ actions: [{ action: \\\"() => doSomething()\\\" }] }\"\n ]\n },\n \"toolbar-filters\": {\n \"id\": \"toolbar-filters\",\n \"title\": \"Filtros da Toolbar\",\n \"description\": \"Configuração de toolbar.filters.* e quickFilters.\",\n \"rules\": [\n \"quickFilters[].filter deve seguir a estrutura do filtro suportado.\",\n \"enabled depende de behavior.filtering.enabled.\"\n ],\n \"examples\": [\n \"{ toolbar: { filters: { enabled: true, quickFilters: [{ id: \\\"active\\\", label: \\\"Ativos\\\", filter: { status: \\\"active\\\" } }] } } }\"\n ],\n \"antiPatterns\": [\n \"{ toolbar: { filters: { quickFilters: [{ filter: \\\"status=active\\\" }] } } }\"\n ]\n },\n \"toolbar-settings\": {\n \"id\": \"toolbar-settings\",\n \"title\": \"Menu de Configuracoes\",\n \"description\": \"Configuração de toolbar.settingsMenu.*\",\n \"rules\": [\n \"settingsMenu.options[].type deve ser toggle/select/action.\",\n \"options deve listar valores validos quando type for select.\"\n ],\n \"examples\": [\n \"{ toolbar: { settingsMenu: { enabled: true, options: [{ id: \\\"density\\\", label: \\\"Densidade\\\", type: \\\"select\\\", options: [\\\"compact\\\", \\\"comfortable\\\", \\\"spacious\\\"] }] } } }\"\n ],\n \"antiPatterns\": [\n \"{ settingsMenu: { options: [{ type: \\\"dropdown\\\" }] } }\"\n ]\n },\n \"row-actions\": {\n \"id\": \"row-actions\",\n \"title\": \"Acoes por Linha\",\n \"description\": \"Configuração de actions.row.*\",\n \"rules\": [\n \"enabled deve estar true para mostrar coluna de ações.\",\n \"display deve ser menu/buttons/icons.\",\n \"trigger deve ser hover/always/click.\",\n \"actions[].action deve ser string.\"\n ],\n \"examples\": [\n \"{ actions: { row: { enabled: true, display: \\\"menu\\\", trigger: \\\"hover\\\", actions: [{ id: \\\"edit\\\", label: \\\"Editar\\\", action: \\\"edit\\\" }] } } }\"\n ],\n \"antiPatterns\": [\n \"{ actions: { row: { display: \\\"dropdown\\\" } } }\"\n ]\n },\n \"row-actions-advanced\": {\n \"id\": \"row-actions-advanced\",\n \"title\": \"Acoes por Linha Avancadas\",\n \"description\": \"Header, overflow, menu e comportamento avançado.\",\n \"rules\": [\n \"header.align deve ser start/center/end.\",\n \"behavior.maxInline deve ser numero ou objeto de breakpoints.\",\n \"menuIcon e menuButtonColor devem ser valores suportados.\",\n \"discovery.enabled=false mantem apenas as actions configuradas e bloqueia a descoberta contextual por HATEOAS/capabilities.\"\n ],\n \"examples\": [\n \"{ actions: { row: { header: { label: \\\"Ações\\\", align: \\\"end\\\" }, maxVisibleActions: 3, behavior: { enabled: true, maxInline: 2 } } } }\",\n \"{ actions: { row: { enabled: true, display: \\\"buttons\\\", discovery: { enabled: false }, actions: [{ id: \\\"briefing\\\", label: \\\"Briefing\\\", action: \\\"inspect-surfaces\\\" }] } } }\"\n ],\n \"antiPatterns\": [\n \"{ row: { header: { align: \\\"middle\\\" } } }\"\n ]\n },\n \"bulk-actions\": {\n \"id\": \"bulk-actions\",\n \"title\": \"Acoes em Lote\",\n \"description\": \"Configuração de actions.bulk.*\",\n \"rules\": [\n \"bulk.enabled exige selection.enabled.\",\n \"floating.position deve ser bottom-right/bottom-left/top-right/top-left.\",\n \"hideWhenEmpty evita botão flutuante quando nada selecionado.\"\n ],\n \"examples\": [\n \"{ actions: { bulk: { enabled: true, position: \\\"toolbar\\\", actions: [{ id: \\\"delete\\\", label: \\\"Excluir\\\", action: \\\"bulk-delete\\\", requiresConfirmation: true }], floating: { position: \\\"bottom-right\\\", hideWhenEmpty: true } } } }\"\n ],\n \"antiPatterns\": [\n \"{ actions: { bulk: { enabled: true } } } sem selection.enabled\"\n ]\n },\n \"context-actions\": {\n \"id\": \"context-actions\",\n \"title\": \"Menu de Contexto\",\n \"description\": \"Configuração de actions.context.*\",\n \"rules\": [\n \"trigger deve ser right-click/long-press/both.\",\n \"actions[].action deve ser string.\"\n ],\n \"examples\": [\n \"{ actions: { context: { enabled: true, trigger: \\\"right-click\\\", actions: [{ id: \\\"copy\\\", label: \\\"Copiar\\\", action: \\\"copy\\\" }] } } }\"\n ],\n \"antiPatterns\": [\n \"{ context: { trigger: \\\"click\\\" } }\"\n ]\n },\n \"actions-confirmations\": {\n \"id\": \"actions-confirmations\",\n \"title\": \"Confirmacoes de Acoes\",\n \"description\": \"Configuração de actions.confirmations.*\",\n \"rules\": [\n \"default deve conter title, message, confirmText e cancelText.\",\n \"specific usa actionId como chave.\"\n ],\n \"examples\": [\n \"{ actions: { confirmations: { default: { title: \\\"Confirmar\\\", message: \\\"Deseja continuar?\\\", confirmText: \\\"Sim\\\", cancelText: \\\"Nao\\\" }, specific: { \\\"delete\\\": { message: \\\"Excluir item?\\\" } } } } }\"\n ],\n \"antiPatterns\": [\n \"{ actions: { confirmations: { default: { title: \\\"\\\" } } } }\"\n ]\n },\n \"export-general\": {\n \"id\": \"export-general\",\n \"title\": \"Exportacao Geral\",\n \"description\": \"Configuração de export.general.*\",\n \"rules\": [\n \"includeHeaders deve ser boolean.\",\n \"scope deve ser auto, selected, filtered, currentPage ou all.\",\n \"maxRows deve limitar volume.\",\n \"includeColumns deve ser all/visible ou lista de fields.\"\n ],\n \"examples\": [\n \"{ export: { enabled: true, formats: [\\\"csv\\\"], general: { includeHeaders: true, scope: \\\"auto\\\", maxRows: 5000, includeColumns: \\\"visible\\\" } } }\"\n ],\n \"antiPatterns\": [\n \"{ export: { general: { maxRows: 0 } } }\"\n ]\n },\n \"export-excel\": {\n \"id\": \"export-excel\",\n \"title\": \"Exportacao Excel\",\n \"description\": \"Configuração de export.excel.*\",\n \"rules\": [\n \"sheetName deve ser curto e sem caracteres invalidos.\",\n \"autoFitColumns melhora legibilidade.\",\n \"styling.headerStyle e cellStyle devem ser simples.\"\n ],\n \"examples\": [\n \"{ export: { excel: { sheetName: \\\"Dados\\\", autoFitColumns: true, freezeHeaders: true, styling: { headerStyle: { fontWeight: \\\"bold\\\" } } } } }\"\n ],\n \"antiPatterns\": [\n \"{ excel: { sheetName: \\\"\\\" } }\"\n ]\n },\n \"export-pdf\": {\n \"id\": \"export-pdf\",\n \"title\": \"Exportacao PDF\",\n \"description\": \"Configuração de export.pdf.*\",\n \"rules\": [\n \"orientation deve ser portrait/landscape.\",\n \"pageSize deve ser A4/A3/Letter/Legal.\",\n \"margins devem conter top/right/bottom/left.\"\n ],\n \"examples\": [\n \"{ export: { pdf: { orientation: \\\"landscape\\\", pageSize: \\\"A4\\\", margins: { top: 10, right: 10, bottom: 10, left: 10 }, autoPageBreak: true } } }\"\n ],\n \"antiPatterns\": [\n \"{ pdf: { pageSize: \\\"A5\\\" } }\"\n ]\n },\n \"export-csv\": {\n \"id\": \"export-csv\",\n \"title\": \"Exportacao CSV\",\n \"description\": \"Configuração de export.csv.*\",\n \"rules\": [\n \"delimiter deve ser \\\",\\\", \\\";\\\", \\\"|\\\" ou \\\"\\\\t\\\".\",\n \"encoding deve ser utf-8/utf-16/iso-8859-1.\",\n \"escapeChar deve ser um caractere.\"\n ],\n \"examples\": [\n \"{ export: { csv: { delimiter: \\\";\\\", encoding: \\\"utf-8\\\", escapeChar: \\\"\\\\\\\" } } }\"\n ],\n \"antiPatterns\": [\n \"{ csv: { delimiter: \\\":\\\" } }\"\n ]\n },\n \"export-json\": {\n \"id\": \"export-json\",\n \"title\": \"Exportacao JSON\",\n \"description\": \"Configuração de export.json.*\",\n \"rules\": [\n \"format deve ser pretty ou compact.\",\n \"structure deve ser array ou object.\"\n ],\n \"examples\": [\n \"{ export: { json: { format: \\\"pretty\\\", includeMetadata: true, structure: \\\"array\\\" } } }\"\n ],\n \"antiPatterns\": [\n \"{ json: { format: \\\"full\\\" } }\"\n ]\n },\n \"export-templates\": {\n \"id\": \"export-templates\",\n \"title\": \"Templates de Exportacao\",\n \"description\": \"Configuração de export.templates[]\",\n \"rules\": [\n \"templates devem ter id, name e format válidos.\",\n \"config deve seguir o formato correspondente.\"\n ],\n \"examples\": [\n \"{ export: { templates: [{ id: \\\"resumo\\\", name: \\\"Resumo\\\", format: \\\"pdf\\\", config: {}, isDefault: false }] } }\"\n ],\n \"antiPatterns\": [\n \"{ templates: [{ id: \\\"\\\", format: \\\"xls\\\" }] }\"\n ]\n },\n \"messages\": {\n \"id\": \"messages\",\n \"title\": \"Mensagens\",\n \"description\": \"Mensagens de estados, ações, validação e exportação.\",\n \"rules\": [\n \"Mensagens devem ser curtas e claras.\",\n \"Não defina funções inline (use templates ou strings simples).\"\n ],\n \"examples\": [\n \"{ messages: { states: { empty: \\\"Sem registros.\\\" }, actions: { confirmations: { delete: \\\"Excluir?\\\" } } } }\"\n ],\n \"antiPatterns\": [\n \"{ messages: { states: { loadingWithCount: \\\"(n) => ...\\\" } } }\"\n ]\n },\n \"messages-advanced\": {\n \"id\": \"messages-advanced\",\n \"title\": \"Mensagens Avancadas\",\n \"description\": \"custom, templates e formatos por tipo.\",\n \"rules\": [\n \"templates[].template deve usar placeholders simples.\",\n \"custom é um mapa chave -> mensagem.\",\n \"formats deve seguir excel/pdf/csv/json.\"\n ],\n \"examples\": [\n \"{ messages: { export: { formats: { excel: \\\"Excel pronto\\\" } }, templates: [{ id: \\\"t1\\\", template: \\\"Exportado {count} itens\\\" }] } }\"\n ],\n \"antiPatterns\": [\n \"{ messages: { templates: [{ id: \\\"t1\\\" }] } }\"\n ]\n },\n \"localization-date-time\": {\n \"id\": \"localization-date-time\",\n \"title\": \"Localizacao de Datas\",\n \"description\": \"Configuração de localization.dateTime.*\",\n \"rules\": [\n \"dateFormat/timeFormat devem seguir DatePipe.\",\n \"firstDayOfWeek deve ser 0-6.\",\n \"monthNames e dayNames devem ter 12 e 7 entradas.\"\n ],\n \"examples\": [\n \"{ localization: { dateTime: { dateFormat: \\\"dd/MM/yyyy\\\", timeFormat: \\\"HH:mm\\\", firstDayOfWeek: 0 } } }\"\n ],\n \"antiPatterns\": [\n \"{ localization: { dateTime: { firstDayOfWeek: 7 } } }\"\n ]\n },\n \"localization-number-currency\": {\n \"id\": \"localization-number-currency\",\n \"title\": \"Localizacao de Numeros e Moeda\",\n \"description\": \"Configuração de localization.number.* e localization.currency.*\",\n \"rules\": [\n \"decimalSeparator e thousandsSeparator devem ser 1 caractere.\",\n \"negativeSignPosition deve ser before/after.\",\n \"currency.code deve ser ISO 4217.\"\n ],\n \"examples\": [\n \"{ localization: { number: { decimalSeparator: \\\",\\\", thousandsSeparator: \\\".\\\", negativeSign: \\\"-\\\", negativeSignPosition: \\\"before\\\" }, currency: { code: \\\"BRL\\\", symbol: \\\"R$\\\" } } }\"\n ],\n \"antiPatterns\": [\n \"{ localization: { currency: { code: \\\"REAL\\\" } } }\"\n ]\n },\n \"localization-formatting\": {\n \"id\": \"localization-formatting\",\n \"title\": \"Formatos Locais\",\n \"description\": \"Configuração de localization.formatting.*\",\n \"rules\": [\n \"percentageFormat e fileSizeFormat devem seguir padrao esperado.\",\n \"units deve mapear tipo -> unidade -> label.\"\n ],\n \"examples\": [\n \"{ localization: { formatting: { percentageFormat: \\\"#0.00%\\\", fileSizeFormat: \\\"decimal\\\" } } }\"\n ],\n \"antiPatterns\": [\n \"{ localization: { formatting: { percentageFormat: \\\"percent\\\" } } }\"\n ]\n },\n \"localization-translations\": {\n \"id\": \"localization-translations\",\n \"title\": \"Traducoes\",\n \"description\": \"Configuração de localization.availableLocales e translations.*\",\n \"rules\": [\n \"availableLocales deve listar locales conhecidos.\",\n \"translations deve mapear locale -> chaves de texto.\"\n ],\n \"examples\": [\n \"{ localization: { availableLocales: [\\\"pt-BR\\\", \\\"en-US\\\"], translations: { \\\"pt-BR\\\": { \\\"table.title\\\": \\\"Pedidos\\\" } } } }\"\n ],\n \"antiPatterns\": [\n \"{ translations: \\\"pt-BR\\\" }\"\n ]\n },\n \"data-cache\": {\n \"id\": \"data-cache\",\n \"title\": \"Cache de Dados\",\n \"description\": \"Configuração de data.cache.*\",\n \"rules\": [\n \"ttl e maxSize devem ser positivos.\",\n \"invalidationStrategy deve ser ttl/manual/on-update.\"\n ],\n \"examples\": [\n \"{ data: { cache: { enabled: true, ttl: 600000, maxSize: 1000, invalidationStrategy: \\\"ttl\\\" } } }\"\n ],\n \"antiPatterns\": [\n \"{ cache: { ttl: 0 } }\"\n ]\n },\n \"data-sync\": {\n \"id\": \"data-sync\",\n \"title\": \"Sincronizacao\",\n \"description\": \"Configuração de data.sync.*\",\n \"rules\": [\n \"interval deve ser em ms.\",\n \"deltaSync e autoSync devem ser boolean.\",\n \"conflictResolution deve ser client/server/manual.\"\n ],\n \"examples\": [\n \"{ data: { sync: { autoSync: true, interval: 30000, deltaSync: true, conflictResolution: \\\"server\\\" } } }\"\n ],\n \"antiPatterns\": [\n \"{ sync: { interval: -1 } }\"\n ]\n },\n \"data-validation\": {\n \"id\": \"data-validation\",\n \"title\": \"Validacao de Dados\",\n \"description\": \"Configuração de data.validation.* e rules[]\",\n \"rules\": [\n \"rules[].type deve ser required/format/range/custom.\",\n \"params deve conter dados compatíveis com o tipo.\",\n \"showInlineErrors deve ser boolean.\"\n ],\n \"examples\": [\n \"{ data: { validation: { clientSide: true, serverSide: false, showInlineErrors: true, rules: [{ field: \\\"email\\\", type: \\\"format\\\", params: { format: \\\"email\\\" }, message: \\\"Email invalido\\\" }] } } }\"\n ],\n \"antiPatterns\": [\n \"{ validation: { rules: [{ type: \\\"regex\\\" }] } }\"\n ]\n },\n \"data-transformations\": {\n \"id\": \"data-transformations\",\n \"title\": \"Transformacoes de Dados\",\n \"description\": \"Configuração de data.transformations[]\",\n \"rules\": [\n \"transform deve ser uma string suportada pelo sistema, não funcao JS.\",\n \"applyTo deve ser display/data/both.\"\n ],\n \"examples\": [\n \"{ data: { transformations: [{ id: \\\"t1\\\", field: \\\"amount\\\", type: \\\"format\\\", transform: \\\"currency\\\", applyTo: \\\"display\\\" }] } }\"\n ],\n \"antiPatterns\": [\n \"{ transformations: [{ transform: \\\"row => row.amount\\\" }] }\"\n ]\n },\n \"data-polling\": {\n \"id\": \"data-polling\",\n \"title\": \"Polling\",\n \"description\": \"Configuração de data.polling.*\",\n \"rules\": [\n \"interval deve ser em ms e razoavel.\",\n \"exponentialBackoff deve ser boolean.\"\n ],\n \"examples\": [\n \"{ data: { polling: { enabled: true, interval: 30000, onlyWhenActive: true, exponentialBackoff: true } } }\"\n ],\n \"antiPatterns\": [\n \"{ polling: { interval: 100 } }\"\n ]\n },\n \"performance-virtualization\": {\n \"id\": \"performance-virtualization\",\n \"title\": \"Performance Virtualization\",\n \"description\": \"Configuração de performance.virtualization.*\",\n \"rules\": [\n \"itemHeight deve ser informado quando enabled.\",\n \"strategy deve ser fixed/dynamic.\"\n ],\n \"examples\": [\n \"{ performance: { virtualization: { enabled: true, itemHeight: 48 } } }\"\n ],\n \"antiPatterns\": [\n \"{ performance: { virtualization: { enabled: true } } }\"\n ]\n },\n \"performance-debounce\": {\n \"id\": \"performance-debounce\",\n \"title\": \"Performance Debounce\",\n \"description\": \"Configuração de performance.debounce.*\",\n \"rules\": [\n \"valores devem estar em ms (ex.: 200-500).\"\n ],\n \"examples\": [\n \"{ performance: { debounce: { search: 300, filter: 300, resize: 200, scroll: 200 } } }\"\n ],\n \"antiPatterns\": [\n \"{ debounce: { search: -1 } }\"\n ]\n },\n \"performance-memory\": {\n \"id\": \"performance-memory\",\n \"title\": \"Performance Memory\",\n \"description\": \"Configuração de performance.memory.*\",\n \"rules\": [\n \"maxRows deve limitar o volume em memoria.\",\n \"cleanupInterval deve ser em ms.\"\n ],\n \"examples\": [\n \"{ performance: { memory: { maxRows: 5000, autoCleanup: true, cleanupInterval: 60000 } } }\"\n ],\n \"antiPatterns\": [\n \"{ memory: { maxRows: 0 } }\"\n ]\n },\n \"performance-rendering\": {\n \"id\": \"performance-rendering\",\n \"title\": \"Performance Rendering\",\n \"description\": \"Configuração de performance.rendering.*\",\n \"rules\": [\n \"batchUpdates true requer batchSize coerente.\",\n \"optimizeReRenders melhora atualizações frequentes.\"\n ],\n \"examples\": [\n \"{ performance: { rendering: { useRAF: true, batchUpdates: true, batchSize: 50, optimizeReRenders: true } } }\"\n ],\n \"antiPatterns\": [\n \"{ rendering: { batchSize: 0 } }\"\n ]\n },\n \"performance-lazy-loading\": {\n \"id\": \"performance-lazy-loading\",\n \"title\": \"Performance Lazy Loading\",\n \"description\": \"Configuração de performance.lazyLoading.*\",\n \"rules\": [\n \"threshold deve ser numero positivo.\",\n \"components e images devem ser boolean.\"\n ],\n \"examples\": [\n \"{ performance: { lazyLoading: { images: true, components: true, threshold: 200 } } }\"\n ],\n \"antiPatterns\": [\n \"{ lazyLoading: { threshold: -1 } }\"\n ]\n },\n \"accessibility-core\": {\n \"id\": \"accessibility-core\",\n \"title\": \"Acessibilidade\",\n \"description\": \"Configuração base de accessibility.*\",\n \"rules\": [\n \"enabled deve ser true em apps com requisitos a11y.\",\n \"reduceMotion deve desativar animacoes nao essenciais.\"\n ],\n \"examples\": [\n \"{ accessibility: { enabled: true, reduceMotion: true } }\"\n ],\n \"antiPatterns\": [\n \"{ accessibility: { enabled: true, reduceMotion: \\\"yes\\\" } }\"\n ]\n },\n \"accessibility-announcements\": {\n \"id\": \"accessibility-announcements\",\n \"title\": \"Acessibilidade Anuncios\",\n \"description\": \"Configuração de accessibility.announcements.*\",\n \"rules\": [\n \"dataChanges, userActions e loadingStates devem ser boolean.\",\n \"liveRegion deve ser polite ou assertive.\"\n ],\n \"examples\": [\n \"{ accessibility: { announcements: { dataChanges: true, userActions: true, loadingStates: true, liveRegion: \\\"polite\\\" } } }\"\n ],\n \"antiPatterns\": [\n \"{ announcements: { liveRegion: \\\"loud\\\" } }\"\n ]\n },\n \"accessibility-keyboard\": {\n \"id\": \"accessibility-keyboard\",\n \"title\": \"Acessibilidade Teclado\",\n \"description\": \"Configuração de accessibility.keyboard.*\",\n \"rules\": [\n \"tabNavigation e arrowNavigation devem ser boolean.\",\n \"shortcuts e skipLinks devem ser boolean.\",\n \"focusTrap deve ser boolean.\"\n ],\n \"examples\": [\n \"{ accessibility: { keyboard: { tabNavigation: true, arrowNavigation: true, shortcuts: true, skipLinks: true, focusTrap: false } } }\"\n ],\n \"antiPatterns\": [\n \"{ keyboard: { tabNavigation: \\\"yes\\\" } }\"\n ]\n },\n \"accessibility-aria-labels\": {\n \"id\": \"accessibility-aria-labels\",\n \"title\": \"Acessibilidade ARIA\",\n \"description\": \"Configuração de accessibility.ariaLabels.*\",\n \"rules\": [\n \"ariaLabels deve mapear chaves conhecidas para textos curtos.\"\n ],\n \"examples\": [\n \"{ accessibility: { ariaLabels: { table: \\\"Tabela de pedidos\\\" } } }\"\n ],\n \"antiPatterns\": [\n \"{ ariaLabels: { table: \\\"\\\" } }\"\n ]\n },\n \"theme-core\": {\n \"id\": \"theme-core\",\n \"title\": \"Tema Base\",\n \"description\": \"Configuração de theme.primary/secondary/darkMode.\",\n \"rules\": [\n \"primary e secondary devem ser cores validas (hex ou token).\",\n \"darkMode deve ser boolean.\"\n ],\n \"examples\": [\n \"{ theme: { primary: \\\"#1976d2\\\", secondary: \\\"#ff9800\\\" } }\"\n ],\n \"antiPatterns\": [\n \"{ theme: { primary: \\\"blue\\\" } }\"\n ]\n },\n \"theme-custom\": {\n \"id\": \"theme-custom\",\n \"title\": \"Tema Customizado\",\n \"description\": \"Configuração de theme.custom e theme.cssVariables.\",\n \"rules\": [\n \"cssVariables deve usar nomes CSS validos (ex.: --table-bg).\",\n \"custom deve ser mapa simples de tokens.\"\n ],\n \"examples\": [\n \"{ theme: { custom: { headerBg: \\\"var(--md-sys-color-surface-container)\\\" }, cssVariables: { \\\"--table-bg\\\": \\\"var(--md-sys-color-surface)\\\" } } }\"\n ],\n \"antiPatterns\": [\n \"{ theme: { cssVariables: { \\\"table-bg\\\": \\\"var(--md-sys-color-surface)\\\" } } }\"\n ]\n },\n \"plugins\": {\n \"id\": \"plugins\",\n \"title\": \"Plugins\",\n \"description\": \"Configuração de plugins[].\",\n \"rules\": [\n \"plugins[].id, name e version sao obrigatorios.\",\n \"hooks deve mapear eventos para handlers conhecidos.\"\n ],\n \"examples\": [\n \"{ plugins: [{ id: \\\"audit\\\", name: \\\"Audit Logger\\\", version: \\\"1.2.0\\\", enabled: true }] }\"\n ],\n \"antiPatterns\": [\n \"{ plugins: [{ name: \\\"Audit\\\" }] }\"\n ]\n },\n \"editor-extras\": {\n \"id\": \"editor-extras\",\n \"title\": \"Extras do Editor\",\n \"description\": \"Envelope de autoria usado pelo editor e pelo playground.\",\n \"rules\": [\n \"bindings.resourcePath deve ser path valido da API quando presente.\",\n \"config.meta.idField deve refletir a chave primaria quando configurado.\",\n \"bindings.horizontalScroll deve ser auto/wrap/none.\"\n ],\n \"examples\": [\n \"{ kind: \\\"praxis.table.editor\\\", version: 1, config: { meta: { idField: \\\"employeeId\\\" }, columns: [] }, bindings: { resourcePath: \\\"/api/employees\\\", horizontalScroll: \\\"auto\\\" } }\"\n ],\n \"antiPatterns\": [\n \"{ kind: \\\"praxis.table.editor\\\", version: 1, config: { columns: [] }, bindings: { horizontalScroll: \\\"left\\\" } }\"\n ]\n }\n }\n}",
21871
21885
  "sourcePointer": "praxis-ui-angular/projects/praxis-table/src/lib/ai/table-context-pack.ts",
21872
- "contentHash": "0748c3745b0e9f39b36d6d595c11ef04dd02a24aad0f247a60ddd800b186429f",
21886
+ "contentHash": "cf7caddb9e2468a85b8a2762b91064c4be95d3d14b8fb82901ad496c67fa33bd",
21873
21887
  "sourceKind": "component_definition",
21874
21888
  "sourceId": "praxis-table",
21875
21889
  "corpusVersion": "1.0.0"