@zod-to-form/react 0.2.3 → 0.2.5

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 (62) hide show
  1. package/README.md +142 -0
  2. package/dist/FieldRenderer.d.ts +11 -2
  3. package/dist/FieldRenderer.d.ts.map +1 -1
  4. package/dist/FieldRenderer.js +131 -27
  5. package/dist/FieldRenderer.js.map +1 -1
  6. package/dist/ZodForm.d.ts +7 -3
  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 +24 -26
  47. package/dist/components/index.d.ts.map +1 -1
  48. package/dist/components/index.js +8 -8
  49. package/dist/components/index.js.map +1 -1
  50. package/dist/index.d.ts +2 -1
  51. package/dist/index.d.ts.map +1 -1
  52. package/dist/index.js +1 -1
  53. package/dist/index.js.map +1 -1
  54. package/dist/shadcn/index.d.ts +22 -17
  55. package/dist/shadcn/index.d.ts.map +1 -1
  56. package/dist/shadcn/index.js +16 -16
  57. package/dist/shadcn/index.js.map +1 -1
  58. package/dist/useZodForm.d.ts +5 -3
  59. package/dist/useZodForm.d.ts.map +1 -1
  60. package/dist/useZodForm.js +21 -3
  61. package/dist/useZodForm.js.map +1 -1
  62. 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,19 @@
1
- import type { FormField } from '@zod-to-form/core';
1
+ import type { FormField, FieldConfig, ComponentEntry } from '@zod-to-form/core';
2
2
  import { defaultComponentMap } from './components/index.js';
3
3
  type ComponentMap = typeof defaultComponentMap;
4
+ export type RuntimeComponentEntry = ComponentEntry;
5
+ /** @deprecated Use FieldConfig instead */
6
+ export type RuntimeFieldOverride = FieldConfig;
7
+ export type RuntimeComponentConfig = {
8
+ components: string;
9
+ fieldTypes: Record<string, RuntimeComponentEntry>;
10
+ fields?: Record<string, FieldConfig>;
11
+ };
4
12
  type FieldRendererProps = {
5
13
  field: FormField;
6
14
  components?: Partial<ComponentMap>;
15
+ componentConfig?: RuntimeComponentConfig;
7
16
  };
8
- export declare function FieldRenderer({ field, components }: FieldRendererProps): import("react/jsx-runtime").JSX.Element | null;
17
+ export declare const FieldRenderer: import("react").MemoExoticComponent<({ field, components, componentConfig }: FieldRendererProps) => import("react/jsx-runtime").JSX.Element | null>;
9
18
  export {};
10
19
  //# 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,WAAW,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEhF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,KAAK,YAAY,GAAG,OAAO,mBAAmB,CAAC;AAE/C,MAAM,MAAM,qBAAqB,GAAG,cAAc,CAAC;AAEnD,0CAA0C;AAC1C,MAAM,MAAM,oBAAoB,GAAG,WAAW,CAAC;AAE/C,MAAM,MAAM,sBAAsB,GAAG;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CACtC,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: override.fieldType ? componentConfig.fieldTypes[override.fieldType] : undefined,
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,16 +108,16 @@ 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
- const FormFieldComponent = componentMap.FormField;
113
+ const FieldComponent = componentMap.Field;
42
114
  const wrapperProps = {};
43
115
  if (field.gridColumn) {
44
116
  wrapperProps['style'] = { gridColumn: field.gridColumn };
45
117
  }
46
- 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
- }
118
+ return (_jsx(FieldComponent, { ...wrapperProps, children: _jsxs("fieldset", { children: [
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'];
@@ -85,38 +157,69 @@ function DiscriminatedUnionBlock({ field, components }) {
85
157
  const currentValue = watch(discKey);
86
158
  const variants = field.props['_variants'];
87
159
  const variantFields = currentValue ? (variants?.[currentValue] ?? []) : [];
88
- const FormFieldComponent = componentMap.FormField;
89
- const FormLabelComponent = componentMap.FormLabel;
160
+ const FieldComponent = componentMap.Field;
161
+ const FieldLabelComponent = componentMap.FieldLabel;
90
162
  const wrapperProps = {};
91
163
  if (field.gridColumn) {
92
164
  wrapperProps['style'] = { gridColumn: field.gridColumn };
93
165
  }
94
- return (_jsxs(FormFieldComponent, { ...wrapperProps, children: [
95
- _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 }) {
166
+ return (_jsxs(FieldComponent, { ...wrapperProps, children: [
167
+ _jsx(FieldLabelComponent, { htmlFor: discKey, children: field.label }), _jsxs("select", { id: discKey, ...register(discKey), children: [
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
- const FormFieldComponent = componentMap.FormField;
117
- const FormLabelComponent = componentMap.FormLabel;
118
- const FormDescriptionComponent = componentMap.FormDescription;
119
- const FormMessageComponent = componentMap.FormMessage;
219
+ const FieldComponent = componentMap.Field;
220
+ const FieldLabelComponent = componentMap.FieldLabel;
221
+ const FieldDescriptionComponent = componentMap.FieldDescription;
222
+ const FieldMessageComponent = componentMap.FieldMessage;
120
223
  const errorMessage = getErrorAtPath(formState.errors, field.key);
121
224
  if (field.hidden) {
122
225
  return null;
@@ -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']) {
@@ -138,7 +242,7 @@ export function FieldRenderer({ field, components }) {
138
242
  wrapperProps['style'] = { gridColumn: field.gridColumn };
139
243
  }
140
244
  const fieldContent = field.render ? field.render(field, componentProps) : (_jsx(Component, { ...componentProps }));
141
- return (_jsxs(FormFieldComponent, { ...wrapperProps, children: [
142
- _jsx(FormLabelComponent, { htmlFor: field.key, children: field.label }), fieldContent, field.description ? (_jsx(FormDescriptionComponent, { children: field.description })) : null, errorMessage ? _jsx(FormMessageComponent, { children: errorMessage }) : null] }));
143
- }
245
+ return (_jsxs(FieldComponent, { ...wrapperProps, children: [
246
+ _jsx(FieldLabelComponent, { htmlFor: field.key, children: field.label }), fieldContent, field.description ? (_jsx(FieldDescriptionComponent, { children: field.description })) : null, errorMessage ? _jsx(FieldMessageComponent, { children: errorMessage }) : null] }));
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
@@ -1,12 +1,16 @@
1
1
  import type { ReactNode } from 'react';
2
- import type { ZodObject } from 'zod';
2
+ import type { output, 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
- defaultValues?: Partial<TSchema['_zod']['output']>;
8
+ onSubmit?: (data: output<TSchema>) => unknown;
9
+ onValueChange?: (data: output<TSchema>) => void;
10
+ mode?: 'onSubmit' | 'onChange' | 'onBlur';
11
+ defaultValues?: Partial<output<TSchema>>;
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,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAC7C,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,MAAM,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC;IAC9C,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IAChD,IAAI,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,QAAQ,CAAC;IAC1C,aAAa,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IACzC,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,CAyC1F"}
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,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,mBAAmB,EAAE,GAAG,UAAU,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAElG,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"}