autoforma 1.0.115 → 1.1.0

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 (54) hide show
  1. package/README.md +211 -157
  2. package/dist/components/AutoForm/AutoForm.d.ts +3 -0
  3. package/dist/components/AutoForm/AutoForm.types.d.ts +54 -0
  4. package/dist/components/AutoForm/context/FormContext.d.ts +3 -0
  5. package/dist/components/AutoForm/context/RenderersContext.d.ts +7 -0
  6. package/dist/components/AutoForm/context/UpdateFieldSchemaContext.d.ts +7 -0
  7. package/dist/components/AutoForm/index.d.ts +0 -0
  8. package/dist/fields/FieldRenderer/ArrayLayout.d.ts +4 -0
  9. package/dist/fields/FieldRenderer/DefaultFieldRender.d.ts +3 -0
  10. package/dist/fields/FieldRenderer/FieldLayoutWrapper.d.ts +9 -0
  11. package/dist/fields/FieldRenderer/FieldRenderer.d.ts +5 -0
  12. package/dist/fields/FieldRenderer/FieldRenderer.types.d.ts +7 -0
  13. package/dist/fields/FieldRenderer/ObjectLayout.d.ts +4 -0
  14. package/dist/fields/renderer-resolver/BuiltInHandler.d.ts +9 -0
  15. package/dist/fields/renderer-resolver/FieldNameHandler.d.ts +8 -0
  16. package/dist/fields/renderer-resolver/FieldTypeHandler.d.ts +8 -0
  17. package/dist/fields/renderer-resolver/RendererHandler.d.ts +6 -0
  18. package/dist/fields/renderer-resolver/RendererResolverChain.d.ts +7 -0
  19. package/dist/fields/renderer.types.d.ts +12 -0
  20. package/dist/fields/renderers/CheckBoxFieldRenderer.d.ts +4 -0
  21. package/dist/fields/renderers/DateFieldRenderer.d.ts +4 -0
  22. package/dist/fields/renderers/DateTimeFieldRenderer.d.ts +4 -0
  23. package/dist/fields/renderers/NumberFieldRenderer.d.ts +4 -0
  24. package/dist/fields/renderers/RichTextEditorFieldRenderer.d.ts +4 -0
  25. package/dist/fields/renderers/SelectFieldRenderer.d.ts +4 -0
  26. package/dist/fields/renderers/SwitchFieldRenderer.d.ts +4 -0
  27. package/dist/fields/renderers/TagsFieldRenderer.d.ts +4 -0
  28. package/dist/fields/renderers/TextFieldRenderer.d.ts +4 -0
  29. package/dist/fields/renderers/TimeFieldRenderer.d.ts +4 -0
  30. package/dist/fields/resolver/FieldSchemaResolver.d.ts +8 -0
  31. package/dist/fields/types.d.ts +58 -0
  32. package/dist/fields/utils/layout.utils.d.ts +5 -0
  33. package/dist/fields/utils/schema.utils.d.ts +2 -0
  34. package/dist/fields/utils/values.utils.d.ts +4 -0
  35. package/dist/index.cjs.js +179 -15
  36. package/dist/index.d.ts +4 -2
  37. package/dist/index.es.js +23186 -4312
  38. package/dist/theme.d.ts +2 -2
  39. package/package.json +47 -12
  40. package/dist/components/AutoForm.d.ts +0 -18
  41. package/dist/components/FieldRender.d.ts +0 -16
  42. package/dist/components/fields/ArrayField.d.ts +0 -13
  43. package/dist/components/fields/CheckField.d.ts +0 -7
  44. package/dist/components/fields/DateField.d.ts +0 -6
  45. package/dist/components/fields/DateTimeField.d.ts +0 -6
  46. package/dist/components/fields/NumberField.d.ts +0 -6
  47. package/dist/components/fields/ObjectField.d.ts +0 -9
  48. package/dist/components/fields/SelectField.d.ts +0 -10
  49. package/dist/components/fields/TextAreaField.d.ts +0 -6
  50. package/dist/components/fields/TextField.d.ts +0 -6
  51. package/dist/components/fields/TimeField.d.ts +0 -6
  52. package/dist/types/custom-render.d.ts +0 -11
  53. package/dist/types/field.d.ts +0 -30
  54. package/dist/types/form.d.ts +0 -7
package/README.md CHANGED
@@ -1,157 +1,211 @@
1
-
2
- # AutoForm
3
-
4
- AutoForm is a dynamic form builder component for React applications, using **Mantine**. It generates forms dynamically based on a schema definition. This allows for faster form creation and less repetitive code when working with forms in your React applications.
5
-
6
- ## Features
7
-
8
- - **Dynamic Form Rendering**: AutoForm renders fields based on the provided schema, making form generation easy.
9
- - **Field Types Support**: Supports various input types like `text`, `number`, `password`, `select`, `checkbox`, etc.
10
- - **Validation Support**: Integrates with form validation mechanisms.
11
- - **Custom Layout**: Supports custom layout rendering via the `container` and `fieldContainer` props.
12
- - **Read-Only Mode**: Option to set the form in read-only mode.
13
- - **Field Customization**: Easily customize field rendering for different input types.
14
- - **Conditional Rendering**: Hide fields or conditionally render based on certain conditions.
15
-
16
- ## Installation
17
-
18
- To install `AutoForm`, you can use npm or yarn:
19
-
20
- ```bash
21
- npm install @mantine/core react
22
- ```
23
-
24
- ## Usage
25
-
26
- ### Example Usage
27
-
28
- ```tsx
29
- import React from 'react';
30
- import AutoForm from './AutoForm'; // Path to your AutoForm component
31
- import { Button, Grid, Group } from '@mantine/core';
32
-
33
- const schema = [
34
- { name: 'firstName', label: 'First Name', type: 'text' },
35
- { name: 'age', label: 'Age', type: 'number' },
36
- { name: 'subscribe', label: 'Subscribe?', type: 'checkbox' },
37
- { name: 'role', label: 'Role', type: 'select', options: ['User', 'Admin'] },
38
- ];
39
-
40
- const MyForm = () => {
41
- const onSubmit = (values) => {
42
- alert(JSON.stringify(values, null, 2));
43
- };
44
-
45
- return (
46
- <AutoForm
47
- schema={schema}
48
- onSubmit={onSubmit}
49
- container={(form, onSubmit, readOnly) => (
50
- <>
51
- <Grid>{form}</Grid>
52
- {!readOnly && (
53
- <Group justify="flex-end">
54
- <Button onClick={onSubmit}>Submit</Button>
55
- </Group>
56
- )}
57
- </>
58
- )}
59
- />
60
- );
61
- };
62
- ```
63
-
64
- ### Props
65
-
66
- | Prop | Type | Description |
67
- |------------------|--------------------------------------------------------------------------------|-----------------------------------------------------------------------------|
68
- | `schema` | `FieldSchema[]` | List of field definitions to render. Each field specifies `name`, `type`, etc. |
69
- | `values` | `Record<string, any>` | Initial values for the form fields. Optional. |
70
- | `onSubmit` | `(values: Record<string, any>) => void` | Callback triggered on form submission with current form values. |
71
- | `container` | `(form: ReactNode, onSubmit: () => void, readOnly?: true) => ReactNode` | Custom render wrapper around the form and submit button. |
72
- | `fieldContainer` | `(field: ReactNode, fieldSchema: FieldSchema) => ReactNode` | Optional. Custom layout for each field (e.g., grid wrappers). |
73
- | `customRender` | `FieldRenderCustomRender` | Optional. Override how specific field types are rendered. |
74
- | `validate` | `FormValidateInput<Record<string, any>>` | Optional validation logic. Uses Mantine-compatible validation. |
75
- | `readOnly` | `true` | Optional. When true, disables all inputs (read-only mode). |
76
- | `onFieldChange` | `(name: string, value: any, values: Record<string, any>) => Record<string, any>` | Optional. Modify or transform values when a field changes. |
77
-
78
- ### Custom Layout
79
-
80
- You can customize the layout of the entire form or specific fields by using the `container` and `fieldContainer` props.
81
-
82
- #### Example: Customizing the Form Layout
83
-
84
- ```tsx
85
- const customLayout = (form, onSubmit, readOnly) => (
86
- <>
87
- <div className="form-container">{form}</div>
88
- {!readOnly && <button onClick={onSubmit}>Submit</button>}
89
- </>
90
- );
91
- ```
92
-
93
- #### Example: Customizing Field Layout
94
-
95
- ```tsx
96
- const customFieldLayout = (field, fieldSchema) => (
97
- <div className="custom-field">{field}</div>
98
- );
99
- ```
100
-
101
- ### Validation
102
-
103
- AutoForm supports validation through the `validate` prop. You can pass a validation function that returns an object of validation errors.
104
-
105
- Example:
106
-
107
- ```tsx
108
- const validateForm = (values) => {
109
- const errors = {};
110
- if (!values.firstName) errors.firstName = 'First name is required';
111
- if (!values.age) errors.age = 'Age is required';
112
- return errors;
113
- };
114
-
115
- <AutoForm
116
- schema={schema}
117
- validate={validateForm}
118
- onSubmit={(values) => console.log(values)}
119
- container={(form, onSubmit) => (
120
- <>
121
- <Grid>{form}</Grid>
122
- <Button onClick={onSubmit}>Submit</Button>
123
- </>
124
- )}
125
- />
126
- ```
127
-
128
- ### Hide Fields
129
-
130
- To hide a field from rendering, you can set the `hidden` property in the schema.
131
-
132
- Example:
133
-
134
- ```tsx
135
- const schema = [
136
- { name: 'firstName', label: 'First Name', type: 'text' },
137
- { name: 'internalCode', label: 'Internal Code', type: 'text', hidden: true },
138
- ];
139
- ```
140
-
141
- This will ensure the "Internal Code" field is not rendered.
142
-
143
- ---
144
-
145
- ## Contributing
146
-
147
- 1. Fork the repository
148
- 2. Create a new branch (`git checkout -b feature-branch`)
149
- 3. Commit your changes (`git commit -am 'Add feature'`)
150
- 4. Push to the branch (`git push origin feature-branch`)
151
- 5. Create a new Pull Request
152
-
153
- ---
154
-
155
- ## License
156
-
157
- Distributed under the MIT License. See `LICENSE` for more information.
1
+ # 🚀 Introduction
2
+
3
+ **AutoForma** is a modern, dynamic, and extensible **form builder for React** — built on top of [Mantine](https://mantine.dev/) and fully written in TypeScript.
4
+ It allows you to create powerful forms **entirely from JSON schema definitions**, removing repetitive boilerplate code and giving you full control over field behavior and layout.
5
+
6
+ With AutoForma, you can:
7
+ - 🧩 Define forms using schema objects — no manual wiring.
8
+ - 🪄 Dynamically show, hide, or disable fields based on other values.
9
+ - 🎨 Customize the UI with your own field renderers.
10
+ - 🧠 Extend with new field types or layouts effortlessly.
11
+
12
+ > 💡 AutoForma is perfect for dashboards, admin panels, and SaaS apps where flexibility and maintainability matter.
13
+
14
+ ---
15
+
16
+ ## 📦 Installation
17
+
18
+ Install **AutoForma** along with its required Mantine and React peer dependencies:
19
+
20
+ ```bash
21
+ npm install autoforma @mantine/core@^8.3.2 @mantine/hooks@^8.3.2 @mantine/form@^8.3.2 @mantine/dates@^8.3.2 @mantine/tiptap@^8.3.2 @tiptap/react@^3.6.6 react@^19.0.0 react-dom@^19.0.0
22
+ ```
23
+
24
+ ---
25
+
26
+ ## ⚙️ Setup Requirements
27
+
28
+ Before using `AutoForma`, wrap your app with the `MantineProvider`
29
+ and import Mantine’s global styles and optional TipTap editor styles:
30
+
31
+ ```tsx
32
+ import { MantineProvider } from "@mantine/core";
33
+ import "@mantine/core/styles.css";
34
+ import "@mantine/dates/styles.css";
35
+ import "@mantine/tiptap/styles.css";
36
+
37
+ const Root = () => (
38
+ <MantineProvider>
39
+ <App />
40
+ </MantineProvider>
41
+ );
42
+ ```
43
+
44
+ > ⚠️ Without wrapping your app in `MantineProvider`,
45
+ > the components may not render or style correctly.
46
+
47
+ ---
48
+
49
+ # 🧩 Basic Usage
50
+
51
+ Here’s a quick example of how you can generate a complete form instantly using **AutoForma**.
52
+ Just define your schema and pass it to the `AutoForm` component — it handles layout, validation, and submission automatically.
53
+
54
+ ```tsx
55
+ import AutoForm from "autoforma";
56
+ import { userFormSchema } from "./schema";
57
+
58
+ const App = () => (
59
+ <AutoForm
60
+ schema={userFormSchema}
61
+ onSubmit={(values) => console.log("Submitted:", values)}
62
+ />
63
+ );
64
+ ```
65
+
66
+ > AutoForma automatically generates labels, validation, and layouts based on your schema.
67
+
68
+ ---
69
+
70
+ # 🎨 Customization & Field Types
71
+
72
+ AutoForma gives you full control over how your form behaves and looks.
73
+ You can **dynamically update field properties** (like visibility, enabled state, or placeholder)
74
+ and even **inject your own custom field types** using `customFieldTypes`.
75
+
76
+ ---
77
+
78
+ ## 🧠 Supported Field Types
79
+
80
+ Out of the box, AutoForma supports a rich set of field types:
81
+
82
+ | Type | Description |
83
+ |------|--------------|
84
+ | `text` | Standard text input |
85
+ | `number` | Numeric input |
86
+ | `select` | Dropdown list |
87
+ | `checkbox` | Boolean checkbox |
88
+ | `date` | Date picker |
89
+ | `datetime` | Combined date & time picker |
90
+ | `time` | Time-only picker |
91
+ | `object` | Nested object field (grouped sub-fields) |
92
+ | `array` | Repeating array of fields |
93
+ | `switch` | Toggle switch |
94
+ | `texteditor` | Rich text editor (TipTap powered) |
95
+ | `tags` | Multi-value tag input |
96
+ | `TCustom` | Any custom type you define via `customFieldTypes` |
97
+
98
+ You can define your own type like this:
99
+
100
+ ```tsx
101
+ <AutoForm
102
+ schema={schema}
103
+ customFieldTypes={{
104
+ colorPicker: (field, form) => (
105
+ <input
106
+ type="color"
107
+ {...form.getInputProps(field.name)}
108
+ />
109
+ ),
110
+ }}
111
+ />
112
+ ```
113
+
114
+ ---
115
+
116
+ # ⚙️ API Reference
117
+
118
+ AutoForma exposes several TypeScript interfaces and configuration objects that make it fully type-safe and flexible.
119
+ Below are the main types you can use to configure and extend the library.
120
+
121
+ ## 🧩 `AutoFormProps<TValues>`
122
+
123
+ The main props accepted by the `AutoForm` component.
124
+
125
+ ```ts
126
+ export type AutoFormProps<
127
+ TValues extends Record<string, any> = Record<string, any>
128
+ > = CustomRenderersConfig<TValues> & {
129
+ schema: (FieldSchema<TValues> & Record<string, any>)[];
130
+
131
+ initialValues?: ValueProvider<TValues>;
132
+ currentValues?: ValueProvider<TValues>;
133
+
134
+ prepareValues?: (values: TValues) => TValues | Promise<TValues>;
135
+ onSubmit: (values: TValues) => void | Promise<void>;
136
+ afterSubmit?: (values: TValues) => void | Promise<void>;
137
+
138
+ validate?: FormValidateInput<TValues>;
139
+ readOnly?: boolean;
140
+
141
+ onFieldChange?: OnFieldChangeMap<TValues>;
142
+
143
+ layout?: "vertical" | "horizontal" | "grid";
144
+
145
+ updateFieldSchema?: UpdateFieldSchemaMap<TValues>;
146
+
147
+ submitButton?: boolean | React.ReactNode;
148
+
149
+ loading?: boolean;
150
+ };
151
+ ```
152
+
153
+ ### 🧠 Description of Properties
154
+
155
+ | Prop | Type | Description |
156
+ |------|------|--------------|
157
+ | `schema` | `FieldSchema[]` | The main schema defining all form fields. |
158
+ | `initialValues` | `ValueProvider<TValues>` | Function or object returning the **initial form values** (called once). |
159
+ | `currentValues` | `ValueProvider<TValues>` | Function or object providing **current values** (reactively updated). |
160
+ | `prepareValues` | `(values) => TValues \| Promise<TValues>` | Modify or sanitize values before submit. |
161
+ | `onSubmit` | `(values) => void \| Promise<void>` | Called when the form is submitted. |
162
+ | `afterSubmit` | `(values) => void \| Promise<void>` | Called after successful submission (for side effects). |
163
+ | `validate` | `FormValidateInput<TValues>` | Mantine validation config or validation schema. |
164
+ | `readOnly` | `boolean` | Makes the entire form read-only. |
165
+ | `onFieldChange` | `OnFieldChangeMap<TValues>` | Map of field-specific change handlers. |
166
+ | `layout` | `"vertical" \| "horizontal" \| "grid"` | Form layout type. |
167
+ | `updateFieldSchema` | `UpdateFieldSchemaMap<TValues>` | Dynamically modify schema based on values. |
168
+ | `submitButton` | `boolean \| ReactNode` | Whether to render or customize the submit button. |
169
+ | `loading` | `boolean` | Display a global loading state for the form. |
170
+
171
+ ---
172
+
173
+ ## 🧩 `CustomRenderersConfig<TValues>`
174
+
175
+ Defines all the ways you can override the default rendering logic.
176
+
177
+ ```ts
178
+ export type CustomRenderersConfig<
179
+ TValues extends Record<string, any> = Record<string, any>
180
+ > = {
181
+ customFieldRenderers?: Record<
182
+ string,
183
+ (
184
+ field: FieldSchema<TValues>,
185
+ form: UseFormReturnType<TValues>
186
+ ) => React.ReactNode
187
+ >;
188
+ customTypeRenderers?: Record<
189
+ string,
190
+ (
191
+ field: FieldSchema<TValues>,
192
+ form: UseFormReturnType<TValues>
193
+ ) => React.ReactNode
194
+ >;
195
+ customFieldTypes?: Record<
196
+ string,
197
+ (
198
+ field: FieldSchema<TValues>,
199
+ form: UseFormReturnType<TValues>
200
+ ) => React.ReactNode
201
+ >;
202
+ };
203
+ ```
204
+
205
+ ### 🧠 Description of Properties
206
+
207
+ | Prop | Type | Description |
208
+ |------|------|--------------|
209
+ | `customFieldRenderers` | `Record<string, (field, form) => ReactNode>` | Override rendering for specific **field names**. |
210
+ | `customTypeRenderers` | `Record<string, (field, form) => ReactNode>` | Override rendering for specific **field types** (like `select`, `text`, etc.). |
211
+ | `customFieldTypes` | `Record<string, (field, form) => ReactNode>` | Register completely new **custom field types**. |
@@ -0,0 +1,3 @@
1
+ import { AutoFormProps, AutoFormRef } from './AutoForm.types';
2
+ declare const AutoForm: import('react').ForwardRefExoticComponent<AutoFormProps<Record<string, any>> & import('react').RefAttributes<AutoFormRef>>;
3
+ export default AutoForm;
@@ -0,0 +1,54 @@
1
+ import { FieldSchema } from '../../fields/types';
2
+ import { UseFormReturnType } from '@mantine/form';
3
+ type FormValues = Record<string, any>;
4
+ export type UpdateFieldSchema = {
5
+ [key: string]: (path: string, fieldSchema: FieldSchema, values: FormValues) => FieldSchema | Promise<FieldSchema>;
6
+ };
7
+ export interface FieldRendererProps<TValues = any> {
8
+ field: FieldSchema;
9
+ form: UseFormReturnType<TValues>;
10
+ }
11
+ export type OnFieldChangeMap<TValues extends Record<string, any> = Record<string, any>> = {
12
+ [K in keyof TValues]?: (path: string, value: TValues[K], form: UseFormReturnType<TValues>) => void | Promise<void>;
13
+ };
14
+ export interface AutoFormProps<FormValues extends Record<string, any> = Record<string, any>> {
15
+ schema: FieldSchema[];
16
+ readOnly?: boolean;
17
+ disabled?: boolean;
18
+ layout?: "vertical" | "horizontal" | "grid";
19
+ primaryAction?: boolean;
20
+ submitLabel?: string;
21
+ loading?: boolean;
22
+ values?: () => FormValues | Promise<FormValues>;
23
+ initialValues?: () => FormValues | Promise<FormValues>;
24
+ onFieldChange?: OnFieldChangeMap<FormValues>;
25
+ updateFieldSchema?: UpdateFieldSchema;
26
+ validate?: (values: FormValues) => Partial<Record<string, string>> | Promise<Partial<Record<string, string>>>;
27
+ preSubmit?: (values: FormValues) => FormValues | Promise<FormValues>;
28
+ onSubmit: (values: FormValues) => void | Promise<void>;
29
+ postSubmit?: (values: FormValues) => void | Promise<void>;
30
+ uiConfig?: {
31
+ layout?: {
32
+ gap?: number;
33
+ columns?: number;
34
+ align?: "start" | "center" | "end";
35
+ };
36
+ customTypeRenderer?: Record<string, React.ComponentType<FieldRendererProps<FormValues>>>;
37
+ customFieldNameRenderer?: Record<string, React.ComponentType<FieldRendererProps<FormValues>>>;
38
+ customFieldTypeRenderer?: Record<string, React.ComponentType<FieldRendererProps<FormValues>>>;
39
+ };
40
+ }
41
+ export interface AutoFormRef {
42
+ submit: () => void;
43
+ reset: (values?: Partial<FormValues>) => void;
44
+ validate: () => boolean;
45
+ getValues: () => FormValues;
46
+ setValues: (values: Partial<FormValues>) => void;
47
+ getFieldValue: (path: string) => any;
48
+ setFieldValue: (path: string, value: any) => void;
49
+ isValid: () => boolean;
50
+ isDirty: () => boolean;
51
+ isLoading: () => boolean;
52
+ watch: <Field extends string>(path: Field, subscriber: (value: any, previousValue: any) => void) => void;
53
+ }
54
+ export {};
@@ -0,0 +1,3 @@
1
+ export type FormValues = Record<string, any>;
2
+ declare const FormProvider: import('react').FC<import('@mantine/form/lib/FormProvider/FormProvider').FormProviderProps<import('@mantine/form').UseFormReturnType<FormValues, (values: FormValues) => FormValues>>>, useFormContext: () => import('@mantine/form').UseFormReturnType<FormValues, (values: FormValues) => FormValues>, useForm: import('@mantine/form').UseForm<FormValues, (values: FormValues) => FormValues>;
3
+ export { FormProvider, useFormContext, useForm };
@@ -0,0 +1,7 @@
1
+ import { RendererResolverChain } from '../../../fields/renderer-resolver/RendererResolverChain';
2
+ export declare const RendererContext: import('react').Context<RendererResolverChain | null>;
3
+ export declare const RendererProvider: ({ children, value, }: {
4
+ children: React.ReactNode;
5
+ value: RendererResolverChain;
6
+ }) => import("react/jsx-runtime").JSX.Element;
7
+ export declare const useRenderers: <TValues extends Record<string, any> = Record<string, any>>() => RendererResolverChain;
@@ -0,0 +1,7 @@
1
+ import { UpdateFieldSchema } from '../AutoForm.types';
2
+ export declare const UpdateFieldSchemaContext: import('react').Context<UpdateFieldSchema | null>;
3
+ export declare const UpdateFieldSchemaProvider: ({ children, value, }: {
4
+ children: React.ReactNode;
5
+ value: UpdateFieldSchema;
6
+ }) => import("react/jsx-runtime").JSX.Element;
7
+ export declare const useUpdateFieldSchema: () => UpdateFieldSchema;
File without changes
@@ -0,0 +1,4 @@
1
+ import { FormValues } from '../../components/AutoForm/context/FormContext';
2
+ import { DefaultFieldRendererProps } from './FieldRenderer.types';
3
+ declare const ArrayLayout: (props: DefaultFieldRendererProps<FormValues>) => import("react/jsx-runtime").JSX.Element;
4
+ export default ArrayLayout;
@@ -0,0 +1,3 @@
1
+ import { DefaultFieldRendererProps } from './FieldRenderer.types';
2
+ export declare function FieldRenderer<TValues extends Record<string, any> = Record<string, any>>(props: DefaultFieldRendererProps<TValues>): import("react/jsx-runtime").JSX.Element;
3
+ export default FieldRenderer;
@@ -0,0 +1,9 @@
1
+ import { default as React } from 'react';
2
+ import { FieldSchema } from '../types';
3
+ type FieldLayoutWrapperProps = {
4
+ field: FieldSchema;
5
+ layout: "vertical" | "horizontal" | "grid";
6
+ children: React.ReactNode;
7
+ };
8
+ export declare function FieldLayoutWrapper({ field, layout, children, }: FieldLayoutWrapperProps): import("react/jsx-runtime").JSX.Element;
9
+ export default FieldLayoutWrapper;
@@ -0,0 +1,5 @@
1
+ import { FieldSchema } from '../types';
2
+ declare const FieldRenderer: (props: {
3
+ fieldSchema: FieldSchema;
4
+ }) => import("react/jsx-runtime").JSX.Element | null;
5
+ export default FieldRenderer;
@@ -0,0 +1,7 @@
1
+ import { UseFormReturnType } from '@mantine/form';
2
+ import { FieldSchema } from '../types';
3
+ export interface DefaultFieldRendererProps<TValues extends Record<string, any> = Record<string, any>> {
4
+ field: FieldSchema<TValues>;
5
+ form: UseFormReturnType<TValues>;
6
+ layout?: "vertical" | "horizontal" | "grid";
7
+ }
@@ -0,0 +1,4 @@
1
+ import { FormValues } from '../../components/AutoForm/context/FormContext';
2
+ import { DefaultFieldRendererProps } from '../FieldRenderer/FieldRenderer.types';
3
+ declare const ObjectLayout: ({ field, layout, }: DefaultFieldRendererProps<FormValues>) => import("react/jsx-runtime").JSX.Element;
4
+ export default ObjectLayout;
@@ -0,0 +1,9 @@
1
+ import { FieldSchema } from '../types';
2
+ import { RendererHandler } from './RendererHandler';
3
+ import { default as FieldRenderer } from '../FieldRenderer/DefaultFieldRender';
4
+ export declare class BuiltInHandler implements RendererHandler {
5
+ private layout;
6
+ constructor(layout: "vertical" | "horizontal" | "grid");
7
+ canHandle(): boolean;
8
+ resolve(field: FieldSchema): typeof FieldRenderer;
9
+ }
@@ -0,0 +1,8 @@
1
+ import { FieldSchema } from '../types';
2
+ import { RendererHandler } from './RendererHandler';
3
+ export declare class FieldNameHandler implements RendererHandler {
4
+ private renderers;
5
+ constructor(renderers: Record<string, React.ComponentType<any>>);
6
+ canHandle(field: FieldSchema): boolean;
7
+ resolve(field: FieldSchema): import('react').ComponentType<any>;
8
+ }
@@ -0,0 +1,8 @@
1
+ import { FieldSchema } from '../types';
2
+ import { RendererHandler } from './RendererHandler';
3
+ export declare class FieldTypeHandler implements RendererHandler {
4
+ private renderers;
5
+ constructor(renderers: Record<string, React.ComponentType<any>>);
6
+ canHandle(field: FieldSchema): boolean;
7
+ resolve(field: FieldSchema): import('react').ComponentType<any>;
8
+ }
@@ -0,0 +1,6 @@
1
+ import { FieldRendererProps } from '../../components/AutoForm/AutoForm';
2
+ import { FieldSchema } from '../types';
3
+ export interface RendererHandler {
4
+ canHandle(field: FieldSchema): boolean;
5
+ resolve(field: FieldSchema): React.ComponentType<FieldRendererProps> | null;
6
+ }
@@ -0,0 +1,7 @@
1
+ import { FieldSchema } from '../types';
2
+ import { RendererHandler } from './RendererHandler';
3
+ export declare class RendererResolverChain {
4
+ private handlers;
5
+ constructor(handlers: RendererHandler[]);
6
+ resolve(field: FieldSchema): import('react').ComponentType<FieldRendererProps> | null;
7
+ }
@@ -0,0 +1,12 @@
1
+ import { UseFormReturnType } from '@mantine/form';
2
+ import { FieldSchema } from './types';
3
+ export type FieldRendererResolverProps<TValues extends Record<string, any> = Record<string, any>> = CustomRenderersConfig<TValues> & {
4
+ field: FieldSchema<TValues>;
5
+ form: UseFormReturnType<TValues>;
6
+ layout?: "vertical" | "horizontal" | "grid";
7
+ };
8
+ export type CustomRenderersConfig<TValues extends Record<string, any> = Record<string, any>> = {
9
+ customFieldRenderers?: Record<string, (field: FieldSchema<TValues>, form: UseFormReturnType<TValues>) => React.ReactNode>;
10
+ customTypeRenderers?: Record<string, (field: FieldSchema<TValues>, form: UseFormReturnType<TValues>) => React.ReactNode>;
11
+ customFieldTypes?: Record<string, (field: FieldSchema<TValues>, form: UseFormReturnType<TValues>) => React.ReactNode>;
12
+ };
@@ -0,0 +1,4 @@
1
+ import { FieldRendererProps } from '../FieldRenderer/FieldRenderer.types';
2
+ type CheckBoxFieldRendererProps<TValues extends Record<string, any> = Record<string, any>> = FieldRendererProps<TValues>;
3
+ export declare function CheckBoxFieldRenderer<TValues extends Record<string, any> = Record<string, any>>({ field, form }: CheckBoxFieldRendererProps<TValues>): import("react/jsx-runtime").JSX.Element;
4
+ export default CheckBoxFieldRenderer;
@@ -0,0 +1,4 @@
1
+ import { FieldRendererProps } from '../FieldRenderer/FieldRenderer.types';
2
+ type DateFieldRendererProps<TValues extends Record<string, any> = Record<string, any>> = FieldRendererProps<TValues>;
3
+ export declare function DateFieldRenderer<TValues extends Record<string, any> = Record<string, any>>({ field, form }: DateFieldRendererProps<TValues>): import("react/jsx-runtime").JSX.Element;
4
+ export default DateFieldRenderer;
@@ -0,0 +1,4 @@
1
+ import { FieldRendererProps } from '../FieldRenderer/FieldRenderer.types';
2
+ type DateTimeFieldRendererProps<TValues extends Record<string, any> = Record<string, any>> = FieldRendererProps<TValues>;
3
+ export declare function DateTimeFieldRenderer<TValues extends Record<string, any> = Record<string, any>>({ field, form }: DateTimeFieldRendererProps<TValues>): import("react/jsx-runtime").JSX.Element;
4
+ export default DateTimeFieldRenderer;
@@ -0,0 +1,4 @@
1
+ import { FieldRendererProps } from '../FieldRenderer/FieldRenderer.types';
2
+ type NumberFieldRendererProps<TValues extends Record<string, any> = Record<string, any>> = FieldRendererProps<TValues>;
3
+ export declare function NumberFieldRenderer<TValues extends Record<string, any> = Record<string, any>>({ field, form }: NumberFieldRendererProps<TValues>): import("react/jsx-runtime").JSX.Element;
4
+ export default NumberFieldRenderer;
@@ -0,0 +1,4 @@
1
+ import { FieldRendererProps } from '../FieldRenderer/FieldRenderer.types';
2
+ type RichTextEditorFieldRendererProps<TValues extends Record<string, any> = Record<string, any>> = FieldRendererProps<TValues>;
3
+ export declare function RichTextEditorFieldRenderer<TValues extends Record<string, any> = Record<string, any>>({ field, form }: RichTextEditorFieldRendererProps<TValues>): import("react/jsx-runtime").JSX.Element;
4
+ export default RichTextEditorFieldRenderer;
@@ -0,0 +1,4 @@
1
+ import { FieldRendererProps } from '../FieldRenderer/FieldRenderer.types';
2
+ type SelectFieldRendererProps<TValues extends Record<string, any> = Record<string, any>> = FieldRendererProps<TValues>;
3
+ export declare function SelectFieldRenderer<TValues extends Record<string, any> = Record<string, any>>({ field, form }: SelectFieldRendererProps<TValues>): import("react/jsx-runtime").JSX.Element;
4
+ export default SelectFieldRenderer;
@@ -0,0 +1,4 @@
1
+ import { FieldRendererProps } from '../FieldRenderer/FieldRenderer.types';
2
+ type SwitchFieldRendererProps<TValues extends Record<string, any> = Record<string, any>> = FieldRendererProps<TValues>;
3
+ export declare function SwitchFieldRenderer<TValues extends Record<string, any> = Record<string, any>>({ field, form }: SwitchFieldRendererProps<TValues>): import("react/jsx-runtime").JSX.Element;
4
+ export default SwitchFieldRenderer;
@@ -0,0 +1,4 @@
1
+ import { FieldRendererProps } from '../FieldRenderer/FieldRenderer.types';
2
+ type TagsInputFieldRendererProps<TValues extends Record<string, any> = Record<string, any>> = FieldRendererProps<TValues>;
3
+ export declare function TagsInputFieldRenderer<TValues extends Record<string, any> = Record<string, any>>({ field, form }: TagsInputFieldRendererProps<TValues>): import("react/jsx-runtime").JSX.Element;
4
+ export default TagsInputFieldRenderer;
@@ -0,0 +1,4 @@
1
+ import { FieldRendererProps } from '../FieldRenderer/FieldRenderer.types';
2
+ type TextFieldRendererProps<TValues extends Record<string, any> = Record<string, any>> = FieldRendererProps<TValues>;
3
+ export declare function TextFieldRenderer<TValues extends Record<string, any> = Record<string, any>>({ field, form }: TextFieldRendererProps<TValues>): import("react/jsx-runtime").JSX.Element;
4
+ export default TextFieldRenderer;
@@ -0,0 +1,4 @@
1
+ import { FieldRendererProps } from '../FieldRenderer/FieldRenderer.types';
2
+ type TimeFieldRendererProps<TValues extends Record<string, any> = Record<string, any>> = FieldRendererProps<TValues>;
3
+ export declare function TimeFieldRenderer<TValues extends Record<string, any> = Record<string, any>>({ field, form }: TimeFieldRendererProps<TValues>): import("react/jsx-runtime").JSX.Element;
4
+ export default TimeFieldRenderer;