pdyform 2.0.2 → 2.2.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.
- package/README.md +98 -74
- package/package.json +9 -3
- package/packages/core/dist/chunk-6F4PWJZI.js +0 -0
- package/packages/core/dist/chunk-KA6QUMVR.js +158 -0
- package/packages/core/dist/chunk-REHKL5VH.js +76 -0
- package/packages/core/dist/formState.cjs +132 -78
- package/packages/core/dist/formState.d.cts +14 -10
- package/packages/core/dist/formState.d.ts +14 -10
- package/packages/core/dist/formState.js +4 -12
- package/packages/core/dist/index.cjs +138 -78
- package/packages/core/dist/index.d.cts +4 -3
- package/packages/core/dist/index.d.ts +4 -3
- package/packages/core/dist/index.js +11 -12
- package/packages/core/dist/types.d.cts +17 -5
- package/packages/core/dist/types.d.ts +17 -5
- package/packages/core/dist/types.js +1 -0
- package/packages/core/dist/utils.cjs +78 -19
- package/packages/core/dist/utils.d.cts +17 -5
- package/packages/core/dist/utils.d.ts +17 -5
- package/packages/core/dist/utils.js +7 -1
- package/packages/react/dist/index.cjs +1 -461
- package/packages/react/dist/index.d.cts +33 -2
- package/packages/react/dist/index.d.ts +33 -2
- package/packages/react/dist/index.js +1 -411
- package/packages/vue/dist/index.d.ts +51 -39
- package/packages/vue/dist/index.js +1 -28
- package/packages/vue/dist/index.mjs +630 -6527
- package/eslint.config.mjs +0 -53
- package/example/README.md +0 -36
- package/example/react-demo/index.html +0 -12
- package/example/react-demo/node_modules/.bin/browserslist +0 -17
- package/example/react-demo/node_modules/.bin/tsc +0 -17
- package/example/react-demo/node_modules/.bin/tsserver +0 -17
- package/example/react-demo/node_modules/.bin/vite +0 -17
- package/example/react-demo/node_modules/.vite/deps/@radix-ui_react-checkbox.js +0 -300
- package/example/react-demo/node_modules/.vite/deps/@radix-ui_react-checkbox.js.map +0 -7
- package/example/react-demo/node_modules/.vite/deps/@radix-ui_react-label.js +0 -194
- package/example/react-demo/node_modules/.vite/deps/@radix-ui_react-label.js.map +0 -7
- package/example/react-demo/node_modules/.vite/deps/@radix-ui_react-radio-group.js +0 -530
- package/example/react-demo/node_modules/.vite/deps/@radix-ui_react-radio-group.js.map +0 -7
- package/example/react-demo/node_modules/.vite/deps/@radix-ui_react-select.js +0 -4808
- package/example/react-demo/node_modules/.vite/deps/@radix-ui_react-select.js.map +0 -7
- package/example/react-demo/node_modules/.vite/deps/_metadata.json +0 -115
- package/example/react-demo/node_modules/.vite/deps/chunk-3D5PZ6F6.js +0 -49
- package/example/react-demo/node_modules/.vite/deps/chunk-3D5PZ6F6.js.map +0 -7
- package/example/react-demo/node_modules/.vite/deps/chunk-5Q2RBQLA.js +0 -127
- package/example/react-demo/node_modules/.vite/deps/chunk-5Q2RBQLA.js.map +0 -7
- package/example/react-demo/node_modules/.vite/deps/chunk-G3PMV62Z.js +0 -36
- package/example/react-demo/node_modules/.vite/deps/chunk-G3PMV62Z.js.map +0 -7
- package/example/react-demo/node_modules/.vite/deps/chunk-GX7YZ5KV.js +0 -370
- package/example/react-demo/node_modules/.vite/deps/chunk-GX7YZ5KV.js.map +0 -7
- package/example/react-demo/node_modules/.vite/deps/chunk-PUFJGYAC.js +0 -928
- package/example/react-demo/node_modules/.vite/deps/chunk-PUFJGYAC.js.map +0 -7
- package/example/react-demo/node_modules/.vite/deps/chunk-SIU35MPB.js +0 -21
- package/example/react-demo/node_modules/.vite/deps/chunk-SIU35MPB.js.map +0 -7
- package/example/react-demo/node_modules/.vite/deps/chunk-TOMGVNQP.js +0 -1906
- package/example/react-demo/node_modules/.vite/deps/chunk-TOMGVNQP.js.map +0 -7
- package/example/react-demo/node_modules/.vite/deps/chunk-YYN6DZAU.js +0 -21628
- package/example/react-demo/node_modules/.vite/deps/chunk-YYN6DZAU.js.map +0 -7
- package/example/react-demo/node_modules/.vite/deps/chunk-ZE5VSJFE.js +0 -144
- package/example/react-demo/node_modules/.vite/deps/chunk-ZE5VSJFE.js.map +0 -7
- package/example/react-demo/node_modules/.vite/deps/class-variance-authority.js +0 -51
- package/example/react-demo/node_modules/.vite/deps/class-variance-authority.js.map +0 -7
- package/example/react-demo/node_modules/.vite/deps/clsx.js +0 -10
- package/example/react-demo/node_modules/.vite/deps/clsx.js.map +0 -7
- package/example/react-demo/node_modules/.vite/deps/lucide-react.js +0 -29725
- package/example/react-demo/node_modules/.vite/deps/lucide-react.js.map +0 -7
- package/example/react-demo/node_modules/.vite/deps/package.json +0 -3
- package/example/react-demo/node_modules/.vite/deps/react-dom.js +0 -7
- package/example/react-demo/node_modules/.vite/deps/react-dom.js.map +0 -7
- package/example/react-demo/node_modules/.vite/deps/react-dom_client.js +0 -39
- package/example/react-demo/node_modules/.vite/deps/react-dom_client.js.map +0 -7
- package/example/react-demo/node_modules/.vite/deps/react.js +0 -6
- package/example/react-demo/node_modules/.vite/deps/react.js.map +0 -7
- package/example/react-demo/node_modules/.vite/deps/react_jsx-dev-runtime.js +0 -913
- package/example/react-demo/node_modules/.vite/deps/react_jsx-dev-runtime.js.map +0 -7
- package/example/react-demo/node_modules/.vite/deps/react_jsx-runtime.js +0 -7
- package/example/react-demo/node_modules/.vite/deps/react_jsx-runtime.js.map +0 -7
- package/example/react-demo/node_modules/.vite/deps/tailwind-merge.js +0 -2534
- package/example/react-demo/node_modules/.vite/deps/tailwind-merge.js.map +0 -7
- package/example/react-demo/package.json +0 -23
- package/example/react-demo/postcss.config.mjs +0 -6
- package/example/react-demo/src/App.tsx +0 -64
- package/example/react-demo/src/main.tsx +0 -10
- package/example/react-demo/src/styles.css +0 -102
- package/example/react-demo/tailwind.config.mjs +0 -50
- package/example/react-demo/tsconfig.json +0 -16
- package/example/react-demo/vite.config.ts +0 -14
- package/example/shared/defaultSchema.ts +0 -68
- package/example/vue-demo/index.html +0 -12
- package/example/vue-demo/node_modules/.bin/tsc +0 -17
- package/example/vue-demo/node_modules/.bin/tsserver +0 -17
- package/example/vue-demo/node_modules/.bin/vite +0 -17
- package/example/vue-demo/node_modules/.vite/deps/_metadata.json +0 -46
- package/example/vue-demo/node_modules/.vite/deps/chunk-PZ5AY32C.js +0 -10
- package/example/vue-demo/node_modules/.vite/deps/chunk-PZ5AY32C.js.map +0 -7
- package/example/vue-demo/node_modules/.vite/deps/chunk-TCXBSQ4M.js +0 -12877
- package/example/vue-demo/node_modules/.vite/deps/chunk-TCXBSQ4M.js.map +0 -7
- package/example/vue-demo/node_modules/.vite/deps/clsx.js +0 -22
- package/example/vue-demo/node_modules/.vite/deps/clsx.js.map +0 -7
- package/example/vue-demo/node_modules/.vite/deps/lucide-vue-next.js +0 -29720
- package/example/vue-demo/node_modules/.vite/deps/lucide-vue-next.js.map +0 -7
- package/example/vue-demo/node_modules/.vite/deps/package.json +0 -3
- package/example/vue-demo/node_modules/.vite/deps/radix-vue.js +0 -24321
- package/example/vue-demo/node_modules/.vite/deps/radix-vue.js.map +0 -7
- package/example/vue-demo/node_modules/.vite/deps/tailwind-merge.js +0 -2534
- package/example/vue-demo/node_modules/.vite/deps/tailwind-merge.js.map +0 -7
- package/example/vue-demo/node_modules/.vite/deps/vue.js +0 -348
- package/example/vue-demo/node_modules/.vite/deps/vue.js.map +0 -7
- package/example/vue-demo/package.json +0 -20
- package/example/vue-demo/postcss.config.mjs +0 -6
- package/example/vue-demo/src/App.vue +0 -61
- package/example/vue-demo/src/env.d.ts +0 -1
- package/example/vue-demo/src/main.ts +0 -5
- package/example/vue-demo/src/style.css +0 -102
- package/example/vue-demo/tailwind.config.mjs +0 -50
- package/example/vue-demo/tsconfig.json +0 -15
- package/example/vue-demo/vite.config.ts +0 -14
- package/packages/core/dist/chunk-TP3IHKWV.js +0 -69
- package/packages/core/dist/chunk-WEDHXOHH.js +0 -102
- package/packages/core/node_modules/.bin/api-extractor +0 -17
- package/packages/core/node_modules/.bin/esbuild +0 -14
- package/packages/core/node_modules/.bin/jiti +0 -17
- package/packages/core/node_modules/.bin/tsc +0 -17
- package/packages/core/node_modules/.bin/tsserver +0 -17
- package/packages/core/node_modules/.bin/tsup +0 -17
- package/packages/core/node_modules/.bin/tsup-node +0 -17
- package/packages/core/node_modules/.bin/vitest +0 -17
- package/packages/core/node_modules/.vite/vitest/results.json +0 -1
- package/packages/core/package.json +0 -37
- package/packages/core/src/formState.ts +0 -79
- package/packages/core/src/index.ts +0 -3
- package/packages/core/src/types.ts +0 -42
- package/packages/core/src/utils.ts +0 -104
- package/packages/core/test/formState.test.ts +0 -71
- package/packages/core/test/utils.test.ts +0 -178
- package/packages/core/tsconfig.json +0 -15
- package/packages/core/tsup.config.ts +0 -9
- package/packages/react/node_modules/.bin/api-extractor +0 -17
- package/packages/react/node_modules/.bin/browserslist +0 -17
- package/packages/react/node_modules/.bin/esbuild +0 -14
- package/packages/react/node_modules/.bin/jiti +0 -17
- package/packages/react/node_modules/.bin/tsc +0 -17
- package/packages/react/node_modules/.bin/tsserver +0 -17
- package/packages/react/node_modules/.bin/tsup +0 -17
- package/packages/react/node_modules/.bin/tsup-node +0 -17
- package/packages/react/node_modules/.bin/vite +0 -17
- package/packages/react/node_modules/.bin/vitest +0 -17
- package/packages/react/node_modules/.vite/vitest/results.json +0 -1
- package/packages/react/package.json +0 -57
- package/packages/react/postcss.config.mjs +0 -6
- package/packages/react/src/DynamicForm.tsx +0 -69
- package/packages/react/src/FormFieldRenderer.tsx +0 -50
- package/packages/react/src/components/Checkbox.tsx +0 -28
- package/packages/react/src/components/CheckboxRenderer.tsx +0 -37
- package/packages/react/src/components/Input.tsx +0 -24
- package/packages/react/src/components/InputRenderer.tsx +0 -25
- package/packages/react/src/components/Label.tsx +0 -24
- package/packages/react/src/components/RadioGroup.tsx +0 -42
- package/packages/react/src/components/RadioRenderer.tsx +0 -29
- package/packages/react/src/components/Select.tsx +0 -93
- package/packages/react/src/components/SelectRenderer.tsx +0 -27
- package/packages/react/src/components/Textarea.tsx +0 -23
- package/packages/react/src/components/TextareaRenderer.tsx +0 -17
- package/packages/react/src/components/index.ts +0 -55
- package/packages/react/src/components/types.ts +0 -17
- package/packages/react/src/index.tsx +0 -3
- package/packages/react/src/utils.ts +0 -7
- package/packages/react/tailwind.config.mjs +0 -10
- package/packages/react/test/DynamicForm.test.tsx +0 -25
- package/packages/react/test/FormFieldRenderer.test.tsx +0 -127
- package/packages/react/tsconfig.json +0 -15
- package/packages/react/vitest.config.ts +0 -16
- package/packages/vue/node_modules/.bin/rollup +0 -17
- package/packages/vue/node_modules/.bin/tsc +0 -17
- package/packages/vue/node_modules/.bin/tsserver +0 -17
- package/packages/vue/node_modules/.bin/vite +0 -17
- package/packages/vue/node_modules/.bin/vitest +0 -17
- package/packages/vue/node_modules/.bin/vue-tsc +0 -17
- package/packages/vue/node_modules/.vite/vitest/results.json +0 -1
- package/packages/vue/node_modules/.vue-global-types/vue_3.5_0_0_0.d.ts +0 -118
- package/packages/vue/node_modules/.vue-global-types/vue_3.5_false.d.ts +0 -128
- package/packages/vue/package.json +0 -53
- package/packages/vue/postcss.config.mjs +0 -6
- package/packages/vue/src/DynamicForm.vue +0 -63
- package/packages/vue/src/FormFieldRenderer.vue +0 -70
- package/packages/vue/src/components/Checkbox.vue +0 -28
- package/packages/vue/src/components/CheckboxRenderer.vue +0 -35
- package/packages/vue/src/components/Input.vue +0 -21
- package/packages/vue/src/components/InputRenderer.vue +0 -24
- package/packages/vue/src/components/Label.vue +0 -21
- package/packages/vue/src/components/RadioGroup.vue +0 -30
- package/packages/vue/src/components/RadioGroupItem.vue +0 -26
- package/packages/vue/src/components/RadioRenderer.vue +0 -24
- package/packages/vue/src/components/Select.vue +0 -40
- package/packages/vue/src/components/SelectContent.vue +0 -38
- package/packages/vue/src/components/SelectItem.vue +0 -43
- package/packages/vue/src/components/SelectRenderer.vue +0 -30
- package/packages/vue/src/components/SelectTrigger.vue +0 -27
- package/packages/vue/src/components/Textarea.vue +0 -19
- package/packages/vue/src/components/TextareaRenderer.vue +0 -18
- package/packages/vue/src/components/index.ts +0 -24
- package/packages/vue/src/env.d.ts +0 -7
- package/packages/vue/src/fieldComponentMap.ts +0 -34
- package/packages/vue/src/index.ts +0 -4
- package/packages/vue/src/utils.ts +0 -6
- package/packages/vue/tailwind.config.mjs +0 -10
- package/packages/vue/test/DynamicForm.test.ts +0 -19
- package/packages/vue/test/FormFieldRenderer.test.ts +0 -133
- package/packages/vue/tsconfig.json +0 -16
- package/packages/vue/vite.config.ts +0 -29
- package/packages/vue/vitest.config.ts +0 -16
- package/pnpm-workspace.yaml +0 -4
- package/tsconfig.json +0 -21
- package/turbo.json +0 -25
|
@@ -1,9 +1,21 @@
|
|
|
1
|
-
import { FormField } from './types.cjs';
|
|
1
|
+
import { ErrorMessageTemplates, FormField, FormResolver } from './types.cjs';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Default error message templates
|
|
5
|
+
*/
|
|
6
|
+
declare const defaultErrorMessages: Required<ErrorMessageTemplates>;
|
|
7
|
+
/**
|
|
8
|
+
* Simple get utility for nested objects
|
|
9
|
+
*/
|
|
10
|
+
declare function get(obj: any, path: string, defaultValue?: any): any;
|
|
11
|
+
/**
|
|
12
|
+
* Simple set utility for nested objects that returns a new object (immutable)
|
|
13
|
+
*/
|
|
14
|
+
declare function set(obj: any, path: string, value: any): any;
|
|
3
15
|
declare function normalizeFieldValue(field: FormField, value: unknown): unknown;
|
|
4
|
-
declare function validateField(value: any, field: FormField): string | null
|
|
5
|
-
declare function validateFieldByName(fields: FormField[], name: string, value: unknown): string | null
|
|
6
|
-
declare function validateForm(fields: FormField[], values: Record<string, any
|
|
16
|
+
declare function validateField(value: any, field: FormField, customMessages?: ErrorMessageTemplates): Promise<string | null>;
|
|
17
|
+
declare function validateFieldByName(fields: FormField[], name: string, value: unknown, resolver?: FormResolver, allValues?: any, customMessages?: ErrorMessageTemplates): Promise<string | null>;
|
|
18
|
+
declare function validateForm(fields: FormField[], values: Record<string, any>, resolver?: FormResolver, customMessages?: ErrorMessageTemplates): Promise<Record<string, string>>;
|
|
7
19
|
declare function getDefaultValues(fields: FormField[]): Record<string, any>;
|
|
8
20
|
|
|
9
|
-
export { getDefaultValues, normalizeFieldValue, validateField, validateFieldByName, validateForm };
|
|
21
|
+
export { defaultErrorMessages, get, getDefaultValues, normalizeFieldValue, set, validateField, validateFieldByName, validateForm };
|
|
@@ -1,9 +1,21 @@
|
|
|
1
|
-
import { FormField } from './types.js';
|
|
1
|
+
import { ErrorMessageTemplates, FormField, FormResolver } from './types.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Default error message templates
|
|
5
|
+
*/
|
|
6
|
+
declare const defaultErrorMessages: Required<ErrorMessageTemplates>;
|
|
7
|
+
/**
|
|
8
|
+
* Simple get utility for nested objects
|
|
9
|
+
*/
|
|
10
|
+
declare function get(obj: any, path: string, defaultValue?: any): any;
|
|
11
|
+
/**
|
|
12
|
+
* Simple set utility for nested objects that returns a new object (immutable)
|
|
13
|
+
*/
|
|
14
|
+
declare function set(obj: any, path: string, value: any): any;
|
|
3
15
|
declare function normalizeFieldValue(field: FormField, value: unknown): unknown;
|
|
4
|
-
declare function validateField(value: any, field: FormField): string | null
|
|
5
|
-
declare function validateFieldByName(fields: FormField[], name: string, value: unknown): string | null
|
|
6
|
-
declare function validateForm(fields: FormField[], values: Record<string, any
|
|
16
|
+
declare function validateField(value: any, field: FormField, customMessages?: ErrorMessageTemplates): Promise<string | null>;
|
|
17
|
+
declare function validateFieldByName(fields: FormField[], name: string, value: unknown, resolver?: FormResolver, allValues?: any, customMessages?: ErrorMessageTemplates): Promise<string | null>;
|
|
18
|
+
declare function validateForm(fields: FormField[], values: Record<string, any>, resolver?: FormResolver, customMessages?: ErrorMessageTemplates): Promise<Record<string, string>>;
|
|
7
19
|
declare function getDefaultValues(fields: FormField[]): Record<string, any>;
|
|
8
20
|
|
|
9
|
-
export { getDefaultValues, normalizeFieldValue, validateField, validateFieldByName, validateForm };
|
|
21
|
+
export { defaultErrorMessages, get, getDefaultValues, normalizeFieldValue, set, validateField, validateFieldByName, validateForm };
|
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
import {
|
|
2
|
+
defaultErrorMessages,
|
|
3
|
+
get,
|
|
2
4
|
getDefaultValues,
|
|
3
5
|
normalizeFieldValue,
|
|
6
|
+
set,
|
|
4
7
|
validateField,
|
|
5
8
|
validateFieldByName,
|
|
6
9
|
validateForm
|
|
7
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-KA6QUMVR.js";
|
|
8
11
|
export {
|
|
12
|
+
defaultErrorMessages,
|
|
13
|
+
get,
|
|
9
14
|
getDefaultValues,
|
|
10
15
|
normalizeFieldValue,
|
|
16
|
+
set,
|
|
11
17
|
validateField,
|
|
12
18
|
validateFieldByName,
|
|
13
19
|
validateForm
|
|
@@ -1,461 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __create = Object.create;
|
|
3
|
-
var __defProp = Object.defineProperty;
|
|
4
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
-
var __export = (target, all) => {
|
|
9
|
-
for (var name in all)
|
|
10
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
-
};
|
|
12
|
-
var __copyProps = (to, from, except, desc) => {
|
|
13
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
-
for (let key of __getOwnPropNames(from))
|
|
15
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
-
}
|
|
18
|
-
return to;
|
|
19
|
-
};
|
|
20
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
-
mod
|
|
27
|
-
));
|
|
28
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
|
|
30
|
-
// src/index.tsx
|
|
31
|
-
var index_exports = {};
|
|
32
|
-
__export(index_exports, {
|
|
33
|
-
Checkbox: () => Checkbox,
|
|
34
|
-
CheckboxRenderer: () => CheckboxRenderer_default,
|
|
35
|
-
DynamicForm: () => DynamicForm,
|
|
36
|
-
FormFieldRenderer: () => FormFieldRenderer,
|
|
37
|
-
Input: () => Input,
|
|
38
|
-
InputRenderer: () => InputRenderer_default,
|
|
39
|
-
Label: () => Label,
|
|
40
|
-
RadioGroup: () => RadioGroup,
|
|
41
|
-
RadioGroupItem: () => RadioGroupItem,
|
|
42
|
-
RadioRenderer: () => RadioRenderer_default,
|
|
43
|
-
Select: () => Select,
|
|
44
|
-
SelectContent: () => SelectContent,
|
|
45
|
-
SelectGroup: () => SelectGroup,
|
|
46
|
-
SelectItem: () => SelectItem,
|
|
47
|
-
SelectRenderer: () => SelectRenderer_default,
|
|
48
|
-
SelectTrigger: () => SelectTrigger,
|
|
49
|
-
SelectValue: () => SelectValue,
|
|
50
|
-
Textarea: () => Textarea,
|
|
51
|
-
TextareaRenderer: () => TextareaRenderer_default,
|
|
52
|
-
defaultComponentMap: () => defaultComponentMap
|
|
53
|
-
});
|
|
54
|
-
module.exports = __toCommonJS(index_exports);
|
|
55
|
-
|
|
56
|
-
// src/DynamicForm.tsx
|
|
57
|
-
var import_react = require("react");
|
|
58
|
-
var import_core2 = require("pdyform/core");
|
|
59
|
-
|
|
60
|
-
// src/components/Input.tsx
|
|
61
|
-
var React = __toESM(require("react"), 1);
|
|
62
|
-
|
|
63
|
-
// src/utils.ts
|
|
64
|
-
var import_clsx = require("clsx");
|
|
65
|
-
var import_tailwind_merge = require("tailwind-merge");
|
|
66
|
-
function cn(...inputs) {
|
|
67
|
-
return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
// src/components/Input.tsx
|
|
71
|
-
var import_jsx_runtime = require("react/jsx-runtime");
|
|
72
|
-
var Input = React.forwardRef(
|
|
73
|
-
({ className, type, ...props }, ref) => {
|
|
74
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
75
|
-
"input",
|
|
76
|
-
{
|
|
77
|
-
type,
|
|
78
|
-
className: cn(
|
|
79
|
-
"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
|
|
80
|
-
className
|
|
81
|
-
),
|
|
82
|
-
ref,
|
|
83
|
-
...props
|
|
84
|
-
}
|
|
85
|
-
);
|
|
86
|
-
}
|
|
87
|
-
);
|
|
88
|
-
Input.displayName = "Input";
|
|
89
|
-
|
|
90
|
-
// src/components/Textarea.tsx
|
|
91
|
-
var React2 = __toESM(require("react"), 1);
|
|
92
|
-
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
93
|
-
var Textarea = React2.forwardRef(
|
|
94
|
-
({ className, ...props }, ref) => {
|
|
95
|
-
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
96
|
-
"textarea",
|
|
97
|
-
{
|
|
98
|
-
className: cn(
|
|
99
|
-
"flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
|
|
100
|
-
className
|
|
101
|
-
),
|
|
102
|
-
ref,
|
|
103
|
-
...props
|
|
104
|
-
}
|
|
105
|
-
);
|
|
106
|
-
}
|
|
107
|
-
);
|
|
108
|
-
Textarea.displayName = "Textarea";
|
|
109
|
-
|
|
110
|
-
// src/components/Checkbox.tsx
|
|
111
|
-
var React3 = __toESM(require("react"), 1);
|
|
112
|
-
var CheckboxPrimitive = __toESM(require("@radix-ui/react-checkbox"), 1);
|
|
113
|
-
var import_lucide_react = require("lucide-react");
|
|
114
|
-
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
115
|
-
var Checkbox = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
116
|
-
CheckboxPrimitive.Root,
|
|
117
|
-
{
|
|
118
|
-
ref,
|
|
119
|
-
className: cn(
|
|
120
|
-
"peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",
|
|
121
|
-
className
|
|
122
|
-
),
|
|
123
|
-
...props,
|
|
124
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
125
|
-
CheckboxPrimitive.Indicator,
|
|
126
|
-
{
|
|
127
|
-
className: cn("flex items-center justify-center text-current"),
|
|
128
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_lucide_react.Check, { className: "h-4 w-4" })
|
|
129
|
-
}
|
|
130
|
-
)
|
|
131
|
-
}
|
|
132
|
-
));
|
|
133
|
-
Checkbox.displayName = CheckboxPrimitive.Root.displayName;
|
|
134
|
-
|
|
135
|
-
// src/components/RadioGroup.tsx
|
|
136
|
-
var React4 = __toESM(require("react"), 1);
|
|
137
|
-
var RadioGroupPrimitive = __toESM(require("@radix-ui/react-radio-group"), 1);
|
|
138
|
-
var import_lucide_react2 = require("lucide-react");
|
|
139
|
-
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
140
|
-
var RadioGroup = React4.forwardRef(({ className, ...props }, ref) => {
|
|
141
|
-
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
142
|
-
RadioGroupPrimitive.Root,
|
|
143
|
-
{
|
|
144
|
-
className: cn("grid gap-2", className),
|
|
145
|
-
...props,
|
|
146
|
-
ref
|
|
147
|
-
}
|
|
148
|
-
);
|
|
149
|
-
});
|
|
150
|
-
RadioGroup.displayName = RadioGroupPrimitive.Root.displayName;
|
|
151
|
-
var RadioGroupItem = React4.forwardRef(({ className, ...props }, ref) => {
|
|
152
|
-
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
153
|
-
RadioGroupPrimitive.Item,
|
|
154
|
-
{
|
|
155
|
-
ref,
|
|
156
|
-
className: cn(
|
|
157
|
-
"aspect-square h-4 w-4 rounded-full border border-primary text-primary ring-offset-background focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
|
|
158
|
-
className
|
|
159
|
-
),
|
|
160
|
-
...props,
|
|
161
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(RadioGroupPrimitive.Indicator, { className: "flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_lucide_react2.Circle, { className: "h-2.5 w-2.5 fill-current text-current" }) })
|
|
162
|
-
}
|
|
163
|
-
);
|
|
164
|
-
});
|
|
165
|
-
RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;
|
|
166
|
-
|
|
167
|
-
// src/components/Select.tsx
|
|
168
|
-
var React5 = __toESM(require("react"), 1);
|
|
169
|
-
var SelectPrimitive = __toESM(require("@radix-ui/react-select"), 1);
|
|
170
|
-
var import_lucide_react3 = require("lucide-react");
|
|
171
|
-
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
172
|
-
var Select = SelectPrimitive.Root;
|
|
173
|
-
var SelectGroup = SelectPrimitive.Group;
|
|
174
|
-
var SelectValue = SelectPrimitive.Value;
|
|
175
|
-
var SelectTrigger = React5.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
|
|
176
|
-
SelectPrimitive.Trigger,
|
|
177
|
-
{
|
|
178
|
-
ref,
|
|
179
|
-
className: cn(
|
|
180
|
-
"flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
|
|
181
|
-
className
|
|
182
|
-
),
|
|
183
|
-
...props,
|
|
184
|
-
children: [
|
|
185
|
-
children,
|
|
186
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react3.ChevronDown, { className: "h-4 w-4 opacity-50" }) })
|
|
187
|
-
]
|
|
188
|
-
}
|
|
189
|
-
));
|
|
190
|
-
SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
|
|
191
|
-
var SelectContent = React5.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(SelectPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
192
|
-
SelectPrimitive.Content,
|
|
193
|
-
{
|
|
194
|
-
ref,
|
|
195
|
-
className: cn(
|
|
196
|
-
"relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
|
|
197
|
-
position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
|
|
198
|
-
className
|
|
199
|
-
),
|
|
200
|
-
position,
|
|
201
|
-
...props,
|
|
202
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
203
|
-
SelectPrimitive.Viewport,
|
|
204
|
-
{
|
|
205
|
-
className: cn(
|
|
206
|
-
"p-1",
|
|
207
|
-
position === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"
|
|
208
|
-
),
|
|
209
|
-
children
|
|
210
|
-
}
|
|
211
|
-
)
|
|
212
|
-
}
|
|
213
|
-
) }));
|
|
214
|
-
SelectContent.displayName = SelectPrimitive.Content.displayName;
|
|
215
|
-
var SelectItem = React5.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
|
|
216
|
-
SelectPrimitive.Item,
|
|
217
|
-
{
|
|
218
|
-
ref,
|
|
219
|
-
className: cn(
|
|
220
|
-
"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
221
|
-
className
|
|
222
|
-
),
|
|
223
|
-
...props,
|
|
224
|
-
children: [
|
|
225
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react3.Check, { className: "h-4 w-4" }) }) }),
|
|
226
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(SelectPrimitive.ItemText, { children })
|
|
227
|
-
]
|
|
228
|
-
}
|
|
229
|
-
));
|
|
230
|
-
SelectItem.displayName = SelectPrimitive.Item.displayName;
|
|
231
|
-
|
|
232
|
-
// src/components/Label.tsx
|
|
233
|
-
var React6 = __toESM(require("react"), 1);
|
|
234
|
-
var LabelPrimitive = __toESM(require("@radix-ui/react-label"), 1);
|
|
235
|
-
var import_class_variance_authority = require("class-variance-authority");
|
|
236
|
-
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
237
|
-
var labelVariants = (0, import_class_variance_authority.cva)(
|
|
238
|
-
"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
|
|
239
|
-
);
|
|
240
|
-
var Label = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
241
|
-
LabelPrimitive.Root,
|
|
242
|
-
{
|
|
243
|
-
ref,
|
|
244
|
-
className: cn(labelVariants(), className),
|
|
245
|
-
...props
|
|
246
|
-
}
|
|
247
|
-
));
|
|
248
|
-
Label.displayName = LabelPrimitive.Root.displayName;
|
|
249
|
-
|
|
250
|
-
// src/components/InputRenderer.tsx
|
|
251
|
-
var import_core = require("pdyform/core");
|
|
252
|
-
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
253
|
-
var InputRenderer = ({ field, value, onChange, onBlur, fieldId }) => {
|
|
254
|
-
const handleChange = (nextValue) => {
|
|
255
|
-
onChange((0, import_core.normalizeFieldValue)(field, nextValue));
|
|
256
|
-
};
|
|
257
|
-
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
258
|
-
Input,
|
|
259
|
-
{
|
|
260
|
-
id: fieldId,
|
|
261
|
-
type: field.type,
|
|
262
|
-
placeholder: field.placeholder,
|
|
263
|
-
value: value ?? "",
|
|
264
|
-
onChange: (e) => handleChange(e.target.value),
|
|
265
|
-
onBlur,
|
|
266
|
-
disabled: field.disabled,
|
|
267
|
-
name: field.name
|
|
268
|
-
}
|
|
269
|
-
);
|
|
270
|
-
};
|
|
271
|
-
var InputRenderer_default = InputRenderer;
|
|
272
|
-
|
|
273
|
-
// src/components/TextareaRenderer.tsx
|
|
274
|
-
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
275
|
-
var TextareaRenderer = ({ field, value, onChange, onBlur, fieldId }) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
276
|
-
Textarea,
|
|
277
|
-
{
|
|
278
|
-
id: fieldId,
|
|
279
|
-
placeholder: field.placeholder,
|
|
280
|
-
value: value ?? "",
|
|
281
|
-
onChange: (e) => onChange(e.target.value),
|
|
282
|
-
onBlur,
|
|
283
|
-
disabled: field.disabled,
|
|
284
|
-
name: field.name
|
|
285
|
-
}
|
|
286
|
-
);
|
|
287
|
-
var TextareaRenderer_default = TextareaRenderer;
|
|
288
|
-
|
|
289
|
-
// src/components/SelectRenderer.tsx
|
|
290
|
-
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
291
|
-
var SelectRenderer = ({ field, value, onChange, onBlur, fieldId }) => /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
|
|
292
|
-
Select,
|
|
293
|
-
{
|
|
294
|
-
value: value != null ? String(value) : "",
|
|
295
|
-
onValueChange: onChange,
|
|
296
|
-
disabled: field.disabled,
|
|
297
|
-
name: field.name,
|
|
298
|
-
children: [
|
|
299
|
-
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SelectTrigger, { id: fieldId, onBlur, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SelectValue, { placeholder: field.placeholder || "Select an option" }) }),
|
|
300
|
-
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SelectContent, { children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SelectGroup, { children: field.options?.map((opt) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SelectItem, { value: String(opt.value), children: opt.label }, opt.value)) }) })
|
|
301
|
-
]
|
|
302
|
-
}
|
|
303
|
-
);
|
|
304
|
-
var SelectRenderer_default = SelectRenderer;
|
|
305
|
-
|
|
306
|
-
// src/components/CheckboxRenderer.tsx
|
|
307
|
-
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
308
|
-
var CheckboxRenderer = ({ field, value, onChange, onBlur }) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "flex flex-wrap gap-4", children: field.options?.map((opt) => {
|
|
309
|
-
const checked = Array.isArray(value) && value.includes(opt.value);
|
|
310
|
-
return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "flex items-center space-x-2", children: [
|
|
311
|
-
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
312
|
-
Checkbox,
|
|
313
|
-
{
|
|
314
|
-
id: `checkbox-${field.name}-${opt.value}`,
|
|
315
|
-
checked,
|
|
316
|
-
disabled: field.disabled,
|
|
317
|
-
onCheckedChange: (c) => {
|
|
318
|
-
const next = Array.isArray(value) ? [...value] : [];
|
|
319
|
-
if (c) {
|
|
320
|
-
next.push(opt.value);
|
|
321
|
-
} else {
|
|
322
|
-
const idx = next.indexOf(opt.value);
|
|
323
|
-
if (idx > -1) next.splice(idx, 1);
|
|
324
|
-
}
|
|
325
|
-
onChange(next);
|
|
326
|
-
},
|
|
327
|
-
onBlur
|
|
328
|
-
}
|
|
329
|
-
),
|
|
330
|
-
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Label, { htmlFor: `checkbox-${field.name}-${opt.value}`, className: "font-normal", children: opt.label })
|
|
331
|
-
] }, opt.value);
|
|
332
|
-
}) });
|
|
333
|
-
var CheckboxRenderer_default = CheckboxRenderer;
|
|
334
|
-
|
|
335
|
-
// src/components/RadioRenderer.tsx
|
|
336
|
-
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
337
|
-
var RadioRenderer = ({ field, value, onChange, onBlur }) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
338
|
-
RadioGroup,
|
|
339
|
-
{
|
|
340
|
-
value: value != null ? String(value) : "",
|
|
341
|
-
onValueChange: onChange,
|
|
342
|
-
disabled: field.disabled,
|
|
343
|
-
name: field.name,
|
|
344
|
-
className: "flex flex-wrap gap-4",
|
|
345
|
-
children: field.options?.map((opt) => /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "flex items-center space-x-2", children: [
|
|
346
|
-
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
347
|
-
RadioGroupItem,
|
|
348
|
-
{
|
|
349
|
-
value: String(opt.value),
|
|
350
|
-
id: `radio-${field.name}-${opt.value}`,
|
|
351
|
-
onBlur
|
|
352
|
-
}
|
|
353
|
-
),
|
|
354
|
-
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Label, { htmlFor: `radio-${field.name}-${opt.value}`, className: "font-normal", children: opt.label })
|
|
355
|
-
] }, opt.value))
|
|
356
|
-
}
|
|
357
|
-
);
|
|
358
|
-
var RadioRenderer_default = RadioRenderer;
|
|
359
|
-
|
|
360
|
-
// src/components/index.ts
|
|
361
|
-
var defaultComponentMap = {
|
|
362
|
-
text: InputRenderer_default,
|
|
363
|
-
number: InputRenderer_default,
|
|
364
|
-
password: InputRenderer_default,
|
|
365
|
-
email: InputRenderer_default,
|
|
366
|
-
date: InputRenderer_default,
|
|
367
|
-
textarea: TextareaRenderer_default,
|
|
368
|
-
select: SelectRenderer_default,
|
|
369
|
-
checkbox: CheckboxRenderer_default,
|
|
370
|
-
radio: RadioRenderer_default
|
|
371
|
-
};
|
|
372
|
-
|
|
373
|
-
// src/FormFieldRenderer.tsx
|
|
374
|
-
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
375
|
-
var FormFieldRenderer = ({
|
|
376
|
-
field,
|
|
377
|
-
value,
|
|
378
|
-
onChange,
|
|
379
|
-
onBlur,
|
|
380
|
-
error,
|
|
381
|
-
componentMap
|
|
382
|
-
}) => {
|
|
383
|
-
const { label, description, name, type } = field;
|
|
384
|
-
const fieldId = `field-${name}`;
|
|
385
|
-
const resolvedMap = componentMap ? { ...defaultComponentMap, ...componentMap } : defaultComponentMap;
|
|
386
|
-
const FieldComponent = resolvedMap[type] ?? InputRenderer_default;
|
|
387
|
-
return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: `space-y-2 ${field.className || ""}`, children: [
|
|
388
|
-
label && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Label, { htmlFor: fieldId, children: label }),
|
|
389
|
-
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(FieldComponent, { field, value, onChange, onBlur, fieldId }),
|
|
390
|
-
description && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("p", { className: "text-[0.8rem] text-muted-foreground", children: description }),
|
|
391
|
-
error && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("p", { className: "text-[0.8rem] font-medium text-destructive", children: error })
|
|
392
|
-
] });
|
|
393
|
-
};
|
|
394
|
-
|
|
395
|
-
// src/DynamicForm.tsx
|
|
396
|
-
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
397
|
-
var DynamicForm = ({ schema, onSubmit, className }) => {
|
|
398
|
-
const [formState, setFormState] = (0, import_react.useState)(() => (0, import_core2.createFormRuntimeState)(schema.fields));
|
|
399
|
-
const handleFieldChange = (name, value) => {
|
|
400
|
-
setFormState((prev) => (0, import_core2.applyFieldChange)(schema.fields, prev, name, value));
|
|
401
|
-
};
|
|
402
|
-
const handleFieldBlur = (name) => {
|
|
403
|
-
setFormState((prev) => (0, import_core2.applyFieldBlur)(schema.fields, prev, name));
|
|
404
|
-
};
|
|
405
|
-
const handleSubmit = (e) => {
|
|
406
|
-
e.preventDefault();
|
|
407
|
-
const submittingState = (0, import_core2.setSubmitting)(formState, true);
|
|
408
|
-
const { state: validatedState, hasError } = (0, import_core2.runSubmitValidation)(schema.fields, submittingState);
|
|
409
|
-
setFormState(validatedState);
|
|
410
|
-
if (!hasError) {
|
|
411
|
-
onSubmit(validatedState.values);
|
|
412
|
-
}
|
|
413
|
-
};
|
|
414
|
-
return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("form", { onSubmit: handleSubmit, className: `space-y-6 ${className || ""}`, children: [
|
|
415
|
-
schema.title && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("h2", { className: "text-2xl font-bold tracking-tight", children: schema.title }),
|
|
416
|
-
schema.description && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("p", { className: "text-muted-foreground", children: schema.description }),
|
|
417
|
-
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: "space-y-4", children: schema.fields.map((field) => !field.hidden && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
418
|
-
FormFieldRenderer,
|
|
419
|
-
{
|
|
420
|
-
field,
|
|
421
|
-
value: formState.values[field.name],
|
|
422
|
-
onChange: (val) => handleFieldChange(field.name, val),
|
|
423
|
-
onBlur: () => handleFieldBlur(field.name),
|
|
424
|
-
error: formState.errors[field.name]
|
|
425
|
-
},
|
|
426
|
-
field.name
|
|
427
|
-
)) }),
|
|
428
|
-
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
429
|
-
"button",
|
|
430
|
-
{
|
|
431
|
-
type: "submit",
|
|
432
|
-
disabled: formState.isSubmitting,
|
|
433
|
-
className: "inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 bg-primary text-primary-foreground hover:bg-primary/90 h-10 px-4 py-2 w-full",
|
|
434
|
-
children: formState.isSubmitting ? "Submitting..." : schema.submitButtonText || "Submit"
|
|
435
|
-
}
|
|
436
|
-
)
|
|
437
|
-
] });
|
|
438
|
-
};
|
|
439
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
440
|
-
0 && (module.exports = {
|
|
441
|
-
Checkbox,
|
|
442
|
-
CheckboxRenderer,
|
|
443
|
-
DynamicForm,
|
|
444
|
-
FormFieldRenderer,
|
|
445
|
-
Input,
|
|
446
|
-
InputRenderer,
|
|
447
|
-
Label,
|
|
448
|
-
RadioGroup,
|
|
449
|
-
RadioGroupItem,
|
|
450
|
-
RadioRenderer,
|
|
451
|
-
Select,
|
|
452
|
-
SelectContent,
|
|
453
|
-
SelectGroup,
|
|
454
|
-
SelectItem,
|
|
455
|
-
SelectRenderer,
|
|
456
|
-
SelectTrigger,
|
|
457
|
-
SelectValue,
|
|
458
|
-
Textarea,
|
|
459
|
-
TextareaRenderer,
|
|
460
|
-
defaultComponentMap
|
|
461
|
-
});
|
|
1
|
+
"use strict";var Ve=Object.create;var q=Object.defineProperty;var Ge=Object.getOwnPropertyDescriptor;var Ee=Object.getOwnPropertyNames;var Le=Object.getPrototypeOf,Me=Object.prototype.hasOwnProperty;var Be=(e,t)=>{for(var r in t)q(e,r,{get:t[r],enumerable:!0})},le=(e,t,r,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Ee(t))!Me.call(e,o)&&o!==r&&q(e,o,{get:()=>t[o],enumerable:!(i=Ge(t,o))||i.enumerable});return e};var u=(e,t,r)=>(r=e!=null?Ve(Le(e)):{},le(t||!e||!e.__esModule?q(r,"default",{value:e,enumerable:!0}):r,e)),$e=e=>le(q({},"__esModule",{value:!0}),e);var Ke={};Be(Ke,{Checkbox:()=>G,CheckboxRenderer:()=>Y,DateRenderer:()=>_,DynamicForm:()=>Je,FormFieldRenderer:()=>ne,Input:()=>w,InputRenderer:()=>R,Label:()=>b,RadioGroup:()=>B,RadioGroupItem:()=>$,RadioRenderer:()=>Z,Select:()=>O,SelectContent:()=>A,SelectGroup:()=>J,SelectItem:()=>W,SelectRenderer:()=>X,SelectTrigger:()=>D,SelectValue:()=>K,Switch:()=>L,SwitchRenderer:()=>j,Textarea:()=>T,TextareaRenderer:()=>Q,defaultComponentMap:()=>ee,useForm:()=>se});module.exports=$e(Ke);var Ne=require("pdyform-core");var ce=u(require("react"),1);var de=require("clsx"),me=require("tailwind-merge");function l(...e){return(0,me.twMerge)((0,de.clsx)(e))}var pe=require("react/jsx-runtime"),w=ce.forwardRef(({className:e,type:t,...r},i)=>(0,pe.jsx)("input",{type:t,className:l("flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",e),ref:i,...r}));w.displayName="Input";var fe=u(require("react"),1);var ue=require("react/jsx-runtime"),T=fe.forwardRef(({className:e,...t},r)=>(0,ue.jsx)("textarea",{className:l("flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",e),ref:r,...t}));T.displayName="Textarea";var be=u(require("react"),1),V=u(require("@radix-ui/react-checkbox"),1),Re=require("lucide-react");var H=require("react/jsx-runtime"),G=be.forwardRef(({className:e,...t},r)=>(0,H.jsx)(V.Root,{ref:r,className:l("peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",e),...t,children:(0,H.jsx)(V.Indicator,{className:l("flex items-center justify-center text-current"),children:(0,H.jsx)(Re.Check,{className:"h-4 w-4"})})}));G.displayName=V.Root.displayName;var ve=u(require("react"),1),E=u(require("@radix-ui/react-switch"),1);var re=require("react/jsx-runtime"),L=ve.forwardRef(({className:e,...t},r)=>(0,re.jsx)(E.Root,{className:l("peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",e),...t,ref:r,children:(0,re.jsx)(E.Thumb,{className:l("pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0")})}));L.displayName=E.Root.displayName;var oe=u(require("react"),1),x=u(require("@radix-ui/react-radio-group"),1),ge=require("lucide-react");var M=require("react/jsx-runtime"),B=oe.forwardRef(({className:e,...t},r)=>(0,M.jsx)(x.Root,{className:l("grid gap-2",e),...t,ref:r}));B.displayName=x.Root.displayName;var $=oe.forwardRef(({className:e,...t},r)=>(0,M.jsx)(x.Item,{ref:r,className:l("aspect-square h-4 w-4 rounded-full border border-primary text-primary ring-offset-background focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",e),...t,children:(0,M.jsx)(x.Indicator,{className:"flex items-center justify-center",children:(0,M.jsx)(ge.Circle,{className:"h-2.5 w-2.5 fill-current text-current"})})}));$.displayName=x.Item.displayName;var U=u(require("react"),1),a=u(require("@radix-ui/react-select"),1),z=require("lucide-react");var f=require("react/jsx-runtime"),O=a.Root,J=a.Group,K=a.Value,D=U.forwardRef(({className:e,children:t,...r},i)=>(0,f.jsxs)(a.Trigger,{ref:i,className:l("flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",e),...r,children:[t,(0,f.jsx)(a.Icon,{asChild:!0,children:(0,f.jsx)(z.ChevronDown,{className:"h-4 w-4 opacity-50"})})]}));D.displayName=a.Trigger.displayName;var A=U.forwardRef(({className:e,children:t,position:r="popper",...i},o)=>(0,f.jsx)(a.Portal,{children:(0,f.jsx)(a.Content,{ref:o,className:l("relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",r==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",e),position:r,...i,children:(0,f.jsx)(a.Viewport,{className:l("p-1",r==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:t})})}));A.displayName=a.Content.displayName;var W=U.forwardRef(({className:e,children:t,...r},i)=>(0,f.jsxs)(a.Item,{ref:i,className:l("relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e),...r,children:[(0,f.jsx)("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:(0,f.jsx)(a.ItemIndicator,{children:(0,f.jsx)(z.Check,{className:"h-4 w-4"})})}),(0,f.jsx)(a.ItemText,{children:t})]}));W.displayName=a.Item.displayName;var xe=u(require("react"),1),ie=u(require("@radix-ui/react-label"),1),ye=require("class-variance-authority");var he=require("react/jsx-runtime"),De=(0,ye.cva)("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),b=xe.forwardRef(({className:e,...t},r)=>(0,he.jsx)(ie.Root,{ref:r,className:l(De(),e),...t}));b.displayName=ie.Root.displayName;var Se=require("pdyform-core");var Ce=require("react/jsx-runtime"),Ae=({field:e,value:t,onChange:r,onBlur:i,fieldId:o,ariaInvalid:n,ariaRequired:s,ariaDescribedBy:d})=>{let c=p=>{r((0,Se.normalizeFieldValue)(e,p))};return(0,Ce.jsx)(w,{id:o,type:e.type,placeholder:e.placeholder,value:t??"",onChange:p=>c(p.target.value),onBlur:i,disabled:typeof e.disabled=="boolean"?e.disabled:void 0,name:e.name,"aria-invalid":n,"aria-required":s,"aria-describedby":d})},R=Ae;var Fe=require("react/jsx-runtime"),We=({field:e,value:t,onChange:r,onBlur:i,fieldId:o})=>(0,Fe.jsx)(T,{id:o,placeholder:e.placeholder,value:t??"",onChange:n=>r(n.target.value),onBlur:i,disabled:typeof e.disabled=="boolean"?e.disabled:void 0,name:e.name}),Q=We;var y=require("react/jsx-runtime"),qe=({field:e,value:t,onChange:r,onBlur:i,fieldId:o})=>(0,y.jsxs)(O,{value:t!=null?String(t):"",onValueChange:r,disabled:typeof e.disabled=="boolean"?e.disabled:void 0,name:e.name,children:[(0,y.jsx)(D,{id:o,onBlur:i,children:(0,y.jsx)(K,{placeholder:e.placeholder||"Select an option"})}),(0,y.jsx)(A,{children:(0,y.jsx)(J,{children:e.options?.map(n=>(0,y.jsx)(W,{value:String(n.value),children:n.label},n.value))})})]}),X=qe;var N=require("react/jsx-runtime"),He=({field:e,value:t,onChange:r,onBlur:i})=>(0,N.jsx)("div",{className:"flex flex-wrap gap-4",children:e.options?.map(o=>{let n=Array.isArray(t)&&t.includes(o.value);return(0,N.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,N.jsx)(G,{id:`checkbox-${e.name}-${o.value}`,checked:n,disabled:typeof e.disabled=="boolean"?e.disabled:void 0,onCheckedChange:s=>{let d=Array.isArray(t)?[...t]:[];if(s)d.push(o.value);else{let c=d.indexOf(o.value);c>-1&&d.splice(c,1)}r(d)},onBlur:i}),(0,N.jsx)(b,{htmlFor:`checkbox-${e.name}-${o.value}`,className:"font-normal",children:o.label})]},o.value)})}),Y=He;var I=require("react/jsx-runtime"),Ue=({field:e,value:t,onChange:r,onBlur:i})=>(0,I.jsx)(B,{value:t!=null?String(t):"",onValueChange:r,disabled:typeof e.disabled=="boolean"?e.disabled:void 0,name:e.name,className:"flex flex-wrap gap-4",children:e.options?.map(o=>(0,I.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,I.jsx)($,{value:String(o.value),id:`radio-${e.name}-${o.value}`,onBlur:i}),(0,I.jsx)(b,{htmlFor:`radio-${e.name}-${o.value}`,className:"font-normal",children:o.label})]},o.value))}),Z=Ue;var Pe=require("react/jsx-runtime"),ze=({field:e,value:t,onChange:r,onBlur:i,fieldId:o,ariaInvalid:n,ariaRequired:s,ariaDescribedBy:d})=>(0,Pe.jsx)(w,{id:o,type:"date",value:t??"",onChange:c=>r(c.target.value),onBlur:i,disabled:typeof e.disabled=="boolean"?e.disabled:void 0,name:e.name,"aria-invalid":n,"aria-required":s,"aria-describedby":d}),_=ze;var ae=require("react/jsx-runtime"),Oe=({field:e,value:t,onChange:r,onBlur:i,fieldId:o,ariaInvalid:n,ariaRequired:s,ariaDescribedBy:d})=>(0,ae.jsx)("div",{className:"flex items-center space-x-2",children:(0,ae.jsx)(L,{id:o,checked:!!t,onCheckedChange:r,disabled:typeof e.disabled=="boolean"?e.disabled:void 0,name:e.name,"aria-invalid":n,"aria-required":s,"aria-describedby":d})}),j=Oe;var ee={text:R,number:R,password:R,email:R,textarea:Q,select:X,checkbox:Y,radio:Z,date:_,switch:j};var h=require("react/jsx-runtime"),ne=({field:e,value:t,onChange:r,onBlur:i,error:o,componentMap:n})=>{let{label:s,description:d,name:c,type:p,validations:m}=e,v=`field-${c}`,F=`${v}-description`,P=`${v}-error`,g=m?.some(Te=>Te.type==="required"),Ie=(n?{...ee,...n}:ee)[p]??R,ke=[d?F:null,o?P:null].filter(Boolean).join(" ");return(0,h.jsxs)("div",{className:`space-y-2 ${e.className||""}`,children:[s&&(0,h.jsxs)(b,{htmlFor:v,className:g?"flex items-center gap-1":"",children:[s,g&&(0,h.jsx)("span",{className:"text-destructive",children:"*"})]}),(0,h.jsx)(Ie,{field:e,value:t,onChange:r,onBlur:i,fieldId:v,errorId:P,descriptionId:F,ariaInvalid:!!o,ariaRequired:g,ariaDescribedBy:ke||void 0}),d&&(0,h.jsx)("p",{id:F,className:"text-[0.8rem] text-muted-foreground",children:d}),o&&(0,h.jsx)("p",{id:P,className:"text-[0.8rem] font-medium text-destructive",children:o})]})};var S=require("react"),we=require("zustand"),te=require("pdyform-core");function se({schema:e}){let t=(0,S.useMemo)(()=>(0,te.createFormStore)(e.fields,e.resolver,e.errorMessages),[e]),r=(0,we.useStore)(t),i=(0,S.useCallback)(async(c,p)=>{await t.getState().setFieldValue(c,p)},[t]),o=(0,S.useCallback)(c=>(0,te.get)(t.getState().values,c),[t]),n=(0,S.useCallback)((c,p)=>{t.setState(m=>({errors:{...m.errors,[c]:p}}))},[t]),s=(0,S.useCallback)(async()=>{let{hasError:c,state:p}=await t.getState().runSubmitValidation();return{hasError:c,values:p.values,state:p}},[t]),d=(0,S.useCallback)(()=>{t.setState({values:{},errors:{},isSubmitting:!1})},[t]);return{store:t,state:r,setValue:i,getValue:o,setError:n,validate:s,reset:d}}var C=require("react/jsx-runtime"),Je=({schema:e,onSubmit:t,className:r,form:i})=>{let o=se({schema:e}),n=i||o,{state:s,store:d}=n,c=async m=>{m.preventDefault();let{hasError:v,values:F,state:P}=await n.validate();if(v){let g=e.fields.find(k=>P.errors[k.name]);if(g){let k=document.getElementById(`field-${g.name}`);k?.focus(),k?.scrollIntoView({behavior:"smooth",block:"center"})}return}t(F)},p=s.validatingFields.length>0;return(0,C.jsxs)("form",{onSubmit:c,className:`space-y-6 ${r||""}`,children:[e.title&&(0,C.jsx)("h2",{className:"text-2xl font-bold tracking-tight",children:e.title}),e.description&&(0,C.jsx)("p",{className:"text-muted-foreground",children:e.description}),(0,C.jsx)("div",{className:"space-y-4",children:e.fields.map(m=>{let v=typeof m.hidden=="function"?m.hidden(s.values):m.hidden,F=typeof m.disabled=="function"?m.disabled(s.values):m.disabled,P=s.validatingFields.includes(m.name);return!v&&(0,C.jsx)(ne,{field:{...m,disabled:F||P},value:(0,Ne.get)(s.values,m.name),onChange:g=>d.getState().setFieldValue(m.name,g),onBlur:()=>d.getState().setFieldBlur(m.name),error:s.errors[m.name]},m.name)})}),(0,C.jsx)("button",{type:"submit",disabled:s.isSubmitting||p,className:"inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 bg-primary text-primary-foreground hover:bg-primary/90 h-10 px-4 py-2 w-full",children:s.isSubmitting?"Submitting...":p?"Validating...":e.submitButtonText||"Submit"})]})};0&&(module.exports={Checkbox,CheckboxRenderer,DateRenderer,DynamicForm,FormFieldRenderer,Input,InputRenderer,Label,RadioGroup,RadioGroupItem,RadioRenderer,Select,SelectContent,SelectGroup,SelectItem,SelectRenderer,SelectTrigger,SelectValue,Switch,SwitchRenderer,Textarea,TextareaRenderer,defaultComponentMap,useForm});
|
|
@@ -1,17 +1,37 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import React__default from 'react';
|
|
3
|
-
import { FormSchema, FormField } from 'pdyform
|
|
3
|
+
import { createFormStore, FormStore, FormRuntimeState, FormSchema, FormField } from 'pdyform-core';
|
|
4
4
|
import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
|
|
5
5
|
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
6
6
|
import * as LabelPrimitive from '@radix-ui/react-label';
|
|
7
7
|
import { VariantProps } from 'class-variance-authority';
|
|
8
8
|
import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';
|
|
9
9
|
import * as SelectPrimitive from '@radix-ui/react-select';
|
|
10
|
+
import * as SwitchPrimitives from '@radix-ui/react-switch';
|
|
11
|
+
|
|
12
|
+
interface UseFormOptions {
|
|
13
|
+
schema: FormSchema;
|
|
14
|
+
}
|
|
15
|
+
interface UseFormReturn {
|
|
16
|
+
store: ReturnType<typeof createFormStore>;
|
|
17
|
+
state: FormStore;
|
|
18
|
+
setValue: (name: string, value: any) => Promise<void>;
|
|
19
|
+
getValue: (name: string) => any;
|
|
20
|
+
setError: (name: string, error: string) => void;
|
|
21
|
+
validate: () => Promise<{
|
|
22
|
+
hasError: boolean;
|
|
23
|
+
values: any;
|
|
24
|
+
state: FormRuntimeState;
|
|
25
|
+
}>;
|
|
26
|
+
reset: () => void;
|
|
27
|
+
}
|
|
28
|
+
declare function useForm({ schema }: UseFormOptions): UseFormReturn;
|
|
10
29
|
|
|
11
30
|
interface DynamicFormProps {
|
|
12
31
|
schema: FormSchema;
|
|
13
32
|
onSubmit: (values: Record<string, any>) => void;
|
|
14
33
|
className?: string;
|
|
34
|
+
form?: UseFormReturn;
|
|
15
35
|
}
|
|
16
36
|
declare const DynamicForm: React__default.FC<DynamicFormProps>;
|
|
17
37
|
|
|
@@ -25,6 +45,8 @@ declare const Textarea: React.ForwardRefExoticComponent<TextareaProps & React.Re
|
|
|
25
45
|
|
|
26
46
|
declare const Checkbox: React.ForwardRefExoticComponent<Omit<CheckboxPrimitive.CheckboxProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
27
47
|
|
|
48
|
+
declare const Switch: React.ForwardRefExoticComponent<Omit<SwitchPrimitives.SwitchProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
49
|
+
|
|
28
50
|
declare const RadioGroup: React.ForwardRefExoticComponent<Omit<RadioGroupPrimitive.RadioGroupProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
29
51
|
declare const RadioGroupItem: React.ForwardRefExoticComponent<Omit<RadioGroupPrimitive.RadioGroupItemProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
30
52
|
|
|
@@ -44,6 +66,11 @@ interface FieldRenderContext {
|
|
|
44
66
|
onChange: (value: any) => void;
|
|
45
67
|
onBlur?: () => void;
|
|
46
68
|
fieldId: string;
|
|
69
|
+
errorId?: string;
|
|
70
|
+
descriptionId?: string;
|
|
71
|
+
ariaInvalid?: boolean;
|
|
72
|
+
ariaRequired?: boolean;
|
|
73
|
+
ariaDescribedBy?: string;
|
|
47
74
|
}
|
|
48
75
|
/** A React component that renders a specific field type */
|
|
49
76
|
type FieldRenderer = React__default.ComponentType<FieldRenderContext>;
|
|
@@ -60,6 +87,10 @@ declare const CheckboxRenderer: React__default.FC<FieldRenderContext>;
|
|
|
60
87
|
|
|
61
88
|
declare const RadioRenderer: React__default.FC<FieldRenderContext>;
|
|
62
89
|
|
|
90
|
+
declare const DateRenderer: React__default.FC<FieldRenderContext>;
|
|
91
|
+
|
|
92
|
+
declare const SwitchRenderer: React__default.FC<FieldRenderContext>;
|
|
93
|
+
|
|
63
94
|
/**
|
|
64
95
|
* The default built-in component map.
|
|
65
96
|
* Import and spread this to extend or override individual field types:
|
|
@@ -93,4 +124,4 @@ interface FormFieldRendererProps {
|
|
|
93
124
|
}
|
|
94
125
|
declare const FormFieldRenderer: React__default.FC<FormFieldRendererProps>;
|
|
95
126
|
|
|
96
|
-
export { Checkbox, CheckboxRenderer, DynamicForm, type FieldComponentMap, type FieldRenderContext, type FieldRenderer, FormFieldRenderer, type FormFieldRendererProps, Input, InputRenderer, Label, RadioGroup, RadioGroupItem, RadioRenderer, Select, SelectContent, SelectGroup, SelectItem, SelectRenderer, SelectTrigger, SelectValue, Textarea, TextareaRenderer, defaultComponentMap };
|
|
127
|
+
export { Checkbox, CheckboxRenderer, DateRenderer, DynamicForm, type FieldComponentMap, type FieldRenderContext, type FieldRenderer, FormFieldRenderer, type FormFieldRendererProps, Input, InputRenderer, Label, RadioGroup, RadioGroupItem, RadioRenderer, Select, SelectContent, SelectGroup, SelectItem, SelectRenderer, SelectTrigger, SelectValue, Switch, SwitchRenderer, Textarea, TextareaRenderer, type UseFormOptions, type UseFormReturn, defaultComponentMap, useForm };
|