@zod-to-form/react 0.2.3 → 0.2.4

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 (56) hide show
  1. package/README.md +142 -0
  2. package/dist/FieldRenderer.d.ts +15 -1
  3. package/dist/FieldRenderer.d.ts.map +1 -1
  4. package/dist/FieldRenderer.js +119 -15
  5. package/dist/FieldRenderer.js.map +1 -1
  6. package/dist/ZodForm.d.ts +5 -1
  7. package/dist/ZodForm.d.ts.map +1 -1
  8. package/dist/ZodForm.js +8 -4
  9. package/dist/ZodForm.js.map +1 -1
  10. package/dist/components/Checkbox.d.ts +1 -1
  11. package/dist/components/Checkbox.d.ts.map +1 -1
  12. package/dist/components/Checkbox.js +3 -2
  13. package/dist/components/Checkbox.js.map +1 -1
  14. package/dist/components/Combobox.d.ts +1 -1
  15. package/dist/components/Combobox.d.ts.map +1 -1
  16. package/dist/components/Combobox.js +3 -2
  17. package/dist/components/Combobox.js.map +1 -1
  18. package/dist/components/DatePicker.d.ts +1 -1
  19. package/dist/components/DatePicker.d.ts.map +1 -1
  20. package/dist/components/DatePicker.js +3 -2
  21. package/dist/components/DatePicker.js.map +1 -1
  22. package/dist/components/FileInput.d.ts +1 -1
  23. package/dist/components/FileInput.d.ts.map +1 -1
  24. package/dist/components/FileInput.js +3 -2
  25. package/dist/components/FileInput.js.map +1 -1
  26. package/dist/components/Input.d.ts +1 -1
  27. package/dist/components/Input.d.ts.map +1 -1
  28. package/dist/components/Input.js +3 -2
  29. package/dist/components/Input.js.map +1 -1
  30. package/dist/components/RadioGroup.d.ts +1 -1
  31. package/dist/components/RadioGroup.d.ts.map +1 -1
  32. package/dist/components/RadioGroup.js +3 -2
  33. package/dist/components/RadioGroup.js.map +1 -1
  34. package/dist/components/Select.d.ts +1 -1
  35. package/dist/components/Select.d.ts.map +1 -1
  36. package/dist/components/Select.js +3 -2
  37. package/dist/components/Select.js.map +1 -1
  38. package/dist/components/Switch.d.ts +1 -1
  39. package/dist/components/Switch.d.ts.map +1 -1
  40. package/dist/components/Switch.js +3 -2
  41. package/dist/components/Switch.js.map +1 -1
  42. package/dist/components/Textarea.d.ts +1 -1
  43. package/dist/components/Textarea.d.ts.map +1 -1
  44. package/dist/components/Textarea.js +3 -2
  45. package/dist/components/Textarea.js.map +1 -1
  46. package/dist/components/index.d.ts +16 -18
  47. package/dist/components/index.d.ts.map +1 -1
  48. package/dist/index.d.ts +1 -0
  49. package/dist/index.d.ts.map +1 -1
  50. package/dist/shadcn/index.d.ts +11 -6
  51. package/dist/shadcn/index.d.ts.map +1 -1
  52. package/dist/useZodForm.d.ts +2 -0
  53. package/dist/useZodForm.d.ts.map +1 -1
  54. package/dist/useZodForm.js +21 -3
  55. package/dist/useZodForm.js.map +1 -1
  56. package/package.json +4 -4
package/README.md ADDED
@@ -0,0 +1,142 @@
1
+ <p align="center">
2
+ <img src="https://raw.githubusercontent.com/pradeepmouli/zod-to-form/master/attached_assets/banner.svg" alt="zod-to-form banner" />
3
+ </p>
4
+
5
+ # @zod-to-form/react
6
+
7
+ Runtime React renderer for Zod v4 schemas.
8
+
9
+ `@zod-to-form/react` integrates `@zod-to-form/core` with React Hook Form and renders schema-driven forms using `ZodForm` and `useZodForm`.
10
+
11
+ ## Installation
12
+
13
+ ```bash
14
+ pnpm add @zod-to-form/react @zod-to-form/core zod react react-hook-form @hookform/resolvers
15
+ ```
16
+
17
+ ## Requirements
18
+
19
+ - React 18+ (React 19 supported)
20
+ - React Hook Form 7+
21
+ - Zod v4
22
+
23
+ ## Quick Start
24
+
25
+ ```tsx
26
+ import { z } from 'zod';
27
+ import { ZodForm } from '@zod-to-form/react';
28
+
29
+ const userSchema = z.object({
30
+ name: z.string().min(1),
31
+ email: z.string().email(),
32
+ subscribe: z.boolean().default(false)
33
+ });
34
+
35
+ export function UserForm() {
36
+ return (
37
+ <ZodForm
38
+ schema={userSchema}
39
+ mode='onSubmit'
40
+ onSubmit={(data) => {
41
+ console.log('submitted', data);
42
+ }}
43
+ >
44
+ <button type='submit'>Save</button>
45
+ </ZodForm>
46
+ );
47
+ }
48
+ ```
49
+
50
+ ## API
51
+
52
+ ### `ZodForm`
53
+
54
+ Props:
55
+
56
+ - `schema`: Zod object schema (required)
57
+ - `onSubmit`: submit handler with parsed schema output
58
+ - `onValueChange`: called with parsed output on valid field updates
59
+ - `mode`: `'onSubmit' | 'onChange' | 'onBlur'`
60
+ - `defaultValues`: partial initial values
61
+ - `components`: partial override map for default components
62
+ - `componentConfig`: runtime component mapping/field overrides
63
+ - `formRegistry`: metadata registry from `@zod-to-form/core`
64
+ - `processors`: custom/override processors from `@zod-to-form/core`
65
+ - `className`: class passed to `<form>`
66
+ - `children`: rendered inside the `<form>` (typically actions)
67
+
68
+ ### `useZodForm`
69
+
70
+ Returns:
71
+
72
+ - `form`: React Hook Form instance
73
+ - `fields`: walked `FormField[]` descriptors from schema
74
+
75
+ ```tsx
76
+ import { z } from 'zod';
77
+ import { useZodForm } from '@zod-to-form/react';
78
+
79
+ const schema = z.object({ title: z.string().min(1) });
80
+
81
+ export function Example() {
82
+ const { form, fields } = useZodForm(schema, {
83
+ mode: 'onChange',
84
+ onValueChange: (values) => {
85
+ console.log(values);
86
+ }
87
+ });
88
+
89
+ return <pre>{JSON.stringify({ fieldCount: fields.length, dirty: form.formState.isDirty })}</pre>;
90
+ }
91
+ ```
92
+
93
+ ## Components
94
+
95
+ ### `defaultComponentMap`
96
+
97
+ Built-in default component map used by `ZodForm`.
98
+
99
+ ### `shadcnComponentMap`
100
+
101
+ Shadcn-oriented component map export.
102
+
103
+ ## Runtime Component Config
104
+
105
+ Use `componentConfig` to map field types and specific field paths to custom components at runtime.
106
+
107
+ ```tsx
108
+ import { ZodForm } from '@zod-to-form/react';
109
+ import type { RuntimeComponentConfig } from '@zod-to-form/react';
110
+
111
+ const componentConfig: RuntimeComponentConfig = {
112
+ components: '@/components/form-components',
113
+ fieldTypes: {
114
+ Input: { component: 'TextInput' },
115
+ textarea: { component: 'TextareaInput' }
116
+ },
117
+ fields: {
118
+ 'profile.bio': {
119
+ fieldType: 'textarea',
120
+ props: { rows: 6 }
121
+ }
122
+ }
123
+ };
124
+
125
+ // <ZodForm schema={schema} componentConfig={componentConfig} />
126
+ ```
127
+
128
+ ## Accessibility
129
+
130
+ - Uses native form semantics (`<form>`, labels, fieldsets/legends where applicable)
131
+ - Supports error propagation from React Hook Form state into rendered fields
132
+ - Includes accessibility-focused integration tests in this package
133
+
134
+ ## Development
135
+
136
+ From repository root:
137
+
138
+ ```bash
139
+ pnpm --filter @zod-to-form/react run build
140
+ pnpm --filter @zod-to-form/react run test
141
+ pnpm --filter @zod-to-form/react run type-check
142
+ ```
@@ -1,10 +1,24 @@
1
1
  import type { FormField } from '@zod-to-form/core';
2
2
  import { defaultComponentMap } from './components/index.js';
3
3
  type ComponentMap = typeof defaultComponentMap;
4
+ export type RuntimeComponentEntry = {
5
+ component: string;
6
+ render?: () => Promise<unknown>;
7
+ };
8
+ export type RuntimeFieldOverride = {
9
+ fieldType: string;
10
+ props?: Record<string, unknown>;
11
+ };
12
+ export type RuntimeComponentConfig = {
13
+ components: string;
14
+ fieldTypes: Record<string, RuntimeComponentEntry>;
15
+ fields?: Partial<Record<string, RuntimeFieldOverride>>;
16
+ };
4
17
  type FieldRendererProps = {
5
18
  field: FormField;
6
19
  components?: Partial<ComponentMap>;
20
+ componentConfig?: RuntimeComponentConfig;
7
21
  };
8
- export declare function FieldRenderer({ field, components }: FieldRendererProps): import("react/jsx-runtime").JSX.Element | null;
22
+ export declare const FieldRenderer: import("react").MemoExoticComponent<({ field, components, componentConfig }: FieldRendererProps) => import("react/jsx-runtime").JSX.Element | null>;
9
23
  export {};
10
24
  //# sourceMappingURL=FieldRenderer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FieldRenderer.d.ts","sourceRoot":"","sources":["../src/FieldRenderer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,KAAK,YAAY,GAAG,OAAO,mBAAmB,CAAC;AA4C/C,KAAK,kBAAkB,GAAG;IACxB,KAAK,EAAE,SAAS,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;CACpC,CAAC;AA2GF,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,kBAAkB,kDAmEtE"}
1
+ {"version":3,"file":"FieldRenderer.d.ts","sourceRoot":"","sources":["../src/FieldRenderer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,KAAK,YAAY,GAAG,OAAO,mBAAmB,CAAC;AAE/C,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IAClD,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC;CACxD,CAAC;AAkJF,KAAK,kBAAkB,GAAG;IACxB,KAAK,EAAE,SAAS,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IACnC,eAAe,CAAC,EAAE,sBAAsB,CAAC;CAC1C,CAAC;AAqIF,eAAO,MAAM,aAAa,qJAwHxB,CAAC"}
@@ -1,6 +1,78 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useMemo, memo, useState } from 'react';
2
3
  import { useFieldArray, useFormContext } from 'react-hook-form';
3
4
  import { defaultComponentMap } from './components/index.js';
5
+ const moduleCache = new Map();
6
+ const resolvedComponentCache = new Map();
7
+ const resolvingComponentCache = new Map();
8
+ function getModule(path) {
9
+ const cached = moduleCache.get(path);
10
+ if (cached) {
11
+ return cached;
12
+ }
13
+ const loader = import(/* @vite-ignore */ path).then((mod) => mod);
14
+ moduleCache.set(path, loader);
15
+ return loader;
16
+ }
17
+ function resolveFieldOverride(field, componentConfig) {
18
+ if (!componentConfig) {
19
+ return {};
20
+ }
21
+ const override = componentConfig.fields?.[field.key];
22
+ if (override) {
23
+ return {
24
+ entry: componentConfig.fieldTypes[override.fieldType],
25
+ override
26
+ };
27
+ }
28
+ return {
29
+ entry: componentConfig.fieldTypes[field.component]
30
+ };
31
+ }
32
+ function asComponentType(value, errorMessage) {
33
+ if (typeof value !== 'function') {
34
+ throw new Error(errorMessage);
35
+ }
36
+ return value;
37
+ }
38
+ async function resolveConfiguredComponent(field, componentConfig, entry) {
39
+ const cacheKey = `${componentConfig.components}::${entry.component}`;
40
+ const cached = resolvedComponentCache.get(cacheKey);
41
+ if (cached) {
42
+ return cached;
43
+ }
44
+ const resolving = resolvingComponentCache.get(cacheKey);
45
+ if (resolving) {
46
+ return resolving;
47
+ }
48
+ const resolvePromise = (async () => {
49
+ let resolved;
50
+ if (entry.render) {
51
+ resolved = asComponentType(await entry.render(), `INVALID_COMPONENT_ENTRY: field "${field.key}" render override must resolve to a function.`);
52
+ }
53
+ else {
54
+ let mod;
55
+ try {
56
+ mod = await getModule(componentConfig.components);
57
+ }
58
+ catch (error) {
59
+ const message = error instanceof Error ? error.message : String(error);
60
+ throw new Error(`INVALID_RUNTIME_COMPONENT: failed to import "${componentConfig.components}" for field "${field.key}" (${message}).`);
61
+ }
62
+ const candidate = mod[entry.component];
63
+ resolved = asComponentType(candidate, `INVALID_RUNTIME_COMPONENT: component "${entry.component}" in "${componentConfig.components}" is not a function.`);
64
+ }
65
+ resolvedComponentCache.set(cacheKey, resolved);
66
+ return resolved;
67
+ })();
68
+ resolvingComponentCache.set(cacheKey, resolvePromise);
69
+ try {
70
+ return await resolvePromise;
71
+ }
72
+ finally {
73
+ resolvingComponentCache.delete(cacheKey);
74
+ }
75
+ }
4
76
  function getErrorAtPath(errors, path) {
5
77
  const segments = path.split('.');
6
78
  let current = errors;
@@ -36,7 +108,7 @@ function getRegisterOptions(field) {
36
108
  return {};
37
109
  }
38
110
  // ─── T088: Fieldset block for nested object fields ────────────────────
39
- function FieldsetBlock({ field, components }) {
111
+ const FieldsetBlock = memo(function FieldsetBlock({ field, components, componentConfig }) {
40
112
  const componentMap = { ...defaultComponentMap, ...components };
41
113
  const FormFieldComponent = componentMap.FormField;
42
114
  const wrapperProps = {};
@@ -44,8 +116,8 @@ function FieldsetBlock({ field, components }) {
44
116
  wrapperProps['style'] = { gridColumn: field.gridColumn };
45
117
  }
46
118
  return (_jsx(FormFieldComponent, { ...wrapperProps, children: _jsxs("fieldset", { children: [
47
- _jsx("legend", { children: field.label }), field.children?.map((child) => (_jsx(FieldRenderer, { field: child, components: componentMap }, child.key)))] }) }));
48
- }
119
+ _jsx("legend", { children: field.label }), field.children?.map((child) => (_jsx(FieldRenderer, { field: child, components: componentMap, componentConfig: componentConfig }, child.key)))] }) }));
120
+ });
49
121
  // ─── T089: Array block with useFieldArray ─────────────────────────────
50
122
  function getDefaultAppendValue(arrayItem) {
51
123
  if (!arrayItem)
@@ -56,7 +128,7 @@ function getDefaultAppendValue(arrayItem) {
56
128
  return 0;
57
129
  return '';
58
130
  }
59
- function ArrayBlock({ field, components }) {
131
+ const ArrayBlock = memo(function ArrayBlock({ field, components, componentConfig }) {
60
132
  const componentMap = { ...defaultComponentMap, ...components };
61
133
  const { control } = useFormContext();
62
134
  const { fields: items, append, remove } = useFieldArray({ control, name: field.key });
@@ -71,13 +143,13 @@ function ArrayBlock({ field, components }) {
71
143
  return null;
72
144
  const itemField = { ...field.arrayItem, key: `${field.key}.${index}` };
73
145
  return (_jsxs("div", { children: [
74
- _jsx(FieldRenderer, { field: itemField, components: componentMap }), _jsx("button", { type: "button", onClick: () => remove(index), disabled: items.length <= minLength, children: "Remove" })
146
+ _jsx(FieldRenderer, { field: itemField, components: componentMap, componentConfig: componentConfig }), _jsx("button", { type: "button", onClick: () => remove(index), disabled: items.length <= minLength, children: "Remove" })
75
147
  ] }, item.id));
76
148
  }), _jsx("button", { type: "button", onClick: () => append(getDefaultAppendValue(field.arrayItem)), children: "Add" })
77
149
  ] }));
78
- }
150
+ });
79
151
  // ─── T090: Discriminated union block with watch ───────────────────────
80
- function DiscriminatedUnionBlock({ field, components }) {
152
+ const DiscriminatedUnionBlock = memo(function DiscriminatedUnionBlock({ field, components, componentConfig }) {
81
153
  const componentMap = { ...defaultComponentMap, ...components };
82
154
  const { register, watch } = useFormContext();
83
155
  const discriminator = field.props['_discriminator'];
@@ -93,25 +165,56 @@ function DiscriminatedUnionBlock({ field, components }) {
93
165
  }
94
166
  return (_jsxs(FormFieldComponent, { ...wrapperProps, children: [
95
167
  _jsx(FormLabelComponent, { htmlFor: discKey, children: field.label }), _jsxs("select", { id: discKey, ...register(discKey), children: [
96
- _jsx("option", { value: "", children: "Select\u2026" }), field.options?.map((opt) => (_jsx("option", { value: String(opt.value), children: opt.label }, String(opt.value))))] }), variantFields.map((child) => (_jsx(FieldRenderer, { field: child, components: componentMap }, child.key)))] }));
97
- }
98
- export function FieldRenderer({ field, components }) {
168
+ _jsx("option", { value: "", children: "Select\u2026" }), field.options?.map((opt) => (_jsx("option", { value: String(opt.value), children: opt.label }, String(opt.value))))] }), variantFields.map((child) => (_jsx(FieldRenderer, { field: child, components: componentMap, componentConfig: componentConfig }, child.key)))] }));
169
+ });
170
+ export const FieldRenderer = memo(function FieldRenderer({ field, components, componentConfig }) {
99
171
  // Always call hooks first (React hooks rule — no conditional hook calls)
100
172
  const { register, formState } = useFormContext();
101
173
  const componentMap = { ...defaultComponentMap, ...components };
174
+ const mapping = useMemo(() => resolveFieldOverride(field, componentConfig), [field, componentConfig]);
175
+ const [configuredComponent, setConfiguredComponent] = useState(null);
176
+ const [resolveError, setResolveError] = useState(null);
177
+ useEffect(() => {
178
+ if (!componentConfig || !mapping.entry) {
179
+ setConfiguredComponent(null);
180
+ setResolveError(null);
181
+ return;
182
+ }
183
+ let cancelled = false;
184
+ resolveConfiguredComponent(field, componentConfig, mapping.entry)
185
+ .then((component) => {
186
+ if (!cancelled) {
187
+ setConfiguredComponent(() => component);
188
+ setResolveError(null);
189
+ }
190
+ })
191
+ .catch((error) => {
192
+ if (!cancelled) {
193
+ setConfiguredComponent(null);
194
+ setResolveError(error instanceof Error ? error : new Error(String(error)));
195
+ }
196
+ });
197
+ return () => {
198
+ cancelled = true;
199
+ };
200
+ }, [field, componentConfig, mapping.entry]);
201
+ if (resolveError) {
202
+ throw resolveError;
203
+ }
102
204
  // T088: dispatch nested object fields to FieldsetBlock
103
205
  if (field.component === 'Fieldset') {
104
- return _jsx(FieldsetBlock, { field: field, components: componentMap });
206
+ return (_jsx(FieldsetBlock, { field: field, components: componentMap, componentConfig: componentConfig }));
105
207
  }
106
208
  // T089: dispatch array fields to ArrayBlock
107
209
  if (field.component === 'ArrayField') {
108
- return _jsx(ArrayBlock, { field: field, components: componentMap });
210
+ return _jsx(ArrayBlock, { field: field, components: componentMap, componentConfig: componentConfig });
109
211
  }
110
212
  // T090: dispatch discriminated union to DiscriminatedUnionBlock
111
213
  if (field.component === 'Select' && field.props['_discriminator']) {
112
- return _jsx(DiscriminatedUnionBlock, { field: field, components: componentMap });
214
+ return (_jsx(DiscriminatedUnionBlock, { field: field, components: componentMap, componentConfig: componentConfig }));
113
215
  }
114
- const Component = (componentMap[field.component] ??
216
+ const Component = (configuredComponent ??
217
+ componentMap[field.component] ??
115
218
  componentMap.Input);
116
219
  const FormFieldComponent = componentMap.FormField;
117
220
  const FormLabelComponent = componentMap.FormLabel;
@@ -128,6 +231,7 @@ export function FieldRenderer({ field, components }) {
128
231
  required: field.required,
129
232
  readOnly: field.readOnly,
130
233
  ...field.props,
234
+ ...mapping.override?.props,
131
235
  ...registration
132
236
  };
133
237
  if ('options' in field && field['options']) {
@@ -140,5 +244,5 @@ export function FieldRenderer({ field, components }) {
140
244
  const fieldContent = field.render ? field.render(field, componentProps) : (_jsx(Component, { ...componentProps }));
141
245
  return (_jsxs(FormFieldComponent, { ...wrapperProps, children: [
142
246
  _jsx(FormLabelComponent, { htmlFor: field.key, children: field.label }), fieldContent, field.description ? (_jsx(FormDescriptionComponent, { children: field.description })) : null, errorMessage ? _jsx(FormMessageComponent, { children: errorMessage }) : null] }));
143
- }
247
+ });
144
248
  //# sourceMappingURL=FieldRenderer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FieldRenderer.js","sourceRoot":"","sources":["../src/FieldRenderer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FieldRenderer.js","sourceRoot":"","sources":["../src/FieldRenderer.tsx"],"names":[],"mappings":"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"}
package/dist/ZodForm.d.ts CHANGED
@@ -2,11 +2,15 @@ import type { ReactNode } from 'react';
2
2
  import type { ZodObject } from 'zod';
3
3
  import type { FormProcessor, ZodFormRegistry } from '@zod-to-form/core';
4
4
  import { defaultComponentMap } from './components/index.js';
5
+ import type { RuntimeComponentConfig } from './FieldRenderer.js';
5
6
  type ZodFormProps<TSchema extends ZodObject> = {
6
7
  schema: TSchema;
7
- onSubmit: (data: TSchema['_zod']['output']) => unknown;
8
+ onSubmit?: (data: TSchema['_zod']['output']) => unknown;
9
+ onValueChange?: (data: TSchema['_zod']['output']) => void;
10
+ mode?: 'onSubmit' | 'onChange' | 'onBlur';
8
11
  defaultValues?: Partial<TSchema['_zod']['output']>;
9
12
  components?: Partial<typeof defaultComponentMap>;
13
+ componentConfig?: RuntimeComponentConfig;
10
14
  formRegistry?: ZodFormRegistry;
11
15
  processors?: Record<string, FormProcessor>;
12
16
  className?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"ZodForm.d.ts","sourceRoot":"","sources":["../src/ZodForm.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AACrC,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAExE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG5D,KAAK,YAAY,CAAC,OAAO,SAAS,SAAS,IAAI;IAC7C,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC;IACvD,aAAa,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IACnD,UAAU,CAAC,EAAE,OAAO,CAAC,OAAO,mBAAmB,CAAC,CAAC;IACjD,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,wBAAgB,OAAO,CAAC,OAAO,SAAS,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,SAAS,CA6B1F"}
1
+ {"version":3,"file":"ZodForm.d.ts","sourceRoot":"","sources":["../src/ZodForm.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AACrC,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAExE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAGjE,KAAK,YAAY,CAAC,OAAO,SAAS,SAAS,IAAI;IAC7C,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC;IACxD,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC;IAC1D,IAAI,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,QAAQ,CAAC;IAC1C,aAAa,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IACnD,UAAU,CAAC,EAAE,OAAO,CAAC,OAAO,mBAAmB,CAAC,CAAC;IACjD,eAAe,CAAC,EAAE,sBAAsB,CAAC;IACzC,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,wBAAgB,OAAO,CAAC,OAAO,SAAS,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,SAAS,CA4C1F"}
package/dist/ZodForm.js CHANGED
@@ -1,16 +1,20 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useMemo } from 'react';
2
3
  import { FormProvider } from 'react-hook-form';
3
4
  import { FieldRenderer } from './FieldRenderer.js';
4
5
  import { defaultComponentMap } from './components/index.js';
5
6
  import { useZodForm } from './useZodForm.js';
6
7
  export function ZodForm(props) {
7
- const { schema, onSubmit, defaultValues, components, formRegistry, processors, className, children } = props;
8
- const mergedComponents = { ...defaultComponentMap, ...components };
8
+ const { schema, onSubmit, onValueChange, mode, defaultValues, components, componentConfig, formRegistry, processors, className, children } = props;
9
+ const mergedComponents = useMemo(() => ({ ...defaultComponentMap, ...components }), [components]);
9
10
  const { form, fields } = useZodForm(schema, {
10
11
  defaultValues,
11
12
  formRegistry,
12
- processors
13
+ processors,
14
+ mode,
15
+ onValueChange
13
16
  });
14
- return (_jsx(FormProvider, { ...form, children: _jsxs("form", { onSubmit: form.handleSubmit(onSubmit), className: className, noValidate: true, children: [fields.map((field) => (_jsx(FieldRenderer, { field: field, components: mergedComponents }, field.key))), children] }) }));
17
+ const submitHandler = onSubmit ?? (() => undefined);
18
+ return (_jsx(FormProvider, { ...form, children: _jsxs("form", { onSubmit: form.handleSubmit(submitHandler), className: className, noValidate: true, children: [fields.map((field) => (_jsx(FieldRenderer, { field: field, components: mergedComponents, componentConfig: componentConfig }, field.key))), children] }) }));
15
19
  }
16
20
  //# sourceMappingURL=ZodForm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ZodForm.js","sourceRoot":"","sources":["../src/ZodForm.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAa7C,MAAM,UAAU,OAAO,CAA4B,KAA4B,EAAa;IAC1F,MAAM,EACJ,MAAM,EACN,QAAQ,EACR,aAAa,EACb,UAAU,EACV,YAAY,EACZ,UAAU,EACV,SAAS,EACT,QAAQ,EACT,GAAG,KAAK,CAAC;IACV,MAAM,gBAAgB,GAAG,EAAE,GAAG,mBAAmB,EAAE,GAAG,UAAU,EAAE,CAAC;IAEnE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,EAAE;QAC1C,aAAa;QACb,YAAY;QACZ,UAAU;KACX,CAAC,CAAC;IAEH,OAAO,CACL,KAAC,YAAY,OAAK,IAAI,YACpB,gBAAM,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,mBAC1E,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACrB,KAAC,aAAa,IAAiB,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,gBAAgB,IAArD,KAAK,CAAC,GAAG,CAAgD,CAC9E,CAAC,EACD,QAAQ,IACJ,GACM,CAChB,CAAC;AAAA,CACH"}
1
+ {"version":3,"file":"ZodForm.js","sourceRoot":"","sources":["../src/ZodForm.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAgB7C,MAAM,UAAU,OAAO,CAA4B,KAA4B,EAAa;IAC1F,MAAM,EACJ,MAAM,EACN,QAAQ,EACR,aAAa,EACb,IAAI,EACJ,aAAa,EACb,UAAU,EACV,eAAe,EACf,YAAY,EACZ,UAAU,EACV,SAAS,EACT,QAAQ,EACT,GAAG,KAAK,CAAC;IACV,MAAM,gBAAgB,GAAG,OAAO,CAC9B,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,mBAAmB,EAAE,GAAG,UAAU,EAAE,CAAC,EACjD,CAAC,UAAU,CAAC,CACb,CAAC;IAEF,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,EAAE;QAC1C,aAAa;QACb,YAAY;QACZ,UAAU;QACV,IAAI;QACJ,aAAa;KACd,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAEpD,OAAO,CACL,KAAC,YAAY,OAAK,IAAI,YACpB,gBAAM,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,mBAC/E,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACrB,KAAC,aAAa,IAEZ,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,gBAAgB,EAC5B,eAAe,EAAE,eAAe,IAH3B,KAAK,CAAC,GAAG,CAId,CACH,CAAC,EACD,QAAQ,IACJ,GACM,CAChB,CAAC;AAAA,CACH"}
@@ -1,3 +1,3 @@
1
1
  import type { InputHTMLAttributes } from 'react';
2
- export declare function Checkbox(props: InputHTMLAttributes<HTMLInputElement>): import("react/jsx-runtime").JSX.Element;
2
+ export declare const Checkbox: import("react").MemoExoticComponent<(props: InputHTMLAttributes<HTMLInputElement>) => import("react/jsx-runtime").JSX.Element>;
3
3
  //# sourceMappingURL=Checkbox.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["../../src/components/Checkbox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAEjD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC,gBAAgB,CAAC,2CAEpE"}
1
+ {"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["../../src/components/Checkbox.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAEjD,eAAO,MAAM,QAAQ,gIAEnB,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- export function Checkbox(props) {
2
+ import { memo } from 'react';
3
+ export const Checkbox = memo(function Checkbox(props) {
3
4
  return _jsx("input", { type: "checkbox", ...props });
4
- }
5
+ });
5
6
  //# sourceMappingURL=Checkbox.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Checkbox.js","sourceRoot":"","sources":["../../src/components/Checkbox.tsx"],"names":[],"mappings":";AAEA,MAAM,UAAU,QAAQ,CAAC,KAA4C,EAAE;IACrE,OAAO,gBAAO,IAAI,EAAC,UAAU,KAAK,KAAK,GAAI,CAAC;AAAA,CAC7C"}
1
+ {"version":3,"file":"Checkbox.js","sourceRoot":"","sources":["../../src/components/Checkbox.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAG7B,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,QAAQ,CAAC,KAA4C,EAAE;IAC3F,OAAO,gBAAO,IAAI,EAAC,UAAU,KAAK,KAAK,GAAI,CAAC;AAAA,CAC7C,CAAC,CAAC"}
@@ -7,6 +7,6 @@ type ComboboxProps = Omit<InputHTMLAttributes<HTMLInputElement>, 'list'> & {
7
7
  * Unstyled native combobox using `<datalist>` + `<input list>`.
8
8
  * Provides browser-native autocomplete from the options list.
9
9
  */
10
- export declare function ComboboxFallback({ options, id, ...props }: ComboboxProps): import("react/jsx-runtime").JSX.Element;
10
+ export declare const ComboboxFallback: import("react").MemoExoticComponent<({ options, id, ...props }: ComboboxProps) => import("react/jsx-runtime").JSX.Element>;
11
11
  export {};
12
12
  //# sourceMappingURL=Combobox.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Combobox.d.ts","sourceRoot":"","sources":["../../src/components/Combobox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,KAAK,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC,GAAG;IACzE,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;CAC7B,CAAC;AAEF;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,2CAexE"}
1
+ {"version":3,"file":"Combobox.d.ts","sourceRoot":"","sources":["../../src/components/Combobox.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,KAAK,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC,GAAG;IACzE,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;CAC7B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,4HAmB3B,CAAC"}
@@ -1,12 +1,13 @@
1
1
  import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { memo } from 'react';
2
3
  /**
3
4
  * Unstyled native combobox using `<datalist>` + `<input list>`.
4
5
  * Provides browser-native autocomplete from the options list.
5
6
  */
6
- export function ComboboxFallback({ options, id, ...props }) {
7
+ export const ComboboxFallback = memo(function ComboboxFallback({ options, id, ...props }) {
7
8
  const listId = id ? `${id}-list` : undefined;
8
9
  return (_jsxs(_Fragment, { children: [
9
10
  _jsx("input", { ...props, id: id, list: listId, type: "text" }), _jsx("datalist", { id: listId, children: options?.map((option) => (_jsx("option", { value: `${option.value}`, children: option.label }, `${option.value}`))) })
10
11
  ] }));
11
- }
12
+ });
12
13
  //# sourceMappingURL=Combobox.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Combobox.js","sourceRoot":"","sources":["../../src/components/Combobox.tsx"],"names":[],"mappings":";AAOA;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,KAAK,EAAiB,EAAE;IACzE,MAAM,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IAE7C,OAAO,CACL;YACE,mBAAW,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAC,MAAM,GAAG,EACtD,mBAAU,EAAE,EAAE,MAAM,YACjB,OAAO,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CACxB,iBAAgC,KAAK,EAAE,GAAG,MAAM,CAAC,KAAK,EAAE,YACrD,MAAM,CAAC,KAAK,IADF,GAAG,MAAM,CAAC,KAAK,EAAE,CAErB,CACV,CAAC,GACO;YACV,CACJ,CAAC;AAAA,CACH"}
1
+ {"version":3,"file":"Combobox.js","sourceRoot":"","sources":["../../src/components/Combobox.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAQ7B;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,gBAAgB,CAAC,EAC7D,OAAO,EACP,EAAE,EACF,GAAG,KAAK,EACM,EAAE;IAChB,MAAM,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IAE7C,OAAO,CACL;YACE,mBAAW,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAC,MAAM,GAAG,EACtD,mBAAU,EAAE,EAAE,MAAM,YACjB,OAAO,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CACxB,iBAAgC,KAAK,EAAE,GAAG,MAAM,CAAC,KAAK,EAAE,YACrD,MAAM,CAAC,KAAK,IADF,GAAG,MAAM,CAAC,KAAK,EAAE,CAErB,CACV,CAAC,GACO;YACV,CACJ,CAAC;AAAA,CACH,CAAC,CAAC"}
@@ -1,3 +1,3 @@
1
1
  import type { InputHTMLAttributes } from 'react';
2
- export declare function DatePicker(props: InputHTMLAttributes<HTMLInputElement>): import("react/jsx-runtime").JSX.Element;
2
+ export declare const DatePicker: import("react").MemoExoticComponent<(props: InputHTMLAttributes<HTMLInputElement>) => import("react/jsx-runtime").JSX.Element>;
3
3
  //# sourceMappingURL=DatePicker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DatePicker.d.ts","sourceRoot":"","sources":["../../src/components/DatePicker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAEjD,wBAAgB,UAAU,CAAC,KAAK,EAAE,mBAAmB,CAAC,gBAAgB,CAAC,2CAEtE"}
1
+ {"version":3,"file":"DatePicker.d.ts","sourceRoot":"","sources":["../../src/components/DatePicker.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAEjD,eAAO,MAAM,UAAU,gIAErB,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- export function DatePicker(props) {
2
+ import { memo } from 'react';
3
+ export const DatePicker = memo(function DatePicker(props) {
3
4
  return _jsx("input", { type: "date", ...props });
4
- }
5
+ });
5
6
  //# sourceMappingURL=DatePicker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DatePicker.js","sourceRoot":"","sources":["../../src/components/DatePicker.tsx"],"names":[],"mappings":";AAEA,MAAM,UAAU,UAAU,CAAC,KAA4C,EAAE;IACvE,OAAO,gBAAO,IAAI,EAAC,MAAM,KAAK,KAAK,GAAI,CAAC;AAAA,CACzC"}
1
+ {"version":3,"file":"DatePicker.js","sourceRoot":"","sources":["../../src/components/DatePicker.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAG7B,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,UAAU,CAAC,KAA4C,EAAE;IAC/F,OAAO,gBAAO,IAAI,EAAC,MAAM,KAAK,KAAK,GAAI,CAAC;AAAA,CACzC,CAAC,CAAC"}
@@ -1,3 +1,3 @@
1
1
  import type { InputHTMLAttributes } from 'react';
2
- export declare function FileInput(props: InputHTMLAttributes<HTMLInputElement>): import("react/jsx-runtime").JSX.Element;
2
+ export declare const FileInput: import("react").MemoExoticComponent<(props: InputHTMLAttributes<HTMLInputElement>) => import("react/jsx-runtime").JSX.Element>;
3
3
  //# sourceMappingURL=FileInput.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FileInput.d.ts","sourceRoot":"","sources":["../../src/components/FileInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAEjD,wBAAgB,SAAS,CAAC,KAAK,EAAE,mBAAmB,CAAC,gBAAgB,CAAC,2CAErE"}
1
+ {"version":3,"file":"FileInput.d.ts","sourceRoot":"","sources":["../../src/components/FileInput.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAEjD,eAAO,MAAM,SAAS,gIAEpB,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- export function FileInput(props) {
2
+ import { memo } from 'react';
3
+ export const FileInput = memo(function FileInput(props) {
3
4
  return _jsx("input", { type: "file", ...props });
4
- }
5
+ });
5
6
  //# sourceMappingURL=FileInput.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FileInput.js","sourceRoot":"","sources":["../../src/components/FileInput.tsx"],"names":[],"mappings":";AAEA,MAAM,UAAU,SAAS,CAAC,KAA4C,EAAE;IACtE,OAAO,gBAAO,IAAI,EAAC,MAAM,KAAK,KAAK,GAAI,CAAC;AAAA,CACzC"}
1
+ {"version":3,"file":"FileInput.js","sourceRoot":"","sources":["../../src/components/FileInput.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAG7B,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,SAAS,CAAC,KAA4C,EAAE;IAC7F,OAAO,gBAAO,IAAI,EAAC,MAAM,KAAK,KAAK,GAAI,CAAC;AAAA,CACzC,CAAC,CAAC"}
@@ -1,3 +1,3 @@
1
1
  import type { InputHTMLAttributes } from 'react';
2
- export declare function Input(props: InputHTMLAttributes<HTMLInputElement>): import("react/jsx-runtime").JSX.Element;
2
+ export declare const Input: import("react").MemoExoticComponent<(props: InputHTMLAttributes<HTMLInputElement>) => import("react/jsx-runtime").JSX.Element>;
3
3
  //# sourceMappingURL=Input.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Input.d.ts","sourceRoot":"","sources":["../../src/components/Input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAEjD,wBAAgB,KAAK,CAAC,KAAK,EAAE,mBAAmB,CAAC,gBAAgB,CAAC,2CAEjE"}
1
+ {"version":3,"file":"Input.d.ts","sourceRoot":"","sources":["../../src/components/Input.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAEjD,eAAO,MAAM,KAAK,gIAEhB,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- export function Input(props) {
2
+ import { memo } from 'react';
3
+ export const Input = memo(function Input(props) {
3
4
  return _jsx("input", { ...props });
4
- }
5
+ });
5
6
  //# sourceMappingURL=Input.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Input.js","sourceRoot":"","sources":["../../src/components/Input.tsx"],"names":[],"mappings":";AAEA,MAAM,UAAU,KAAK,CAAC,KAA4C,EAAE;IAClE,OAAO,mBAAW,KAAK,GAAI,CAAC;AAAA,CAC7B"}
1
+ {"version":3,"file":"Input.js","sourceRoot":"","sources":["../../src/components/Input.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAG7B,MAAM,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,KAAK,CAAC,KAA4C,EAAE;IACrF,OAAO,mBAAW,KAAK,GAAI,CAAC;AAAA,CAC7B,CAAC,CAAC"}
@@ -4,6 +4,6 @@ type RadioGroupProps = InputHTMLAttributes<HTMLInputElement> & {
4
4
  name: string;
5
5
  options?: FormFieldOption[];
6
6
  };
7
- export declare function RadioGroup({ options, name, ...props }: RadioGroupProps): import("react/jsx-runtime").JSX.Element;
7
+ export declare const RadioGroup: import("react").MemoExoticComponent<({ options, name, ...props }: RadioGroupProps) => import("react/jsx-runtime").JSX.Element>;
8
8
  export {};
9
9
  //# sourceMappingURL=RadioGroup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RadioGroup.d.ts","sourceRoot":"","sources":["../../src/components/RadioGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,KAAK,eAAe,GAAG,mBAAmB,CAAC,gBAAgB,CAAC,GAAG;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;CAC7B,CAAC;AAEF,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,2CAiBtE"}
1
+ {"version":3,"file":"RadioGroup.d.ts","sourceRoot":"","sources":["../../src/components/RadioGroup.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,KAAK,eAAe,GAAG,mBAAmB,CAAC,gBAAgB,CAAC,GAAG;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,UAAU,gIAiBrB,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- export function RadioGroup({ options, name, ...props }) {
2
+ import { memo } from 'react';
3
+ export const RadioGroup = memo(function RadioGroup({ options, name, ...props }) {
3
4
  return (_jsx("fieldset", { children: options?.map((option) => (_jsxs("label", { children: [
4
5
  _jsx("input", { ...props, type: "radio", name: name, value: option.value, disabled: option.disabled }), option.label] }, `${option.value}`))) }));
5
- }
6
+ });
6
7
  //# sourceMappingURL=RadioGroup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RadioGroup.js","sourceRoot":"","sources":["../../src/components/RadioGroup.tsx"],"names":[],"mappings":";AAQA,MAAM,UAAU,UAAU,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,KAAK,EAAmB,EAAE;IACvE,OAAO,CACL,6BACG,OAAO,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CACxB;gBACE,mBACM,KAAK,EACT,IAAI,EAAC,OAAO,EACZ,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ,GACzB,EACD,MAAM,CAAC,KAAK,KARH,GAAG,MAAM,CAAC,KAAK,EAAE,CASrB,CACT,CAAC,GACO,CACZ,CAAC;AAAA,CACH"}
1
+ {"version":3,"file":"RadioGroup.js","sourceRoot":"","sources":["../../src/components/RadioGroup.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAS7B,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,UAAU,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,KAAK,EAAmB,EAAE;IAC/F,OAAO,CACL,6BACG,OAAO,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CACxB;gBACE,mBACM,KAAK,EACT,IAAI,EAAC,OAAO,EACZ,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ,GACzB,EACD,MAAM,CAAC,KAAK,KARH,GAAG,MAAM,CAAC,KAAK,EAAE,CASrB,CACT,CAAC,GACO,CACZ,CAAC;AAAA,CACH,CAAC,CAAC"}
@@ -3,6 +3,6 @@ import type { FormFieldOption } from '@zod-to-form/core';
3
3
  type SelectProps = SelectHTMLAttributes<HTMLSelectElement> & {
4
4
  options?: FormFieldOption[];
5
5
  };
6
- export declare function Select({ options, ...props }: SelectProps): import("react/jsx-runtime").JSX.Element;
6
+ export declare const Select: import("react").MemoExoticComponent<({ options, ...props }: SelectProps) => import("react/jsx-runtime").JSX.Element>;
7
7
  export {};
8
8
  //# sourceMappingURL=Select.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../../src/components/Select.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,KAAK,WAAW,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,GAAG;IAC3D,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;CAC7B,CAAC;AAEF,wBAAgB,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,WAAW,2CAUxD"}
1
+ {"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../../src/components/Select.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,KAAK,WAAW,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,GAAG;IAC3D,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,MAAM,sHAUjB,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- export function Select({ options, ...props }) {
2
+ import { memo } from 'react';
3
+ export const Select = memo(function Select({ options, ...props }) {
3
4
  return (_jsx("select", { ...props, children: options?.map((option) => (_jsx("option", { value: option.value, disabled: option.disabled, children: option.label }, `${option.value}`))) }));
4
- }
5
+ });
5
6
  //# sourceMappingURL=Select.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Select.js","sourceRoot":"","sources":["../../src/components/Select.tsx"],"names":[],"mappings":";AAOA,MAAM,UAAU,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,EAAe,EAAE;IACzD,OAAO,CACL,oBAAY,KAAK,YACd,OAAO,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CACxB,iBAAgC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,YAC3E,MAAM,CAAC,KAAK,IADF,GAAG,MAAM,CAAC,KAAK,EAAE,CAErB,CACV,CAAC,GACK,CACV,CAAC;AAAA,CACH"}
1
+ {"version":3,"file":"Select.js","sourceRoot":"","sources":["../../src/components/Select.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAQ7B,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,EAAe,EAAE;IAC7E,OAAO,CACL,oBAAY,KAAK,YACd,OAAO,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CACxB,iBAAgC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,YAC3E,MAAM,CAAC,KAAK,IADF,GAAG,MAAM,CAAC,KAAK,EAAE,CAErB,CACV,CAAC,GACK,CACV,CAAC;AAAA,CACH,CAAC,CAAC"}
@@ -1,3 +1,3 @@
1
1
  import type { InputHTMLAttributes } from 'react';
2
- export declare function Switch(props: InputHTMLAttributes<HTMLInputElement>): import("react/jsx-runtime").JSX.Element;
2
+ export declare const Switch: import("react").MemoExoticComponent<(props: InputHTMLAttributes<HTMLInputElement>) => import("react/jsx-runtime").JSX.Element>;
3
3
  //# sourceMappingURL=Switch.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Switch.d.ts","sourceRoot":"","sources":["../../src/components/Switch.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAEjD,wBAAgB,MAAM,CAAC,KAAK,EAAE,mBAAmB,CAAC,gBAAgB,CAAC,2CAElE"}
1
+ {"version":3,"file":"Switch.d.ts","sourceRoot":"","sources":["../../src/components/Switch.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAEjD,eAAO,MAAM,MAAM,gIAEjB,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- export function Switch(props) {
2
+ import { memo } from 'react';
3
+ export const Switch = memo(function Switch(props) {
3
4
  return _jsx("input", { type: "checkbox", role: "switch", ...props });
4
- }
5
+ });
5
6
  //# sourceMappingURL=Switch.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Switch.js","sourceRoot":"","sources":["../../src/components/Switch.tsx"],"names":[],"mappings":";AAEA,MAAM,UAAU,MAAM,CAAC,KAA4C,EAAE;IACnE,OAAO,gBAAO,IAAI,EAAC,UAAU,EAAC,IAAI,EAAC,QAAQ,KAAK,KAAK,GAAI,CAAC;AAAA,CAC3D"}
1
+ {"version":3,"file":"Switch.js","sourceRoot":"","sources":["../../src/components/Switch.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAG7B,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,MAAM,CAAC,KAA4C,EAAE;IACvF,OAAO,gBAAO,IAAI,EAAC,UAAU,EAAC,IAAI,EAAC,QAAQ,KAAK,KAAK,GAAI,CAAC;AAAA,CAC3D,CAAC,CAAC"}
@@ -1,3 +1,3 @@
1
1
  import type { TextareaHTMLAttributes } from 'react';
2
- export declare function Textarea(props: TextareaHTMLAttributes<HTMLTextAreaElement>): import("react/jsx-runtime").JSX.Element;
2
+ export declare const Textarea: import("react").MemoExoticComponent<(props: TextareaHTMLAttributes<HTMLTextAreaElement>) => import("react/jsx-runtime").JSX.Element>;
3
3
  //# sourceMappingURL=Textarea.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Textarea.d.ts","sourceRoot":"","sources":["../../src/components/Textarea.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,OAAO,CAAC;AAEpD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,sBAAsB,CAAC,mBAAmB,CAAC,2CAE1E"}
1
+ {"version":3,"file":"Textarea.d.ts","sourceRoot":"","sources":["../../src/components/Textarea.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,OAAO,CAAC;AAEpD,eAAO,MAAM,QAAQ,sIAInB,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- export function Textarea(props) {
2
+ import { memo } from 'react';
3
+ export const Textarea = memo(function Textarea(props) {
3
4
  return _jsx("textarea", { ...props });
4
- }
5
+ });
5
6
  //# sourceMappingURL=Textarea.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Textarea.js","sourceRoot":"","sources":["../../src/components/Textarea.tsx"],"names":[],"mappings":";AAEA,MAAM,UAAU,QAAQ,CAAC,KAAkD,EAAE;IAC3E,OAAO,sBAAc,KAAK,GAAI,CAAC;AAAA,CAChC"}
1
+ {"version":3,"file":"Textarea.js","sourceRoot":"","sources":["../../src/components/Textarea.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAG7B,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,QAAQ,CAC5C,KAAkD,EAClD;IACA,OAAO,sBAAc,KAAK,GAAI,CAAC;AAAA,CAChC,CAAC,CAAC"}
@@ -1,27 +1,25 @@
1
1
  import type { HTMLAttributes, LabelHTMLAttributes } from 'react';
2
- import { Checkbox } from './Checkbox.js';
3
- import { ComboboxFallback } from './Combobox.js';
4
- import { DatePicker } from './DatePicker.js';
5
- import { FileInput } from './FileInput.js';
6
- import { Input } from './Input.js';
7
- import { RadioGroup } from './RadioGroup.js';
8
- import { Select } from './Select.js';
9
- import { Switch } from './Switch.js';
10
- import { Textarea } from './Textarea.js';
11
2
  declare function FormField(props: HTMLAttributes<HTMLDivElement>): import("react").DetailedReactHTMLElement<HTMLAttributes<HTMLDivElement>, HTMLElement>;
12
3
  declare function FormLabel(props: LabelHTMLAttributes<HTMLLabelElement>): import("react").DetailedReactHTMLElement<LabelHTMLAttributes<HTMLLabelElement>, HTMLElement>;
13
4
  declare function FormDescription(props: HTMLAttributes<HTMLParagraphElement>): import("react").DetailedReactHTMLElement<HTMLAttributes<HTMLParagraphElement>, HTMLElement>;
14
5
  declare function FormMessage(props: HTMLAttributes<HTMLParagraphElement>): import("react").DetailedReactHTMLElement<HTMLAttributes<HTMLParagraphElement>, HTMLElement>;
15
6
  export declare const defaultComponentMap: {
16
- Input: typeof Input;
17
- Textarea: typeof Textarea;
18
- Checkbox: typeof Checkbox;
19
- Combobox: typeof ComboboxFallback;
20
- Switch: typeof Switch;
21
- Select: typeof Select;
22
- DatePicker: typeof DatePicker;
23
- FileInput: typeof FileInput;
24
- RadioGroup: typeof RadioGroup;
7
+ Input: import("react").MemoExoticComponent<(props: import("react").InputHTMLAttributes<HTMLInputElement>) => import("react/jsx-runtime").JSX.Element>;
8
+ Textarea: import("react").MemoExoticComponent<(props: import("react").TextareaHTMLAttributes<HTMLTextAreaElement>) => import("react/jsx-runtime").JSX.Element>;
9
+ Checkbox: import("react").MemoExoticComponent<(props: import("react").InputHTMLAttributes<HTMLInputElement>) => import("react/jsx-runtime").JSX.Element>;
10
+ Combobox: import("react").MemoExoticComponent<({ options, id, ...props }: Omit<import("react").InputHTMLAttributes<HTMLInputElement>, "list"> & {
11
+ options?: import("@zod-to-form/core").FormFieldOption[] | undefined;
12
+ }) => import("react/jsx-runtime").JSX.Element>;
13
+ Switch: import("react").MemoExoticComponent<(props: import("react").InputHTMLAttributes<HTMLInputElement>) => import("react/jsx-runtime").JSX.Element>;
14
+ Select: import("react").MemoExoticComponent<({ options, ...props }: import("react").SelectHTMLAttributes<HTMLSelectElement> & {
15
+ options?: import("@zod-to-form/core").FormFieldOption[] | undefined;
16
+ }) => import("react/jsx-runtime").JSX.Element>;
17
+ DatePicker: import("react").MemoExoticComponent<(props: import("react").InputHTMLAttributes<HTMLInputElement>) => import("react/jsx-runtime").JSX.Element>;
18
+ FileInput: import("react").MemoExoticComponent<(props: import("react").InputHTMLAttributes<HTMLInputElement>) => import("react/jsx-runtime").JSX.Element>;
19
+ RadioGroup: import("react").MemoExoticComponent<({ options, name, ...props }: import("react").InputHTMLAttributes<HTMLInputElement> & {
20
+ name: string;
21
+ options?: import("@zod-to-form/core").FormFieldOption[] | undefined;
22
+ }) => import("react/jsx-runtime").JSX.Element>;
25
23
  FormField: typeof FormField;
26
24
  FormLabel: typeof FormLabel;
27
25
  FormDescription: typeof FormDescription;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,iBAAS,SAAS,CAAC,KAAK,EAAE,cAAc,CAAC,cAAc,CAAC,yFAEvD;AAED,iBAAS,SAAS,CAAC,KAAK,EAAE,mBAAmB,CAAC,gBAAgB,CAAC,gGAE9D;AAED,iBAAS,eAAe,CAAC,KAAK,EAAE,cAAc,CAAC,oBAAoB,CAAC,+FAEnE;AAED,iBAAS,WAAW,CAAC,KAAK,EAAE,cAAc,CAAC,oBAAoB,CAAC,+FAE/D;AAED,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;CAc/B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAWjE,iBAAS,SAAS,CAAC,KAAK,EAAE,cAAc,CAAC,cAAc,CAAC,yFAEvD;AAED,iBAAS,SAAS,CAAC,KAAK,EAAE,mBAAmB,CAAC,gBAAgB,CAAC,gGAE9D;AAED,iBAAS,eAAe,CAAC,KAAK,EAAE,cAAc,CAAC,oBAAoB,CAAC,+FAEnE;AAED,iBAAS,WAAW,CAAC,KAAK,EAAE,cAAc,CAAC,oBAAoB,CAAC,+FAE/D;AAED,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;CAc/B,CAAC"}
package/dist/index.d.ts CHANGED
@@ -3,4 +3,5 @@ export { ZodForm } from './ZodForm.js';
3
3
  export { useZodForm } from './useZodForm.js';
4
4
  export { defaultComponentMap } from './components/index.js';
5
5
  export { shadcnComponentMap } from './shadcn/index.js';
6
+ export type { RuntimeComponentConfig, RuntimeComponentEntry, RuntimeFieldOverride } from './FieldRenderer.js';
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,YAAY,EACV,SAAS,EACT,eAAe,EACf,oBAAoB,EACpB,QAAQ,EACR,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,YAAY,EACV,SAAS,EACT,eAAe,EACf,oBAAoB,EACpB,QAAQ,EACR,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,YAAY,EACV,sBAAsB,EACtB,qBAAqB,EACrB,oBAAoB,EACrB,MAAM,oBAAoB,CAAC"}
@@ -1744,12 +1744,17 @@ declare function ShadcnFormMessage(props: HTMLAttributes<HTMLParagraphElement>):
1744
1744
  className: string;
1745
1745
  }, HTMLElement>;
1746
1746
  export declare const shadcnComponentMap: {
1747
- Checkbox: typeof import("../components/Checkbox.js").Checkbox;
1748
- Combobox: typeof import("../components/Combobox.js").ComboboxFallback;
1749
- Switch: typeof import("../components/Switch.js").Switch;
1750
- DatePicker: typeof import("../components/DatePicker.js").DatePicker;
1751
- FileInput: typeof import("../components/FileInput.js").FileInput;
1752
- RadioGroup: typeof import("../components/RadioGroup.js").RadioGroup;
1747
+ Checkbox: import("react").MemoExoticComponent<(props: InputHTMLAttributes<HTMLInputElement>) => import("react/jsx-runtime").JSX.Element>;
1748
+ Combobox: import("react").MemoExoticComponent<({ options, id, ...props }: Omit<InputHTMLAttributes<HTMLInputElement>, "list"> & {
1749
+ options?: import("@zod-to-form/core").FormFieldOption[] | undefined;
1750
+ }) => import("react/jsx-runtime").JSX.Element>;
1751
+ Switch: import("react").MemoExoticComponent<(props: InputHTMLAttributes<HTMLInputElement>) => import("react/jsx-runtime").JSX.Element>;
1752
+ DatePicker: import("react").MemoExoticComponent<(props: InputHTMLAttributes<HTMLInputElement>) => import("react/jsx-runtime").JSX.Element>;
1753
+ FileInput: import("react").MemoExoticComponent<(props: InputHTMLAttributes<HTMLInputElement>) => import("react/jsx-runtime").JSX.Element>;
1754
+ RadioGroup: import("react").MemoExoticComponent<({ options, name, ...props }: InputHTMLAttributes<HTMLInputElement> & {
1755
+ name: string;
1756
+ options?: import("@zod-to-form/core").FormFieldOption[] | undefined;
1757
+ }) => import("react/jsx-runtime").JSX.Element>;
1753
1758
  Input: typeof ShadcnInput;
1754
1759
  Textarea: typeof ShadcnTextarea;
1755
1760
  Select: typeof ShadcnSelect;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/shadcn/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/shadcn/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAiB,KAAK,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,OAAO,CAAC;AACrF,OAAO,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,OAAO,CAAC;AAK/F,iBAAS,WAAW,CAAC,KAAK,EAAE,mBAAmB,CAAC,gBAAgB,CAAC,qGAahE;AAID,iBAAS,cAAc,CAAC,KAAK,EAAE,sBAAsB,CAAC,mBAAmB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBAazE;AAID,iBAAS,YAAY,CAAC,KAAK,EAAE,oBAAoB,CAAC,iBAAiB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBAanE;AAID,iBAAS,eAAe,CAAC,KAAK,EAAE,cAAc,CAAC,cAAc,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBAK7D;AAID,iBAAS,eAAe,CAAC,KAAK,EAAE,mBAAmB,CAAC,gBAAgB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBAUpE;AAID,iBAAS,qBAAqB,CAAC,KAAK,EAAE,cAAc,CAAC,oBAAoB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBAKzE;AAID,iBAAS,iBAAiB,CAAC,KAAK,EAAE,cAAc,CAAC,oBAAoB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBAKrE;AAQD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;CAS9B,CAAC"}
@@ -4,6 +4,8 @@ type UseZodFormOptions<TSchema extends ZodObject> = {
4
4
  defaultValues?: Partial<TSchema['_zod']['output']>;
5
5
  formRegistry?: ZodFormRegistry;
6
6
  processors?: Record<string, FormProcessor>;
7
+ mode?: 'onSubmit' | 'onChange' | 'onBlur';
8
+ onValueChange?: (values: TSchema['_zod']['output']) => void;
7
9
  };
8
10
  export declare function useZodForm<TSchema extends ZodObject>(schema: TSchema, options?: UseZodFormOptions<TSchema>): {
9
11
  form: import("react-hook-form").UseFormReturn<TSchema["_zod"]["output"], any, TSchema["_zod"]["output"]>;
@@ -1 +1 @@
1
- {"version":3,"file":"useZodForm.d.ts","sourceRoot":"","sources":["../src/useZodForm.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AACrC,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAExE,KAAK,iBAAiB,CAAC,OAAO,SAAS,SAAS,IAAI;IAClD,aAAa,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IACnD,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CAC5C,CAAC;AA4CF,wBAAgB,UAAU,CAAC,OAAO,SAAS,SAAS,EAClD,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,iBAAiB,CAAC,OAAO,CAAC;;;EA2BrC"}
1
+ {"version":3,"file":"useZodForm.d.ts","sourceRoot":"","sources":["../src/useZodForm.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AACrC,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAExE,KAAK,iBAAiB,CAAC,OAAO,SAAS,SAAS,IAAI;IAClD,aAAa,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IACnD,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC3C,IAAI,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,QAAQ,CAAC;IAC1C,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC;CAC7D,CAAC;AA4CF,wBAAgB,UAAU,CAAC,OAAO,SAAS,SAAS,EAClD,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,iBAAiB,CAAC,OAAO,CAAC;;;EAiDrC"}
@@ -1,4 +1,4 @@
1
- import { useMemo } from 'react';
1
+ import { useEffect, useMemo } from 'react';
2
2
  import { zodResolver } from '@hookform/resolvers/zod';
3
3
  import { walkSchema } from '@zod-to-form/core';
4
4
  import { useForm } from 'react-hook-form';
@@ -32,15 +32,33 @@ function isFileListLike(value) {
32
32
  return typeof candidate.length === 'number' && typeof candidate.item === 'function';
33
33
  }
34
34
  export function useZodForm(schema, options) {
35
- const baseResolver = zodResolver(schema);
35
+ const baseResolver = useMemo(() => zodResolver(schema), [schema]);
36
36
  const fields = useMemo(() => walkSchema(schema, {
37
37
  formRegistry: options?.formRegistry,
38
38
  processors: options?.processors
39
39
  }), [schema, options?.formRegistry, options?.processors]);
40
40
  const form = useForm({
41
41
  resolver: ((values, context, resolverOptions) => baseResolver(normalizeFileLists(values), context, resolverOptions)),
42
- defaultValues: options?.defaultValues
42
+ defaultValues: options?.defaultValues,
43
+ mode: options?.mode
43
44
  });
45
+ useEffect(() => {
46
+ if (!options?.onValueChange) {
47
+ return undefined;
48
+ }
49
+ const subscription = form.watch((values, info) => {
50
+ if (!info?.name) {
51
+ return;
52
+ }
53
+ const parsed = schema.safeParse(normalizeFileLists(values));
54
+ if (parsed.success) {
55
+ options.onValueChange?.(parsed.data);
56
+ }
57
+ });
58
+ return () => {
59
+ subscription.unsubscribe();
60
+ };
61
+ }, [options?.onValueChange, schema]);
44
62
  return {
45
63
  form,
46
64
  fields
@@ -1 +1 @@
1
- {"version":3,"file":"useZodForm.js","sourceRoot":"","sources":["../src/useZodForm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAU1C,SAAS,kBAAkB,CAAC,KAAc,EAAW;IACnD,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACpE,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;YACtF,GAAG;YACH,kBAAkB,CAAC,MAAM,CAAC;SAC3B,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,KAAK,CAAC;AAAA,CACd;AAED,SAAS,aAAa,CAAC,KAAc,EAAoC;IACvE,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,iBAAiB,CAAC;AAAA,CACpE;AAED,SAAS,cAAc,CAAC,KAAc,EAAiD;IACrF,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,SAAS,GAAG,KAGjB,CAAC;IAEF,OAAO,OAAO,SAAS,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,SAAS,CAAC,IAAI,KAAK,UAAU,CAAC;AAAA,CACrF;AAED,MAAM,UAAU,UAAU,CACxB,MAAe,EACf,OAAoC,EACpC;IACA,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IAEzC,MAAM,MAAM,GAAG,OAAO,CACpB,GAAG,EAAE,CACH,UAAU,CAAC,MAAM,EAAE;QACjB,YAAY,EAAE,OAAO,EAAE,YAAY;QACnC,UAAU,EAAE,OAAO,EAAE,UAAU;KAChC,CAAC,EACJ,CAAC,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,CAAC,CACrD,CAAC;IAEF,MAAM,IAAI,GAAG,OAAO,CAA4B;QAC9C,QAAQ,EAAE,CAAC,CAAC,MAAe,EAAE,OAAgB,EAAE,eAAwB,EAAE,EAAE,CACzE,YAAY,CACV,kBAAkB,CAAC,MAAM,CAAQ,EACjC,OAAO,EACP,eAAqD,CACtD,CAAQ;QACX,aAAa,EAAE,OAAO,EAAE,aAAoB;KAC7C,CAAC,CAAC;IAEH,OAAO;QACL,IAAI;QACJ,MAAM;KACP,CAAC;AAAA,CACH"}
1
+ {"version":3,"file":"useZodForm.js","sourceRoot":"","sources":["../src/useZodForm.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@zod-to-form/react",
3
- "version": "0.2.3",
3
+ "version": "0.2.4",
4
4
  "description": "Runtime <ZodForm> renderer for Zod v4 schemas",
5
5
  "license": "MIT",
6
- "homepage": "https://github.com/pradeepmouli/zodforms#readme",
6
+ "homepage": "https://github.com/pradeepmouli/zod-to-form#readme",
7
7
  "repository": {
8
8
  "type": "git",
9
- "url": "https://github.com/pradeepmouli/zodforms.git",
9
+ "url": "https://github.com/pradeepmouli/zod-to-form.git",
10
10
  "directory": "packages/react"
11
11
  },
12
12
  "keywords": [
@@ -52,7 +52,7 @@
52
52
  "zod": "^4.3.6"
53
53
  },
54
54
  "dependencies": {
55
- "@zod-to-form/core": "0.2.3"
55
+ "@zod-to-form/core": "0.2.4"
56
56
  },
57
57
  "scripts": {
58
58
  "build": "tsgo -p tsconfig.build.json",