autoforma 1.0.38 → 1.0.41

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 (44) hide show
  1. package/README.md +237 -157
  2. package/dist/components/AutoForm/AutoForm.d.ts +3 -0
  3. package/dist/components/AutoForm/AutoForm.types.d.ts +23 -0
  4. package/dist/components/AutoForm/index.d.ts +0 -0
  5. package/dist/fields/FieldRenderer/DefaultFieldRender.d.ts +10 -0
  6. package/dist/fields/FieldRenderer/FieldLayoutWrapper.d.ts +9 -0
  7. package/dist/fields/FieldRenderer/FieldRenderer.d.ts +3 -0
  8. package/dist/fields/FieldRenderer/FieldRenderer.types.d.ts +10 -0
  9. package/dist/fields/renderer.types.d.ts +9 -0
  10. package/dist/fields/renderers/ArrayFieldRenderer.d.ts +6 -0
  11. package/dist/fields/renderers/CheckBoxFieldRenderer.d.ts +4 -0
  12. package/dist/fields/renderers/DateFieldRenderer.d.ts +4 -0
  13. package/dist/fields/renderers/DateTimeFieldRenderer.d.ts +4 -0
  14. package/dist/fields/renderers/NumberFieldRenderer.d.ts +4 -0
  15. package/dist/fields/renderers/ObjectFieldRenderer.d.ts +6 -0
  16. package/dist/fields/renderers/RichTextEditorFieldRenderer.d.ts +4 -0
  17. package/dist/fields/renderers/SelectFieldRenderer.d.ts +4 -0
  18. package/dist/fields/renderers/SwitchFieldRenderer.d.ts +4 -0
  19. package/dist/fields/renderers/TagsFieldRenderer.d.ts +4 -0
  20. package/dist/fields/renderers/TextFieldRenderer.d.ts +4 -0
  21. package/dist/fields/renderers/TimeFieldRenderer.d.ts +4 -0
  22. package/dist/fields/types.d.ts +61 -0
  23. package/dist/fields/utils/layout.utils.d.ts +5 -0
  24. package/dist/fields/utils/values.utils.d.ts +3 -0
  25. package/dist/index.cjs.js +145 -10
  26. package/dist/index.d.ts +4 -3
  27. package/dist/index.es.js +21052 -3755
  28. package/dist/theme.d.ts +6 -6
  29. package/package.json +34 -4
  30. package/dist/components/AutoForm.d.ts +0 -18
  31. package/dist/components/FieldRender.d.ts +0 -16
  32. package/dist/components/fields/ArrayField.d.ts +0 -13
  33. package/dist/components/fields/CheckField.d.ts +0 -7
  34. package/dist/components/fields/DateField.d.ts +0 -6
  35. package/dist/components/fields/DateTimeField.d.ts +0 -6
  36. package/dist/components/fields/NumberField.d.ts +0 -6
  37. package/dist/components/fields/ObjectField.d.ts +0 -9
  38. package/dist/components/fields/SelectField.d.ts +0 -10
  39. package/dist/components/fields/TextAreaField.d.ts +0 -6
  40. package/dist/components/fields/TextField.d.ts +0 -6
  41. package/dist/components/fields/TimeField.d.ts +0 -6
  42. package/dist/types/custom-render.d.ts +0 -11
  43. package/dist/types/field.d.ts +0 -31
  44. package/dist/types/form.d.ts +0 -7
package/README.md CHANGED
@@ -1,157 +1,237 @@
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
+ # 🚀 AutoForma
2
+
3
+ **AutoForma** is a powerful and flexible **dynamic form builder** for React. It allows developers to build complex forms from simple schema definitions without writing repetitive boilerplate code. With AutoForma, you can focus on the logic and behavior of your forms — not the UI details.
4
+
5
+ ---
6
+
7
+ ## ✨ Features
8
+
9
+ - **Fast form building:** Generate forms instantly from JSON schema.
10
+ - 🧩 **Rich field types:** Text, Select, Checkbox, Date, Time, Switch, Tags, Array, Object, and more.
11
+ - 🎨 **Full UI control:** Customize how each field looks and behaves.
12
+ - 🔄 **Dynamic behavior:** Show/hide fields, enable/disable them, or update their properties based on form values.
13
+ - 🪄 **Custom renderers:** Replace any field’s renderer with your own component.
14
+ - 🧠 **Validation support:** Built-in and custom validation supported out of the box.
15
+ - 📐 **Multiple layouts:** Vertical, horizontal, or grid layouts with column configuration.
16
+ - 🧪 **Extendable:** Easily integrate with any backend and add your own field types.
17
+
18
+ ---
19
+
20
+ ## 📦 Installation
21
+
22
+ ```bash
23
+ npm install autoforma
24
+ # or
25
+ yarn add autoforma
26
+ ```
27
+
28
+ > ✅ AutoForma includes everything you need — no need to manually install Mantine or other dependencies.
29
+
30
+ ---
31
+
32
+ ## 🛠️ Usage
33
+
34
+ Here's a simple example of how to use **AutoForma** in your React project:
35
+
36
+ ```tsx
37
+ import { MantineProvider } from "@mantine/core";
38
+ import ReactDOM from "react-dom/client";
39
+ import AutoForm from "autoforma";
40
+ import { FieldSchema } from "autoforma/fields/types";
41
+ import "@mantine/core/styles.css";
42
+ import "@mantine/dates/styles.css";
43
+ import "@mantine/tiptap/styles.css";
44
+
45
+ interface DemoFormValues {
46
+ fullName: string;
47
+ email: string;
48
+ age: number;
49
+ subscribe: boolean;
50
+ birthDate: string | null;
51
+ appointment: string | null;
52
+ contacts: { type: string; value: string }[];
53
+ gender: string;
54
+ bio: string;
55
+ }
56
+
57
+ const schema: FieldSchema[] = [
58
+ {
59
+ name: "fullName",
60
+ label: "Full Name",
61
+ type: "text",
62
+ placeholder: "Enter your full name",
63
+ required: true,
64
+ },
65
+ {
66
+ name: "age",
67
+ label: "Age",
68
+ type: "number",
69
+ placeholder: "Enter your age",
70
+ },
71
+ {
72
+ name: "gender",
73
+ label: "Gender",
74
+ type: "select",
75
+ placeholder: "Select your gender",
76
+ data: [
77
+ { label: "Male", value: "M" },
78
+ { label: "Female", value: "F" },
79
+ { label: "Prefer not to say", value: "N" },
80
+ ],
81
+ },
82
+ {
83
+ name: "subscribe",
84
+ label: "Subscribe to newsletter",
85
+ type: "checkbox",
86
+ description: "Receive updates by email",
87
+ },
88
+ {
89
+ name: "birthDate",
90
+ label: "Birth Date",
91
+ type: "date",
92
+ },
93
+ {
94
+ name: "appointment",
95
+ label: "Appointment",
96
+ type: "datetime",
97
+ },
98
+ {
99
+ name: "contacts",
100
+ label: "Contacts",
101
+ type: "array",
102
+ fields: [
103
+ {
104
+ name: "type",
105
+ label: "Contact Type",
106
+ type: "select",
107
+ data: [
108
+ { label: "Email", value: "email" },
109
+ { label: "Phone", value: "phone" },
110
+ ],
111
+ },
112
+ {
113
+ name: "value",
114
+ label: "Contact Value",
115
+ type: "text",
116
+ },
117
+ ],
118
+ },
119
+ {
120
+ name: "bio",
121
+ label: "Bio",
122
+ type: "text",
123
+ },
124
+ ];
125
+
126
+ const App = () => {
127
+ return (
128
+ <AutoForm<DemoFormValues>
129
+ layout="grid"
130
+ schema={schema}
131
+ onSubmit={(values) => alert(JSON.stringify(values))}
132
+ />
133
+ );
134
+ };
135
+
136
+ ReactDOM.createRoot(document.getElementById("root")!).render(
137
+ <MantineProvider>
138
+ <App />
139
+ </MantineProvider>
140
+ );
141
+ ```
142
+
143
+ ---
144
+
145
+ ## 🔧 Props / API Reference
146
+
147
+ | Prop | Type | Description |
148
+ |------|------|-------------|
149
+ | `schema` | `FieldSchema[]` | The form schema definition. |
150
+ | `values` | `TValues` | Initial form values. |
151
+ | `onSubmit` | `(values: TValues) => void` | Callback triggered when the form is submitted. |
152
+ | `validate` | `FormValidateInput<TValues>` | Validation configuration. |
153
+ | `mode` | `"create" \| "edit" \| "view"` | Controls form mode (read-only, editable, etc.). |
154
+ | `layout` | `"vertical" \| "horizontal" \| "grid"` | Form layout type. |
155
+ | `columns` | `number` | Number of columns (for grid layout). |
156
+ | `updateFieldSchema` | `UpdateFieldSchemaMap` | Dynamically update field definitions based on values. |
157
+ | `onFieldChange` | `OnFieldChangeMap` | Trigger callbacks when specific fields change. |
158
+ | `customRenderers` | `CustomRenderersMap` | Override default field renderers. |
159
+ | `submitButton` | `boolean \| ReactNode` | Show or customize the submit button. |
160
+ | `actions` | `ReactNode` | Custom actions area under the form. |
161
+
162
+ ---
163
+
164
+ ## 🧩 Field Types
165
+
166
+ AutoForma supports a variety of field types:
167
+
168
+ - `text`
169
+ - `number`
170
+ - `select`
171
+ - `checkbox`
172
+ - `date`
173
+ - `datetime`
174
+ - `time`
175
+ - `object`
176
+ - `array`
177
+ - `switch`
178
+ - `texteditor`
179
+ - `tags`
180
+
181
+ ---
182
+
183
+ ## ⚙️ Advanced Usage
184
+
185
+ You can control the behavior of fields dynamically based on form values:
186
+
187
+ ```ts
188
+ updateFieldSchema={{
189
+ gender: (field, values) => {
190
+ if (values.age && values.age < 18) {
191
+ return { ...field, data: [{ label: "Prefer not to say", value: "N" }] };
192
+ }
193
+ return field;
194
+ },
195
+ appointment: (field, values) => ({
196
+ ...field,
197
+ disabled: !values.birthDate,
198
+ }),
199
+ }}
200
+ ```
201
+
202
+ ---
203
+
204
+ ## 🧪 Development
205
+
206
+ If you want to contribute or run AutoForma locally:
207
+
208
+ ```bash
209
+ git clone https://github.com/your-username/AutoForma.git
210
+ cd AutoForma
211
+ npm install
212
+ npm run dev
213
+ ```
214
+
215
+ ---
216
+
217
+ ## 🤝 Contributing
218
+
219
+ Contributions are welcome! 🎉
220
+ If you'd like to help improve AutoForma:
221
+
222
+ 1. Fork the repository
223
+ 2. Create a new feature branch
224
+ 3. Commit your changes
225
+ 4. Submit a pull request 🚀
226
+
227
+ ---
228
+
229
+ ## 📜 License
230
+
231
+ This project is licensed under the **MIT License**.
232
+
233
+ ---
234
+
235
+ ## ⭐ Support
236
+
237
+ If you find AutoForma helpful, please consider giving it a ⭐ on [GitHub](https://github.com/your-username/AutoForma) — it helps the project grow!
@@ -0,0 +1,3 @@
1
+ import { AutoFormProps } from './AutoForm.types';
2
+ export declare function AutoForm<TValues extends Record<string, any> = Record<string, any>>({ schema, values, layout, readOnly, validate, onSubmit, onFieldChange, customRenderers, updateFieldSchema, transformBeforeSubmit, transformAfterSubmit, submitButton, }: AutoFormProps<TValues>): import("react/jsx-runtime").JSX.Element;
3
+ export default AutoForm;
@@ -0,0 +1,23 @@
1
+ import { CustomRenderersMap } from '../../fields/renderer.types';
2
+ import { FieldSchema } from '../../fields/types';
3
+ import { FormValidateInput, UseFormReturnType } from '@mantine/form';
4
+ export interface AutoFormProps<TValues extends Record<string, any> = Record<string, any>> {
5
+ schema: FieldSchema<TValues>[];
6
+ values?: TValues;
7
+ onSubmit: (values: TValues) => void | Promise<void>;
8
+ transformBeforeSubmit?: (values: TValues) => TValues;
9
+ transformAfterSubmit?: (values: TValues) => void | Promise<void>;
10
+ validate?: FormValidateInput<TValues>;
11
+ readOnly?: boolean;
12
+ onFieldChange?: OnFieldChangeMap<TValues>;
13
+ layout?: "vertical" | "horizontal" | "grid";
14
+ customRenderers?: CustomRenderersMap<TValues>;
15
+ updateFieldSchema?: UpdateFieldSchemaMap<TValues>;
16
+ submitButton?: boolean | React.ReactNode;
17
+ }
18
+ export type UpdateFieldSchemaMap<TValues extends Record<string, any> = Record<string, any>> = {
19
+ [K in keyof TValues]?: (schema: FieldSchema<TValues>, values: TValues) => FieldSchema<TValues>;
20
+ };
21
+ export type OnFieldChangeMap<TValues extends Record<string, any> = Record<string, any>> = {
22
+ [K in keyof TValues]?: (value: TValues[K], form: UseFormReturnType<TValues>) => void | Promise<void>;
23
+ };
File without changes
@@ -0,0 +1,10 @@
1
+ import { default as React } from 'react';
2
+ import { UseFormReturnType } from '@mantine/form';
3
+ import { FieldSchema } from '../types';
4
+ type DefaultFieldRenderProps<TValues extends Record<string, any>> = {
5
+ field: FieldSchema<TValues>;
6
+ form: UseFormReturnType<TValues>;
7
+ children: React.ReactNode;
8
+ };
9
+ export declare function DefaultFieldRender<TValues extends Record<string, any>>({ field, form, children, }: DefaultFieldRenderProps<TValues>): import("react/jsx-runtime").JSX.Element;
10
+ export default DefaultFieldRender;
@@ -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,3 @@
1
+ import { FieldRendererProps } from './FieldRenderer.types';
2
+ export declare function FieldRenderer<TValues extends Record<string, any> = Record<string, any>>(props: FieldRendererProps<TValues>): import("react/jsx-runtime").JSX.Element;
3
+ export default FieldRenderer;
@@ -0,0 +1,10 @@
1
+ import { UseFormReturnType } from '@mantine/form';
2
+ import { FieldSchema } from '../types';
3
+ import { FieldRendererProps as RendererProps } from '../renderer.types';
4
+ export interface FieldRendererProps<TValues extends Record<string, any> = Record<string, any>> {
5
+ field: FieldSchema<TValues>;
6
+ form: UseFormReturnType<TValues>;
7
+ layout: "vertical" | "horizontal" | "grid";
8
+ readOnly?: boolean;
9
+ customRenderers?: RendererProps<TValues>;
10
+ }
@@ -0,0 +1,9 @@
1
+ import { UseFormReturnType } from '@mantine/form';
2
+ import { FieldSchema } from './types';
3
+ export type FieldRendererProps<TValues extends Record<string, any> = Record<string, any>> = {
4
+ field: FieldSchema<TValues>;
5
+ form: UseFormReturnType<TValues>;
6
+ };
7
+ export type CustomRenderersMap<TValues extends Record<string, any>> = {
8
+ [K in keyof TValues]?: (form: UseFormReturnType<TValues>, field: FieldSchema<TValues>) => React.ReactNode;
9
+ };
@@ -0,0 +1,6 @@
1
+ import { FieldRendererProps } from '../renderer.types';
2
+ type ArrayFieldRendererProps<TValues extends Record<string, any> = Record<string, any>> = FieldRendererProps<TValues> & {
3
+ layout: "vertical" | "horizontal" | "grid";
4
+ };
5
+ export declare function ArrayFieldRenderer<TValues extends Record<string, any> = Record<string, any>>({ field, form, layout }: ArrayFieldRendererProps<TValues>): import("react/jsx-runtime").JSX.Element;
6
+ export default ArrayFieldRenderer;
@@ -0,0 +1,4 @@
1
+ import { FieldRendererProps } from '../renderer.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 '../renderer.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 '../renderer.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 '../renderer.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,6 @@
1
+ import { FieldRendererProps } from '../renderer.types';
2
+ type ObjectFieldRendererProps<TValues extends Record<string, any> = Record<string, any>> = FieldRendererProps<TValues> & {
3
+ layout: "vertical" | "horizontal" | "grid";
4
+ };
5
+ export declare function ObjectFieldRenderer<TValues extends Record<string, any>>({ field, form, layout, }: ObjectFieldRendererProps<TValues>): import("react/jsx-runtime").JSX.Element;
6
+ export default ObjectFieldRenderer;
@@ -0,0 +1,4 @@
1
+ import { FieldRendererProps } from '../renderer.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 '../renderer.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 '../renderer.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 '../renderer.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 '../renderer.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 '../renderer.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;
@@ -0,0 +1,61 @@
1
+ export type FieldType = "text" | "number" | "select" | "checkbox" | "date" | "datetime" | "time" | "object" | "array" | "switch" | "texteditor" | "tags";
2
+ export interface BaseFieldSchema<TValues extends Record<string, any> = Record<string, any>> {
3
+ name: keyof TValues & string;
4
+ label: string;
5
+ type: FieldType;
6
+ description?: string;
7
+ placeholder?: string;
8
+ required?: boolean;
9
+ readOnly?: boolean;
10
+ disabled?: boolean;
11
+ visible?: boolean;
12
+ meta?: Record<string, any>;
13
+ initialValue?: any;
14
+ column?: number;
15
+ }
16
+ export interface TextFieldSchema<TValues extends Record<string, any> = Record<string, any>> extends BaseFieldSchema<TValues> {
17
+ type: "text";
18
+ }
19
+ export interface SelectFieldSchema<TValues extends Record<string, any> = Record<string, any>> extends BaseFieldSchema<TValues> {
20
+ type: "select";
21
+ data: {
22
+ label: string;
23
+ value: string;
24
+ }[];
25
+ }
26
+ export interface CheckboxFieldSchema<TValues extends Record<string, any> = Record<string, any>> extends BaseFieldSchema<TValues> {
27
+ type: "checkbox";
28
+ }
29
+ export interface DateFieldSchema<TValues extends Record<string, any> = Record<string, any>> extends BaseFieldSchema<TValues> {
30
+ type: "date";
31
+ }
32
+ export interface ObjectFieldSchema<TValues extends Record<string, any> = Record<string, any>, TInner extends Record<string, any> = Record<string, any>> extends BaseFieldSchema<TValues> {
33
+ type: "object";
34
+ fields: FieldSchema<TInner>[];
35
+ }
36
+ export interface ArrayFieldSchema<TValues extends Record<string, any> = Record<string, any>, TInner extends Record<string, any> = Record<string, any>> extends BaseFieldSchema<TValues> {
37
+ type: "array";
38
+ fields: FieldSchema<TInner>[];
39
+ }
40
+ export interface SwitchFieldSchema<TValues extends Record<string, any> = Record<string, any>> extends BaseFieldSchema<TValues> {
41
+ type: "switch";
42
+ }
43
+ export interface RichTextEditorFieldSchema<TValues extends Record<string, any> = Record<string, any>> extends BaseFieldSchema<TValues> {
44
+ type: "texteditor";
45
+ }
46
+ export interface RichTextEditorFieldSchema<TValues extends Record<string, any> = Record<string, any>> extends BaseFieldSchema<TValues> {
47
+ type: "texteditor";
48
+ }
49
+ export interface TimeFieldSchema<TValues extends Record<string, any> = Record<string, any>> extends BaseFieldSchema<TValues> {
50
+ type: "time";
51
+ }
52
+ export interface NumberFieldSchema<TValues extends Record<string, any> = Record<string, any>> extends BaseFieldSchema<TValues> {
53
+ type: "number";
54
+ }
55
+ export interface DateTimeFieldSchema<TValues extends Record<string, any> = Record<string, any>> extends BaseFieldSchema<TValues> {
56
+ type: "datetime";
57
+ }
58
+ export interface TagsFieldSchema<TValues extends Record<string, any> = Record<string, any>> extends BaseFieldSchema<TValues> {
59
+ type: "tags";
60
+ }
61
+ export type FieldSchema<TValues extends Record<string, any> = Record<string, any>> = TextFieldSchema<TValues> | SelectFieldSchema<TValues> | CheckboxFieldSchema<TValues> | DateFieldSchema<TValues> | ObjectFieldSchema<TValues> | ArrayFieldSchema<TValues> | SwitchFieldSchema<TValues> | RichTextEditorFieldSchema | TimeFieldSchema | NumberFieldSchema | DateTimeFieldSchema | TagsFieldSchema;
@@ -0,0 +1,5 @@
1
+ export declare const layoutStrategies: {
2
+ vertical: (children: React.ReactNode) => import("react/jsx-runtime").JSX.Element;
3
+ horizontal: (children: React.ReactNode) => import("react/jsx-runtime").JSX.Element;
4
+ grid: (children: React.ReactNode) => import("react/jsx-runtime").JSX.Element;
5
+ };
@@ -0,0 +1,3 @@
1
+ import { FieldSchema, FieldType } from '../types';
2
+ export declare const getDefaultValueForField: (type: FieldType) => any;
3
+ export declare function generateInitialValues<TValues extends Record<string, any> = Record<string, any>>(schema: FieldSchema<TValues>[]): TValues;