treege 3.0.0-beta.8 → 3.0.0-beta40

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 (137) hide show
  1. package/LICENSE +18 -12
  2. package/README.md +213 -30
  3. package/dist/DefaultInputs-8yJMEyMh.js +1557 -0
  4. package/dist/ThemeContext-Ejgu9Mwr.js +1603 -0
  5. package/dist/editor/components/input/ComboboxWithCreate.d.ts +2 -1
  6. package/dist/editor/constants/defaultNode.d.ts +1 -1
  7. package/dist/editor/constants/edgeTypes.d.ts +3 -2
  8. package/dist/editor/constants/inputTypeIcons.d.ts +3 -0
  9. package/dist/editor/constants/nodeSpacing.d.ts +33 -0
  10. package/dist/editor/constants/nodeTypes.d.ts +5 -5
  11. package/dist/editor/context/TreegeEditorContext.d.ts +53 -1
  12. package/dist/editor/features/TreegeEditor/TreegeEditor.d.ts +1 -1
  13. package/dist/editor/features/TreegeEditor/dialogs/ChangeNodeTypeDialog.d.ts +2 -0
  14. package/dist/editor/features/TreegeEditor/dialogs/DeleteNodeDialog.d.ts +2 -0
  15. package/dist/editor/features/TreegeEditor/edges/ConditionalEdge.d.ts +2 -2
  16. package/dist/editor/features/TreegeEditor/edges/DefaultEdge.d.ts +3 -0
  17. package/dist/editor/features/TreegeEditor/forms/SubmitConfigForm.d.ts +7 -0
  18. package/dist/editor/features/TreegeEditor/inputs/ComboboxPattern.d.ts +2 -1
  19. package/dist/editor/features/TreegeEditor/inputs/OptionImageField.d.ts +6 -0
  20. package/dist/editor/features/TreegeEditor/nodes/GroupNode.d.ts +2 -2
  21. package/dist/editor/features/TreegeEditor/nodes/TreegeNode.d.ts +6 -0
  22. package/dist/editor/features/TreegeEditor/nodes/components/BottomHandleDropdown.d.ts +6 -0
  23. package/dist/editor/features/TreegeEditor/nodes/components/NodeInputPreview.d.ts +7 -0
  24. package/dist/editor/features/TreegeEditor/nodes/components/NodeLabelInput.d.ts +9 -0
  25. package/dist/editor/features/TreegeEditor/nodes/components/NodeMoreMenu.d.ts +6 -0
  26. package/dist/editor/features/TreegeEditor/nodes/components/NodeTypeBadge.d.ts +7 -0
  27. package/dist/editor/features/TreegeEditor/nodes/components/OptionsEditor.d.ts +7 -0
  28. package/dist/editor/features/TreegeEditor/nodes/components/RequiredBadge.d.ts +6 -0
  29. package/dist/editor/features/TreegeEditor/nodes/layout/NodeWrapper.d.ts +2 -1
  30. package/dist/editor/features/TreegeEditor/panel/AIGeneratorDialog.d.ts +16 -0
  31. package/dist/editor/hooks/useAutoLayout.d.ts +15 -0
  32. package/dist/editor/hooks/useFlowActions.d.ts +5 -2
  33. package/dist/editor/hooks/useFlowConnections.d.ts +4 -0
  34. package/dist/editor/hooks/useNodesSelection.d.ts +5 -5
  35. package/dist/editor/types/ai.d.ts +65 -0
  36. package/dist/editor/types/editor.d.ts +9 -8
  37. package/dist/editor/utils/aiFlowGenerator.d.ts +5 -0
  38. package/dist/editor/utils/dagreLayout.d.ts +17 -0
  39. package/dist/editor/utils/edge.d.ts +14 -0
  40. package/dist/editor/utils/image.d.ts +7 -0
  41. package/dist/editor/utils/inputTypeIcon.d.ts +6 -0
  42. package/dist/editor-DWJ95r4g.js +4001 -0
  43. package/dist/editor.js +3 -7
  44. package/dist/main.js +4 -52
  45. package/dist/renderer/context/TreegeRendererContext.d.ts +4 -1
  46. package/dist/renderer/features/TreegeRenderer/native/TreegeRenderer.d.ts +19 -11
  47. package/dist/renderer/features/TreegeRenderer/native/components/DefaultFormWrapper.d.ts +7 -7
  48. package/dist/renderer/features/TreegeRenderer/native/components/DefaultGroup.d.ts +7 -7
  49. package/dist/renderer/features/TreegeRenderer/native/components/DefaultInputs.d.ts +21 -15
  50. package/dist/renderer/features/TreegeRenderer/native/components/DefaultSubmitButton.d.ts +9 -7
  51. package/dist/renderer/features/TreegeRenderer/native/components/DefaultSubmitButtonWrapper.d.ts +11 -0
  52. package/dist/renderer/features/TreegeRenderer/native/components/DefaultUI.d.ts +8 -7
  53. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultAddressInput.d.ts +3 -0
  54. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultAutocompleteInput.d.ts +3 -0
  55. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultCheckboxInput.d.ts +3 -0
  56. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultDateInput.d.ts +3 -0
  57. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultDateRangeInput.d.ts +3 -0
  58. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultFileInput.d.ts +3 -0
  59. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultHiddenInput.d.ts +3 -0
  60. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultHttpInput.d.ts +3 -0
  61. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultNumberInput.d.ts +3 -0
  62. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultPasswordInput.d.ts +3 -0
  63. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultRadioInput.d.ts +3 -0
  64. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultSelectInput.d.ts +3 -0
  65. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultSwitchInput.d.ts +3 -0
  66. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultTextInput.d.ts +3 -0
  67. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultTextareaInput.d.ts +3 -0
  68. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultTimeInput.d.ts +3 -0
  69. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultTimeRangeInput.d.ts +3 -0
  70. package/dist/renderer/features/TreegeRenderer/useTreegeRenderer.d.ts +84 -24
  71. package/dist/renderer/features/TreegeRenderer/web/TreegeRenderer.d.ts +1 -1
  72. package/dist/renderer/features/TreegeRenderer/web/components/DefaultSubmitButton.d.ts +1 -1
  73. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultAddressInput.d.ts +1 -1
  74. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultAutocompleteInput.d.ts +1 -1
  75. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultCheckboxInput.d.ts +1 -1
  76. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultDateInput.d.ts +1 -1
  77. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultDateRangeInput.d.ts +1 -1
  78. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultFileInput.d.ts +1 -1
  79. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultHiddenInput.d.ts +1 -1
  80. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultHttpInput.d.ts +1 -1
  81. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultNumberInput.d.ts +1 -1
  82. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultPasswordInput.d.ts +1 -1
  83. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultRadioInput.d.ts +1 -1
  84. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultSelectInput.d.ts +1 -1
  85. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultSubmitInput.d.ts +3 -0
  86. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultSwitchInput.d.ts +1 -1
  87. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultTextAreaInput.d.ts +1 -1
  88. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultTextInput.d.ts +1 -1
  89. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultTimeInput.d.ts +1 -1
  90. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultTimeRangeInput.d.ts +1 -1
  91. package/dist/renderer/hooks/useRenderNode.d.ts +55 -0
  92. package/dist/renderer/hooks/useSubmitHandler.d.ts +34 -0
  93. package/dist/renderer/hooks/useTranslate.d.ts +6 -4
  94. package/dist/renderer/index.d.ts +2 -0
  95. package/dist/renderer/index.native.d.ts +19 -0
  96. package/dist/renderer/types/renderer.d.ts +60 -6
  97. package/dist/renderer/utils/form.d.ts +22 -2
  98. package/dist/renderer/utils/http.d.ts +101 -0
  99. package/dist/renderer/utils/node.d.ts +18 -1
  100. package/dist/renderer/utils/sanitize.d.ts +85 -0
  101. package/dist/renderer/utils/sanitize.native.d.ts +69 -0
  102. package/dist/renderer/utils/submit.d.ts +47 -0
  103. package/dist/renderer-native.d.ts +2 -0
  104. package/dist/renderer-native.js +3496 -0
  105. package/dist/renderer.js +3 -45
  106. package/dist/shared/components/ui/badge.d.ts +2 -2
  107. package/dist/shared/components/ui/button.d.ts +2 -2
  108. package/dist/shared/components/ui/collapsible.d.ts +1 -1
  109. package/dist/shared/components/ui/command.d.ts +1 -1
  110. package/dist/shared/components/ui/dropdown-menu.d.ts +1 -1
  111. package/dist/shared/components/ui/form.d.ts +1 -1
  112. package/dist/shared/components/ui/popover.d.ts +4 -2
  113. package/dist/shared/components/ui/select.d.ts +3 -1
  114. package/dist/shared/components/ui/sheet.d.ts +1 -1
  115. package/dist/shared/components/ui/tooltip.d.ts +1 -1
  116. package/dist/shared/constants/colors.d.ts +45 -0
  117. package/dist/shared/constants/inputType.d.ts +1 -0
  118. package/dist/shared/context/ThemeContext.d.ts +2 -0
  119. package/dist/shared/context/ThemeContext.native.d.ts +22 -0
  120. package/dist/shared/hooks/useThemeColors.d.ts +37 -0
  121. package/dist/shared/locales/ar.json.d.ts +117 -10
  122. package/dist/shared/locales/de.json.d.ts +118 -11
  123. package/dist/shared/locales/en.json.d.ts +119 -12
  124. package/dist/shared/locales/es.json.d.ts +118 -11
  125. package/dist/shared/locales/fr.json.d.ts +118 -11
  126. package/dist/shared/locales/it.json.d.ts +118 -11
  127. package/dist/shared/locales/pt.json.d.ts +118 -11
  128. package/dist/shared/types/edge.d.ts +6 -0
  129. package/dist/shared/types/node.d.ts +64 -0
  130. package/package.json +38 -12
  131. package/dist/ThemeContext-BIvs8Kw-.js +0 -758
  132. package/dist/TreegeEditor-Lv5Tn9_F.js +0 -2152
  133. package/dist/TreegeRenderer-D3EvsEfJ.js +0 -1413
  134. package/dist/editor/features/TreegeEditor/inputs/SelectInputType.d.ts +0 -7
  135. package/dist/editor/features/TreegeEditor/nodes/FlowNode.d.ts +0 -6
  136. package/dist/editor/features/TreegeEditor/nodes/InputNode.d.ts +0 -6
  137. package/dist/editor/features/TreegeEditor/nodes/UINode.d.ts +0 -6
package/dist/editor.js CHANGED
@@ -1,7 +1,3 @@
1
- import { T as o } from "./TreegeEditor-Lv5Tn9_F.js";
2
- import { T as m, u as s } from "./ThemeContext-BIvs8Kw-.js";
3
- export {
4
- m as ThemeProvider,
5
- o as TreegeEditor,
6
- s as useTheme
7
- };
1
+ import { t as e } from "./editor-DWJ95r4g.js";
2
+ import { n as t, t as n } from "./ThemeContext-Ejgu9Mwr.js";
3
+ export { n as ThemeProvider, e as TreegeEditor, t as useTheme };
package/dist/main.js CHANGED
@@ -1,52 +1,4 @@
1
- import { T as t } from "./TreegeEditor-Lv5Tn9_F.js";
2
- import { T as u, d as l, g as r, b as o, c as i, i as n, a as d, u as f } from "./ThemeContext-BIvs8Kw-.js";
3
- import { c as D, d as I, e as T, f as m, g, h as F, D as c, i as x, j as N, k as S, l as b, m as v, n as R, o as h, p as w, q as C, r as z, s as A, v as H, w as k, T as E, b as G, J as P, K as y, t as U, x as V, y as j, z as q, A as B, C as J, F as K, G as L, I as M, E as O, H as Q, B as W, u as X, a as Y } from "./TreegeRenderer-D3EvsEfJ.js";
4
- export {
5
- D as DefaultAddressInput,
6
- I as DefaultAutocompleteInput,
7
- T as DefaultCheckboxInput,
8
- m as DefaultDateInput,
9
- g as DefaultDateRangeInput,
10
- F as DefaultFileInput,
11
- c as DefaultGroup,
12
- x as DefaultHiddenInput,
13
- N as DefaultHttpInput,
14
- S as DefaultNumberInput,
15
- b as DefaultPasswordInput,
16
- v as DefaultRadioInput,
17
- R as DefaultSelectInput,
18
- h as DefaultSwitchInput,
19
- w as DefaultTextAreaInput,
20
- C as DefaultTextInput,
21
- z as DefaultTimeInput,
22
- A as DefaultTimeRangeInput,
23
- H as Divider,
24
- u as ThemeProvider,
25
- k as Title,
26
- E as TreegeConfigProvider,
27
- t as TreegeEditor,
28
- G as TreegeRenderer,
29
- P as checkFormFieldHasValue,
30
- y as convertFormValuesToNamedFormat,
31
- U as defaultInputRenderers,
32
- V as defaultUI,
33
- j as evaluateCondition,
34
- q as evaluateConditions,
35
- B as fileToSerializable,
36
- J as filesToSerializable,
37
- K as findStartNode,
38
- L as getFlowRenderState,
39
- l as getStaticTranslations,
40
- r as getTranslatedText,
41
- M as isFieldEmpty,
42
- o as isFlowNode,
43
- i as isGroupNode,
44
- n as isInputNode,
45
- O as isStartNode,
46
- d as isUINode,
47
- Q as mergeFlows,
48
- W as serializableToFile,
49
- f as useTheme,
50
- X as useTreegeConfig,
51
- Y as useTreegeRenderer
52
- };
1
+ import { t as e } from "./editor-DWJ95r4g.js";
2
+ import { C as t, D as n, F as r, I as i, L as a, M as o, N as s, O as c, P as l, S as u, _ as d, a as f, b as p, c as m, d as h, f as g, g as _, h as v, i as y, l as b, n as x, o as S, s as C, t as w, v as T, x as E, y as D } from "./ThemeContext-Ejgu9Mwr.js";
3
+ import { C as O, D as k, E as A, O as j, S as M, T as N, a as P, b as F, d as I, f as L, g as R, h as z, i as B, l as V, m as H, n as U, r as W, s as G, t as K, u as q, w as J, x as Y, y as X } from "./DefaultInputs-8yJMEyMh.js";
4
+ export { j as DefaultAddressInput, k as DefaultAutocompleteInput, A as DefaultCheckboxInput, N as DefaultDateInput, J as DefaultDateRangeInput, O as DefaultFileInput, H as DefaultGroup, M as DefaultHiddenInput, Y as DefaultHttpInput, F as DefaultNumberInput, X as DefaultPasswordInput, R as DefaultRadioInput, z as DefaultSelectInput, G as DefaultSwitchInput, P as DefaultTextAreaInput, B as DefaultTextInput, W as DefaultTimeInput, U as DefaultTimeRangeInput, q as Divider, w as ThemeProvider, I as Title, f as TreegeConfigProvider, e as TreegeEditor, V as TreegeRenderer, D as applyReferenceTransformation, p as calculateReferenceFieldUpdates, E as checkFormFieldHasValue, u as convertFormValuesToNamedFormat, K as defaultInputRenderers, L as defaultUI, n as evaluateCondition, c as evaluateConditions, C as fileToSerializable, m as filesToSerializable, v as findStartNode, _ as getFlowRenderState, o as getStaticTranslations, s as getTranslatedText, t as isFieldEmpty, l as isFlowNode, r as isGroupNode, i as isInputNode, d as isStartNode, a as isUINode, T as mergeFlows, h as sanitize, g as sanitizeHttpResponse, b as serializableToFile, x as useTheme, S as useTreegeConfig, y as useTreegeRenderer };
@@ -1,11 +1,13 @@
1
+ import { Node } from '@xyflow/react';
1
2
  import { PropsWithChildren } from 'react';
2
3
  import { FormValues } from '../types/renderer';
3
- import { Flow } from '../../shared/types/node';
4
+ import { Flow, InputNodeData } from '../../shared/types/node';
4
5
  export interface TreegeRendererContextValue {
5
6
  flows?: Flow | null;
6
7
  formErrors: Record<string, string>;
7
8
  formValues: FormValues;
8
9
  googleApiKey?: string;
10
+ inputNodes: Node<InputNodeData>[];
9
11
  language: string;
10
12
  setFieldValue: (fieldName: string, value: unknown) => void;
11
13
  }
@@ -20,6 +22,7 @@ export declare const useTreegeRendererContext: () => {
20
22
  formErrors: Record<string, string>;
21
23
  formValues: FormValues;
22
24
  googleApiKey?: string;
25
+ inputNodes: Node<InputNodeData>[];
23
26
  language: string;
24
27
  setFieldValue: (fieldName: string, value: unknown) => void;
25
28
  };
@@ -1,13 +1,21 @@
1
+ import { ViewStyle } from 'react-native';
2
+ import { TreegeRendererProps } from '../../../types/renderer';
1
3
  /**
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)
4
+ * Props for the TreegeRenderer component (React Native)
5
+ * Same as TreegeRendererProps but:
6
+ * - Omits className (not used in React Native)
7
+ * - Adds style and contentContainerStyle (React Native specific)
12
8
  */
13
- export {};
9
+ export type TreegeRendererNativeProps = Omit<TreegeRendererProps, "className"> & {
10
+ /**
11
+ * Style for the ScrollView container
12
+ */
13
+ style?: ViewStyle;
14
+ /**
15
+ * Style for the ScrollView content container
16
+ * Use this to center content vertically with flexGrow: 1 and justifyContent: 'center'
17
+ */
18
+ contentContainerStyle?: ViewStyle;
19
+ };
20
+ declare const TreegeRenderer: (props: TreegeRendererNativeProps) => import("react/jsx-runtime").JSX.Element;
21
+ export default TreegeRenderer;
@@ -1,7 +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 {};
1
+ import { ReactNode } from 'react';
2
+ export interface DefaultFormWrapperProps {
3
+ children: ReactNode;
4
+ onSubmit?: () => void;
5
+ }
6
+ declare const DefaultFormWrapper: ({ children }: DefaultFormWrapperProps) => import("react/jsx-runtime").JSX.Element;
7
+ export default DefaultFormWrapper;
@@ -1,7 +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 {};
1
+ import { ReactNode } from 'react';
2
+ import { NodeRenderProps } from '../../../../types/renderer';
3
+ type DefaultGroupProps = NodeRenderProps & {
4
+ children: ReactNode;
5
+ };
6
+ declare const DefaultGroup: ({ children, node }: DefaultGroupProps) => import("react/jsx-runtime").JSX.Element;
7
+ export default DefaultGroup;
@@ -1,15 +1,21 @@
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 {};
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, InputRenderProps } 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 DefaultSubmitInput: ({ node }: InputRenderProps<"submit">) => import("react/jsx-runtime").JSX.Element;
21
+ export declare const defaultInputRenderers: InputRenderers;
@@ -1,7 +1,9 @@
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 {};
1
+ import { ReactNode } from 'react';
2
+ export interface DefaultSubmitButtonProps {
3
+ children?: ReactNode;
4
+ disabled?: boolean;
5
+ isSubmitting?: boolean;
6
+ onPress?: () => void;
7
+ }
8
+ declare const DefaultSubmitButton: ({ children, disabled, isSubmitting, onPress }: DefaultSubmitButtonProps) => import("react/jsx-runtime").JSX.Element;
9
+ export default DefaultSubmitButton;
@@ -0,0 +1,11 @@
1
+ import { ReactNode } from 'react';
2
+ export interface SubmitButtonWrapperProps {
3
+ children: ReactNode;
4
+ missingFields?: string[];
5
+ }
6
+ /**
7
+ * Default submit button wrapper for React Native
8
+ * Simple wrapper that renders children (no tooltip like web version)
9
+ */
10
+ declare const DefaultSubmitButtonWrapper: ({ children }: SubmitButtonWrapperProps) => ReactNode;
11
+ export default DefaultSubmitButtonWrapper;
@@ -1,7 +1,8 @@
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 {};
1
+ import { UiRenderProps } from '../../../../types/renderer';
2
+ declare const DefaultTitleUI: ({ node }: UiRenderProps) => import("react/jsx-runtime").JSX.Element;
3
+ declare const DefaultDividerUI: () => import("react/jsx-runtime").JSX.Element;
4
+ export { DefaultDividerUI, DefaultTitleUI };
5
+ export declare const defaultUI: {
6
+ divider: () => import("react/jsx-runtime").JSX.Element;
7
+ title: ({ node }: UiRenderProps) => import("react/jsx-runtime").JSX.Element;
8
+ };
@@ -0,0 +1,3 @@
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultAddressInput: ({ node, value, setValue, error, label, placeholder, helperText, id: _id, name: _name, }: 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, value, setValue, error, label, helperText }: InputRenderProps<"file">) => import("react/jsx-runtime").JSX.Element | null;
3
+ export default DefaultFileInput;
@@ -0,0 +1,3 @@
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultHiddenInput: (_props: InputRenderProps<"hidden">) => null;
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, id: _id, name: _name, }: 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, name }: 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, name }: 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 DefaultTextInput: ({ node, value, setValue, error, label, placeholder, helperText, name }: 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 DefaultTextareaInput: ({ node, value, setValue, error, label, placeholder, helperText, name }: 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 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;
@@ -1,43 +1,98 @@
1
1
  import { Node } from '@xyflow/react';
2
- import { FormValues } from '../../types/renderer';
3
- import { Flow, TreegeNodeData } from '../../../shared/types/node';
2
+ import { FormValues, TreegeRendererProps } from '../../types/renderer';
3
+ import { TreegeNodeData } from '../../../shared/types/node';
4
4
  /**
5
- * PURE STATE LOGIC HOOK
5
+ * Main TreegeRenderer hook
6
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.
7
+ * Manages all form state, configuration, validation, and submission logic.
8
+ * Can be used directly in custom components for headless mode.
10
9
  *
11
10
  * Responsibilities:
11
+ * - Config merging (props + global provider)
12
12
  * - Form values state (keyed by nodeId)
13
13
  * - Errors state
14
14
  * - Node visibility calculation (progressive rendering)
15
- * - Form validation (built-in: required, pattern)
16
- * - Submit button state (combines end-of-path detection + form validity)
15
+ * - Form validation (built-in: required, pattern + custom validation)
16
+ * - Submit handling (with HTTP integration support)
17
+ * - Side effects (onChange callbacks, validation modes, reference field sync)
17
18
  *
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)
19
+ * @param props - Configuration props (flows, initialValues, callbacks, etc.)
20
+ * @returns Complete form state and control methods
22
21
  */
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) => {
22
+ export declare const useTreegeRenderer: ({ components, flows, googleApiKey, initialValues, language, onChange, onSubmit, theme, validate, validationMode, }: Pick<TreegeRendererProps, "components" | "flows" | "googleApiKey" | "initialValues" | "language" | "onChange" | "onSubmit" | "theme" | "validate" | "validationMode">) => {
32
23
  canSubmit: boolean;
24
+ clearSubmitMessage: () => void;
25
+ config: {
26
+ components: {
27
+ form: ((props: {
28
+ children: import('react').ReactNode;
29
+ onSubmit: (e: import('react').FormEvent) => void;
30
+ }) => import('react').ReactNode) | undefined;
31
+ group: ((props: import('../../types/renderer').NodeRenderProps & {
32
+ children?: import('react').ReactNode;
33
+ }) => import('react').ReactNode) | undefined;
34
+ inputs: {
35
+ number?: ((props: import('../../types/renderer').InputRenderProps<"number">) => import('react').ReactNode) | undefined;
36
+ address?: ((props: import('../../types/renderer').InputRenderProps<"address">) => import('react').ReactNode) | undefined;
37
+ autocomplete?: ((props: import('../../types/renderer').InputRenderProps<"autocomplete">) => import('react').ReactNode) | undefined;
38
+ checkbox?: ((props: import('../../types/renderer').InputRenderProps<"checkbox">) => import('react').ReactNode) | undefined;
39
+ date?: ((props: import('../../types/renderer').InputRenderProps<"date">) => import('react').ReactNode) | undefined;
40
+ daterange?: ((props: import('../../types/renderer').InputRenderProps<"daterange">) => import('react').ReactNode) | undefined;
41
+ file?: ((props: import('../../types/renderer').InputRenderProps<"file">) => import('react').ReactNode) | undefined;
42
+ hidden?: ((props: import('../../types/renderer').InputRenderProps<"hidden">) => import('react').ReactNode) | undefined;
43
+ http?: ((props: import('../../types/renderer').InputRenderProps<"http">) => import('react').ReactNode) | undefined;
44
+ password?: ((props: import('../../types/renderer').InputRenderProps<"password">) => import('react').ReactNode) | undefined;
45
+ radio?: ((props: import('../../types/renderer').InputRenderProps<"radio">) => import('react').ReactNode) | undefined;
46
+ select?: ((props: import('../../types/renderer').InputRenderProps<"select">) => import('react').ReactNode) | undefined;
47
+ submit?: ((props: import('../../types/renderer').InputRenderProps<"submit">) => import('react').ReactNode) | undefined;
48
+ switch?: ((props: import('../../types/renderer').InputRenderProps<"switch">) => import('react').ReactNode) | undefined;
49
+ text?: ((props: import('../../types/renderer').InputRenderProps<"text">) => import('react').ReactNode) | undefined;
50
+ textarea?: ((props: import('../../types/renderer').InputRenderProps<"textarea">) => import('react').ReactNode) | undefined;
51
+ time?: ((props: import('../../types/renderer').InputRenderProps<"time">) => import('react').ReactNode) | undefined;
52
+ timerange?: ((props: import('../../types/renderer').InputRenderProps<"timerange">) => import('react').ReactNode) | undefined;
53
+ };
54
+ submitButton: ((props: {
55
+ label?: string;
56
+ disabled?: boolean;
57
+ [key: string]: unknown;
58
+ } | {
59
+ children?: import('react').ReactNode;
60
+ disabled?: boolean;
61
+ isSubmitting?: boolean;
62
+ onPress?: () => void;
63
+ [key: string]: unknown;
64
+ }) => import('react').ReactNode) | undefined;
65
+ submitButtonWrapper: ((props: {
66
+ children: import('react').ReactNode;
67
+ missingFields?: string[];
68
+ }) => import('react').ReactNode) | undefined;
69
+ ui: {
70
+ divider?: ((props: import('../../types/renderer').NodeRenderProps) => import('react').ReactNode) | undefined;
71
+ title?: ((props: import('../../types/renderer').NodeRenderProps) => import('react').ReactNode) | undefined;
72
+ };
73
+ };
74
+ googleApiKey: string | undefined;
75
+ language: string;
76
+ theme: "dark" | "light";
77
+ validationMode: "onChange" | "onSubmit";
78
+ };
79
+ firstErrorFieldId: string | undefined;
33
80
  formErrors: Record<string, string>;
34
81
  formValues: FormValues;
82
+ handleSubmit: () => Promise<boolean>;
35
83
  inputNodes: Node<import('../../../shared/types/node').InputNodeData>[];
36
- mergedFlow: Flow;
84
+ isSubmitting: boolean;
85
+ mergedFlow: import('../../../shared/types/node').Flow;
37
86
  missingRequiredFields: string[];
87
+ prevFormValuesRef: import('react').RefObject<FormValues>;
88
+ setFieldErrors: import('react').Dispatch<import('react').SetStateAction<Record<string, string>>>;
38
89
  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;
90
+ setMultipleFieldValues: (updates: FormValues) => void;
91
+ submitMessage: {
92
+ type: "success" | "error";
93
+ message: string;
94
+ } | null;
95
+ t: (key?: import('../../../main').Translatable | string) => string;
41
96
  validateForm: (customValidate?: (values: FormValues, visibleNodesList: Node<TreegeNodeData>[]) => Record<string, string>) => {
42
97
  errors: {
43
98
  [x: string]: string;
@@ -48,3 +103,8 @@ export declare const useTreegeRenderer: (flows: Flow | Flow[] | null | undefined
48
103
  visibleNodes: Node<TreegeNodeData>[];
49
104
  visibleRootNodes: Node<TreegeNodeData>[];
50
105
  };
106
+ /**
107
+ * Type for the return value of useTreegeRenderer
108
+ * Useful for TypeScript users building custom components
109
+ */
110
+ export type UseTreegeRendererReturn = ReturnType<typeof useTreegeRenderer>;
@@ -1,3 +1,3 @@
1
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;
2
+ declare const TreegeRenderer: ({ components, className, flows, googleApiKey, language, onChange, onSubmit, theme, validate, validationMode, initialValues, }: TreegeRendererProps) => import("react/jsx-runtime").JSX.Element;
3
3
  export default TreegeRenderer;
@@ -5,5 +5,5 @@ export interface SubmitButtonProps extends ButtonHTMLAttributes<HTMLButtonElemen
5
5
  /**
6
6
  * Default submit button
7
7
  */
8
- declare const DefaultSubmitButton: ({ label, ...props }: SubmitButtonProps) => import("react/jsx-runtime").JSX.Element;
8
+ declare const DefaultSubmitButton: import('react').ForwardRefExoticComponent<SubmitButtonProps & import('react').RefAttributes<HTMLButtonElement>>;
9
9
  export default DefaultSubmitButton;
@@ -1,3 +1,3 @@
1
1
  import { InputRenderProps } from '../../../../../types/renderer';
2
- declare const DefaultAddressInput: ({ node, value, setValue, error }: InputRenderProps<"address">) => import("react/jsx-runtime").JSX.Element;
2
+ declare const DefaultAddressInput: ({ node, value, setValue, error, label, placeholder, helperText, id, name }: InputRenderProps<"address">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultAddressInput;
@@ -1,3 +1,3 @@
1
1
  import { InputRenderProps } from '../../../../../types/renderer';
2
- declare const DefaultAutocompleteInput: ({ node, value, setValue, error }: InputRenderProps<"autocomplete">) => import("react/jsx-runtime").JSX.Element;
2
+ declare const DefaultAutocompleteInput: ({ node, value, setValue, error, label, placeholder, helperText, id, }: InputRenderProps<"autocomplete">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultAutocompleteInput;
@@ -1,3 +1,3 @@
1
1
  import { InputRenderProps } from '../../../../../types/renderer';
2
- declare const DefaultCheckboxInput: ({ node, value, setValue, error }: InputRenderProps<"checkbox">) => import("react/jsx-runtime").JSX.Element;
2
+ declare const DefaultCheckboxInput: ({ node, value, setValue, error, label, helperText, id, name }: InputRenderProps<"checkbox">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultCheckboxInput;
@@ -1,3 +1,3 @@
1
1
  import { InputRenderProps } from '../../../../../types/renderer';
2
- declare const DefaultDateInput: ({ node, value, setValue, error }: InputRenderProps<"date">) => import("react/jsx-runtime").JSX.Element;
2
+ declare const DefaultDateInput: ({ node, value, setValue, error, label, placeholder, helperText, id, name }: InputRenderProps<"date">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultDateInput;
@@ -1,3 +1,3 @@
1
1
  import { InputRenderProps } from '../../../../../types/renderer';
2
- declare const DefaultDateRangeInput: ({ node, value, setValue, error }: InputRenderProps<"daterange">) => import("react/jsx-runtime").JSX.Element;
2
+ declare const DefaultDateRangeInput: ({ node, value, setValue, error, label, helperText, id }: InputRenderProps<"daterange">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultDateRangeInput;
@@ -1,3 +1,3 @@
1
1
  import { InputRenderProps } from '../../../../../types/renderer';
2
- declare const DefaultFileInput: ({ node, setValue, error }: InputRenderProps<"file">) => import("react/jsx-runtime").JSX.Element;
2
+ declare const DefaultFileInput: ({ node, setValue, error, label, placeholder, helperText, name, id }: InputRenderProps<"file">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultFileInput;
@@ -1,3 +1,3 @@
1
1
  import { InputRenderProps } from '../../../../../types/renderer';
2
- declare const DefaultHiddenInput: ({ node, value }: InputRenderProps<"hidden">) => import("react/jsx-runtime").JSX.Element;
2
+ declare const DefaultHiddenInput: ({ value, name, id }: InputRenderProps<"hidden">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultHiddenInput;
@@ -1,3 +1,3 @@
1
1
  import { InputRenderProps } from '../../../../../types/renderer';
2
- declare const DefaultHttpInput: ({ node, value, setValue, error }: InputRenderProps<"http">) => import("react/jsx-runtime").JSX.Element;
2
+ declare const DefaultHttpInput: ({ node, value, setValue, error, label, placeholder, helperText, id, name }: InputRenderProps<"http">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultHttpInput;
@@ -1,3 +1,3 @@
1
1
  import { InputRenderProps } from '../../../../../types/renderer';
2
- declare const DefaultNumberInput: ({ node, value, setValue, error }: InputRenderProps<"number">) => import("react/jsx-runtime").JSX.Element;
2
+ declare const DefaultNumberInput: ({ node, value, setValue, error, label, placeholder, helperText, name, id }: InputRenderProps<"number">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultNumberInput;
@@ -1,3 +1,3 @@
1
1
  import { InputRenderProps } from '../../../../../types/renderer';
2
- declare const DefaultPasswordInput: ({ node, value, setValue, error }: InputRenderProps<"password">) => import("react/jsx-runtime").JSX.Element;
2
+ declare const DefaultPasswordInput: ({ node, value, setValue, error, label, placeholder, helperText, name, id }: InputRenderProps<"password">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultPasswordInput;
@@ -1,3 +1,3 @@
1
1
  import { InputRenderProps } from '../../../../../types/renderer';
2
- declare const DefaultRadioInput: ({ node, value, setValue, error }: InputRenderProps<"radio">) => import("react/jsx-runtime").JSX.Element;
2
+ declare const DefaultRadioInput: ({ node, value, setValue, error, label, helperText, id, name }: InputRenderProps<"radio">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultRadioInput;
@@ -1,3 +1,3 @@
1
1
  import { InputRenderProps } from '../../../../../types/renderer';
2
- declare const DefaultSelectInput: ({ node, value, setValue, error }: InputRenderProps<"select">) => import("react/jsx-runtime").JSX.Element;
2
+ declare const DefaultSelectInput: ({ node, value, setValue, error, label, placeholder, helperText, name, id }: InputRenderProps<"select">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultSelectInput;
@@ -0,0 +1,3 @@
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultSubmitInput: ({ missingRequiredFields, isSubmitting, label }: InputRenderProps<"submit">) => import("react/jsx-runtime").JSX.Element;
3
+ export default DefaultSubmitInput;
@@ -1,3 +1,3 @@
1
1
  import { InputRenderProps } from '../../../../../types/renderer';
2
- declare const DefaultSwitchInput: ({ node, value, setValue, error }: InputRenderProps<"switch">) => import("react/jsx-runtime").JSX.Element;
2
+ declare const DefaultSwitchInput: ({ node, value, setValue, error, label, helperText, name, id }: InputRenderProps<"switch">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultSwitchInput;
@@ -1,3 +1,3 @@
1
1
  import { InputRenderProps } from '../../../../../types/renderer';
2
- declare const DefaultTextAreaInput: ({ node, value, setValue, error }: InputRenderProps<"textarea">) => import("react/jsx-runtime").JSX.Element;
2
+ declare const DefaultTextAreaInput: ({ node, value, setValue, error, label, placeholder, helperText, name, id }: InputRenderProps<"textarea">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultTextAreaInput;
@@ -1,3 +1,3 @@
1
1
  import { InputRenderProps } from '../../../../../types/renderer';
2
- declare const DefaultTextInput: ({ node, value, setValue, error }: InputRenderProps<"text">) => import("react/jsx-runtime").JSX.Element;
2
+ declare const DefaultTextInput: ({ node, value, setValue, error, label, placeholder, helperText, name, id }: InputRenderProps<"text">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultTextInput;