treege 2.1.0 → 3.0.0-beta.10

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 (225) hide show
  1. package/README.md +448 -63
  2. package/dist/ThemeContext-BIvs8Kw-.js +758 -0
  3. package/dist/TreegeEditor--L4cWrS3.js +2152 -0
  4. package/dist/TreegeRenderer-BVaqgInZ.js +1405 -0
  5. package/dist/editor/components/data-display/logo.d.ts +5 -0
  6. package/dist/editor/components/input/ComboboxWithCreate.d.ts +21 -0
  7. package/dist/editor/constants/defaultNode.d.ts +11 -0
  8. package/dist/editor/constants/edgeTypes.d.ts +3 -0
  9. package/dist/editor/constants/nodeTypes.d.ts +6 -0
  10. package/dist/editor/context/TreegeEditorContext.d.ts +12 -0
  11. package/dist/editor/features/TreegeEditor/TreegeEditor.d.ts +3 -0
  12. package/dist/editor/features/TreegeEditor/edges/ConditionalEdge.d.ts +6 -0
  13. package/dist/editor/features/TreegeEditor/forms/FlowNodeForm.d.ts +2 -0
  14. package/dist/editor/features/TreegeEditor/forms/GroupNodeForm.d.ts +2 -0
  15. package/dist/editor/features/TreegeEditor/forms/HttpConfigForm.d.ts +7 -0
  16. package/dist/editor/features/TreegeEditor/forms/InputNodeForm.d.ts +2 -0
  17. package/dist/editor/features/TreegeEditor/forms/UINodeForm.d.ts +2 -0
  18. package/dist/editor/features/TreegeEditor/inputs/ComboboxPattern.d.ts +6 -0
  19. package/dist/editor/features/TreegeEditor/inputs/SelectInputType.d.ts +7 -0
  20. package/dist/editor/features/TreegeEditor/inputs/SelectLanguage.d.ts +7 -0
  21. package/dist/editor/features/TreegeEditor/inputs/SelectNodeGroup.d.ts +2 -0
  22. package/dist/editor/features/TreegeEditor/inputs/SelectNodeType.d.ts +2 -0
  23. package/dist/editor/features/TreegeEditor/nodes/FlowNode.d.ts +6 -0
  24. package/dist/editor/features/TreegeEditor/nodes/GroupNode.d.ts +6 -0
  25. package/dist/editor/features/TreegeEditor/nodes/InputNode.d.ts +6 -0
  26. package/dist/editor/features/TreegeEditor/nodes/UINode.d.ts +6 -0
  27. package/dist/editor/features/TreegeEditor/nodes/layout/NodeWrapper.d.ts +6 -0
  28. package/dist/editor/features/TreegeEditor/panel/ActionsPanel.d.ts +7 -0
  29. package/dist/editor/features/TreegeEditor/sheets/NodeActionsSheet.d.ts +2 -0
  30. package/dist/editor/hooks/useAvailableParentFields.d.ts +7 -0
  31. package/dist/editor/hooks/useEdgesSelection.d.ts +11 -0
  32. package/dist/editor/hooks/useFlowActions.d.ts +12 -0
  33. package/dist/editor/hooks/useFlowConnections.d.ts +15 -0
  34. package/dist/editor/hooks/useNodesSelection.d.ts +54 -0
  35. package/dist/editor/hooks/useTranslate.d.ts +19 -0
  36. package/dist/editor/index.d.ts +4 -0
  37. package/dist/editor/types/editor.d.ts +29 -0
  38. package/dist/editor.d.ts +2 -0
  39. package/dist/editor.js +7 -0
  40. package/dist/favicon.svg +12 -0
  41. package/dist/main.d.ts +7 -4
  42. package/dist/main.js +50 -7672
  43. package/dist/renderer/context/TreegeConfigContext.d.ts +39 -0
  44. package/dist/renderer/context/TreegeRendererContext.d.ts +25 -0
  45. package/dist/renderer/features/TreegeRenderer/native/TreegeRenderer.d.ts +13 -0
  46. package/dist/renderer/features/TreegeRenderer/native/components/DefaultFormWrapper.d.ts +7 -0
  47. package/dist/renderer/features/TreegeRenderer/native/components/DefaultGroup.d.ts +7 -0
  48. package/dist/renderer/features/TreegeRenderer/native/components/DefaultHttpInput.d.ts +15 -0
  49. package/dist/renderer/features/TreegeRenderer/native/components/DefaultInputs.d.ts +15 -0
  50. package/dist/renderer/features/TreegeRenderer/native/components/DefaultSubmitButton.d.ts +7 -0
  51. package/dist/renderer/features/TreegeRenderer/native/components/DefaultUI.d.ts +7 -0
  52. package/dist/renderer/features/TreegeRenderer/useTreegeRenderer.d.ts +50 -0
  53. package/dist/renderer/features/TreegeRenderer/web/TreegeRenderer.d.ts +3 -0
  54. package/dist/renderer/features/TreegeRenderer/web/components/DefaultFormWrapper.d.ts +6 -0
  55. package/dist/renderer/features/TreegeRenderer/web/components/DefaultGroup.d.ts +6 -0
  56. package/dist/renderer/features/TreegeRenderer/web/components/DefaultInputs.d.ts +20 -0
  57. package/dist/renderer/features/TreegeRenderer/web/components/DefaultSubmitButton.d.ts +9 -0
  58. package/dist/renderer/features/TreegeRenderer/web/components/DefaultSubmitButtonWrapper.d.ts +10 -0
  59. package/dist/renderer/features/TreegeRenderer/web/components/DefaultUI.d.ts +7 -0
  60. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultAddressInput.d.ts +3 -0
  61. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultAutocompleteInput.d.ts +3 -0
  62. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultCheckboxInput.d.ts +3 -0
  63. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultDateInput.d.ts +3 -0
  64. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultDateRangeInput.d.ts +3 -0
  65. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultFileInput.d.ts +3 -0
  66. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultHiddenInput.d.ts +3 -0
  67. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultHttpInput.d.ts +3 -0
  68. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultNumberInput.d.ts +3 -0
  69. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultPasswordInput.d.ts +3 -0
  70. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultRadioInput.d.ts +3 -0
  71. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultSelectInput.d.ts +3 -0
  72. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultSwitchInput.d.ts +3 -0
  73. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultTextAreaInput.d.ts +3 -0
  74. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultTextInput.d.ts +3 -0
  75. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultTimeInput.d.ts +3 -0
  76. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultTimeRangeInput.d.ts +3 -0
  77. package/dist/renderer/hooks/useTranslate.d.ts +24 -0
  78. package/dist/renderer/index.d.ts +17 -0
  79. package/dist/renderer/types/renderer.d.ts +202 -0
  80. package/dist/renderer/utils/conditions.d.ts +14 -0
  81. package/dist/renderer/utils/file.d.ts +22 -0
  82. package/dist/renderer/utils/flow.d.ts +91 -0
  83. package/dist/renderer/utils/form.d.ts +26 -0
  84. package/dist/renderer/utils/node.d.ts +16 -0
  85. package/dist/renderer.d.ts +2 -0
  86. package/dist/renderer.js +45 -0
  87. package/dist/shared/components/ui/badge.d.ts +9 -0
  88. package/dist/shared/components/ui/button.d.ts +10 -0
  89. package/dist/shared/components/ui/calendar.d.ts +8 -0
  90. package/dist/shared/components/ui/checkbox.d.ts +4 -0
  91. package/dist/shared/components/ui/collapsible.d.ts +5 -0
  92. package/dist/shared/components/ui/command.d.ts +18 -0
  93. package/dist/shared/components/ui/dialog.d.ts +15 -0
  94. package/dist/shared/components/ui/dropdown-menu.d.ts +25 -0
  95. package/dist/shared/components/ui/form.d.ts +5 -0
  96. package/dist/shared/components/ui/input.d.ts +3 -0
  97. package/dist/shared/components/ui/label.d.ts +4 -0
  98. package/dist/shared/components/ui/popover.d.ts +7 -0
  99. package/dist/shared/components/ui/radio-group.d.ts +5 -0
  100. package/dist/shared/components/ui/scroll-area.d.ts +5 -0
  101. package/dist/shared/components/ui/select.d.ts +15 -0
  102. package/dist/shared/components/ui/separator.d.ts +4 -0
  103. package/dist/shared/components/ui/sheet.d.ts +13 -0
  104. package/dist/shared/components/ui/sonner.d.ts +3 -0
  105. package/dist/shared/components/ui/switch.d.ts +4 -0
  106. package/dist/shared/components/ui/textarea.d.ts +3 -0
  107. package/dist/shared/components/ui/tooltip.d.ts +7 -0
  108. package/dist/shared/constants/inputType.d.ts +19 -0
  109. package/dist/shared/constants/languages.d.ts +10 -0
  110. package/dist/shared/constants/node.d.ts +6 -0
  111. package/dist/shared/constants/operator.d.ts +4 -0
  112. package/dist/shared/constants/pattern.d.ts +7 -0
  113. package/dist/shared/constants/uiType.d.ts +4 -0
  114. package/dist/shared/context/ThemeContext.d.ts +15 -0
  115. package/dist/shared/hooks/useTranslate.d.ts +23 -0
  116. package/dist/shared/lib/utils.d.ts +2 -0
  117. package/dist/shared/locales/ar.json.d.ts +229 -0
  118. package/dist/shared/locales/de.json.d.ts +229 -0
  119. package/dist/shared/locales/en.json.d.ts +229 -0
  120. package/dist/shared/locales/es.json.d.ts +229 -0
  121. package/dist/shared/locales/fr.json.d.ts +229 -0
  122. package/dist/shared/locales/it.json.d.ts +229 -0
  123. package/dist/shared/locales/pt.json.d.ts +229 -0
  124. package/dist/shared/types/edge.d.ts +34 -0
  125. package/dist/shared/types/languages.d.ts +5 -0
  126. package/dist/shared/types/node.d.ts +171 -0
  127. package/dist/shared/types/operator.d.ts +9 -0
  128. package/dist/shared/types/translate.d.ts +9 -0
  129. package/dist/shared/utils/nodeTypeGuards.d.ts +22 -0
  130. package/dist/shared/utils/translations.d.ts +30 -0
  131. package/package.json +70 -41
  132. package/CHANGELOG.md +0 -7
  133. package/dist/components/DataDisplay/Icons/TreePlusIcon.d.ts +0 -7
  134. package/dist/components/DataDisplay/Logo/Logo.d.ts +0 -2
  135. package/dist/components/DataDisplay/Tree/Tree.d.ts +0 -14
  136. package/dist/components/DataDisplay/Tree/useTree.d.ts +0 -12
  137. package/dist/components/DataDisplay/TreeCard/TreeCard.d.ts +0 -14
  138. package/dist/components/DataDisplay/ViewerJSON/ViewerJSON.d.ts +0 -6
  139. package/dist/components/DataDisplay/ViewerJSON/useViewerJSON.d.ts +0 -4
  140. package/dist/components/DataDisplay/ViewerJSONAction/ViewerJSONAction.d.ts +0 -6
  141. package/dist/components/DataDisplay/ViewerJSONAction/useViewerJSONAction.d.ts +0 -11
  142. package/dist/components/FeedBack/MainModal/MainModal.d.ts +0 -10
  143. package/dist/components/FeedBack/TreeModal/TreeModal.d.ts +0 -13
  144. package/dist/components/Layouts/Action/Action.d.ts +0 -6
  145. package/dist/components/Layouts/Header/Header.d.ts +0 -6
  146. package/dist/components/Layouts/Main/Main.d.ts +0 -6
  147. package/dist/components/Layouts/MosaicLayout/MosaicLayout.d.ts +0 -6
  148. package/dist/components/Layouts/Sidebar/Sidebar.d.ts +0 -6
  149. package/dist/components/Theme/DarkTheme/DarkTheme.d.ts +0 -6
  150. package/dist/config/i18n.config.d.ts +0 -2
  151. package/dist/config/query.config.d.ts +0 -3
  152. package/dist/config/test.config.d.ts +0 -0
  153. package/dist/config/theme.config.d.ts +0 -3
  154. package/dist/constants/colors.d.ts +0 -10
  155. package/dist/constants/fields.d.ts +0 -152
  156. package/dist/context/Auth/AuthContext.d.ts +0 -7
  157. package/dist/context/Auth/AuthProvider.d.ts +0 -7
  158. package/dist/features/Treege/Treege.d.ts +0 -24
  159. package/dist/features/Treege/components/Feedback/EndPointWarning.d.ts +0 -8
  160. package/dist/features/Treege/components/Forms/AssignValueToChildren/AssignValueToChildren.d.ts +0 -8
  161. package/dist/features/Treege/components/Forms/AssignValueToChildren/Examples/ObjectMappingExample.d.ts +0 -2
  162. package/dist/features/Treege/components/Forms/FormTreeCardDelete/FormTreeCardDelete.d.ts +0 -5
  163. package/dist/features/Treege/components/Forms/FormTreeCardDelete/useFormTreeCardDelete.d.ts +0 -5
  164. package/dist/features/Treege/components/Forms/FormTreeCardMutation/Fields/ApiFieldsConfigAccordion.d.ts +0 -32
  165. package/dist/features/Treege/components/Forms/FormTreeCardMutation/Fields/ExtraField.d.ts +0 -15
  166. package/dist/features/Treege/components/Forms/FormTreeCardMutation/Fields/FillerFieldAccordion.d.ts +0 -14
  167. package/dist/features/Treege/components/Forms/FormTreeCardMutation/FormTreeCardMutation.d.ts +0 -6
  168. package/dist/features/Treege/components/Forms/FormTreeCardMutation/useFormTreeCardMutation.d.ts +0 -110
  169. package/dist/features/Treege/components/Inputs/AutocompleteSelectType/AutocompleteSelectType.d.ts +0 -12
  170. package/dist/features/Treege/components/Inputs/AutocompleteSelectType/index.d.ts +0 -3
  171. package/dist/features/Treege/components/Inputs/AutocompleteSelectType/useAutocompleteSelectType.d.ts +0 -305
  172. package/dist/features/Treege/components/Inputs/ButtonCreateTree/ButtonCreateTree.d.ts +0 -2
  173. package/dist/features/Treege/components/Inputs/ButtonCreateTree/useButtonCreateTree.d.ts +0 -4
  174. package/dist/features/Treege/components/Inputs/FieldSelectAutocompleteCreatable.d.ts +0 -12
  175. package/dist/features/Treege/components/TreeCardContainer/TreeCardContainer.d.ts +0 -8
  176. package/dist/features/Treege/components/TreeCardContainer/useTreeCardContainer.d.ts +0 -10
  177. package/dist/features/Treege/components/TreeGrid/TreeGrid.d.ts +0 -2
  178. package/dist/features/Treege/components/TreeGrid/useTreeGrid.d.ts +0 -9
  179. package/dist/features/Treege/components/TreeNameTextField/TreeNameTextField.d.ts +0 -2
  180. package/dist/features/Treege/components/TreeNameTextField/index.d.ts +0 -2
  181. package/dist/features/Treege/components/TreeNameTextField/useTreeNameTextField.d.ts +0 -9
  182. package/dist/features/Treege/components/TreeSelect/TreeSelect.d.ts +0 -12
  183. package/dist/features/Treege/components/TreeSelect/index.d.ts +0 -2
  184. package/dist/features/Treege/components/TreeSelect/useTreeSelect.d.ts +0 -16
  185. package/dist/features/Treege/context/TreegeProvider.d.ts +0 -90
  186. package/dist/features/Treege/reducer/treeReducer.d.ts +0 -35
  187. package/dist/hooks/useTreegeContext/index.d.ts +0 -3
  188. package/dist/hooks/useTreegeContext/useTreegeContext.d.ts +0 -2
  189. package/dist/locales/en/button-en.d.ts +0 -11
  190. package/dist/locales/en/form-en.d.ts +0 -93
  191. package/dist/locales/en/modal-en.d.ts +0 -9
  192. package/dist/locales/en/snackMessage-en.d.ts +0 -13
  193. package/dist/locales/en/translation-en.d.ts +0 -30
  194. package/dist/locales/fr/button-fr.d.ts +0 -11
  195. package/dist/locales/fr/form-fr.d.ts +0 -93
  196. package/dist/locales/fr/modal-fr.d.ts +0 -9
  197. package/dist/locales/fr/snackMessage-fr.d.ts +0 -13
  198. package/dist/locales/fr/translation-fr.d.ts +0 -30
  199. package/dist/main.umd.cjs +0 -97
  200. package/dist/services/workflows/mutation/usePatchWorkflowsMutation.d.ts +0 -12
  201. package/dist/services/workflows/mutation/usePostWorkflowMutation.d.ts +0 -11
  202. package/dist/services/workflows/query/useWorkflowQuery.d.ts +0 -10
  203. package/dist/services/workflows/query/useWorkflowsQuery.d.ts +0 -10
  204. package/dist/utils/index.d.ts +0 -3
  205. package/dist/utils/tree/appendNode/appendNode.d.ts +0 -83
  206. package/dist/utils/tree/appendNode/test/mock.d.ts +0 -16
  207. package/dist/utils/tree/findNodeByUUIDInTree/findNodeByUUIDInTree.d.ts +0 -8
  208. package/dist/utils/tree/findNodeByUUIDInTree/test/mock.d.ts +0 -12
  209. package/dist/utils/tree/findParentNodeByUUIDInTree/findParentNodeByUUIDInTree.d.ts +0 -9
  210. package/dist/utils/tree/findParentNodeByUUIDInTree/test/mock.d.ts +0 -11
  211. package/dist/utils/tree/getAllAncestorFromTree/getAllAncestorFromTree.d.ts +0 -12
  212. package/dist/utils/tree/getAllAncestorFromTree/test/mock.d.ts +0 -3
  213. package/dist/utils/tree/getNode/getNode.d.ts +0 -9
  214. package/dist/utils/tree/getNode/test/mock.d.ts +0 -12
  215. package/dist/utils/tree/getTree/getTree.d.ts +0 -9
  216. package/dist/utils/tree/getTree/test/mock.d.ts +0 -13
  217. package/dist/utils/tree/getUniqueTagsInTree/getUniqueTagsInTree.d.ts +0 -7
  218. package/dist/utils/tree/getUniqueTagsInTree/test/getUniqueTagsInTree.d.ts +0 -1
  219. package/dist/utils/tree/getUniqueTagsInTree/test/mock.d.ts +0 -10
  220. package/dist/utils/tree/index.d.ts +0 -9
  221. package/dist/utils/tree/removeNode/removeNode.d.ts +0 -14
  222. package/dist/utils/tree/removeNode/test/mock.d.ts +0 -14
  223. package/dist/utils/tree/updateNodeInTree/test/mock.d.ts +0 -14
  224. package/dist/utils/tree/updateNodeInTree/updateNodeInTree.d.ts +0 -16
  225. package/dist/utils/uuid/getUUID.d.ts +0 -5
@@ -0,0 +1,39 @@
1
+ import { ReactNode } from 'react';
2
+ import { TreegeRendererComponents, TreegeRendererConfig } from '../types/renderer';
3
+ /**
4
+ * Hook to access the global Treege configuration
5
+ * Returns undefined if used outside of TreegeConfigProvider
6
+ */
7
+ export declare const useTreegeConfig: () => TreegeRendererConfig | undefined;
8
+ export type TreegeConfigProviderProps = {
9
+ children: ReactNode;
10
+ /**
11
+ * Custom component renderers (can be overridden per TreegeRenderer instance)
12
+ */
13
+ components?: TreegeRendererComponents;
14
+ /**
15
+ * Google Maps API key for address autocomplete
16
+ * If not provided, falls back to free Nominatim (OpenStreetMap)
17
+ */
18
+ googleApiKey?: string;
19
+ /**
20
+ * Default language for translations
21
+ * @default "en"
22
+ */
23
+ language?: string;
24
+ /**
25
+ * Default theme for all renderers
26
+ * @default "dark"
27
+ */
28
+ theme?: "dark" | "light";
29
+ /**
30
+ * Default validation mode
31
+ * @default "onSubmit"
32
+ */
33
+ validationMode?: "onChange" | "onSubmit";
34
+ };
35
+ /**
36
+ * Provider for global Treege configuration
37
+ * Wrap your app with this provider to set default options for all TreegeRenderer instances
38
+ */
39
+ export declare const TreegeConfigProvider: ({ children, components, googleApiKey, language, theme, validationMode, }: TreegeConfigProviderProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,25 @@
1
+ import { PropsWithChildren } from 'react';
2
+ import { FormValues } from '../types/renderer';
3
+ import { Flow } from '../../shared/types/node';
4
+ export interface TreegeRendererContextValue {
5
+ flows?: Flow | null;
6
+ formErrors: Record<string, string>;
7
+ formValues: FormValues;
8
+ googleApiKey?: string;
9
+ language: string;
10
+ setFieldValue: (fieldName: string, value: unknown) => void;
11
+ }
12
+ export interface TreegeRendererProviderProps extends PropsWithChildren {
13
+ value: TreegeRendererContextValue;
14
+ }
15
+ export declare const TreegeRendererContext: import('react').Context<TreegeRendererContextValue | null>;
16
+ export declare const TreegeRendererProvider: ({ children, value }: TreegeRendererProviderProps) => import("react/jsx-runtime").JSX.Element;
17
+ export declare const useTreegeRendererContext: () => {
18
+ edges: import('@xyflow/react').Edge[];
19
+ flows?: Flow | null;
20
+ formErrors: Record<string, string>;
21
+ formValues: FormValues;
22
+ googleApiKey?: string;
23
+ language: string;
24
+ setFieldValue: (fieldName: string, value: unknown) => void;
25
+ };
@@ -0,0 +1,13 @@
1
+ /**
2
+ * TreegeRenderer for React Native
3
+ *
4
+ * TODO: Implement React Native version of TreegeRenderer
5
+ * This will use React Native components (View, Text, TextInput, etc.) instead of HTML elements
6
+ *
7
+ * The implementation should:
8
+ * - Import and use useTreegeRenderer hook (platform-agnostic)
9
+ * - Import and use utils from @/renderer/utils (platform-agnostic)
10
+ * - Use React Native UI components instead of web components
11
+ * - Share the same props interface (TreegeRendererProps)
12
+ */
13
+ export {};
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Default Form Wrapper for React Native
3
+ *
4
+ * TODO: Implement React Native version of FormWrapper
5
+ * Should use View component and handle form submission with native patterns
6
+ */
7
+ export {};
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Default Group Component for React Native
3
+ *
4
+ * TODO: Implement React Native version of Group component
5
+ * Should use View component with proper styling for grouping
6
+ */
7
+ export {};
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Default Input Components for React Native
3
+ *
4
+ * TODO: Implement React Native versions of all input renderers
5
+ * This should mirror the web version but use React Native components:
6
+ * - TextInput instead of <input>
7
+ * - Picker instead of <select>
8
+ * - Switch instead of <input type="checkbox">
9
+ * - etc.
10
+ *
11
+ * Should export:
12
+ * - defaultInputRenderers object with all input types
13
+ * - Individual input components (DefaultTextInput, DefaultNumberInput, etc.)
14
+ */
15
+ export {};
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Default Input Components for React Native
3
+ *
4
+ * TODO: Implement React Native versions of all input renderers
5
+ * This should mirror the web version but use React Native components:
6
+ * - TextInput instead of <input>
7
+ * - Picker instead of <select>
8
+ * - Switch instead of <input type="checkbox">
9
+ * - etc.
10
+ *
11
+ * Should export:
12
+ * - defaultInputRenderers object with all input types
13
+ * - Individual input components (DefaultTextInput, DefaultNumberInput, etc.)
14
+ */
15
+ export {};
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Default Submit Button for React Native
3
+ *
4
+ * TODO: Implement React Native version of SubmitButton
5
+ * Should use Pressable or TouchableOpacity component
6
+ */
7
+ export {};
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Default UI Components for React Native
3
+ *
4
+ * TODO: Implement React Native versions of UI components (Title, Description, Divider, etc.)
5
+ * Should use Text, View and other React Native components
6
+ */
7
+ export {};
@@ -0,0 +1,50 @@
1
+ import { Node } from '@xyflow/react';
2
+ import { FormValues } from '../../types/renderer';
3
+ import { Flow, TreegeNodeData } from '../../../shared/types/node';
4
+ /**
5
+ * PURE STATE LOGIC HOOK
6
+ *
7
+ * This hook manages the internal form state and visibility logic.
8
+ * It contains NO side effects (no useEffect).
9
+ * All state is keyed by nodeId for uniqueness.
10
+ *
11
+ * Responsibilities:
12
+ * - Form values state (keyed by nodeId)
13
+ * - Errors state
14
+ * - Node visibility calculation (progressive rendering)
15
+ * - Form validation (built-in: required, pattern)
16
+ * - Submit button state (combines end-of-path detection + form validity)
17
+ *
18
+ * NOT responsible for:
19
+ * - Export/conversion to external format (done in component)
20
+ * - Side effects like onChange callbacks (done in component)
21
+ * - Custom validation (passed to component)
22
+ */
23
+ /**
24
+ * Custom hook for TreegeRenderer - Pure state logic only
25
+ *
26
+ * @param flows - Flow or array of flows (can be null/undefined)
27
+ * @param initialValues - Initial form values (will be merged with node defaults)
28
+ * @param language - Preferred language for translations (defaults to 'en')
29
+ * @returns Pure state and computed values (no side effects)
30
+ */
31
+ export declare const useTreegeRenderer: (flows: Flow | Flow[] | null | undefined, initialValues?: FormValues, language?: string) => {
32
+ canSubmit: boolean;
33
+ formErrors: Record<string, string>;
34
+ formValues: FormValues;
35
+ inputNodes: Node<import('../../../shared/types/node').InputNodeData>[];
36
+ mergedFlow: Flow;
37
+ missingRequiredFields: string[];
38
+ setFieldValue: (fieldName: string, value: unknown) => void;
39
+ setFormErrors: import('react').Dispatch<import('react').SetStateAction<Record<string, string>>>;
40
+ t: (key?: import('../../../main').Translatable | import('../../../main').TranslationKey | string) => string;
41
+ validateForm: (customValidate?: (values: FormValues, visibleNodesList: Node<TreegeNodeData>[]) => Record<string, string>) => {
42
+ errors: {
43
+ [x: string]: string;
44
+ };
45
+ hasCustomErrors: boolean;
46
+ isValid: boolean;
47
+ };
48
+ visibleNodes: Node<TreegeNodeData>[];
49
+ visibleRootNodes: Node<TreegeNodeData>[];
50
+ };
@@ -0,0 +1,3 @@
1
+ import { TreegeRendererProps } from '../../../types/renderer';
2
+ declare const TreegeRenderer: ({ components, flows, googleApiKey, initialValues, language, onChange, onSubmit, theme, validate, validationMode, }: TreegeRendererProps) => import("react/jsx-runtime").JSX.Element;
3
+ export default TreegeRenderer;
@@ -0,0 +1,6 @@
1
+ import { FormEvent, ReactNode } from 'react';
2
+ declare const DefaultFormWrapper: ({ children, onSubmit }: {
3
+ children: ReactNode;
4
+ onSubmit: (e: FormEvent) => void;
5
+ }) => import("react/jsx-runtime").JSX.Element;
6
+ export default DefaultFormWrapper;
@@ -0,0 +1,6 @@
1
+ import { ReactNode } from 'react';
2
+ import { NodeRenderProps } from '../../../../types/renderer';
3
+ export declare const DefaultGroup: ({ node, children }: NodeRenderProps & {
4
+ children: ReactNode;
5
+ }) => import("react/jsx-runtime").JSX.Element;
6
+ export default DefaultGroup;
@@ -0,0 +1,20 @@
1
+ import { default as DefaultAddressInput } from './inputs/DefaultAddressInput';
2
+ import { default as DefaultAutocompleteInput } from './inputs/DefaultAutocompleteInput';
3
+ import { default as DefaultCheckboxInput } from './inputs/DefaultCheckboxInput';
4
+ import { default as DefaultDateInput } from './inputs/DefaultDateInput';
5
+ import { default as DefaultDateRangeInput } from './inputs/DefaultDateRangeInput';
6
+ import { default as DefaultFileInput } from './inputs/DefaultFileInput';
7
+ import { default as DefaultHiddenInput } from './inputs/DefaultHiddenInput';
8
+ import { default as DefaultHttpInput } from './inputs/DefaultHttpInput';
9
+ import { default as DefaultNumberInput } from './inputs/DefaultNumberInput';
10
+ import { default as DefaultPasswordInput } from './inputs/DefaultPasswordInput';
11
+ import { default as DefaultRadioInput } from './inputs/DefaultRadioInput';
12
+ import { default as DefaultSelectInput } from './inputs/DefaultSelectInput';
13
+ import { default as DefaultSwitchInput } from './inputs/DefaultSwitchInput';
14
+ import { default as DefaultTextAreaInput } from './inputs/DefaultTextAreaInput';
15
+ import { default as DefaultTextInput } from './inputs/DefaultTextInput';
16
+ import { default as DefaultTimeInput } from './inputs/DefaultTimeInput';
17
+ import { default as DefaultTimeRangeInput } from './inputs/DefaultTimeRangeInput';
18
+ import { InputRenderers } from '../../../../types/renderer';
19
+ export { DefaultAddressInput, DefaultAutocompleteInput, DefaultCheckboxInput, DefaultDateInput, DefaultDateRangeInput, DefaultFileInput, DefaultHiddenInput, DefaultHttpInput, DefaultNumberInput, DefaultPasswordInput, DefaultRadioInput, DefaultSelectInput, DefaultSwitchInput, DefaultTextAreaInput, DefaultTextInput, DefaultTimeInput, DefaultTimeRangeInput, };
20
+ export declare const defaultInputRenderers: InputRenderers;
@@ -0,0 +1,9 @@
1
+ import { ButtonHTMLAttributes } from 'react';
2
+ export interface SubmitButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
3
+ label?: string;
4
+ }
5
+ /**
6
+ * Default submit button
7
+ */
8
+ declare const DefaultSubmitButton: ({ label, ...props }: SubmitButtonProps) => import("react/jsx-runtime").JSX.Element;
9
+ export default DefaultSubmitButton;
@@ -0,0 +1,10 @@
1
+ import { ReactNode } from 'react';
2
+ export interface SubmitButtonWrapperProps {
3
+ children: ReactNode;
4
+ missingFields?: string[];
5
+ }
6
+ /**
7
+ * Default submit button wrapper with tooltip for missing fields
8
+ */
9
+ declare const DefaultSubmitButtonWrapper: ({ children, missingFields }: SubmitButtonWrapperProps) => string | number | bigint | boolean | import("react/jsx-runtime").JSX.Element | Iterable<ReactNode> | Promise<string | number | bigint | boolean | import('react').ReactPortal | import('react').ReactElement<unknown, string | import('react').JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | null | undefined;
10
+ export default DefaultSubmitButtonWrapper;
@@ -0,0 +1,7 @@
1
+ import { UiRenderProps } from '../../../../types/renderer';
2
+ export declare const Divider: ({ node }: UiRenderProps) => import("react/jsx-runtime").JSX.Element;
3
+ export declare const Title: ({ node }: UiRenderProps) => import("react/jsx-runtime").JSX.Element;
4
+ export declare const defaultUI: {
5
+ divider: ({ node }: UiRenderProps) => import("react/jsx-runtime").JSX.Element;
6
+ title: ({ node }: UiRenderProps) => import("react/jsx-runtime").JSX.Element;
7
+ };
@@ -0,0 +1,3 @@
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultAddressInput: ({ node, value, setValue, error, label, placeholder, helperText }: InputRenderProps<"address">) => import("react/jsx-runtime").JSX.Element;
3
+ export default DefaultAddressInput;
@@ -0,0 +1,3 @@
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultAutocompleteInput: ({ node, value, setValue, error, label, placeholder, helperText }: InputRenderProps<"autocomplete">) => import("react/jsx-runtime").JSX.Element;
3
+ export default DefaultAutocompleteInput;
@@ -0,0 +1,3 @@
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultCheckboxInput: ({ node, value, setValue, error, label, helperText }: InputRenderProps<"checkbox">) => import("react/jsx-runtime").JSX.Element;
3
+ export default DefaultCheckboxInput;
@@ -0,0 +1,3 @@
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultDateInput: ({ node, value, setValue, error, label, placeholder, helperText }: InputRenderProps<"date">) => import("react/jsx-runtime").JSX.Element;
3
+ export default DefaultDateInput;
@@ -0,0 +1,3 @@
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultDateRangeInput: ({ node, value, setValue, error, label, helperText }: InputRenderProps<"daterange">) => import("react/jsx-runtime").JSX.Element;
3
+ export default DefaultDateRangeInput;
@@ -0,0 +1,3 @@
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultFileInput: ({ node, setValue, error, label, placeholder, helperText }: InputRenderProps<"file">) => import("react/jsx-runtime").JSX.Element;
3
+ export default DefaultFileInput;
@@ -0,0 +1,3 @@
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultHiddenInput: ({ node, value }: InputRenderProps<"hidden">) => import("react/jsx-runtime").JSX.Element;
3
+ export default DefaultHiddenInput;
@@ -0,0 +1,3 @@
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultHttpInput: ({ node, value, setValue, error, label, placeholder, helperText }: InputRenderProps<"http">) => import("react/jsx-runtime").JSX.Element;
3
+ export default DefaultHttpInput;
@@ -0,0 +1,3 @@
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultNumberInput: ({ node, value, setValue, error, label, placeholder, helperText }: InputRenderProps<"number">) => import("react/jsx-runtime").JSX.Element;
3
+ export default DefaultNumberInput;
@@ -0,0 +1,3 @@
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultPasswordInput: ({ node, value, setValue, error, label, placeholder, helperText }: InputRenderProps<"password">) => import("react/jsx-runtime").JSX.Element;
3
+ export default DefaultPasswordInput;
@@ -0,0 +1,3 @@
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultRadioInput: ({ node, value, setValue, error, label, helperText }: InputRenderProps<"radio">) => import("react/jsx-runtime").JSX.Element;
3
+ export default DefaultRadioInput;
@@ -0,0 +1,3 @@
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultSelectInput: ({ node, value, setValue, error, label, placeholder, helperText }: InputRenderProps<"select">) => import("react/jsx-runtime").JSX.Element;
3
+ export default DefaultSelectInput;
@@ -0,0 +1,3 @@
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultSwitchInput: ({ node, value, setValue, error, label, helperText }: InputRenderProps<"switch">) => import("react/jsx-runtime").JSX.Element;
3
+ export default DefaultSwitchInput;
@@ -0,0 +1,3 @@
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultTextAreaInput: ({ node, value, setValue, error, label, placeholder, helperText }: InputRenderProps<"textarea">) => import("react/jsx-runtime").JSX.Element;
3
+ export default DefaultTextAreaInput;
@@ -0,0 +1,3 @@
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultTextInput: ({ node, value, setValue, error, label, placeholder, helperText }: InputRenderProps<"text">) => import("react/jsx-runtime").JSX.Element;
3
+ export default DefaultTextInput;
@@ -0,0 +1,3 @@
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultTimeInput: ({ node, value, setValue, error, label, placeholder, helperText }: InputRenderProps<"time">) => import("react/jsx-runtime").JSX.Element;
3
+ export default DefaultTimeInput;
@@ -0,0 +1,3 @@
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultTimeRangeInput: ({ node, value, setValue, error, label, helperText }: InputRenderProps<"timerange">) => import("react/jsx-runtime").JSX.Element;
3
+ export default DefaultTimeRangeInput;
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Hook for translating text in the renderer with context-aware language preference.
3
+ *
4
+ * This hook uses the language from TreegeRendererContext (or explicit override) and delegates to the shared useTranslate hook.
5
+ *
6
+ * @param language - Optional language override. If not provided, uses language from context.
7
+ * @returns A function that translates either a translation key or a Translatable object
8
+ *
9
+ * @example
10
+ * // Static translation (from translation files)
11
+ * const t = useTranslate();
12
+ * const errorMsg = t("validation.required"); // "This field is required"
13
+ *
14
+ * @example
15
+ * // Dynamic translation (from node data)
16
+ * const t = useTranslate();
17
+ * const label = t(node.data.label); // Translates user-defined content
18
+ *
19
+ * @example
20
+ * // With explicit language
21
+ * const t = useTranslate("fr");
22
+ * const errorMsg = t("validation.required"); // "Ce champ est requis"
23
+ */
24
+ export declare const useTranslate: (language?: string) => (key?: import('../../main').Translatable | import('../../main').TranslationKey | string) => string;
@@ -0,0 +1,17 @@
1
+ export { TreegeConfigProvider, useTreegeConfig } from './context/TreegeConfigContext';
2
+ export { useTreegeRenderer } from './features/TreegeRenderer/useTreegeRenderer';
3
+ export * from './features/TreegeRenderer/web/components/DefaultFormWrapper';
4
+ export * from './features/TreegeRenderer/web/components/DefaultGroup';
5
+ export * from './features/TreegeRenderer/web/components/DefaultInputs';
6
+ export * from './features/TreegeRenderer/web/components/DefaultSubmitButton';
7
+ export * from './features/TreegeRenderer/web/components/DefaultUI';
8
+ export * from './features/TreegeRenderer/web/TreegeRenderer';
9
+ export { default as TreegeRenderer } from './features/TreegeRenderer/web/TreegeRenderer';
10
+ export type { TreegeRendererConfig } from './types/renderer';
11
+ export * from './types/renderer';
12
+ export * from './utils/conditions';
13
+ export * from './utils/file';
14
+ export * from './utils/flow';
15
+ export * from './utils/form';
16
+ export { ThemeProvider, useTheme } from '../shared/context/ThemeContext';
17
+ export { getTranslatedText } from '../shared/utils/translations';
@@ -0,0 +1,202 @@
1
+ import { Node } from '@xyflow/react';
2
+ import { FormEvent, ReactNode } from 'react';
3
+ import { SerializableFile } from '../utils/file';
4
+ import { Flow, InputNodeData, InputType, TreegeNodeData, UINodeData, UIType } from '../../shared/types/node';
5
+ /**
6
+ * Type mapping for input values based on input type
7
+ */
8
+ export type InputValueTypeMap = {
9
+ address: string;
10
+ autocomplete: string;
11
+ checkbox: boolean | string[];
12
+ date: string;
13
+ daterange: [string, string] | [string | undefined, string | undefined] | null;
14
+ file: SerializableFile | SerializableFile[] | null;
15
+ hidden: string;
16
+ http: string | string[];
17
+ number: number | null;
18
+ password: string;
19
+ radio: string;
20
+ select: string | string[];
21
+ switch: boolean;
22
+ text: string;
23
+ textarea: string;
24
+ time: string;
25
+ timerange: [string, string] | [string | undefined, string | undefined] | null;
26
+ };
27
+ /**
28
+ * Form values stored during rendering
29
+ */
30
+ export type FormValues = Record<string, any>;
31
+ /**
32
+ * Union of all possible input value types
33
+ */
34
+ export type InputValue = string | number | boolean | string[] | SerializableFile | SerializableFile[] | [string, string] | [string | undefined, string | undefined] | null;
35
+ /**
36
+ * Props for input components with dynamic value typing
37
+ * All form state is provided via props for easier custom component implementation
38
+ */
39
+ export type InputRenderProps<T extends InputType = InputType> = {
40
+ /**
41
+ * The node data for this input field
42
+ */
43
+ node: Node<InputNodeData>;
44
+ /**
45
+ * Current value of the input field (typed based on input type when T is specified)
46
+ */
47
+ value: InputValueTypeMap[T];
48
+ /**
49
+ * Function to update the input value
50
+ * @param value - The new value (typed based on input type when T is specified)
51
+ */
52
+ setValue: (value: InputValueTypeMap[T]) => void;
53
+ /**
54
+ * Validation error message for this field (if any)
55
+ */
56
+ error?: string;
57
+ /**
58
+ * Translated label (already processed with current language)
59
+ */
60
+ label?: string;
61
+ /**
62
+ * Translated placeholder (already processed with current language)
63
+ */
64
+ placeholder?: string;
65
+ /**
66
+ * Translated helper text (already processed with current language)
67
+ */
68
+ helperText?: string;
69
+ };
70
+ export type UiRenderProps = {
71
+ node: Node<UINodeData>;
72
+ };
73
+ /**
74
+ * Props for UI/Group components (use useTreegeContext for state)
75
+ */
76
+ export type NodeRenderProps = {
77
+ node: Node<TreegeNodeData>;
78
+ };
79
+ /**
80
+ * Type-safe input renderers mapping
81
+ * Each input type gets its own properly typed InputRenderProps
82
+ */
83
+ export type InputRenderers = {
84
+ [K in InputType]?: (props: InputRenderProps<K>) => ReactNode;
85
+ };
86
+ /**
87
+ * Custom renderer components
88
+ */
89
+ export type TreegeRendererComponents = {
90
+ /**
91
+ * Custom input renderers by input type
92
+ * Each renderer receives properly typed value and setValue based on the input type
93
+ */
94
+ inputs?: InputRenderers;
95
+ /**
96
+ * Custom UI node renderers by UI type
97
+ */
98
+ ui?: Partial<Record<UIType, (props: NodeRenderProps) => ReactNode>>;
99
+ /**
100
+ * Custom group container renderer
101
+ */
102
+ group?: (props: NodeRenderProps) => ReactNode;
103
+ /**
104
+ * Custom form wrapper
105
+ */
106
+ form?: (props: {
107
+ children: ReactNode;
108
+ onSubmit: (e: FormEvent) => void;
109
+ }) => ReactNode;
110
+ /**
111
+ * Custom submit button (pure button without wrapper)
112
+ */
113
+ submitButton?: (props: {
114
+ label?: string;
115
+ }) => ReactNode;
116
+ /**
117
+ * Custom submit button wrapper (e.g., for tooltip with missing fields)
118
+ */
119
+ submitButtonWrapper?: (props: {
120
+ children: ReactNode;
121
+ missingFields?: string[];
122
+ }) => ReactNode;
123
+ };
124
+ /**
125
+ * Configuration options that can be set globally via TreegeConfigProvider
126
+ * or locally via TreegeRenderer config prop
127
+ */
128
+ export type TreegeRendererConfig = {
129
+ /**
130
+ * Custom component renderers
131
+ */
132
+ components?: TreegeRendererComponents;
133
+ /**
134
+ * Google Maps API key for address autocomplete
135
+ * If not provided, falls back to free Nominatim (OpenStreetMap)
136
+ */
137
+ googleApiKey?: string;
138
+ /**
139
+ * Current language for translations
140
+ * @default "en"
141
+ */
142
+ language?: string;
143
+ /**
144
+ * Theme for the renderer
145
+ * @default "dark"
146
+ */
147
+ theme?: "dark" | "light";
148
+ /**
149
+ * Validation mode
150
+ * @default "onSubmit"
151
+ */
152
+ validationMode?: "onChange" | "onSubmit";
153
+ };
154
+ /**
155
+ * Props for the TreegeRenderer component
156
+ */
157
+ export type TreegeRendererProps = {
158
+ /**
159
+ * Custom component renderers
160
+ */
161
+ components?: TreegeRendererComponents;
162
+ /**
163
+ * Flow or array of flows
164
+ * - If a single Flow: renders that flow
165
+ * - If an array: first flow is the main flow, others are sub-flows available for FlowNodes
166
+ */
167
+ flows?: Flow | Flow[] | null;
168
+ /**
169
+ * Google Maps API key for address autocomplete
170
+ * If not provided, falls back to free Nominatim (OpenStreetMap)
171
+ */
172
+ googleApiKey?: string;
173
+ /**
174
+ * Initial form values
175
+ */
176
+ initialValues?: FormValues;
177
+ /**
178
+ * Current language for translations
179
+ */
180
+ language?: string;
181
+ /**
182
+ * Callback when form values change
183
+ */
184
+ onChange?: (values: FormValues) => void;
185
+ /**
186
+ * Callback when form is submitted
187
+ */
188
+ onSubmit?: (values: FormValues) => void;
189
+ /**
190
+ * Theme for the renderer
191
+ * @default "dark"
192
+ */
193
+ theme?: "dark" | "light";
194
+ /**
195
+ * Custom validation function
196
+ */
197
+ validate?: (values: FormValues, nodes: Node<TreegeNodeData>[]) => Record<string, string>;
198
+ /**
199
+ * Validation mode
200
+ */
201
+ validationMode?: "onChange" | "onSubmit";
202
+ };
@@ -0,0 +1,14 @@
1
+ import { Node } from '@xyflow/react';
2
+ import { FormValues } from '../types/renderer';
3
+ import { EdgeCondition } from '../../shared/types/edge';
4
+ import { TreegeNodeData } from '../../shared/types/node';
5
+ /**
6
+ * Evaluates a single condition against form values
7
+ * Note: The field parameter can be either a field name OR a node ID
8
+ */
9
+ export declare const evaluateCondition: (condition: EdgeCondition, formValues: FormValues, nodeMap?: Map<string, Node<TreegeNodeData>>) => boolean;
10
+ /**
11
+ * Evaluates multiple conditions with logical operators (AND/OR)
12
+ * Returns true if all conditions are met according to their logical operators
13
+ */
14
+ export declare const evaluateConditions: (conditions: EdgeCondition[] | undefined, formValues: FormValues, nodeMap?: Map<string, Node<TreegeNodeData>>) => boolean;