treege 3.0.0-beta.5 → 3.0.0-beta.50

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (181) hide show
  1. package/LICENSE +18 -12
  2. package/README.md +313 -52
  3. package/dist/DefaultInputs-lez0rJ7m.js +1761 -0
  4. package/dist/ThemeContext-BbA-sJ85.js +1353 -0
  5. package/dist/editor/components/input/ComboboxWithCreate.d.ts +2 -1
  6. package/dist/editor/components/styles/EditorStyles.d.ts +2 -0
  7. package/dist/editor/constants/defaultNode.d.ts +1 -1
  8. package/dist/editor/constants/edgeTypes.d.ts +3 -2
  9. package/dist/editor/constants/inputTypeIcons.d.ts +3 -0
  10. package/dist/editor/constants/nodeSpacing.d.ts +33 -0
  11. package/dist/editor/constants/nodeTypes.d.ts +4 -5
  12. package/dist/editor/context/OpenApiContext.d.ts +79 -0
  13. package/dist/editor/context/TreegeEditorContext.d.ts +60 -1
  14. package/dist/editor/features/TreegeEditor/TreegeEditor.d.ts +1 -1
  15. package/dist/editor/features/TreegeEditor/controls/MiniMapControl.d.ts +6 -0
  16. package/dist/editor/features/TreegeEditor/dialogs/AuthorizeDialog.d.ts +20 -0
  17. package/dist/editor/features/TreegeEditor/dialogs/ChangeNodeTypeDialog.d.ts +2 -0
  18. package/dist/editor/features/TreegeEditor/dialogs/DeleteNodeDialog.d.ts +2 -0
  19. package/dist/editor/features/TreegeEditor/dialogs/HeadersDialog.d.ts +19 -0
  20. package/dist/editor/features/TreegeEditor/dialogs/OpenApiDialog.d.ts +6 -0
  21. package/dist/editor/features/TreegeEditor/edges/ConditionalEdge.d.ts +2 -2
  22. package/dist/editor/features/TreegeEditor/edges/DefaultEdge.d.ts +3 -0
  23. package/dist/editor/features/TreegeEditor/forms/OptionsSourceForm.d.ts +7 -0
  24. package/dist/editor/features/TreegeEditor/forms/SubmitConfigForm.d.ts +7 -0
  25. package/dist/editor/features/TreegeEditor/inputs/ApiUrlCombobox.d.ts +30 -0
  26. package/dist/editor/features/TreegeEditor/inputs/ComboboxPattern.d.ts +2 -1
  27. package/dist/editor/features/TreegeEditor/inputs/OptionImageField.d.ts +6 -0
  28. package/dist/editor/features/TreegeEditor/inputs/SelectNodeGroup.d.ts +22 -1
  29. package/dist/editor/features/TreegeEditor/layout/AutoLayout.d.ts +15 -0
  30. package/dist/editor/features/TreegeEditor/nodes/TreegeNode.d.ts +5 -0
  31. package/dist/editor/features/TreegeEditor/nodes/components/BottomHandleDropdown.d.ts +7 -0
  32. package/dist/editor/features/TreegeEditor/nodes/components/NodeGroupBadge.d.ts +6 -0
  33. package/dist/editor/features/TreegeEditor/nodes/components/NodeImage.d.ts +5 -0
  34. package/dist/editor/features/TreegeEditor/nodes/components/NodeImageButton.d.ts +6 -0
  35. package/dist/editor/features/TreegeEditor/nodes/components/NodeInputPreview.d.ts +12 -0
  36. package/dist/editor/features/TreegeEditor/nodes/components/NodeLabelInput.d.ts +10 -0
  37. package/dist/editor/features/TreegeEditor/nodes/components/NodeMoreMenu.d.ts +6 -0
  38. package/dist/editor/features/TreegeEditor/nodes/components/NodeRequiredButton.d.ts +6 -0
  39. package/dist/editor/features/TreegeEditor/nodes/components/NodeStackOrderButtons.d.ts +6 -0
  40. package/dist/editor/features/TreegeEditor/nodes/components/NodeTypeBadge.d.ts +7 -0
  41. package/dist/editor/features/TreegeEditor/nodes/layout/NodeWrapper.d.ts +4 -2
  42. package/dist/editor/features/TreegeEditor/panel/AIGeneratorDialog.d.ts +16 -0
  43. package/dist/editor/features/TreegeEditor/panel/ActionsPanel.d.ts +7 -2
  44. package/dist/editor/features/TreegeEditor/panel/MultiSelectionPanel.d.ts +7 -0
  45. package/dist/editor/hooks/useAvailableParentFields.d.ts +13 -0
  46. package/dist/editor/hooks/useFlowActions.d.ts +6 -2
  47. package/dist/editor/hooks/useFlowConnections.d.ts +13 -0
  48. package/dist/editor/hooks/useHistoryStore.d.ts +26 -0
  49. package/dist/editor/hooks/useIsStackedEdge.d.ts +8 -0
  50. package/dist/editor/hooks/useNodesSelection.d.ts +5 -5
  51. package/dist/editor/hooks/useStackPosition.d.ts +14 -0
  52. package/dist/editor/hooks/useUndoRedo.d.ts +31 -0
  53. package/dist/editor/types/ai.d.ts +65 -0
  54. package/dist/editor/types/editor.d.ts +71 -9
  55. package/dist/editor/types/openapi.d.ts +81 -0
  56. package/dist/editor/utils/aiFlowGenerator.d.ts +5 -0
  57. package/dist/editor/utils/dagreLayout.d.ts +8 -0
  58. package/dist/editor/utils/edge.d.ts +14 -0
  59. package/dist/editor/utils/groupColor.d.ts +14 -0
  60. package/dist/editor/utils/image.d.ts +7 -0
  61. package/dist/editor/utils/inputTypeIcon.d.ts +6 -0
  62. package/dist/editor/utils/openapi.d.ts +35 -0
  63. package/dist/editor/utils/stackPositionIndex.d.ts +9 -0
  64. package/dist/editor-BEhbmVtH.js +5740 -0
  65. package/dist/editor.js +3 -8
  66. package/dist/main.js +4 -53
  67. package/dist/renderer/context/TreegeConfigContext.d.ts +3 -27
  68. package/dist/renderer/context/TreegeRendererContext.d.ts +100 -2
  69. package/dist/renderer/features/TreegeRenderer/native/TreegeRenderer.d.ts +19 -11
  70. package/dist/renderer/features/TreegeRenderer/native/components/DefaultFormWrapper.d.ts +7 -7
  71. package/dist/renderer/features/TreegeRenderer/native/components/DefaultInputWrapper.d.ts +9 -0
  72. package/dist/renderer/features/TreegeRenderer/native/components/DefaultInputs.d.ts +21 -15
  73. package/dist/renderer/features/TreegeRenderer/native/components/DefaultStep.d.ts +3 -0
  74. package/dist/renderer/features/TreegeRenderer/native/components/DefaultSubmitButton.d.ts +9 -7
  75. package/dist/renderer/features/TreegeRenderer/native/components/DefaultSubmitButtonWrapper.d.ts +11 -0
  76. package/dist/renderer/features/TreegeRenderer/native/components/DefaultUI.d.ts +8 -7
  77. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultAddressInput.d.ts +3 -0
  78. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultAutocompleteInput.d.ts +3 -0
  79. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultCheckboxInput.d.ts +3 -0
  80. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultDateInput.d.ts +3 -0
  81. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultDateRangeInput.d.ts +3 -0
  82. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultFileInput.d.ts +3 -0
  83. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultHiddenInput.d.ts +3 -0
  84. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultHttpInput.d.ts +3 -0
  85. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultNumberInput.d.ts +3 -0
  86. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultPasswordInput.d.ts +3 -0
  87. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultRadioInput.d.ts +3 -0
  88. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultSelectInput.d.ts +3 -0
  89. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultSwitchInput.d.ts +3 -0
  90. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultTextInput.d.ts +3 -0
  91. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultTextareaInput.d.ts +3 -0
  92. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultTimeInput.d.ts +3 -0
  93. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultTimeRangeInput.d.ts +3 -0
  94. package/dist/renderer/features/TreegeRenderer/useTreegeRenderer.d.ts +92 -24
  95. package/dist/renderer/features/TreegeRenderer/web/TreegeRenderer.d.ts +1 -1
  96. package/dist/renderer/features/TreegeRenderer/web/components/DefaultFormWrapper.d.ts +1 -1
  97. package/dist/renderer/features/TreegeRenderer/web/components/DefaultInputWrapper.d.ts +9 -0
  98. package/dist/renderer/features/TreegeRenderer/web/components/DefaultStep.d.ts +3 -0
  99. package/dist/renderer/features/TreegeRenderer/web/components/DefaultSubmitButton.d.ts +1 -1
  100. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultAddressInput.d.ts +1 -1
  101. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultAutocompleteInput.d.ts +1 -1
  102. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultCheckboxInput.d.ts +1 -1
  103. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultDateInput.d.ts +1 -1
  104. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultDateRangeInput.d.ts +1 -1
  105. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultFileInput.d.ts +1 -1
  106. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultHiddenInput.d.ts +1 -1
  107. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultHttpInput.d.ts +1 -1
  108. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultNumberInput.d.ts +1 -1
  109. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultPasswordInput.d.ts +1 -1
  110. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultRadioInput.d.ts +1 -1
  111. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultSelectInput.d.ts +1 -1
  112. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultSubmitInput.d.ts +3 -0
  113. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultSwitchInput.d.ts +1 -1
  114. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultTextAreaInput.d.ts +1 -1
  115. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultTextInput.d.ts +1 -1
  116. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultTimeInput.d.ts +1 -1
  117. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultTimeRangeInput.d.ts +1 -1
  118. package/dist/renderer/features/TreegeRenderer/web/components/styles/RendererStyles.d.ts +2 -0
  119. package/dist/renderer/hooks/useInputOptions.d.ts +28 -0
  120. package/dist/renderer/hooks/useRenderNode.d.ts +57 -0
  121. package/dist/renderer/hooks/useSubmitHandler.d.ts +35 -0
  122. package/dist/renderer/hooks/useTranslate.d.ts +6 -4
  123. package/dist/renderer/index.d.ts +3 -1
  124. package/dist/renderer/index.native.d.ts +19 -0
  125. package/dist/renderer/types/renderer.d.ts +131 -33
  126. package/dist/renderer/utils/flow.d.ts +1 -18
  127. package/dist/renderer/utils/form.d.ts +22 -2
  128. package/dist/renderer/utils/http.d.ts +129 -0
  129. package/dist/renderer/utils/node.d.ts +18 -1
  130. package/dist/renderer/utils/sanitize.d.ts +85 -0
  131. package/dist/renderer/utils/sanitize.native.d.ts +69 -0
  132. package/dist/renderer/utils/step.d.ts +27 -0
  133. package/dist/renderer/utils/submit.d.ts +48 -0
  134. package/dist/renderer-native.d.ts +2 -0
  135. package/dist/renderer-native.js +3580 -0
  136. package/dist/renderer.js +3 -46
  137. package/dist/shared/components/ui/badge.d.ts +2 -2
  138. package/dist/shared/components/ui/button.d.ts +3 -3
  139. package/dist/shared/components/ui/collapsible.d.ts +1 -1
  140. package/dist/shared/components/ui/command.d.ts +1 -1
  141. package/dist/shared/components/ui/dropdown-menu.d.ts +1 -1
  142. package/dist/shared/components/ui/field.d.ts +24 -0
  143. package/dist/shared/components/ui/form.d.ts +1 -1
  144. package/dist/shared/components/ui/popover.d.ts +4 -2
  145. package/dist/shared/components/ui/select.d.ts +3 -1
  146. package/dist/shared/components/ui/sheet.d.ts +1 -1
  147. package/dist/shared/components/ui/toggle-group.d.ts +7 -0
  148. package/dist/shared/components/ui/toggle.d.ts +9 -0
  149. package/dist/shared/components/ui/tooltip.d.ts +1 -1
  150. package/dist/shared/constants/colors.d.ts +45 -0
  151. package/dist/shared/constants/inputType.d.ts +1 -0
  152. package/dist/shared/constants/node.d.ts +0 -1
  153. package/dist/shared/context/ThemeContext.d.ts +2 -0
  154. package/dist/shared/context/ThemeContext.native.d.ts +22 -0
  155. package/dist/shared/hooks/useMediaQuery.d.ts +12 -0
  156. package/dist/shared/hooks/useThemeColors.d.ts +37 -0
  157. package/dist/shared/locales/ar.json.d.ts +220 -18
  158. package/dist/shared/locales/de.json.d.ts +221 -19
  159. package/dist/shared/locales/en.json.d.ts +222 -20
  160. package/dist/shared/locales/es.json.d.ts +221 -19
  161. package/dist/shared/locales/fr.json.d.ts +221 -19
  162. package/dist/shared/locales/it.json.d.ts +221 -19
  163. package/dist/shared/locales/pt.json.d.ts +221 -19
  164. package/dist/shared/types/edge.d.ts +6 -0
  165. package/dist/shared/types/node.d.ts +109 -7
  166. package/dist/shared/utils/inputTypeGuards.d.ts +7 -0
  167. package/dist/shared/utils/nodeTypeGuards.d.ts +1 -6
  168. package/package.json +48 -22
  169. package/dist/ThemeContext-D4xMOrdt.js +0 -759
  170. package/dist/TreegeEditor-B8FP1rKR.js +0 -2153
  171. package/dist/TreegeRenderer-BOCobRLr.js +0 -1414
  172. package/dist/editor/features/TreegeEditor/forms/FlowNodeForm.d.ts +0 -2
  173. package/dist/editor/features/TreegeEditor/inputs/SelectInputType.d.ts +0 -7
  174. package/dist/editor/features/TreegeEditor/nodes/FlowNode.d.ts +0 -6
  175. package/dist/editor/features/TreegeEditor/nodes/GroupNode.d.ts +0 -6
  176. package/dist/editor/features/TreegeEditor/nodes/InputNode.d.ts +0 -6
  177. package/dist/editor/features/TreegeEditor/nodes/UINode.d.ts +0 -6
  178. package/dist/editor/hooks/useEdgesSelection.d.ts +0 -11
  179. package/dist/renderer/features/TreegeRenderer/native/components/DefaultGroup.d.ts +0 -7
  180. package/dist/renderer/features/TreegeRenderer/web/components/DefaultGroup.d.ts +0 -6
  181. /package/dist/editor/components/{data-display/logo.d.ts → branding/Logo.d.ts} +0 -0
@@ -4,30 +4,78 @@ declare const _default: {
4
4
  "clear": "Limpar",
5
5
  "close": "Fechar",
6
6
  "create": "Criar",
7
+ "delete": "Excluir",
8
+ "other": "Outro",
7
9
  "retry": "Tentar novamente",
8
10
  "save": "Salvar",
11
+ "settings": "Configurações",
9
12
  "submit": "Enviar",
10
13
  "toggle": "Alternar"
11
14
  },
12
15
  "editor": {
13
16
  "actionsPanel": {
14
- "addNode": "Adicionar ",
17
+ "addNode": "Adicionar elemento",
18
+ "authorize": "Authorize",
15
19
  "clear": "Limpar",
16
20
  "clearSuccess": "Fluxo limpo!",
17
21
  "clearSuccessDesc": "Todos os nós e arestas foram removidos.",
18
- "copyFailed": "Falha ao copiar o ID do fluxo",
19
22
  "downloadSuccess": "Download bem-sucedido.",
20
23
  "downloadSuccessDesc": "O fluxo foi exportado com sucesso.",
21
24
  "exportJson": "Exportar JSON",
22
- "idCopied": "ID do fluxo copiado!",
25
+ "globalHeaders": "Global headers",
23
26
  "importJson": "Importar JSON",
24
27
  "importSuccess": "Importação bem-sucedida!",
25
28
  "importSuccessDesc": "O fluxo foi importado com sucesso.",
26
29
  "invalidJson": "Arquivo JSON inválido.",
27
30
  "invalidJsonDesc": "O arquivo deve conter arrays de nós e arestas.",
31
+ "openApi": "OpenAPI",
28
32
  "parseError": "Erro ao analisar o arquivo JSON.",
29
33
  "parseErrorDesc": "Tente corrigir o arquivo e importá-lo novamente."
30
34
  },
35
+ "aiGenerator": {
36
+ "aiNotConfigured": "IA não configurada",
37
+ "aiNotConfiguredDesc": "Adicione a prop {code} ao TreegeEditorProvider",
38
+ "buttonLabel": "Gerar com IA",
39
+ "cancel": "Cancelar",
40
+ "description": "Descrição",
41
+ "descriptionPlaceholder": "Exemplo: Criar um formulário de contato com nome, email, telefone e mensagem",
42
+ "enterDescription": "Por favor insira uma descrição",
43
+ "failedToGenerate": "Falha ao gerar árvore",
44
+ "generate": "Gerar",
45
+ "generating": "Gerando...",
46
+ "keyboardShortcut": "Pressione {cmdEnter} ou {ctrlEnter} para gerar",
47
+ "missingApiKey": "Configuração de IA ausente",
48
+ "missingApiKeyDesc": "Por favor configure sua chave API de IA no TreegeEditorProvider",
49
+ "successDescription": "{nodes} nós e {edges} arestas criados",
50
+ "successTitle": "Árvore gerada com sucesso!",
51
+ "title": "Gerar fluxo com IA",
52
+ "titleDescription": "Descreva o formulário ou árvore de decisão que deseja criar, e a IA irá gerá-lo para você.",
53
+ "unknownError": "Erro desconhecido"
54
+ },
55
+ "apiUrlCombobox": {
56
+ "browseRoutes": "Browse OpenAPI routes",
57
+ "noRoutes": "No matching route",
58
+ "searchRoutes": "Search by method, path, or summary"
59
+ },
60
+ "authorizeDialog": {
61
+ "apiKeyLabel": "API key",
62
+ "apply": "Apply",
63
+ "bearerLabel": "Bearer token",
64
+ "clear": "Clear",
65
+ "description": "Authenticate against the API to forward credentials to every request issued by the form.",
66
+ "exchangeFailed": "Failed to fetch access token",
67
+ "noSchemes": "No supported security schemes are declared in this OpenAPI document.",
68
+ "oauth2PasswordLabel": "OAuth2 password",
69
+ "passwordPlaceholder": "Password",
70
+ "title": "Authorize",
71
+ "usernamePlaceholder": "Username"
72
+ },
73
+ "changeNodeTypeDialog": {
74
+ "description": "Este nó possui várias ramificações de saída. O novo tipo suporta apenas uma. Escolha qual ramificação manter; as outras serão removidas.",
75
+ "keepBranch": "Manter esta ramificação",
76
+ "noConditions": "Sem condições",
77
+ "title": "Alterar tipo de nó"
78
+ },
31
79
  "comboboxPattern": {
32
80
  "custom": "Personalizado: {value}",
33
81
  "search": "Pesquisar padrões...",
@@ -40,12 +88,16 @@ declare const _default: {
40
88
  },
41
89
  "conditionalEdge": {
42
90
  "addCondition": "Adicionar condição",
91
+ "advanced": "Avançado",
43
92
  "and": "E",
93
+ "basic": "Básico",
94
+ "basicConditionLabel": "Se \"{name}\" for igual a",
44
95
  "condition": "Condição",
45
96
  "conditions": "Condições",
46
97
  "conditionsAnd": "condições (E)",
47
98
  "conditionsMixed": "condições (mistas)",
48
99
  "conditionsOr": "condições (OU)",
100
+ "defineCondition": "Definir uma condição",
49
101
  "displayConditions": "Exibir condições",
50
102
  "displayConditionsDesc": "Este campo será exibido se as seguintes condições forem atendidas.",
51
103
  "fallback": "Padrão",
@@ -60,17 +112,22 @@ declare const _default: {
60
112
  "or": "OU",
61
113
  "removeCondition": "Remover condição",
62
114
  "selectField": "Selecione um campo",
115
+ "selectValue": "Selecione um valor",
63
116
  "value": "Valor",
64
117
  "valuePlaceholder": "Ex: 18"
65
118
  },
66
- "flowNodeForm": {
67
- "label": "Rótulo",
68
- "targetId": "ID de destino",
69
- "targetIdDesc": "Identificador único do fluxo de destino."
70
- },
71
119
  "groupNodeForm": {
72
120
  "label": "Rótulo"
73
121
  },
122
+ "headersDialog": {
123
+ "addHeader": "Add header",
124
+ "description": "These headers are forwarded to every HTTP request issued by the form (HTTP inputs, submit, options sources). Field-level headers with the same key override these.",
125
+ "empty": "No headers yet.",
126
+ "keyPlaceholder": "Authorization",
127
+ "removeHeader": "Remove header",
128
+ "title": "Global headers",
129
+ "valuePlaceholder": "Bearer ..."
130
+ },
74
131
  "httpConfigForm": {
75
132
  "addHeader": "Adicionar cabeçalho",
76
133
  "apiUrl": "URL da API",
@@ -94,8 +151,8 @@ declare const _default: {
94
151
  "methodPut": "PUT",
95
152
  "noFieldsAvailable": "Nenhum campo disponível",
96
153
  "requestBody": "Corpo da requisição (JSON)",
97
- "requestBodyDesc": "Use variáveis de modelo como ${fieldId} para referenciar outros campos",
98
- "requestBodyPlaceholder": "{\"chave\": \"valor\"}",
154
+ "requestBodyDesc": "Use {{fieldId}} para referenciar outros campos. Certifique-se de que a formatação JSON está correta, incluindo aspas ao redor de valores de string.",
155
+ "requestBodyPlaceholder": "{\"nome\": \"{{nomeUsuario}}\", \"idade\": {{idadeUsuario}}}",
99
156
  "responseConfiguration": "Configuração da resposta",
100
157
  "responsePath": "Caminho da resposta",
101
158
  "responsePathDesc": "Extrair dados da resposta usando notação de ponto ou indexação de array",
@@ -104,6 +161,8 @@ declare const _default: {
104
161
  "searchParameterDesc": "Se definido, habilita uma caixa de pesquisa que adiciona este parâmetro às chamadas de API (ex: ?q=Paris)",
105
162
  "searchParameterPlaceholder": "q, pesquisa, consulta...",
106
163
  "selectMethod": "Selecionar método",
164
+ "sendAllFormValues": "Enviar todos os dados do formulário",
165
+ "sendAllFormValuesDesc": "Enviar automaticamente todos os valores do formulário como corpo JSON",
107
166
  "showLoadingState": "Mostrar estado de carregamento",
108
167
  "valueField": "Campo de valor",
109
168
  "valueFieldDesc": "Campo a ser usado como valor da opção (ex: id)",
@@ -112,7 +171,7 @@ declare const _default: {
112
171
  "inputNodeForm": {
113
172
  "addInputFieldsBeforeReference": "Adicione campos de entrada antes deste nó para referenciá-los",
114
173
  "addMapping": "Adicionar mapeamento",
115
- "addOption": "+ Adicionar opção",
174
+ "addOption": "Adicionar opção",
116
175
  "advancedConfiguration": "Configuração avançada",
117
176
  "defaultChecked": "Marcado por padrão",
118
177
  "defaultValuesCommaSeparated": "Valores padrão (separados por vírgulas)",
@@ -121,6 +180,9 @@ declare const _default: {
121
180
  "defaultValueTypeNone": "Nenhum",
122
181
  "defaultValueTypeReference": "Campo de referência",
123
182
  "defaultValueTypeStatic": "Valor estático",
183
+ "deleteOption": "Excluir opção",
184
+ "disablePast": "Desativar datas passadas",
185
+ "editOption": "Editar opção",
124
186
  "errorMessage": "Mensagem de erro",
125
187
  "helperText": "Texto de ajuda",
126
188
  "httpConfiguration": "Configuração HTTP",
@@ -128,9 +190,20 @@ declare const _default: {
128
190
  "multipleFiles": "Arquivos múltiplos",
129
191
  "multipleSelection": "Seleção múltipla",
130
192
  "name": "Nome",
193
+ "nameDescription": "Nome de campo personalizado opcional para exportação de formulário. Se vazio, o rótulo será usado como chave.",
131
194
  "noParentFieldsAvailable": "Nenhum campo pai disponível",
132
195
  "objectMapping": "Mapeamento de objeto",
133
196
  "objectMappingDesc": "Mapear as propriedades do objeto de origem para uma nova estrutura",
197
+ "optional": "Opcional",
198
+ "optionDescription": "Descrição",
199
+ "optionImageAdd": "Adicionar imagem",
200
+ "optionImageError": "Não foi possível processar a imagem.",
201
+ "optionImageInvalid": "Formato de imagem não suportado.",
202
+ "optionImageRemove": "Remover imagem",
203
+ "optionImageReplace": "Substituir imagem",
204
+ "optionImageTooLarge": "Imagem muito grande (máx. 5 MB).",
205
+ "optionImageUpload": "Enviar arquivo",
206
+ "optionImageUrlPlaceholder": "https://...",
134
207
  "optionLabel": "Rótulo",
135
208
  "options": "Opções",
136
209
  "optionValue": "Valor",
@@ -144,6 +217,7 @@ declare const _default: {
144
217
  "sourceKey": "Chave de origem",
145
218
  "staticValue": "Valor estático",
146
219
  "staticValuePlaceholder": "Digite o valor padrão",
220
+ "submitConfiguration": "Configuração de envio",
147
221
  "targetKey": "Chave de destino",
148
222
  "transformArray": "Converter para array",
149
223
  "transformBoolean": "Converter para booleano",
@@ -153,7 +227,63 @@ declare const _default: {
153
227
  "transformNumber": "Converter para número",
154
228
  "transformString": "Converter para string",
155
229
  "transformType": "Tipo de transformação",
156
- "validation": "Validação"
230
+ "validation": "Validação",
231
+ "variant": "Variante",
232
+ "variantCard": "Cartão",
233
+ "variantDefault": "Padrão"
234
+ },
235
+ "multiSelectionPanel": {
236
+ "clearSelection": "Limpar seleção",
237
+ "deleteSelected": "Excluir nós selecionados",
238
+ "nodesSelected": "nós selecionados"
239
+ },
240
+ "nodeActionsSheet": {
241
+ "deleteNode": "Excluir nó",
242
+ "deleteNodeConfirm": "Tem certeza de que deseja excluir este nó?",
243
+ "deleteNodeSuccess": "Nó excluído com sucesso",
244
+ "editNode": "Editar nó"
245
+ },
246
+ "openApiDialog": {
247
+ "baseUrlHint": "Optional. Overrides the document's first server URL — useful when the spec points at a different environment.",
248
+ "baseUrlLabel": "Base URL override",
249
+ "clear": "Clear",
250
+ "cleared": "OpenAPI cleared.",
251
+ "description": "Provide an OpenAPI 3.x document to power URL suggestions and Authorize.",
252
+ "emptyInput": "Please provide a URL or paste a JSON document.",
253
+ "jsonLabel": "Paste your OpenAPI JSON",
254
+ "load": "Load",
255
+ "loadFailed": "Failed to load OpenAPI document",
256
+ "loadSuccess": "OpenAPI loaded.",
257
+ "modeJson": "Paste JSON",
258
+ "modeUrl": "From URL",
259
+ "title": "OpenAPI source",
260
+ "urlLabel": "OpenAPI document URL"
261
+ },
262
+ "optionsSourceForm": {
263
+ "descriptionField": "Description",
264
+ "descriptionFieldPlaceholder": "Path to description (optional)",
265
+ "detect": "Detect fields",
266
+ "detectFailed": "Failed to fetch the API.",
267
+ "detectSuccess": "Fields detected.",
268
+ "disable": "Use static options",
269
+ "dynamicHint": "Options are fetched from this API at runtime.",
270
+ "enable": "Fetch from API",
271
+ "imageField": "Image",
272
+ "imageFieldPlaceholder": "Path to image URL (optional)",
273
+ "labelField": "Label",
274
+ "labelFieldPlaceholder": "Path to label (e.g., name)",
275
+ "noFieldsDetected": "No fields detected — check the URL or response path.",
276
+ "none": "— None —",
277
+ "previewCount": "{count} options detected",
278
+ "responsePath": "Response path",
279
+ "responsePathHint": "Optional. Use a path like \"data.users\" if the array is nested.",
280
+ "responsePathPlaceholder": "e.g., data.users",
281
+ "staticOptions": "Static options",
282
+ "staticOptionsHint": "Options are defined manually in the editor.",
283
+ "title": "Options source",
284
+ "urlRequired": "URL is required.",
285
+ "valueField": "Value",
286
+ "valueFieldPlaceholder": "Path to value (e.g., id)"
157
287
  },
158
288
  "selectInputType": {
159
289
  "type": "Tipo"
@@ -167,12 +297,64 @@ declare const _default: {
167
297
  "groupCreatedDesc": "O grupo \"{groupName}\" foi criado com sucesso.",
168
298
  "groupName": "Nome do grupo",
169
299
  "groupNamePlaceholder": "Ex: Passo 1 - Informações pessoais",
300
+ "mixed": "Grupos mistos",
170
301
  "newGroup": "Novo grupo",
171
302
  "newGroupDescription": "O grupo será criado em torno do nó selecionado.",
172
- "noGroup": "Sem grupo"
303
+ "noGroup": "Sem grupo",
304
+ "renameGroup": "Renomear grupo"
173
305
  },
174
306
  "selectNodeType": {
175
- "nodeType": "Tipo de nó"
307
+ "nodeType": "Tipo de nó",
308
+ "options": {
309
+ "group": "Grupo",
310
+ "input": "Pergunta",
311
+ "ui": "Elemento de design"
312
+ }
313
+ },
314
+ "stackedEdge": {
315
+ "createBranch": "Criar uma ramificação",
316
+ "insertNode": "Inserir um nó aqui"
317
+ },
318
+ "stackOrder": {
319
+ "moveDown": "Mover para baixo",
320
+ "moveUp": "Mover para cima"
321
+ },
322
+ "submitConfigForm": {
323
+ "addHeader": "Adicionar cabeçalho",
324
+ "apiUrl": "URL da API",
325
+ "apiUrlDesc": "Use {{fieldId}} para referenciar outros campos",
326
+ "apiUrlPlaceholder": "https://api.exemplo.com/submit",
327
+ "behavior": "Comportamento",
328
+ "errorMessage": "Mensagem de erro",
329
+ "errorMessageDesc": "Mensagem exibida quando o envio falha",
330
+ "errorMessagePlaceholder": "Ocorreu um erro. Por favor, tente novamente.",
331
+ "headerName": "Nome do cabeçalho",
332
+ "headers": "Cabeçalhos",
333
+ "headerValue": "Valor do cabeçalho",
334
+ "httpMethod": "Método HTTP",
335
+ "insertVariable": "Inserir variável",
336
+ "methodDelete": "DELETE",
337
+ "methodPatch": "PATCH",
338
+ "methodPost": "POST",
339
+ "methodPut": "PUT",
340
+ "noFieldsAvailable": "Nenhum campo disponível",
341
+ "postSubmission": "Após o envio",
342
+ "redirectUrl": "URL de redirecionamento",
343
+ "redirectUrlDesc": "URL para redirecionar após envio bem-sucedido",
344
+ "redirectUrlPlaceholder": "/success ou https://exemplo.com/obrigado",
345
+ "requestBody": "Corpo da requisição (JSON)",
346
+ "requestBodyDesc": "Use {{fieldId}} para referenciar outros campos. Certifique-se de que a formatação JSON está correta, incluindo aspas ao redor de valores de string.",
347
+ "requestBodyPlaceholder": "{\"nome\": \"{{nomeUsuario}}\", \"email\": \"{{emailUsuario}}\"}",
348
+ "selectMethod": "Selecionar método",
349
+ "sendAllFormValues": "Enviar todos os dados do formulário",
350
+ "sendAllFormValuesDesc": "Enviar automaticamente todos os valores do formulário como corpo JSON",
351
+ "showLoadingState": "Mostrar estado de carregamento",
352
+ "successMessage": "Mensagem de sucesso",
353
+ "successMessageDesc": "Mensagem exibida quando o envio é bem-sucedido",
354
+ "successMessagePlaceholder": "Formulário enviado com sucesso!"
355
+ },
356
+ "treegeNode": {
357
+ "labelPlaceholder": "Rótulo..."
176
358
  },
177
359
  "uiNodeForm": {
178
360
  "label": "Rótulo",
@@ -184,39 +366,59 @@ declare const _default: {
184
366
  "renderer": {
185
367
  "defaultAddressInput": {
186
368
  "enterAddress": "Digite um endereço...",
187
- "noAddressesFound": "Nenhum endereço encontrado."
369
+ "noAddressesFound": "Nenhum endereço encontrado.",
370
+ "searching": "Pesquisando...",
371
+ "typeMinChars": "Digite pelo menos 3 caracteres para pesquisar"
188
372
  },
189
373
  "defaultAutocompleteInput": {
190
374
  "noResults": "Nenhum resultado encontrado.",
191
375
  "search": "Pesquisar...",
192
376
  "selectOption": "Selecione uma opção"
193
377
  },
378
+ "defaultCheckboxInput": {
379
+ "loadingOptions": "Carregando opções..."
380
+ },
194
381
  "defaultHttpInput": {
195
- "fetchFailed": "Falha ao buscar dados",
196
- "httpError": "HTTP {status}: {statusText}",
382
+ "fetchFailed": "Falha ao buscar dados. Por favor, verifique sua conexão de rede.",
383
+ "httpError": "Erro HTTP {status}: {statusText}",
197
384
  "noDataAvailable": "Nenhum dado disponível. Configure \"Buscar na montagem\" ou adicione um parâmetro de pesquisa.",
198
385
  "noResults": "Nenhum resultado encontrado.",
199
- "noUrlConfigured": "Nenhuma URL configurada",
386
+ "noUrlConfigured": "Nenhuma URL configurada. Por favor, adicione uma URL na configuração HTTP.",
200
387
  "retry": "Tentar novamente",
201
388
  "search": "Pesquisar...",
202
389
  "searching": "Pesquisando...",
203
- "selectOption": "Selecione uma opção"
390
+ "selectOption": "Selecione uma opção",
391
+ "waitingForRequiredFields": "Aguardando campos obrigatórios"
204
392
  },
205
393
  "defaultInputs": {
394
+ "addMoreFiles": "Adicionar mais arquivos",
206
395
  "endDate": "Data de fim",
207
396
  "endTime": "Hora de fim",
397
+ "filePickerError": "Falha ao selecionar arquivo",
398
+ "filePickerUnavailable": "Seleção de arquivo indisponível. Instale react-native-document-picker.",
399
+ "newAnswer": "Nova resposta...",
400
+ "replaceFile": "Substituir arquivo",
208
401
  "required": "*",
209
402
  "selectDate": "Selecionar data",
210
403
  "selectDateRange": "Selecionar intervalo de datas",
404
+ "selectFile": "Selecionar arquivo",
405
+ "selectFiles": "Selecionar arquivos",
211
406
  "startDate": "Data de início",
212
407
  "startTime": "Hora de início"
213
408
  },
409
+ "defaultRadioInput": {
410
+ "loadingOptions": "Carregando opções..."
411
+ },
214
412
  "defaultSelectInput": {
215
413
  "selectOption": "Selecione uma opção"
216
414
  },
217
415
  "defaultSubmitButton": {
218
416
  "requiredFieldsMissing": "Campos obrigatórios ausentes",
219
417
  "submit": "Enviar"
418
+ },
419
+ "step": {
420
+ "back": "Voltar",
421
+ "continue": "Continuar"
220
422
  }
221
423
  },
222
424
  "validation": {
@@ -31,4 +31,10 @@ export type ConditionalEdgeData = {
31
31
  * Fallback edges are followed when no other conditional edges match
32
32
  */
33
33
  isFallback?: boolean;
34
+ /**
35
+ * Set to `true` the first time the user commits a change through the
36
+ * condition editor. Used only by the editor for visual state — the
37
+ * renderer ignores it.
38
+ */
39
+ configured?: boolean;
34
40
  };
@@ -18,10 +18,19 @@ export type InputOption = {
18
18
  * The label of the option, which can be translated
19
19
  */
20
20
  label: Translatable;
21
+ /**
22
+ * Optional secondary description, shown under the label (translatable)
23
+ */
24
+ description?: Translatable;
21
25
  /**
22
26
  * Whether the option is disabled and cannot be selected
23
27
  */
24
28
  disabled?: boolean;
29
+ /**
30
+ * Optional image for the option, stored as base64 data URL or remote URL.
31
+ * Currently displayed by radio inputs; uploads are automatically resized and compressed.
32
+ */
33
+ image?: string;
25
34
  };
26
35
  export type BaseNodeData = {
27
36
  /**
@@ -29,12 +38,6 @@ export type BaseNodeData = {
29
38
  */
30
39
  label?: Translatable;
31
40
  };
32
- export type FlowNodeData = BaseNodeData & {
33
- /**
34
- * The ID of the target node to connect to
35
- */
36
- targetId?: string;
37
- };
38
41
  export type GroupNodeData = BaseNodeData & {
39
42
  /**
40
43
  * A label for the group node, which can be translated
@@ -68,6 +71,10 @@ export type HttpConfig = {
68
71
  * Request body (for POST/PUT/PATCH methods)
69
72
  */
70
73
  body?: string;
74
+ /**
75
+ * If true, automatically sends all form data as JSON body (overrides custom body)
76
+ */
77
+ sendAllFormValues?: boolean;
71
78
  /**
72
79
  * JSONPath or key to extract from the response
73
80
  * Examples: "data.users", "results[0].name"
@@ -100,6 +107,78 @@ export type HttpConfig = {
100
107
  */
101
108
  showLoading?: boolean;
102
109
  };
110
+ /**
111
+ * Maps response item fields to InputOption properties.
112
+ * Each value is a path expression (e.g., "id", "user.name", "items[0].title").
113
+ */
114
+ export type OptionsSourceMapping = {
115
+ /** Path to the field used as InputOption.value */
116
+ valueField: string;
117
+ /** Path to the field used as InputOption.label */
118
+ labelField: string;
119
+ /** Path to the field used as InputOption.description (optional) */
120
+ descriptionField?: string;
121
+ /** Path to the field used as InputOption.image (optional) */
122
+ imageField?: string;
123
+ };
124
+ /**
125
+ * Dynamic options source — fetches the option list from an HTTP endpoint
126
+ * at runtime. Applies to inputs that use options (radio, checkbox, select,
127
+ * autocomplete). When set, overrides the static `options` array.
128
+ */
129
+ export type OptionsSource = {
130
+ /** API URL (supports template variables like {{fieldId}}) */
131
+ url?: string;
132
+ /** HTTP method */
133
+ method?: "GET" | "POST" | "PUT" | "DELETE" | "PATCH";
134
+ /** Custom headers (merged with global headers; field-level wins) */
135
+ headers?: HttpHeader[];
136
+ /** Request body (for POST/PUT/PATCH; supports template variables) */
137
+ body?: string;
138
+ /** JSONPath to extract the array from the response (e.g., "data.users") */
139
+ responsePath?: string;
140
+ /** Field-to-property mapping for each response item */
141
+ mapping?: OptionsSourceMapping;
142
+ };
143
+ export type SubmitConfig = {
144
+ /**
145
+ * The HTTP method to use for form submission
146
+ */
147
+ method?: "POST" | "PUT" | "PATCH" | "DELETE";
148
+ /**
149
+ * The API URL to call on submit (supports template variables like {{fieldId}})
150
+ */
151
+ url?: string;
152
+ /**
153
+ * Custom headers for the HTTP request
154
+ */
155
+ headers?: HttpHeader[];
156
+ /**
157
+ * Request body (for POST/PUT/PATCH methods, supports template variables like {{fieldId}})
158
+ * Strings are automatically quoted, use: {"name": {{userName}}}
159
+ */
160
+ body?: string;
161
+ /**
162
+ * If true, automatically sends all form data as JSON body (overrides custom body)
163
+ */
164
+ sendAllFormValues?: boolean;
165
+ /**
166
+ * URL to redirect to after successful submission (supports template variables from response)
167
+ */
168
+ redirectUrl?: string;
169
+ /**
170
+ * Success message to display after successful submission (translatable)
171
+ */
172
+ successMessage?: Translatable;
173
+ /**
174
+ * Error message to display if submission fails (translatable)
175
+ */
176
+ errorMessage?: Translatable;
177
+ /**
178
+ * Whether to show a loading state while submitting
179
+ */
180
+ showLoading?: boolean;
181
+ };
103
182
  export type InputNodeData = BaseNodeData & {
104
183
  /**
105
184
  * The name of the input field, used for identification and form submission
@@ -137,6 +216,14 @@ export type InputNodeData = BaseNodeData & {
137
216
  * Whether multiple selections are allowed (for select and checkbox types)
138
217
  */
139
218
  multiple?: boolean;
219
+ /**
220
+ * Visual variant (currently used by radio inputs)
221
+ */
222
+ variant?: "default" | "card";
223
+ /**
224
+ * Whether past dates should be disabled (for date and daterange types)
225
+ */
226
+ disablePast?: boolean;
140
227
  /**
141
228
  * The default value config for the input field
142
229
  */
@@ -154,6 +241,21 @@ export type InputNodeData = BaseNodeData & {
154
241
  * HTTP configuration for the input field (used with type="http")
155
242
  */
156
243
  httpConfig?: HttpConfig;
244
+ /**
245
+ * Dynamic options source — fetches the option list from an HTTP endpoint
246
+ * at runtime. Used by option-based inputs (radio, checkbox, select, autocomplete).
247
+ * When set, overrides the static `options` array.
248
+ */
249
+ optionsSource?: OptionsSource;
250
+ /**
251
+ * Submit configuration for the input field (used with type="submit")
252
+ */
253
+ submitConfig?: SubmitConfig;
254
+ /**
255
+ * Optional illustrative image displayed above the input label.
256
+ * Stored as a base64 data URL (uploads are resized/compressed) or a remote URL.
257
+ */
258
+ image?: string;
157
259
  };
158
260
  export type UINodeData = BaseNodeData & {
159
261
  /**
@@ -164,7 +266,7 @@ export type UINodeData = BaseNodeData & {
164
266
  /**
165
267
  * Union type representing all possible node data types in the Treege system
166
268
  */
167
- export type TreegeNodeData = InputNodeData | UINodeData | FlowNodeData | GroupNodeData;
269
+ export type TreegeNodeData = InputNodeData | UINodeData | GroupNodeData;
168
270
  /**
169
271
  * A TreegeNode represents a node in the flowchart with specific data and properties
170
272
  */
@@ -0,0 +1,7 @@
1
+ import { InputNodeData, TreegeNodeData } from '../types/node';
2
+ /**
3
+ * Type guard: narrows the node `data` to an `InputNodeData` whose type
4
+ * supports an option list. After a truthy check, `data.options`,
5
+ * `data.optionsSource`, etc. are accessible without casts.
6
+ */
7
+ export declare const isOptionsInputData: (data: TreegeNodeData | undefined) => data is InputNodeData;
@@ -1,5 +1,5 @@
1
1
  import { Node } from '@xyflow/react';
2
- import { FlowNodeData, GroupNodeData, InputNodeData, TreegeNode, UINodeData } from '../types/node';
2
+ import { GroupNodeData, InputNodeData, TreegeNode, UINodeData } from '../types/node';
3
3
  /**
4
4
  * Type guard to check if a node is an InputNode
5
5
  * @param node
@@ -10,11 +10,6 @@ export declare const isInputNode: (node: TreegeNode | undefined) => node is Node
10
10
  * @param node
11
11
  */
12
12
  export declare const isUINode: (node: TreegeNode | undefined) => node is Node<UINodeData, "ui">;
13
- /**
14
- * Type guard to check if a node is a FlowNode
15
- * @param node
16
- */
17
- export declare const isFlowNode: (node: TreegeNode | undefined) => node is Node<FlowNodeData, "flow">;
18
13
  /**
19
14
  * Type guard to check if a node is a GroupNode
20
15
  * @param node