treege 3.0.0-beta.63 → 3.0.0-beta.65

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 (55) hide show
  1. package/README.md +7 -6
  2. package/dist/DefaultInputs-2wzCRMKH.js +1742 -0
  3. package/dist/{ThemeContext-nopV_oRU.js → ThemeContext-7cghqUb0.js} +91 -601
  4. package/dist/{editor-Bag5U_S5.js → editor-DPECN9XS.js} +1831 -1832
  5. package/dist/editor.js +2 -2
  6. package/dist/main.js +6 -4
  7. package/dist/renderer/features/TreegeRenderer/native/components/DefaultInputs.d.ts +1 -2
  8. package/dist/renderer/features/TreegeRenderer/native/components/DefaultStep.d.ts +1 -1
  9. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultAddressInput.d.ts +2 -2
  10. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultAutocompleteInput.d.ts +2 -2
  11. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultCheckboxInput.d.ts +2 -2
  12. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultDateInput.d.ts +2 -2
  13. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultDateRangeInput.d.ts +2 -2
  14. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultFileInput.d.ts +2 -2
  15. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultHiddenInput.d.ts +2 -2
  16. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultHttpInput.d.ts +2 -2
  17. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultNumberInput.d.ts +2 -2
  18. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultPasswordInput.d.ts +2 -2
  19. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultRadioInput.d.ts +2 -2
  20. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultSelectInput.d.ts +2 -2
  21. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultSubmitInput.d.ts +11 -0
  22. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultSwitchInput.d.ts +2 -2
  23. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultTextInput.d.ts +2 -2
  24. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultTextareaInput.d.ts +2 -2
  25. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultTimeInput.d.ts +2 -2
  26. package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultTimeRangeInput.d.ts +2 -2
  27. package/dist/renderer/features/TreegeRenderer/useTreegeRenderer.d.ts +2 -1
  28. package/dist/renderer/features/TreegeRenderer/web/TreegeRenderer.d.ts +1 -1
  29. package/dist/renderer/features/TreegeRenderer/web/components/DefaultStep.d.ts +1 -1
  30. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultAddressInput.d.ts +2 -2
  31. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultAutocompleteInput.d.ts +2 -2
  32. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultCheckboxInput.d.ts +2 -2
  33. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultDateInput.d.ts +2 -2
  34. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultDateRangeInput.d.ts +2 -2
  35. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultFileInput.d.ts +2 -2
  36. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultHiddenInput.d.ts +2 -2
  37. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultHttpInput.d.ts +2 -2
  38. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultNumberInput.d.ts +2 -2
  39. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultPasswordInput.d.ts +2 -2
  40. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultRadioInput.d.ts +2 -2
  41. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultSelectInput.d.ts +2 -2
  42. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultSubmitInput.d.ts +10 -2
  43. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultSwitchInput.d.ts +2 -2
  44. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultTextAreaInput.d.ts +2 -2
  45. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultTextInput.d.ts +2 -2
  46. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultTimeInput.d.ts +2 -2
  47. package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultTimeRangeInput.d.ts +2 -2
  48. package/dist/renderer/types/renderer.d.ts +28 -7
  49. package/dist/renderer-BZDW7wcE.js +273 -0
  50. package/dist/renderer-native.js +815 -817
  51. package/dist/renderer.js +5 -3
  52. package/dist/useRenderNode-DGe-7y4d.js +506 -0
  53. package/package.json +1 -1
  54. package/dist/DefaultInputs-nX-CVK2i.js +0 -2013
  55. package/dist/renderer/features/TreegeRenderer/InputRendererHost.d.ts +0 -15
package/dist/editor.js CHANGED
@@ -1,3 +1,3 @@
1
- import { t as e } from "./editor-Bag5U_S5.js";
2
- import { n as t, t as n } from "./ThemeContext-nopV_oRU.js";
1
+ import { t as e } from "./editor-DPECN9XS.js";
2
+ import { n as t, t as n } from "./ThemeContext-7cghqUb0.js";
3
3
  export { n as ThemeProvider, e as TreegeEditor, t as useTheme };
package/dist/main.js CHANGED
@@ -1,4 +1,6 @@
1
- import { t as e } from "./editor-Bag5U_S5.js";
2
- import { B as t, H as n, M as r, N as i, S as a, U as o, V as s, W as c, _ as l, a as u, b as d, c as f, d as p, f as m, g as h, h as g, i as _, l as v, m as y, n as b, o as x, p as S, s as C, t as w, u as T, x as E } from "./ThemeContext-nopV_oRU.js";
3
- import { C as D, E as O, S as k, T as A, _ as j, a as M, b as N, d as P, f as F, i as I, l as L, m as R, n as z, p as B, r as V, s as H, t as U, u as W, v as G, w as K, x as q, y as J } from "./DefaultInputs-nX-CVK2i.js";
4
- export { O as DefaultAddressInput, A as DefaultAutocompleteInput, K as DefaultCheckboxInput, D as DefaultDateInput, k as DefaultDateRangeInput, q as DefaultFileInput, N as DefaultHiddenInput, J as DefaultHttpInput, G as DefaultNumberInput, j as DefaultPasswordInput, R as DefaultRadioInput, B as DefaultSelectInput, H as DefaultSwitchInput, M as DefaultTextAreaInput, I as DefaultTextInput, V as DefaultTimeInput, z as DefaultTimeRangeInput, W as Divider, w as ThemeProvider, P as Title, e as TreegeEditor, L as TreegeRenderer, T as TreegeRendererProvider, m as applyReferenceTransformation, S as buildInitialFormValues, y as calculateReferenceFieldUpdates, g as checkFormFieldHasValue, h as convertFormValuesToNamedFormat, U as defaultInputRenderers, F as defaultUI, f as evaluateCondition, v as evaluateConditions, d as fileToSerializable, E as filesToSerializable, u as findStartNode, x as getFlowRenderState, t as getStaticTranslations, s as getTranslatedText, l as isFieldEmpty, n as isGroupNode, o as isInputNode, C as isStartNode, c as isUINode, r as sanitize, i as sanitizeHttpResponse, a as serializableToFile, b as useTheme, _ as useTreegeRenderer, p as useTreegeRendererConfig };
1
+ import { t as e } from "./editor-DPECN9XS.js";
2
+ import { D as t, E as n, F as r, I as i, L as a, N as o, P as s, a as c, c as l, h as u, i as d, m as f, n as p, o as m, p as h, r as g, s as _, t as v } from "./ThemeContext-7cghqUb0.js";
3
+ import { S as y, _ as b, a as x, b as S, g as C, h as w, i as T, l as E, m as D, n as O, p as k, r as A, s as j, t as M, u as N, v as P, x as F, y as I } from "./DefaultInputs-2wzCRMKH.js";
4
+ import { a as L, c as R, i as z, l as B, n as V, o as H, r as U, s as W } from "./useRenderNode-DGe-7y4d.js";
5
+ import { i as G, n as K, r as q, t as J } from "./renderer-BZDW7wcE.js";
6
+ export { y as DefaultAddressInput, F as DefaultAutocompleteInput, S as DefaultCheckboxInput, I as DefaultDateInput, P as DefaultDateRangeInput, b as DefaultFileInput, C as DefaultHiddenInput, w as DefaultHttpInput, D as DefaultNumberInput, k as DefaultPasswordInput, N as DefaultRadioInput, E as DefaultSelectInput, j as DefaultSwitchInput, x as DefaultTextAreaInput, T as DefaultTextInput, A as DefaultTimeInput, O as DefaultTimeRangeInput, K as Divider, v as ThemeProvider, q as Title, e as TreegeEditor, J as TreegeRenderer, R as TreegeRendererProvider, g as applyReferenceTransformation, d as buildInitialFormValues, c as calculateReferenceFieldUpdates, m as checkFormFieldHasValue, _ as convertFormValuesToNamedFormat, M as defaultInputRenderers, G as defaultUI, H as evaluateCondition, W as evaluateConditions, h as fileToSerializable, f as filesToSerializable, U as findStartNode, z as getFlowRenderState, o as getStaticTranslations, s as getTranslatedText, l as isFieldEmpty, r as isGroupNode, i as isInputNode, L as isStartNode, a as isUINode, n as sanitize, t as sanitizeHttpResponse, u as serializableToFile, p as useTheme, V as useTreegeRenderer, B as useTreegeRendererConfig };
@@ -15,7 +15,6 @@ import { default as DefaultTextareaInput } from './inputs/DefaultTextareaInput';
15
15
  import { default as DefaultTextInput } from './inputs/DefaultTextInput';
16
16
  import { default as DefaultTimeInput } from './inputs/DefaultTimeInput';
17
17
  import { default as DefaultTimeRangeInput } from './inputs/DefaultTimeRangeInput';
18
- import { InputExtraProps, InputFieldProps, InputRenderers } from '../../../../types/renderer';
18
+ import { InputRenderers } from '../../../../types/renderer';
19
19
  export { DefaultAddressInput, DefaultAutocompleteInput, DefaultCheckboxInput, DefaultDateInput, DefaultDateRangeInput, DefaultFileInput, DefaultHiddenInput, DefaultHttpInput, DefaultNumberInput, DefaultPasswordInput, DefaultRadioInput, DefaultSelectInput, DefaultSwitchInput, DefaultTextareaInput, DefaultTextInput, DefaultTimeInput, DefaultTimeRangeInput, };
20
- export declare const DefaultSubmitInput: (_field: InputFieldProps<"submit">, extra: InputExtraProps<"submit">) => import("react/jsx-runtime").JSX.Element;
21
20
  export declare const defaultInputRenderers: InputRenderers;
@@ -1,3 +1,3 @@
1
1
  import { StepRenderProps } from '../../../../types/renderer';
2
- declare const DefaultStep: ({ label, children, canGoBack, isLastStep, canContinue, isSubmitting, onBack, onContinue }: StepRenderProps) => import("react/jsx-runtime").JSX.Element;
2
+ declare const DefaultStep: ({ step, label, children, canGoBack, isLastStep, canContinue, isSubmitting, onBack, onContinue }: StepRenderProps) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultStep;
@@ -1,3 +1,3 @@
1
- import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
- declare const DefaultAddressInput: (field: InputFieldProps<"address">, extra: InputExtraProps<"address">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultAddressInput: ({ field, extra }: InputRenderProps<"address">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultAddressInput;
@@ -1,3 +1,3 @@
1
- import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
- declare const DefaultAutocompleteInput: (field: InputFieldProps<"autocomplete">, extra: InputExtraProps<"autocomplete">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultAutocompleteInput: ({ field, extra }: InputRenderProps<"autocomplete">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultAutocompleteInput;
@@ -1,3 +1,3 @@
1
- import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
- declare const DefaultCheckboxInput: (field: InputFieldProps<"checkbox">, extra: InputExtraProps<"checkbox">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultCheckboxInput: ({ field, extra }: InputRenderProps<"checkbox">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultCheckboxInput;
@@ -1,3 +1,3 @@
1
- import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
- declare const DefaultDateInput: (field: InputFieldProps<"date">, extra: InputExtraProps<"date">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultDateInput: ({ field, extra }: InputRenderProps<"date">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultDateInput;
@@ -1,3 +1,3 @@
1
- import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
- declare const DefaultDateRangeInput: (field: InputFieldProps<"daterange">, extra: InputExtraProps<"daterange">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultDateRangeInput: ({ field, extra }: InputRenderProps<"daterange">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultDateRangeInput;
@@ -1,3 +1,3 @@
1
- import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
- declare const DefaultFileInput: (field: InputFieldProps<"file">, extra: InputExtraProps<"file">) => import("react/jsx-runtime").JSX.Element | null;
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultFileInput: ({ field, extra }: InputRenderProps<"file">) => import("react/jsx-runtime").JSX.Element | null;
3
3
  export default DefaultFileInput;
@@ -1,3 +1,3 @@
1
- import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
- declare const DefaultHiddenInput: (_field: InputFieldProps<"hidden">, _extra: InputExtraProps<"hidden">) => null;
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultHiddenInput: (_props: InputRenderProps<"hidden">) => null;
3
3
  export default DefaultHiddenInput;
@@ -1,3 +1,3 @@
1
- import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
- declare const DefaultHttpInput: (field: InputFieldProps<"http">, extra: InputExtraProps<"http">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultHttpInput: ({ field, extra }: InputRenderProps<"http">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultHttpInput;
@@ -1,3 +1,3 @@
1
- import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
- declare const DefaultNumberInput: (field: InputFieldProps<"number">, extra: InputExtraProps<"number">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultNumberInput: ({ field, extra }: InputRenderProps<"number">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultNumberInput;
@@ -1,3 +1,3 @@
1
- import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
- declare const DefaultPasswordInput: (field: InputFieldProps<"password">, extra: InputExtraProps<"password">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultPasswordInput: ({ field, extra }: InputRenderProps<"password">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultPasswordInput;
@@ -1,3 +1,3 @@
1
- import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
- declare const DefaultRadioInput: (field: InputFieldProps<"radio">, extra: InputExtraProps<"radio">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultRadioInput: ({ field, extra }: InputRenderProps<"radio">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultRadioInput;
@@ -1,3 +1,3 @@
1
- import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
- declare const DefaultSelectInput: (field: InputFieldProps<"select">, extra: InputExtraProps<"select">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultSelectInput: ({ field, extra }: InputRenderProps<"select">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultSelectInput;
@@ -0,0 +1,11 @@
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ /**
3
+ * The `submit` input node is declarative only: it marks where the flow submits
4
+ * and carries the optional custom label / `submitConfig`. The actual submit
5
+ * button is rendered once by the step (see `DefaultStep`), so the node itself
6
+ * renders nothing — guaranteeing a single, consistently-placed button whether
7
+ * submission comes from an explicit submit node, the default "Submit", or a
8
+ * "Continue" step.
9
+ */
10
+ declare const DefaultSubmitInput: (_props: InputRenderProps<"submit">) => null;
11
+ export default DefaultSubmitInput;
@@ -1,3 +1,3 @@
1
- import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
- declare const DefaultSwitchInput: (field: InputFieldProps<"switch">, extra: InputExtraProps<"switch">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultSwitchInput: ({ field, extra }: InputRenderProps<"switch">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultSwitchInput;
@@ -1,3 +1,3 @@
1
- import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
- declare const DefaultTextInput: (field: InputFieldProps<"text">, extra: InputExtraProps<"text">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultTextInput: ({ field, extra }: InputRenderProps<"text">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultTextInput;
@@ -1,3 +1,3 @@
1
- import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
- declare const DefaultTextareaInput: (field: InputFieldProps<"textarea">, extra: InputExtraProps<"textarea">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultTextareaInput: ({ field, extra }: InputRenderProps<"textarea">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultTextareaInput;
@@ -1,3 +1,3 @@
1
- import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
- declare const DefaultTimeInput: (field: InputFieldProps<"time">, extra: InputExtraProps<"time">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultTimeInput: ({ field, extra }: InputRenderProps<"time">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultTimeInput;
@@ -1,3 +1,3 @@
1
- import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
- declare const DefaultTimeRangeInput: (field: InputFieldProps<"timerange">, extra: InputExtraProps<"timerange">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultTimeRangeInput: ({ field, extra }: InputRenderProps<"timerange">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultTimeRangeInput;
@@ -19,7 +19,7 @@ import { GroupNodeData, TreegeNodeData } from '../../../shared/types/node';
19
19
  * @param props - Configuration props (flow, initialValues, callbacks, etc.)
20
20
  * @returns Complete form state and control methods
21
21
  */
22
- export declare const useTreegeRenderer: ({ baseUrl, components, flow, googleApiKey, headers, language, onChange, onSubmit, theme, validate, validationMode, initialValues, }: Pick<TreegeRendererProps, "baseUrl" | "components" | "flow" | "googleApiKey" | "headers" | "initialValues" | "language" | "onChange" | "onSubmit" | "theme" | "validate" | "validationMode">) => {
22
+ export declare const useTreegeRenderer: ({ baseUrl, components, flow, googleApiKey, headers, language, onChange, onSubmit, showPoweredBy, theme, validate, validationMode, initialValues, }: Pick<TreegeRendererProps, "baseUrl" | "components" | "flow" | "googleApiKey" | "headers" | "initialValues" | "language" | "onChange" | "onSubmit" | "showPoweredBy" | "theme" | "validate" | "validationMode">) => {
23
23
  canContinueStep: boolean;
24
24
  canSubmit: boolean;
25
25
  clearSubmitMessage: () => void;
@@ -77,6 +77,7 @@ export declare const useTreegeRenderer: ({ baseUrl, components, flow, googleApiK
77
77
  googleApiKey: string | undefined;
78
78
  headers: import('../../../shared/types/node').HttpHeaders;
79
79
  language: string;
80
+ showPoweredBy: boolean;
80
81
  theme: "dark" | "light";
81
82
  validationMode: "onChange" | "onSubmit";
82
83
  };
@@ -1,3 +1,3 @@
1
1
  import { TreegeRendererProps } from '../../../types/renderer';
2
- declare const TreegeRenderer: ({ baseUrl, components, className, flow, formId, googleApiKey, headers, language, onBack, onChange, onSubmit, theme, validate, validationMode, initialValues, isLoading, isSubmitting: isSubmittingProp, }: TreegeRendererProps) => import("react/jsx-runtime").JSX.Element;
2
+ declare const TreegeRenderer: ({ baseUrl, components, className, flow, formId, googleApiKey, headers, language, onBack, onChange, onSubmit, showPoweredBy, theme, validate, validationMode, initialValues, isLoading, isSubmitting: isSubmittingProp, }: TreegeRendererProps) => import("react/jsx-runtime").JSX.Element;
3
3
  export default TreegeRenderer;
@@ -1,3 +1,3 @@
1
1
  import { StepRenderProps } from '../../../../types/renderer';
2
- declare const DefaultStep: ({ label, children, canGoBack, isLastStep, canContinue, isSubmitting, onBack, onContinue, missingFields, }: StepRenderProps) => import("react/jsx-runtime").JSX.Element;
2
+ declare const DefaultStep: ({ step, label, children, canGoBack, isLastStep, canContinue, isSubmitting, onBack, onContinue, missingFields, }: StepRenderProps) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultStep;
@@ -1,3 +1,3 @@
1
- import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
- declare const DefaultAddressInput: (field: InputFieldProps<"address">, extra: InputExtraProps<"address">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultAddressInput: ({ field, extra }: InputRenderProps<"address">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultAddressInput;
@@ -1,3 +1,3 @@
1
- import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
- declare const DefaultAutocompleteInput: (field: InputFieldProps<"autocomplete">, extra: InputExtraProps<"autocomplete">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultAutocompleteInput: ({ field, extra }: InputRenderProps<"autocomplete">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultAutocompleteInput;
@@ -1,3 +1,3 @@
1
- import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
- declare const DefaultCheckboxInput: (field: InputFieldProps<"checkbox">, extra: InputExtraProps<"checkbox">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultCheckboxInput: ({ field, extra }: InputRenderProps<"checkbox">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultCheckboxInput;
@@ -1,3 +1,3 @@
1
- import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
- declare const DefaultDateInput: (field: InputFieldProps<"date">, extra: InputExtraProps<"date">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultDateInput: ({ field, extra }: InputRenderProps<"date">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultDateInput;
@@ -1,3 +1,3 @@
1
- import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
- declare const DefaultDateRangeInput: (field: InputFieldProps<"daterange">, extra: InputExtraProps<"daterange">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultDateRangeInput: ({ field, extra }: InputRenderProps<"daterange">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultDateRangeInput;
@@ -1,3 +1,3 @@
1
- import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
- declare const DefaultFileInput: (field: InputFieldProps<"file">, extra: InputExtraProps<"file">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultFileInput: ({ field, extra }: InputRenderProps<"file">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultFileInput;
@@ -1,3 +1,3 @@
1
- import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
- declare const DefaultHiddenInput: (field: InputFieldProps<"hidden">, _extra: InputExtraProps<"hidden">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultHiddenInput: ({ field }: InputRenderProps<"hidden">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultHiddenInput;
@@ -1,3 +1,3 @@
1
- import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
- declare const DefaultHttpInput: (field: InputFieldProps<"http">, extra: InputExtraProps<"http">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultHttpInput: ({ field, extra }: InputRenderProps<"http">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultHttpInput;
@@ -1,3 +1,3 @@
1
- import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
- declare const DefaultNumberInput: (field: InputFieldProps<"number">, extra: InputExtraProps<"number">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultNumberInput: ({ field, extra }: InputRenderProps<"number">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultNumberInput;
@@ -1,3 +1,3 @@
1
- import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
- declare const DefaultPasswordInput: (field: InputFieldProps<"password">, extra: InputExtraProps<"password">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultPasswordInput: ({ field, extra }: InputRenderProps<"password">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultPasswordInput;
@@ -1,3 +1,3 @@
1
- import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
- declare const DefaultRadioInput: (field: InputFieldProps<"radio">, extra: InputExtraProps<"radio">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultRadioInput: ({ field, extra }: InputRenderProps<"radio">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultRadioInput;
@@ -1,3 +1,3 @@
1
- import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
- declare const DefaultSelectInput: (field: InputFieldProps<"select">, extra: InputExtraProps<"select">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultSelectInput: ({ field, extra }: InputRenderProps<"select">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultSelectInput;
@@ -1,3 +1,11 @@
1
- import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
- declare const DefaultSubmitInput: (_field: InputFieldProps<"submit">, extra: InputExtraProps<"submit">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ /**
3
+ * The `submit` input node is declarative only: it marks where the flow submits
4
+ * and carries the optional custom label / `submitConfig`. The actual submit
5
+ * button is rendered once by the step (in its action row, next to Back) — see
6
+ * `DefaultStep` — so the node itself renders nothing. This guarantees a single,
7
+ * consistently-placed button whether submission comes from an explicit submit
8
+ * node, the default "Submit", or a "Continue" step.
9
+ */
10
+ declare const DefaultSubmitInput: (_props: InputRenderProps<"submit">) => null;
3
11
  export default DefaultSubmitInput;
@@ -1,3 +1,3 @@
1
- import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
- declare const DefaultSwitchInput: (field: InputFieldProps<"switch">, extra: InputExtraProps<"switch">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultSwitchInput: ({ field, extra }: InputRenderProps<"switch">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultSwitchInput;
@@ -1,3 +1,3 @@
1
- import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
- declare const DefaultTextAreaInput: (field: InputFieldProps<"textarea">, extra: InputExtraProps<"textarea">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultTextAreaInput: ({ field, extra }: InputRenderProps<"textarea">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultTextAreaInput;
@@ -1,3 +1,3 @@
1
- import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
- declare const DefaultTextInput: (field: InputFieldProps<"text">, extra: InputExtraProps<"text">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultTextInput: ({ field, extra }: InputRenderProps<"text">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultTextInput;
@@ -1,3 +1,3 @@
1
- import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
- declare const DefaultTimeInput: (field: InputFieldProps<"time">, extra: InputExtraProps<"time">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultTimeInput: ({ field, extra }: InputRenderProps<"time">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultTimeInput;
@@ -1,3 +1,3 @@
1
- import { InputExtraProps, InputFieldProps } from '../../../../../types/renderer';
2
- declare const DefaultTimeRangeInput: (field: InputFieldProps<"timerange">, extra: InputExtraProps<"timerange">) => import("react/jsx-runtime").JSX.Element;
1
+ import { InputRenderProps } from '../../../../../types/renderer';
2
+ declare const DefaultTimeRangeInput: ({ field, extra }: InputRenderProps<"timerange">) => import("react/jsx-runtime").JSX.Element;
3
3
  export default DefaultTimeRangeInput;
@@ -1,5 +1,5 @@
1
1
  import { Node } from '@xyflow/react';
2
- import { FormEvent, ReactNode } from 'react';
2
+ import { ComponentType, FormEvent, ReactNode } from 'react';
3
3
  import { SerializableFile } from '../utils/file';
4
4
  import { FlowStep } from '../utils/step';
5
5
  import { Flow, GroupNodeData, HttpHeaders, InputNodeData, InputOption, InputType, TreegeNodeData, UINodeData, UIType } from '../../shared/types/node';
@@ -143,11 +143,19 @@ export type InputExtraProps<T extends InputType = InputType> = {
143
143
  compactOptions?: boolean;
144
144
  };
145
145
  /**
146
- * An input renderer. Receives the spreadable `field` props (DOM-safe) and the
147
- * Treege `extra` props (state setters, translations, metadata) as two separate
148
- * arguments, so `field` can be spread onto a control: `<input {...field} />`.
146
+ * Props passed to an input renderer: the spreadable `field` props (DOM-safe, so
147
+ * `field` can be spread onto a control — `<input {...field} />`) and the Treege
148
+ * `extra` props (state setters, translations, metadata).
149
149
  */
150
- export type InputRenderer<T extends InputType = InputType> = (field: InputFieldProps<T>, extra: InputExtraProps<T>) => ReactNode;
150
+ export type InputRenderProps<T extends InputType = InputType> = {
151
+ field: InputFieldProps<T>;
152
+ extra: InputExtraProps<T>;
153
+ };
154
+ /**
155
+ * An input renderer — a React component, so it can use hooks and is rendered
156
+ * directly (`<Renderer field={field} extra={extra} />`) without a wrapper.
157
+ */
158
+ export type InputRenderer<T extends InputType = InputType> = ComponentType<InputRenderProps<T>>;
151
159
  export type UiRenderProps = {
152
160
  node: Node<UINodeData>;
153
161
  };
@@ -195,8 +203,16 @@ export type StepRenderProps = {
195
203
  /** Whether all required visible inputs of the step are filled. */
196
204
  canContinue: boolean;
197
205
  /**
198
- * Translated labels of required fields still empty. Only populated on the
199
- * last step so the step can show a tooltip explaining why submit is disabled.
206
+ * True when the step contains an explicit `submit` input node. Such a node is
207
+ * declarative it renders no button itself; the step renders the single
208
+ * submit button (reusing the node's label). Exposed for custom step
209
+ * implementations that need to know a submit node is present.
210
+ */
211
+ hasSubmitInput?: boolean;
212
+ /**
213
+ * Translated labels of the current step's required fields still empty. Lines
214
+ * up with `canContinue`, so the action button can show a tooltip explaining
215
+ * why Continue/Submit is disabled — on every step, not just the last.
200
216
  */
201
217
  missingFields?: string[];
202
218
  /** Submission in progress (passed through from `useTreegeRenderer`). */
@@ -314,6 +330,11 @@ export type TreegeRendererConfig = {
314
330
  * @default "onSubmit"
315
331
  */
316
332
  validationMode?: "onChange" | "onSubmit";
333
+ /**
334
+ * Whether to display the "Powered by Treege" credit at the bottom of the form.
335
+ * @default true
336
+ */
337
+ showPoweredBy?: boolean;
317
338
  /**
318
339
  * Base URL prepended to every **relative** HTTP url issued by the renderer
319
340
  * (HTTP inputs, dynamic options, and submit). Use this to keep the tree