treege 3.0.0-beta.8 → 3.0.0-beta.80

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (216) hide show
  1. package/LICENSE +18 -12
  2. package/README.md +448 -79
  3. package/dist/DefaultSubmitButton-Bk5U_6Qm.js +1819 -0
  4. package/dist/ThemeContext-DeWmeqHK.js +978 -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 +25 -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/TreegeEditorRuntimeProvider.d.ts +78 -0
  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/HttpConfigForm.d.ts +4 -1
  24. package/dist/editor/features/TreegeEditor/forms/JsonTemplateEditor.d.ts +13 -0
  25. package/dist/editor/features/TreegeEditor/forms/OptionsMappingFields.d.ts +34 -0
  26. package/dist/editor/features/TreegeEditor/forms/OptionsSourceForm.d.ts +7 -0
  27. package/dist/editor/features/TreegeEditor/forms/SensitiveHeaderWarning.d.ts +13 -0
  28. package/dist/editor/features/TreegeEditor/forms/SubmitConfigForm.d.ts +7 -0
  29. package/dist/editor/features/TreegeEditor/inputs/ApiUrlCombobox.d.ts +20 -0
  30. package/dist/editor/features/TreegeEditor/inputs/ComboboxPattern.d.ts +2 -1
  31. package/dist/editor/features/TreegeEditor/inputs/OptionImageField.d.ts +6 -0
  32. package/dist/editor/features/TreegeEditor/inputs/SelectNodeGroup.d.ts +22 -1
  33. package/dist/editor/features/TreegeEditor/layout/AutoLayout.d.ts +15 -0
  34. package/dist/editor/features/TreegeEditor/listeners/FlowChangeEmitter.d.ts +19 -0
  35. package/dist/editor/features/TreegeEditor/nodes/TreegeNode.d.ts +5 -0
  36. package/dist/editor/features/TreegeEditor/nodes/components/BottomHandleDropdown.d.ts +25 -0
  37. package/dist/editor/features/TreegeEditor/nodes/components/NodeGroupBadge.d.ts +6 -0
  38. package/dist/editor/features/TreegeEditor/nodes/components/NodeImage.d.ts +5 -0
  39. package/dist/editor/features/TreegeEditor/nodes/components/NodeImageButton.d.ts +6 -0
  40. package/dist/editor/features/TreegeEditor/nodes/components/NodeInputPreview.d.ts +12 -0
  41. package/dist/editor/features/TreegeEditor/nodes/components/NodeLabelInput.d.ts +10 -0
  42. package/dist/editor/features/TreegeEditor/nodes/components/NodeMoreMenu.d.ts +6 -0
  43. package/dist/editor/features/TreegeEditor/nodes/components/NodeRequiredButton.d.ts +6 -0
  44. package/dist/editor/features/TreegeEditor/nodes/components/NodeStackOrderButtons.d.ts +6 -0
  45. package/dist/editor/features/TreegeEditor/nodes/components/NodeTypeBadge.d.ts +7 -0
  46. package/dist/editor/features/TreegeEditor/nodes/components/NodeTypePickerMenuContent.d.ts +12 -0
  47. package/dist/editor/features/TreegeEditor/nodes/layout/NodeWrapper.d.ts +4 -2
  48. package/dist/editor/features/TreegeEditor/panel/AIGeneratorDialog.d.ts +16 -0
  49. package/dist/editor/features/TreegeEditor/panel/ActionsPanel.d.ts +7 -2
  50. package/dist/editor/features/TreegeEditor/panel/MultiSelectionPanel.d.ts +7 -0
  51. package/dist/editor/hooks/useAvailableParentFields.d.ts +13 -0
  52. package/dist/editor/hooks/useFlowActions.d.ts +6 -2
  53. package/dist/editor/hooks/useFlowConnections.d.ts +14 -0
  54. package/dist/editor/hooks/useFlowContent.d.ts +16 -0
  55. package/dist/editor/hooks/useHistoryStore.d.ts +26 -0
  56. package/dist/editor/hooks/useIsStackedEdge.d.ts +8 -0
  57. package/dist/editor/hooks/useKeyValueRows.d.ts +15 -0
  58. package/dist/editor/hooks/useNodesSelection.d.ts +5 -5
  59. package/dist/editor/hooks/useStackPosition.d.ts +14 -0
  60. package/dist/editor/hooks/useTranslate.d.ts +1 -1
  61. package/dist/editor/hooks/useUndoRedo.d.ts +31 -0
  62. package/dist/editor/types/ai.d.ts +65 -0
  63. package/dist/editor/types/editor.d.ts +106 -10
  64. package/dist/editor/types/openapi.d.ts +106 -0
  65. package/dist/editor/utils/aiFlowGenerator.d.ts +5 -0
  66. package/dist/editor/utils/cleanEmptyData.d.ts +18 -0
  67. package/dist/editor/utils/cleanNodeConfig.d.ts +5 -0
  68. package/dist/editor/utils/dagreLayout.d.ts +8 -0
  69. package/dist/editor/utils/edge.d.ts +50 -0
  70. package/dist/editor/utils/groupColor.d.ts +14 -0
  71. package/dist/editor/utils/image.d.ts +7 -0
  72. package/dist/editor/utils/inputTypeIcon.d.ts +6 -0
  73. package/dist/editor/utils/jsonBindTarget.d.ts +15 -0
  74. package/dist/editor/utils/openApiPayload.d.ts +12 -0
  75. package/dist/editor/utils/openapi.d.ts +35 -0
  76. package/dist/editor/utils/sensitiveHeaders.d.ts +20 -0
  77. package/dist/editor/utils/stackPositionIndex.d.ts +9 -0
  78. package/dist/editor-Dw_ODEe1.js +6507 -0
  79. package/dist/editor.js +3 -7
  80. package/dist/main.js +6 -52
  81. package/dist/renderer/context/TreegeRenderRuntimeProvider.d.ts +135 -0
  82. package/dist/renderer/context/TreegeRendererProvider.d.ts +15 -0
  83. package/dist/renderer/features/TreegeRenderer/native/TreegeRenderer.d.ts +19 -11
  84. package/dist/renderer/features/TreegeRenderer/native/components/DefaultFormWrapper.d.ts +7 -7
  85. package/dist/renderer/features/TreegeRenderer/native/components/DefaultInputLabel.d.ts +10 -0
  86. package/dist/renderer/features/TreegeRenderer/native/components/DefaultInputWrapper.d.ts +9 -0
  87. package/dist/renderer/features/TreegeRenderer/native/components/DefaultInputs.d.ts +20 -15
  88. package/dist/renderer/features/TreegeRenderer/native/components/DefaultLoadingSkeleton.d.ts +8 -0
  89. package/dist/renderer/features/TreegeRenderer/native/components/DefaultStep.d.ts +3 -0
  90. package/dist/renderer/features/TreegeRenderer/native/components/DefaultSubmitButton.d.ts +9 -7
  91. package/dist/renderer/features/TreegeRenderer/native/components/DefaultSubmitButtonWrapper.d.ts +11 -0
  92. package/dist/renderer/features/TreegeRenderer/native/components/DefaultUI.d.ts +8 -7
  93. package/dist/renderer/features/TreegeRenderer/native/components/DependencyHint.d.ts +15 -0
  94. package/dist/renderer/features/TreegeRenderer/native/components/OptionItemContent.d.ts +17 -0
  95. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultAddressInput.d.ts +3 -0
  96. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultAutocompleteInput.d.ts +3 -0
  97. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultCheckboxInput.d.ts +3 -0
  98. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultDateInput.d.ts +3 -0
  99. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultDateRangeInput.d.ts +3 -0
  100. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultFileInput.d.ts +3 -0
  101. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultHiddenInput.d.ts +3 -0
  102. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultHttpInput.d.ts +3 -0
  103. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultNumberInput.d.ts +3 -0
  104. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultPasswordInput.d.ts +3 -0
  105. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultRadioInput.d.ts +3 -0
  106. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultSelectInput.d.ts +3 -0
  107. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultSubmitInput.d.ts +11 -0
  108. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultSwitchInput.d.ts +3 -0
  109. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultTextInput.d.ts +3 -0
  110. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultTextareaInput.d.ts +3 -0
  111. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultTimeInput.d.ts +3 -0
  112. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultTimeRangeInput.d.ts +3 -0
  113. package/dist/renderer/features/TreegeRenderer/useTreegeRenderer.d.ts +97 -24
  114. package/dist/renderer/features/TreegeRenderer/web/TreegeRenderer.d.ts +1 -1
  115. package/dist/renderer/features/TreegeRenderer/web/components/DefaultFormWrapper.d.ts +3 -2
  116. package/dist/renderer/features/TreegeRenderer/web/components/DefaultInputLabel.d.ts +9 -0
  117. package/dist/renderer/features/TreegeRenderer/web/components/DefaultInputWrapper.d.ts +9 -0
  118. package/dist/renderer/features/TreegeRenderer/web/components/DefaultLoadingSkeleton.d.ts +7 -0
  119. package/dist/renderer/features/TreegeRenderer/web/components/DefaultStep.d.ts +3 -0
  120. package/dist/renderer/features/TreegeRenderer/web/components/DefaultSubmitButton.d.ts +5 -1
  121. package/dist/renderer/features/TreegeRenderer/web/components/DependencyHint.d.ts +22 -0
  122. package/dist/renderer/features/TreegeRenderer/web/components/OptionItemContent.d.ts +17 -0
  123. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultAddressInput.d.ts +1 -1
  124. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultAutocompleteInput.d.ts +1 -1
  125. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultCheckboxInput.d.ts +1 -1
  126. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultDateInput.d.ts +1 -1
  127. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultDateRangeInput.d.ts +1 -1
  128. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultFileInput.d.ts +1 -1
  129. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultHiddenInput.d.ts +1 -1
  130. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultHttpInput.d.ts +1 -1
  131. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultNumberInput.d.ts +1 -1
  132. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultPasswordInput.d.ts +1 -1
  133. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultRadioInput.d.ts +1 -1
  134. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultSelectInput.d.ts +1 -1
  135. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultSubmitInput.d.ts +11 -0
  136. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultSwitchInput.d.ts +1 -1
  137. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultTextAreaInput.d.ts +1 -1
  138. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultTextInput.d.ts +1 -1
  139. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultTimeInput.d.ts +1 -1
  140. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultTimeRangeInput.d.ts +1 -1
  141. package/dist/renderer/features/TreegeRenderer/web/components/styles/RendererStyles.d.ts +2 -0
  142. package/dist/renderer/hooks/useInputOptions.d.ts +28 -0
  143. package/dist/renderer/hooks/useRenderNode.d.ts +62 -0
  144. package/dist/renderer/hooks/useSubmitHandler.d.ts +36 -0
  145. package/dist/renderer/hooks/useTranslate.d.ts +7 -5
  146. package/dist/renderer/index.d.ts +5 -2
  147. package/dist/renderer/index.native.d.ts +20 -0
  148. package/dist/renderer/types/renderer.d.ts +316 -42
  149. package/dist/renderer/utils/flow.d.ts +1 -18
  150. package/dist/renderer/utils/form.d.ts +54 -2
  151. package/dist/renderer/utils/http.d.ts +177 -0
  152. package/dist/renderer/utils/jsonTemplate.d.ts +30 -0
  153. package/dist/renderer/utils/node.d.ts +29 -1
  154. package/dist/renderer/utils/sanitize.d.ts +85 -0
  155. package/dist/renderer/utils/sanitize.native.d.ts +69 -0
  156. package/dist/renderer/utils/step.d.ts +27 -0
  157. package/dist/renderer/utils/submit.d.ts +49 -0
  158. package/dist/renderer/utils/templateDependencies.d.ts +17 -0
  159. package/dist/renderer-CN83AtIp.js +256 -0
  160. package/dist/renderer-native.d.ts +2 -0
  161. package/dist/renderer-native.js +3703 -0
  162. package/dist/renderer.js +5 -45
  163. package/dist/shared/components/ui/badge.d.ts +2 -2
  164. package/dist/shared/components/ui/button.d.ts +3 -3
  165. package/dist/shared/components/ui/collapsible.d.ts +1 -1
  166. package/dist/shared/components/ui/command.d.ts +1 -1
  167. package/dist/shared/components/ui/dropdown-menu.d.ts +1 -1
  168. package/dist/shared/components/ui/field.d.ts +24 -0
  169. package/dist/shared/components/ui/form.d.ts +1 -1
  170. package/dist/shared/components/ui/item.d.ts +23 -0
  171. package/dist/shared/components/ui/popover.d.ts +10 -2
  172. package/dist/shared/components/ui/select.d.ts +3 -1
  173. package/dist/shared/components/ui/sheet.d.ts +1 -1
  174. package/dist/shared/components/ui/skeleton.d.ts +3 -0
  175. package/dist/shared/components/ui/toggle-group.d.ts +7 -0
  176. package/dist/shared/components/ui/toggle.d.ts +9 -0
  177. package/dist/shared/components/ui/tooltip.d.ts +1 -1
  178. package/dist/shared/constants/colors.d.ts +45 -0
  179. package/dist/shared/constants/inputType.d.ts +6 -0
  180. package/dist/shared/constants/node.d.ts +0 -1
  181. package/dist/shared/context/PortalContainerContext.d.ts +5 -0
  182. package/dist/shared/context/ThemeContext.d.ts +2 -0
  183. package/dist/shared/context/ThemeContext.native.d.ts +22 -0
  184. package/dist/shared/hooks/useMediaQuery.d.ts +12 -0
  185. package/dist/shared/hooks/useThemeColors.d.ts +37 -0
  186. package/dist/shared/locales/ar.json.d.ts +258 -19
  187. package/dist/shared/locales/de.json.d.ts +259 -20
  188. package/dist/shared/locales/en.json.d.ts +260 -21
  189. package/dist/shared/locales/es.json.d.ts +259 -20
  190. package/dist/shared/locales/fr.json.d.ts +259 -20
  191. package/dist/shared/locales/it.json.d.ts +259 -20
  192. package/dist/shared/locales/pt.json.d.ts +259 -20
  193. package/dist/shared/types/edge.d.ts +6 -0
  194. package/dist/shared/types/node.d.ts +153 -18
  195. package/dist/shared/utils/httpRecord.d.ts +20 -0
  196. package/dist/shared/utils/inputTypeGuards.d.ts +7 -0
  197. package/dist/shared/utils/nodeTypeGuards.d.ts +1 -6
  198. package/dist/shared/utils/normalizeLabel.d.ts +21 -0
  199. package/dist/useRenderNode-BZ7fZJxT.js +527 -0
  200. package/package.json +54 -22
  201. package/dist/ThemeContext-BIvs8Kw-.js +0 -758
  202. package/dist/TreegeEditor-Lv5Tn9_F.js +0 -2152
  203. package/dist/TreegeRenderer-D3EvsEfJ.js +0 -1413
  204. package/dist/editor/context/TreegeEditorContext.d.ts +0 -12
  205. package/dist/editor/features/TreegeEditor/forms/FlowNodeForm.d.ts +0 -2
  206. package/dist/editor/features/TreegeEditor/inputs/SelectInputType.d.ts +0 -7
  207. package/dist/editor/features/TreegeEditor/nodes/FlowNode.d.ts +0 -6
  208. package/dist/editor/features/TreegeEditor/nodes/GroupNode.d.ts +0 -6
  209. package/dist/editor/features/TreegeEditor/nodes/InputNode.d.ts +0 -6
  210. package/dist/editor/features/TreegeEditor/nodes/UINode.d.ts +0 -6
  211. package/dist/editor/hooks/useEdgesSelection.d.ts +0 -11
  212. package/dist/renderer/context/TreegeConfigContext.d.ts +0 -39
  213. package/dist/renderer/context/TreegeRendererContext.d.ts +0 -25
  214. package/dist/renderer/features/TreegeRenderer/native/components/DefaultGroup.d.ts +0 -7
  215. package/dist/renderer/features/TreegeRenderer/web/components/DefaultGroup.d.ts +0 -6
  216. /package/dist/editor/components/{data-display/logo.d.ts → branding/Logo.d.ts} +0 -0
@@ -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,28 +38,24 @@ 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
41
44
  */
42
45
  label: Translatable;
43
46
  };
44
- export type HttpHeader = {
45
- /**
46
- * The header key (e.g., "Authorization", "Content-Type")
47
- */
48
- key: string;
49
- /**
50
- * The header value
51
- */
52
- value: string;
53
- };
47
+ /**
48
+ * HTTP headers as a plain object keyed by header name, e.g.
49
+ * `{ Authorization: "Bearer xyz", "Content-Type": "application/json" }`.
50
+ * Values support template variables like `{{fieldId}}`.
51
+ */
52
+ export type HttpHeaders = Record<string, string>;
53
+ /**
54
+ * Query parameters as a plain object keyed by parameter name, e.g.
55
+ * `{ limit: "10", sort: "asc" }`. Values support template variables like
56
+ * `{{fieldId}}`.
57
+ */
58
+ export type QueryParams = Record<string, string>;
54
59
  export type HttpConfig = {
55
60
  /**
56
61
  * The HTTP method to use
@@ -63,11 +68,19 @@ export type HttpConfig = {
63
68
  /**
64
69
  * Custom headers for the HTTP request
65
70
  */
66
- headers?: HttpHeader[];
71
+ headers?: HttpHeaders;
72
+ /**
73
+ * Query parameters appended to the URL (supports template variables like {{fieldId}})
74
+ */
75
+ queryParams?: QueryParams;
67
76
  /**
68
77
  * Request body (for POST/PUT/PATCH methods)
69
78
  */
70
79
  body?: string;
80
+ /**
81
+ * If true, automatically sends all form data as JSON body (overrides custom body)
82
+ */
83
+ sendAllFormValues?: boolean;
71
84
  /**
72
85
  * JSONPath or key to extract from the response
73
86
  * Examples: "data.users", "results[0].name"
@@ -85,6 +98,14 @@ export type HttpConfig = {
85
98
  * Path to the label field in response items
86
99
  */
87
100
  labelField?: string;
101
+ /**
102
+ * Path to the field used as the option description (optional)
103
+ */
104
+ descriptionField?: string;
105
+ /**
106
+ * Path to the field used as the option image — base64 data URL or remote URL (optional)
107
+ */
108
+ imageField?: string;
88
109
  };
89
110
  /**
90
111
  * Query parameter name for search (enables combobox with search)
@@ -100,6 +121,90 @@ export type HttpConfig = {
100
121
  */
101
122
  showLoading?: boolean;
102
123
  };
124
+ /**
125
+ * Maps response item fields to InputOption properties.
126
+ * Each value is a path expression (e.g., "id", "user.name", "items[0].title").
127
+ */
128
+ export type OptionsSourceMapping = {
129
+ /** Path to the field used as InputOption.value */
130
+ valueField: string;
131
+ /** Path to the field used as InputOption.label */
132
+ labelField: string;
133
+ /** Path to the field used as InputOption.description (optional) */
134
+ descriptionField?: string;
135
+ /** Path to the field used as InputOption.image (optional) */
136
+ imageField?: string;
137
+ };
138
+ /**
139
+ * Dynamic options source — fetches the option list from an HTTP endpoint
140
+ * at runtime. Applies to inputs that use options (radio, checkbox, select,
141
+ * autocomplete). When set, overrides the static `options` array.
142
+ */
143
+ export type OptionsSource = {
144
+ /** API URL (supports template variables like {{fieldId}}) */
145
+ url?: string;
146
+ /** HTTP method */
147
+ method?: "GET" | "POST" | "PUT" | "DELETE" | "PATCH";
148
+ /** Custom headers (merged with global headers; field-level wins) */
149
+ headers?: HttpHeaders;
150
+ /** Query parameters appended to the URL (supports template variables like {{fieldId}}) */
151
+ queryParams?: QueryParams;
152
+ /** Request body (for POST/PUT/PATCH; supports template variables) */
153
+ body?: string;
154
+ /** JSONPath to extract the array from the response (e.g., "data.users") */
155
+ responsePath?: string;
156
+ /** Field-to-property mapping for each response item */
157
+ mapping?: OptionsSourceMapping;
158
+ };
159
+ export type SubmitConfig = {
160
+ /**
161
+ * The HTTP method to use for form submission
162
+ */
163
+ method?: "POST" | "PUT" | "PATCH" | "DELETE";
164
+ /**
165
+ * The API URL to call on submit (supports template variables like {{fieldId}})
166
+ */
167
+ url?: string;
168
+ /**
169
+ * Custom headers for the HTTP request
170
+ */
171
+ headers?: HttpHeaders;
172
+ /**
173
+ * Query parameters appended to the URL (supports template variables like {{fieldId}})
174
+ */
175
+ queryParams?: QueryParams;
176
+ /**
177
+ * Free-form JSON template that defines the submitted payload. Field tokens
178
+ * sit inside string positions, e.g. `{"data": {"name": "{{firstName}}"}}`,
179
+ * where `{{token}}` is a field's node id (or its token-safe `name`) and is
180
+ * replaced by the field value with its JSON type preserved.
181
+ *
182
+ * This is the single source of truth for the payload: it is delivered to the
183
+ * `onSubmit` callback AND, when a `url` is configured, sent as the HTTP request
184
+ * body. Takes precedence over `sendAllFormValues`.
185
+ */
186
+ payloadTemplate?: string;
187
+ /**
188
+ * If true, automatically sends all form data as JSON body (overrides custom body)
189
+ */
190
+ sendAllFormValues?: boolean;
191
+ /**
192
+ * URL to redirect to after successful submission (supports template variables from response)
193
+ */
194
+ redirectUrl?: string;
195
+ /**
196
+ * Success message to display after successful submission (translatable)
197
+ */
198
+ successMessage?: Translatable;
199
+ /**
200
+ * Error message to display if submission fails (translatable)
201
+ */
202
+ errorMessage?: Translatable;
203
+ /**
204
+ * Whether to show a loading state while submitting
205
+ */
206
+ showLoading?: boolean;
207
+ };
103
208
  export type InputNodeData = BaseNodeData & {
104
209
  /**
105
210
  * The name of the input field, used for identification and form submission
@@ -137,6 +242,14 @@ export type InputNodeData = BaseNodeData & {
137
242
  * Whether multiple selections are allowed (for select and checkbox types)
138
243
  */
139
244
  multiple?: boolean;
245
+ /**
246
+ * Visual variant (currently used by radio inputs)
247
+ */
248
+ variant?: "default" | "card";
249
+ /**
250
+ * Whether past dates should be disabled (for date and daterange types)
251
+ */
252
+ disablePast?: boolean;
140
253
  /**
141
254
  * The default value config for the input field
142
255
  */
@@ -154,6 +267,28 @@ export type InputNodeData = BaseNodeData & {
154
267
  * HTTP configuration for the input field (used with type="http")
155
268
  */
156
269
  httpConfig?: HttpConfig;
270
+ /**
271
+ * Dynamic options source — fetches the option list from an HTTP endpoint
272
+ * at runtime. Used by option-based inputs (radio, checkbox, select, autocomplete).
273
+ * When set, overrides the static `options` array.
274
+ */
275
+ optionsSource?: OptionsSource;
276
+ /**
277
+ * Whether labels fetched from an API (dynamic `optionsSource` or an `http`
278
+ * input's `responseMapping`) are normalized to a uniform, readable Title Case
279
+ * form (e.g. "DUPONT JEAN" -> "Dupont Jean"). Manually-typed static option
280
+ * labels are never affected. Defaults to `true` when unset.
281
+ */
282
+ normalizeOptionLabels?: boolean;
283
+ /**
284
+ * Submit configuration for the input field (used with type="submit")
285
+ */
286
+ submitConfig?: SubmitConfig;
287
+ /**
288
+ * Optional illustrative image displayed above the input label.
289
+ * Stored as a base64 data URL (uploads are resized/compressed) or a remote URL.
290
+ */
291
+ image?: string;
157
292
  };
158
293
  export type UINodeData = BaseNodeData & {
159
294
  /**
@@ -164,7 +299,7 @@ export type UINodeData = BaseNodeData & {
164
299
  /**
165
300
  * Union type representing all possible node data types in the Treege system
166
301
  */
167
- export type TreegeNodeData = InputNodeData | UINodeData | FlowNodeData | GroupNodeData;
302
+ export type TreegeNodeData = InputNodeData | UINodeData | GroupNodeData;
168
303
  /**
169
304
  * A TreegeNode represents a node in the flowchart with specific data and properties
170
305
  */
@@ -0,0 +1,20 @@
1
+ /**
2
+ * A single editable key/value row. Editor forms work on lists of these while
3
+ * the user types (they tolerate transient empty keys), then serialize back to
4
+ * the persisted `Record<string, string>` form via `entriesToRecord`.
5
+ */
6
+ export type KeyValueEntry = {
7
+ key: string;
8
+ value: string;
9
+ };
10
+ /**
11
+ * Expand a `{ key: value }` record into editor rows, preserving insertion
12
+ * order. Returns an empty list for `undefined`.
13
+ */
14
+ export declare const recordToEntries: (record?: Record<string, string>) => KeyValueEntry[];
15
+ /**
16
+ * Collapse editor rows back into a `{ key: value }` record. Rows with an empty
17
+ * key are dropped (they're transient editing artifacts), and on duplicate keys
18
+ * the last occurrence wins.
19
+ */
20
+ export declare const entriesToRecord: (entries?: KeyValueEntry[]) => Record<string, string>;
@@ -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
@@ -0,0 +1,21 @@
1
+ import { Translatable } from '../types/translate';
2
+ /**
3
+ * Normalizes a raw label string into a uniform, readable Title Case form.
4
+ *
5
+ * Designed for labels coming from an API where casing is often inconsistent
6
+ * (ALL CAPS, snake_case, kebab-case, camelCase). Each word gets an uppercase
7
+ * first letter and a lowercase remainder, with separators collapsed to single
8
+ * spaces:
9
+ *
10
+ * "DUPONT JEAN" -> "Dupont Jean"
11
+ * "admin_user" -> "Admin User"
12
+ * "dateNaissance" -> "Date Naissance"
13
+ *
14
+ * Empty/whitespace-only input is returned unchanged.
15
+ */
16
+ export declare const normalizeLabel: (text: string) => string;
17
+ /**
18
+ * Applies {@link normalizeLabel} to every language entry of a `Translatable`
19
+ * label, preserving its shape.
20
+ */
21
+ export declare const normalizeTranslatableLabel: (label: Translatable) => Translatable;