@liam-michel/validated-form 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -46,8 +46,7 @@ module.exports = __toCommonJS(index_exports);
46
46
 
47
47
  // src/ValidatedForm.tsx
48
48
  var import_react_hook_form = require("react-hook-form");
49
- var import_zod = require("@hookform/resolvers/zod");
50
- var import_zod2 = require("zod");
49
+ var import_standard_schema = require("@hookform/resolvers/standard-schema");
51
50
  var import_jsx_runtime = require("react/jsx-runtime");
52
51
  function ValidatedForm({
53
52
  children,
@@ -61,7 +60,7 @@ function ValidatedForm({
61
60
  renderError
62
61
  }) {
63
62
  const internalForm = (0, import_react_hook_form.useForm)({
64
- resolver: (0, import_zod.zodResolver)(schema),
63
+ resolver: (0, import_standard_schema.standardSchemaResolver)(schema),
65
64
  defaultValues
66
65
  });
67
66
  const form = externalForm ?? internalForm;
@@ -100,12 +99,12 @@ function ValidatedForm({
100
99
  }
101
100
 
102
101
  // src/createForm.tsx
103
- var import_zod11 = require("zod");
102
+ var import_zod9 = require("zod");
104
103
 
105
104
  // src/fields/TextField.tsx
106
105
  var import_react = require("react");
107
106
  var import_react_hook_form2 = require("react-hook-form");
108
- var import_zod3 = require("zod");
107
+ var import_zod = require("zod");
109
108
 
110
109
  // src/utils/cn.ts
111
110
  var import_clsx = require("clsx");
@@ -176,7 +175,7 @@ function TextField({
176
175
  // src/fields/TextAreaField.tsx
177
176
  var import_react2 = require("react");
178
177
  var import_react_hook_form3 = require("react-hook-form");
179
- var import_zod4 = require("zod");
178
+ var import_zod2 = require("zod");
180
179
  var import_jsx_runtime3 = require("react/jsx-runtime");
181
180
  function TextAreaField({
182
181
  name,
@@ -229,7 +228,7 @@ function TextAreaField({
229
228
  // src/fields/NumberField.tsx
230
229
  var import_react3 = require("react");
231
230
  var import_react_hook_form4 = require("react-hook-form");
232
- var import_zod5 = require("zod");
231
+ var import_zod3 = require("zod");
233
232
  var import_jsx_runtime4 = require("react/jsx-runtime");
234
233
  function NumberField({
235
234
  name,
@@ -287,7 +286,7 @@ function NumberField({
287
286
  // src/fields/SelectField.tsx
288
287
  var import_react4 = require("react");
289
288
  var import_react_hook_form5 = require("react-hook-form");
290
- var import_zod6 = require("zod");
289
+ var import_zod4 = require("zod");
291
290
  var SelectPrimitive = __toESM(require("@radix-ui/react-select"), 1);
292
291
  var import_lucide_react = require("lucide-react");
293
292
  var import_jsx_runtime5 = require("react/jsx-runtime");
@@ -362,7 +361,7 @@ function SelectField({
362
361
 
363
362
  // src/fields/CheckboxField.tsx
364
363
  var import_react_hook_form6 = require("react-hook-form");
365
- var import_zod7 = require("zod");
364
+ var import_zod5 = require("zod");
366
365
  var CheckboxPrimitive = __toESM(require("@radix-ui/react-checkbox"), 1);
367
366
  var import_lucide_react2 = require("lucide-react");
368
367
  var import_jsx_runtime6 = require("react/jsx-runtime");
@@ -413,7 +412,7 @@ function CheckboxField({
413
412
  // src/fields/DateField.tsx
414
413
  var import_react5 = require("react");
415
414
  var import_react_hook_form7 = require("react-hook-form");
416
- var import_zod8 = require("zod");
415
+ var import_zod6 = require("zod");
417
416
  var import_react_day_picker = require("react-day-picker");
418
417
  var PopoverPrimitive = __toESM(require("@radix-ui/react-popover"), 1);
419
418
  var import_date_fns = require("date-fns");
@@ -492,7 +491,7 @@ function DateField({
492
491
  // src/fields/SliderField.tsx
493
492
  var import_react6 = require("react");
494
493
  var import_react_hook_form8 = require("react-hook-form");
495
- var import_zod9 = require("zod");
494
+ var import_zod7 = require("zod");
496
495
  var SliderPrimitive = __toESM(require("@radix-ui/react-slider"), 1);
497
496
  var import_jsx_runtime8 = require("react/jsx-runtime");
498
497
  function SliderField({
@@ -559,7 +558,7 @@ function SliderField({
559
558
  // src/fields/MultiSelectField.tsx
560
559
  var import_react7 = require("react");
561
560
  var import_react_hook_form9 = require("react-hook-form");
562
- var import_zod10 = require("zod");
561
+ var import_zod8 = require("zod");
563
562
  var PopoverPrimitive2 = __toESM(require("@radix-ui/react-popover"), 1);
564
563
  var import_cmdk = require("cmdk");
565
564
  var import_lucide_react4 = require("lucide-react");
@@ -740,13 +739,13 @@ function createForm(schema) {
740
739
 
741
740
  // src/hooks/useValidatedForm.ts
742
741
  var import_react_hook_form10 = require("react-hook-form");
743
- var import_zod12 = require("@hookform/resolvers/zod");
742
+ var import_zod10 = require("@hookform/resolvers/zod");
744
743
  function useValidatedForm({
745
744
  schema,
746
745
  defaultValues
747
746
  }) {
748
747
  return (0, import_react_hook_form10.useForm)({
749
- resolver: (0, import_zod12.zodResolver)(schema),
748
+ resolver: (0, import_zod10.zodResolver)(schema),
750
749
  defaultValues
751
750
  });
752
751
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/ValidatedForm.tsx","../src/createForm.tsx","../src/fields/TextField.tsx","../src/utils/cn.ts","../src/fields/TextAreaField.tsx","../src/fields/NumberField.tsx","../src/fields/SelectField.tsx","../src/fields/CheckboxField.tsx","../src/fields/DateField.tsx","../src/fields/SliderField.tsx","../src/fields/MultiSelectField.tsx","../src/hooks/useValidatedForm.ts"],"sourcesContent":["export { ValidatedForm } from './ValidatedForm';\nexport { createForm } from './createForm';\nexport { useValidatedForm } from './hooks/useValidatedForm';\n\nexport {\n TextField,\n TextAreaField,\n NumberField,\n SelectField,\n CheckboxField,\n DateField,\n SliderField,\n MultiSelectField,\n} from './fields';\n\nexport type {\n BaseFieldProps,\n StringFieldsOf,\n NumberFieldsOf,\n BooleanFieldsOf,\n DateFieldsOf,\n SelectFieldsOf,\n PasswordFieldsOf,\n} from './types';\n","import { useForm, FormProvider } from 'react-hook-form';\nimport type { FieldValues } from 'react-hook-form';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { z } from 'zod';\nimport type { ValidatedFormProps } from './types';\n\nexport function ValidatedForm<\n TSchema extends z.ZodType<FieldValues, FieldValues>,\n TInput extends FieldValues = z.input<TSchema> & FieldValues,\n TOutput extends FieldValues = z.output<TSchema> & FieldValues,\n>({\n children,\n schema,\n onSubmit,\n defaultValues,\n form: externalForm,\n submitLabel,\n hideSubmit,\n renderSubmit,\n renderError,\n}: ValidatedFormProps<TInput, TOutput, TSchema>) {\n const internalForm = useForm<TInput, any, TOutput>({\n resolver: zodResolver(schema as any),\n defaultValues,\n });\n\n const form = externalForm ?? internalForm;\n\n const handleSubmit = form.handleSubmit(async (data) => {\n try {\n await onSubmit(data);\n } catch (err: any) {\n const fieldErrors = err?.data?.fieldErrors;\n if (fieldErrors) {\n Object.entries(fieldErrors).forEach(([field, message]) => {\n form.setError(field as any, { message: message as string });\n });\n } else {\n form.setError('root', {\n message: err?.data?.message ?? err?.message ?? 'Something went wrong',\n });\n }\n }\n });\n\n return (\n <FormProvider {...form}>\n <form onSubmit={handleSubmit} className=\"space-y-4\">\n {typeof children === 'function' ? children(form) : children}\n {form.formState.errors.root &&\n (renderError ? (\n renderError(form.formState.errors.root.message!)\n ) : (\n <p className=\"text-sm font-medium text-destructive\">\n {form.formState.errors.root.message}\n </p>\n ))}\n {renderSubmit\n ? renderSubmit({\n isSubmitting: form.formState.isSubmitting,\n reset: form.reset,\n })\n : !hideSubmit && (\n <button\n type=\"submit\"\n disabled={form.formState.isSubmitting}\n className=\"inline-flex h-9 items-center justify-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground shadow transition-colors hover:bg-primary/90 disabled:pointer-events-none disabled:opacity-50\"\n >\n {form.formState.isSubmitting\n ? 'Submitting...'\n : (submitLabel ?? 'Submit')}\n </button>\n )}\n </form>\n </FormProvider>\n );\n}\n","import { ValidatedForm } from '.';\nimport z from 'zod';\nimport type { DefaultValues } from 'react-hook-form';\nimport {\n TextField,\n TextAreaField,\n NumberField,\n SelectField,\n CheckboxField,\n DateField,\n SliderField,\n MultiSelectField,\n} from './fields';\nimport type { SelectFieldsOf } from '.';\nimport type { FormComponents } from './types';\nexport function createForm<TSchema extends z.ZodObject<Record<string, any>>>(\n schema: TSchema,\n) {\n const Form = ({\n children,\n onSubmit,\n defaultValues,\n components,\n }: {\n children: React.ReactNode;\n onSubmit: (data: z.output<TSchema>) => Promise<void>;\n defaultValues?: DefaultValues<z.input<TSchema>>;\n components?: Partial<FormComponents>; // add this\n }) => (\n <ValidatedForm\n schema={schema as any}\n onSubmit={onSubmit}\n defaultValues={defaultValues}\n components={components}\n >\n {children}\n </ValidatedForm>\n );\n Form.displayName = 'Form';\n\n const SchemaTextField = (\n props: Omit<Parameters<typeof TextField<TSchema>>[0], 'form'>,\n ) => <TextField<TSchema> {...props} />;\n SchemaTextField.displayName = 'TextField';\n\n const SchemaPasswordField = (\n props: Omit<Parameters<typeof TextField<TSchema>>[0], 'form'>,\n ) => <TextField<TSchema> {...props} />;\n SchemaPasswordField.displayName = 'PasswordField';\n\n const SchemaTextAreaField = (\n props: Omit<Parameters<typeof TextAreaField<TSchema>>[0], 'form'>,\n ) => <TextAreaField<TSchema> {...props} />;\n SchemaTextAreaField.displayName = 'TextAreaField';\n\n const SchemaNumberField = (\n props: Omit<Parameters<typeof NumberField<TSchema>>[0], 'form'>,\n ) => <NumberField<TSchema> {...props} />;\n SchemaNumberField.displayName = 'NumberField';\n\n const SchemaSelectField = <TField extends SelectFieldsOf<TSchema>>(\n props: Omit<Parameters<typeof SelectField<TSchema, TField>>[0], 'form'>,\n ) => <SelectField<TSchema, TField> {...props} />;\n SchemaSelectField.displayName = 'SelectField';\n\n const SchemaCheckboxField = (\n props: Omit<Parameters<typeof CheckboxField<TSchema>>[0], 'form'>,\n ) => <CheckboxField<TSchema> {...props} />;\n SchemaCheckboxField.displayName = 'CheckboxField';\n\n const SchemaDateField = (\n props: Omit<Parameters<typeof DateField<TSchema>>[0], 'form'>,\n ) => <DateField<TSchema> {...props} />;\n SchemaDateField.displayName = 'DateField';\n\n const SchemaSliderField = (\n props: Omit<Parameters<typeof SliderField<TSchema>>[0], 'form'>,\n ) => <SliderField<TSchema> {...props} />;\n SchemaSliderField.displayName = 'SliderField';\n\n const SchemaMultiSelectField = (\n props: Omit<Parameters<typeof MultiSelectField<TSchema>>[0], 'form'>,\n ) => <MultiSelectField<TSchema> {...props} />;\n SchemaMultiSelectField.displayName = 'MultiSelectField';\n\n return {\n Form,\n TextField: SchemaTextField,\n PasswordField: SchemaPasswordField,\n TextAreaField: SchemaTextAreaField,\n NumberField: SchemaNumberField,\n SelectField: SchemaSelectField,\n CheckboxField: SchemaCheckboxField,\n DateField: SchemaDateField,\n SliderField: SchemaSliderField,\n MultiSelectField: SchemaMultiSelectField,\n };\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, StringFieldsOf } from '../types';\n\nexport function TextField<TSchema extends z.ZodObject<Record<string, any>>>({\n name,\n label,\n placeholder,\n disabled,\n description,\n className,\n form,\n type = 'text',\n showReset,\n}: BaseFieldProps & {\n name: StringFieldsOf<TSchema>;\n type?: React.HTMLInputTypeAttribute;\n form?: UseFormReturn<z.input<TSchema>>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label\n htmlFor={name as string}\n className=\"text-sm font-medium leading-none\"\n >\n {label}\n </label>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n <input\n {...field}\n id={name as string}\n value={(field.value as string) ?? ''}\n placeholder={placeholder}\n disabled={disabled}\n type={type}\n className=\"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\"\n />\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n )}\n />\n );\n}\n","import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, StringFieldsOf } from '../types';\n\nexport function TextAreaField<\n TSchema extends z.ZodObject<Record<string, any>>,\n>({\n name,\n label,\n placeholder,\n disabled,\n description,\n className,\n form,\n showReset,\n}: BaseFieldProps & {\n name: StringFieldsOf<TSchema>;\n form?: UseFormReturn<z.input<TSchema>>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label htmlFor={name as string} className=\"text-sm font-medium leading-none\">{label}</label>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n <textarea\n {...field}\n id={name as string}\n value={(field.value as string) ?? ''}\n placeholder={placeholder}\n disabled={disabled}\n className=\"flex min-h-[75px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\"\n />\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n )}\n />\n );\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, NumberFieldsOf } from '../types';\n\nexport function NumberField<TSchema extends z.ZodObject<Record<string, any>>>({\n name,\n label,\n placeholder,\n disabled,\n description,\n className,\n form,\n showReset,\n}: BaseFieldProps & {\n name: NumberFieldsOf<TSchema>;\n form?: UseFormReturn<z.input<TSchema>>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label htmlFor={name as string} className=\"text-sm font-medium leading-none\">{label}</label>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n <input\n {...field}\n id={name as string}\n value={(field.value as number) ?? ''}\n placeholder={placeholder}\n disabled={disabled}\n type=\"number\"\n onChange={(e) => {\n const value = e.target.value;\n field.onChange(value === '' ? undefined : Number(value));\n }}\n className=\"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\"\n />\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n )}\n />\n );\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport * as SelectPrimitive from '@radix-ui/react-select';\nimport { Check, ChevronDown } from 'lucide-react';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, SelectFieldsOf } from '../types';\n\nexport function SelectField<\n TSchema extends z.ZodObject<Record<string, any>>,\n TField extends SelectFieldsOf<TSchema>,\n>({\n name,\n label,\n placeholder,\n disabled,\n description,\n className,\n form,\n options,\n showReset,\n}: BaseFieldProps & {\n name: TField;\n form?: UseFormReturn<z.input<TSchema>>;\n options: Array<{\n value: z.input<TSchema>[TField];\n label: string;\n }>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label htmlFor={name as string} className=\"text-sm font-medium leading-none\">{label}</label>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n <SelectPrimitive.Root\n onValueChange={field.onChange}\n value={String(field.value || '')}\n disabled={disabled}\n >\n <SelectPrimitive.Trigger className=\"flex h-9 w-full items-center justify-between rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50\">\n <SelectPrimitive.Value\n placeholder={placeholder ?? 'Select an option'}\n />\n <SelectPrimitive.Icon>\n <ChevronDown className=\"h-4 w-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content className=\"relative z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md\">\n <SelectPrimitive.Viewport className=\"p-1\">\n {options.map((option) => (\n <SelectPrimitive.Item\n key={String(option.value)}\n value={String(option.value)}\n className=\"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\"\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>\n {option.label}\n </SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n ))}\n </SelectPrimitive.Viewport>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n </SelectPrimitive.Root>\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n )}\n />\n );\n}\n","import { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox';\nimport { Check } from 'lucide-react';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, BooleanFieldsOf } from '../types';\n\nexport function CheckboxField<\n TSchema extends z.ZodObject<Record<string, any>>,\n>({\n name,\n label,\n disabled,\n description,\n className,\n form,\n}: BaseFieldProps & {\n name: BooleanFieldsOf<TSchema>;\n form?: UseFormReturn<z.input<TSchema>>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center gap-3\">\n <CheckboxPrimitive.Root\n id={name as string}\n checked={!!field.value}\n onCheckedChange={(checked) => field.onChange(checked)}\n disabled={disabled}\n className=\"h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\"\n >\n <CheckboxPrimitive.Indicator className=\"flex items-center justify-center text-current\">\n <Check className=\"h-3 w-3\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n <label\n htmlFor={name as string}\n className=\"text-sm font-medium leading-none\"\n >\n {label}\n </label>\n </div>\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n )}\n />\n );\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport { DayPicker } from 'react-day-picker';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\nimport { format } from 'date-fns';\nimport { CalendarIcon } from 'lucide-react';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, DateFieldsOf } from '../types';\n\nexport function DateField<TSchema extends z.ZodObject<Record<string, any>>>({\n name,\n label,\n description,\n className,\n form,\n showReset,\n}: BaseFieldProps & {\n name: DateFieldsOf<TSchema>;\n form?: UseFormReturn<z.input<TSchema>>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => {\n const date = field.value ? new Date(field.value as any) : undefined;\n\n return (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label htmlFor={name as string} className=\"text-sm font-medium leading-none\">\n {label}\n </label>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n <PopoverPrimitive.Root>\n <PopoverPrimitive.Trigger asChild>\n <button\n type=\"button\"\n className={cn(\n 'flex h-9 w-full items-center justify-start gap-2 rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50',\n !date && 'text-muted-foreground',\n )}\n >\n <CalendarIcon className=\"h-4 w-4\" />\n {date ? format(date, 'PPP') : 'Pick a date'}\n </button>\n </PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n align=\"start\"\n className=\"z-50 rounded-md border bg-popover p-0 text-popover-foreground shadow-md outline-none\"\n >\n <DayPicker\n mode=\"single\"\n selected={date}\n onSelect={(d) => field.onChange(d)}\n className=\"p-3\"\n />\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n );\n }}\n />\n );\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport * as SliderPrimitive from '@radix-ui/react-slider';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, NumberFieldsOf } from '../types';\n\nexport function SliderField<TSchema extends z.ZodObject<Record<string, any>>>({\n name,\n label,\n description,\n disabled,\n className,\n form,\n min = 0,\n max = 100,\n step = 1,\n showReset,\n}: BaseFieldProps & {\n name: NumberFieldsOf<TSchema>;\n form?: UseFormReturn<z.input<TSchema>>;\n min?: number;\n max?: number;\n step?: number;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => {\n const value = field.value !== undefined ? (field.value as number) : min;\n\n return (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label htmlFor={name as string} className=\"text-sm font-medium leading-none\">\n {label}\n </label>\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm text-muted-foreground\">{value}</span>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n </div>\n <SliderPrimitive.Root\n value={[value]}\n onValueChange={([val]) => field.onChange(val)}\n min={min}\n max={max}\n step={step}\n disabled={disabled}\n className=\"relative flex w-full touch-none select-none items-center\"\n >\n <SliderPrimitive.Track className=\"relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20\">\n <SliderPrimitive.Range className=\"absolute h-full bg-primary\" />\n </SliderPrimitive.Track>\n <SliderPrimitive.Thumb className=\"block h-4 w-4 rounded-full border border-primary/50 bg-background shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\" />\n </SliderPrimitive.Root>\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n );\n }}\n />\n );\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\nimport { Command } from 'cmdk';\nimport { Check, ChevronsUpDown, X } from 'lucide-react';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps } from '../types';\n\nexport function MultiSelectField<\n TSchema extends z.ZodObject<Record<string, any>>,\n>({\n name,\n label,\n description,\n disabled,\n form,\n className,\n options,\n placeholder = 'Select options...',\n showReset,\n}: BaseFieldProps & {\n name: keyof z.input<TSchema>;\n form?: UseFormReturn<z.input<TSchema>>;\n options: Array<{ value: string; label: string }>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => {\n const selected: string[] = Array.isArray(field.value)\n ? field.value\n : [];\n\n const toggle = (val: string) => {\n const next = selected.includes(val)\n ? selected.filter((v) => v !== val)\n : [...selected, val];\n field.onChange(next);\n };\n\n return (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label className=\"text-sm font-medium leading-none\">\n {label}\n </label>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n <PopoverPrimitive.Root>\n <PopoverPrimitive.Trigger asChild>\n <button\n type=\"button\"\n role=\"combobox\"\n disabled={disabled}\n className={cn(\n 'flex min-h-9 w-full flex-wrap items-center justify-between gap-1 rounded-md border border-input bg-transparent px-3 py-1.5 text-sm shadow-sm focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50',\n !selected.length && 'text-muted-foreground',\n )}\n >\n <div className=\"flex flex-wrap gap-1\">\n {selected.length\n ? selected.map((val) => (\n <span\n key={val}\n className=\"inline-flex items-center gap-1 rounded-md border bg-secondary px-1.5 py-0.5 text-xs text-secondary-foreground\"\n >\n {options.find((o) => o.value === val)?.label ?? val}\n <span\n onClick={(e) => {\n e.stopPropagation();\n toggle(val);\n }}\n className=\"cursor-pointer\"\n >\n <X className=\"h-3 w-3\" />\n </span>\n </span>\n ))\n : placeholder}\n </div>\n <ChevronsUpDown className=\"ml-2 h-4 w-4 shrink-0 opacity-50\" />\n </button>\n </PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n align=\"start\"\n className=\"z-50 min-w-[200px] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md outline-none\"\n >\n <Command>\n <div className=\"flex items-center border-b px-3\">\n <Command.Input\n placeholder=\"Search...\"\n className=\"flex h-9 w-full bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground\"\n />\n </div>\n <Command.List className=\"max-h-[200px] overflow-y-auto p-1\">\n <Command.Empty className=\"py-6 text-center text-sm\">\n No options found.\n </Command.Empty>\n <Command.Group>\n {options.map((option) => (\n <Command.Item\n key={option.value}\n value={option.value}\n onSelect={() => toggle(option.value)}\n className=\"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none aria-selected:bg-accent aria-selected:text-accent-foreground\"\n >\n <Check\n className={cn(\n 'mr-2 h-4 w-4',\n selected.includes(option.value)\n ? 'opacity-100'\n : 'opacity-0',\n )}\n />\n {option.label}\n </Command.Item>\n ))}\n </Command.Group>\n </Command.List>\n </Command>\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n );\n }}\n />\n );\n}\n","import { useForm } from 'react-hook-form';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport type { DefaultValues, FieldValues } from 'react-hook-form';\nimport type { z } from 'zod';\n\nexport function useValidatedForm<TSchema extends z.ZodType<any, FieldValues>>({\n schema,\n defaultValues,\n}: {\n schema: TSchema;\n defaultValues?: DefaultValues<z.input<TSchema>>;\n}) {\n return useForm<z.input<TSchema>, any, z.output<TSchema>>({\n resolver: zodResolver(schema),\n defaultValues,\n });\n}\n"],"mappings":"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","names":["import_zod","import_zod","import_react_hook_form","import_zod","import_jsx_runtime","import_react","import_react_hook_form","import_zod","import_jsx_runtime","import_react","import_react_hook_form","import_zod","import_jsx_runtime","import_react","import_react_hook_form","import_zod","import_jsx_runtime","import_react_hook_form","import_zod","import_lucide_react","import_jsx_runtime","import_react","import_react_hook_form","import_zod","import_lucide_react","import_jsx_runtime","import_react","import_react_hook_form","import_zod","import_jsx_runtime","import_react","import_react_hook_form","import_zod","PopoverPrimitive","import_lucide_react","import_jsx_runtime","import_jsx_runtime","import_react_hook_form","import_zod"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/ValidatedForm.tsx","../src/createForm.tsx","../src/fields/TextField.tsx","../src/utils/cn.ts","../src/fields/TextAreaField.tsx","../src/fields/NumberField.tsx","../src/fields/SelectField.tsx","../src/fields/CheckboxField.tsx","../src/fields/DateField.tsx","../src/fields/SliderField.tsx","../src/fields/MultiSelectField.tsx","../src/hooks/useValidatedForm.ts"],"sourcesContent":["export { ValidatedForm } from './ValidatedForm';\nexport { createForm } from './createForm';\nexport { useValidatedForm } from './hooks/useValidatedForm';\n\nexport {\n TextField,\n TextAreaField,\n NumberField,\n SelectField,\n CheckboxField,\n DateField,\n SliderField,\n MultiSelectField,\n} from './fields';\n\nexport type {\n BaseFieldProps,\n StringFieldsOf,\n NumberFieldsOf,\n BooleanFieldsOf,\n DateFieldsOf,\n SelectFieldsOf,\n PasswordFieldsOf,\n} from './types';\n","import { useForm, FormProvider } from 'react-hook-form';\nimport type { SchemaInput, ValidatedFormProps, SchemaOutput } from './types';\nimport { standardSchemaResolver } from '@hookform/resolvers/standard-schema';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\n\nexport function ValidatedForm<TSchema extends StandardSchemaV1<any, any>>({\n children,\n schema,\n onSubmit,\n defaultValues,\n form: externalForm,\n submitLabel,\n hideSubmit,\n renderSubmit,\n renderError,\n}: ValidatedFormProps<TSchema>) {\n type TInput = SchemaInput<TSchema>;\n type TOutput = SchemaOutput<TSchema>;\n\n const internalForm = useForm<TInput, any, TOutput>({\n resolver: standardSchemaResolver(schema) as any,\n defaultValues,\n });\n\n const form = externalForm ?? internalForm;\n\n const handleSubmit = form.handleSubmit(async (data) => {\n try {\n await onSubmit(data);\n } catch (err: any) {\n const fieldErrors = err?.data?.fieldErrors;\n if (fieldErrors) {\n Object.entries(fieldErrors).forEach(([field, message]) => {\n form.setError(field as any, { message: message as string });\n });\n } else {\n form.setError('root', {\n message: err?.data?.message ?? err?.message ?? 'Something went wrong',\n });\n }\n }\n });\n\n return (\n <FormProvider {...form}>\n <form onSubmit={handleSubmit} className=\"space-y-4\">\n {typeof children === 'function' ? children(form) : children}\n {form.formState.errors.root &&\n (renderError ? (\n renderError(form.formState.errors.root.message!)\n ) : (\n <p className=\"text-sm font-medium text-destructive\">\n {form.formState.errors.root.message}\n </p>\n ))}\n {renderSubmit\n ? renderSubmit({\n isSubmitting: form.formState.isSubmitting,\n reset: form.reset,\n })\n : !hideSubmit && (\n <button\n type=\"submit\"\n disabled={form.formState.isSubmitting}\n className=\"inline-flex h-9 items-center justify-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground shadow transition-colors hover:bg-primary/90 disabled:pointer-events-none disabled:opacity-50\"\n >\n {form.formState.isSubmitting\n ? 'Submitting...'\n : (submitLabel ?? 'Submit')}\n </button>\n )}\n </form>\n </FormProvider>\n );\n}\n","import { ValidatedForm } from '.';\nimport z from 'zod';\nimport type { DefaultValues } from 'react-hook-form';\nimport {\n TextField,\n TextAreaField,\n NumberField,\n SelectField,\n CheckboxField,\n DateField,\n SliderField,\n MultiSelectField,\n} from './fields';\nimport type { SelectFieldsOf } from '.';\nimport type { FormComponents } from './types';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nexport function createForm<TSchema extends z.ZodObject<Record<string, any>>>(\n schema: TSchema,\n) {\n const Form = ({\n children,\n onSubmit,\n defaultValues,\n components,\n }: {\n children: React.ReactNode;\n onSubmit: (data: z.output<TSchema>) => Promise<void>;\n defaultValues?: DefaultValues<z.input<TSchema>>;\n components?: Partial<FormComponents>;\n }) => (\n <ValidatedForm\n schema={\n schema as unknown as StandardSchemaV1<\n z.input<TSchema>,\n z.output<TSchema>\n >\n }\n onSubmit={onSubmit as any}\n defaultValues={defaultValues as any}\n components={components}\n >\n {children}\n </ValidatedForm>\n );\n Form.displayName = 'Form';\n\n const SchemaTextField = (\n props: Omit<Parameters<typeof TextField<TSchema>>[0], 'form'>,\n ) => <TextField<TSchema> {...props} />;\n SchemaTextField.displayName = 'TextField';\n\n const SchemaPasswordField = (\n props: Omit<Parameters<typeof TextField<TSchema>>[0], 'form'>,\n ) => <TextField<TSchema> {...props} />;\n SchemaPasswordField.displayName = 'PasswordField';\n\n const SchemaTextAreaField = (\n props: Omit<Parameters<typeof TextAreaField<TSchema>>[0], 'form'>,\n ) => <TextAreaField<TSchema> {...props} />;\n SchemaTextAreaField.displayName = 'TextAreaField';\n\n const SchemaNumberField = (\n props: Omit<Parameters<typeof NumberField<TSchema>>[0], 'form'>,\n ) => <NumberField<TSchema> {...props} />;\n SchemaNumberField.displayName = 'NumberField';\n\n const SchemaSelectField = <TField extends SelectFieldsOf<TSchema>>(\n props: Omit<Parameters<typeof SelectField<TSchema, TField>>[0], 'form'>,\n ) => <SelectField<TSchema, TField> {...props} />;\n SchemaSelectField.displayName = 'SelectField';\n\n const SchemaCheckboxField = (\n props: Omit<Parameters<typeof CheckboxField<TSchema>>[0], 'form'>,\n ) => <CheckboxField<TSchema> {...props} />;\n SchemaCheckboxField.displayName = 'CheckboxField';\n\n const SchemaDateField = (\n props: Omit<Parameters<typeof DateField<TSchema>>[0], 'form'>,\n ) => <DateField<TSchema> {...props} />;\n SchemaDateField.displayName = 'DateField';\n\n const SchemaSliderField = (\n props: Omit<Parameters<typeof SliderField<TSchema>>[0], 'form'>,\n ) => <SliderField<TSchema> {...props} />;\n SchemaSliderField.displayName = 'SliderField';\n\n const SchemaMultiSelectField = (\n props: Omit<Parameters<typeof MultiSelectField<TSchema>>[0], 'form'>,\n ) => <MultiSelectField<TSchema> {...props} />;\n SchemaMultiSelectField.displayName = 'MultiSelectField';\n\n return {\n Form,\n TextField: SchemaTextField,\n PasswordField: SchemaPasswordField,\n TextAreaField: SchemaTextAreaField,\n NumberField: SchemaNumberField,\n SelectField: SchemaSelectField,\n CheckboxField: SchemaCheckboxField,\n DateField: SchemaDateField,\n SliderField: SchemaSliderField,\n MultiSelectField: SchemaMultiSelectField,\n };\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, StringFieldsOf } from '../types';\n\nexport function TextField<TSchema extends z.ZodObject<Record<string, any>>>({\n name,\n label,\n placeholder,\n disabled,\n description,\n className,\n form,\n type = 'text',\n showReset,\n}: BaseFieldProps & {\n name: StringFieldsOf<TSchema>;\n type?: React.HTMLInputTypeAttribute;\n form?: UseFormReturn<z.input<TSchema>>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label\n htmlFor={name as string}\n className=\"text-sm font-medium leading-none\"\n >\n {label}\n </label>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n <input\n {...field}\n id={name as string}\n value={(field.value as string) ?? ''}\n placeholder={placeholder}\n disabled={disabled}\n type={type}\n className=\"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\"\n />\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n )}\n />\n );\n}\n","import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, StringFieldsOf } from '../types';\n\nexport function TextAreaField<\n TSchema extends z.ZodObject<Record<string, any>>,\n>({\n name,\n label,\n placeholder,\n disabled,\n description,\n className,\n form,\n showReset,\n}: BaseFieldProps & {\n name: StringFieldsOf<TSchema>;\n form?: UseFormReturn<z.input<TSchema>>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label htmlFor={name as string} className=\"text-sm font-medium leading-none\">{label}</label>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n <textarea\n {...field}\n id={name as string}\n value={(field.value as string) ?? ''}\n placeholder={placeholder}\n disabled={disabled}\n className=\"flex min-h-[75px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\"\n />\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n )}\n />\n );\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, NumberFieldsOf } from '../types';\n\nexport function NumberField<TSchema extends z.ZodObject<Record<string, any>>>({\n name,\n label,\n placeholder,\n disabled,\n description,\n className,\n form,\n showReset,\n}: BaseFieldProps & {\n name: NumberFieldsOf<TSchema>;\n form?: UseFormReturn<z.input<TSchema>>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label htmlFor={name as string} className=\"text-sm font-medium leading-none\">{label}</label>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n <input\n {...field}\n id={name as string}\n value={(field.value as number) ?? ''}\n placeholder={placeholder}\n disabled={disabled}\n type=\"number\"\n onChange={(e) => {\n const value = e.target.value;\n field.onChange(value === '' ? undefined : Number(value));\n }}\n className=\"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\"\n />\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n )}\n />\n );\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport * as SelectPrimitive from '@radix-ui/react-select';\nimport { Check, ChevronDown } from 'lucide-react';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, SelectFieldsOf } from '../types';\n\nexport function SelectField<\n TSchema extends z.ZodObject<Record<string, any>>,\n TField extends SelectFieldsOf<TSchema>,\n>({\n name,\n label,\n placeholder,\n disabled,\n description,\n className,\n form,\n options,\n showReset,\n}: BaseFieldProps & {\n name: TField;\n form?: UseFormReturn<z.input<TSchema>>;\n options: Array<{\n value: z.input<TSchema>[TField];\n label: string;\n }>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label htmlFor={name as string} className=\"text-sm font-medium leading-none\">{label}</label>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n <SelectPrimitive.Root\n onValueChange={field.onChange}\n value={String(field.value || '')}\n disabled={disabled}\n >\n <SelectPrimitive.Trigger className=\"flex h-9 w-full items-center justify-between rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50\">\n <SelectPrimitive.Value\n placeholder={placeholder ?? 'Select an option'}\n />\n <SelectPrimitive.Icon>\n <ChevronDown className=\"h-4 w-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content className=\"relative z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md\">\n <SelectPrimitive.Viewport className=\"p-1\">\n {options.map((option) => (\n <SelectPrimitive.Item\n key={String(option.value)}\n value={String(option.value)}\n className=\"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\"\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>\n {option.label}\n </SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n ))}\n </SelectPrimitive.Viewport>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n </SelectPrimitive.Root>\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n )}\n />\n );\n}\n","import { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox';\nimport { Check } from 'lucide-react';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, BooleanFieldsOf } from '../types';\n\nexport function CheckboxField<\n TSchema extends z.ZodObject<Record<string, any>>,\n>({\n name,\n label,\n disabled,\n description,\n className,\n form,\n}: BaseFieldProps & {\n name: BooleanFieldsOf<TSchema>;\n form?: UseFormReturn<z.input<TSchema>>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center gap-3\">\n <CheckboxPrimitive.Root\n id={name as string}\n checked={!!field.value}\n onCheckedChange={(checked) => field.onChange(checked)}\n disabled={disabled}\n className=\"h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\"\n >\n <CheckboxPrimitive.Indicator className=\"flex items-center justify-center text-current\">\n <Check className=\"h-3 w-3\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n <label\n htmlFor={name as string}\n className=\"text-sm font-medium leading-none\"\n >\n {label}\n </label>\n </div>\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n )}\n />\n );\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport { DayPicker } from 'react-day-picker';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\nimport { format } from 'date-fns';\nimport { CalendarIcon } from 'lucide-react';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, DateFieldsOf } from '../types';\n\nexport function DateField<TSchema extends z.ZodObject<Record<string, any>>>({\n name,\n label,\n description,\n className,\n form,\n showReset,\n}: BaseFieldProps & {\n name: DateFieldsOf<TSchema>;\n form?: UseFormReturn<z.input<TSchema>>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => {\n const date = field.value ? new Date(field.value as any) : undefined;\n\n return (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label htmlFor={name as string} className=\"text-sm font-medium leading-none\">\n {label}\n </label>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n <PopoverPrimitive.Root>\n <PopoverPrimitive.Trigger asChild>\n <button\n type=\"button\"\n className={cn(\n 'flex h-9 w-full items-center justify-start gap-2 rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50',\n !date && 'text-muted-foreground',\n )}\n >\n <CalendarIcon className=\"h-4 w-4\" />\n {date ? format(date, 'PPP') : 'Pick a date'}\n </button>\n </PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n align=\"start\"\n className=\"z-50 rounded-md border bg-popover p-0 text-popover-foreground shadow-md outline-none\"\n >\n <DayPicker\n mode=\"single\"\n selected={date}\n onSelect={(d) => field.onChange(d)}\n className=\"p-3\"\n />\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n );\n }}\n />\n );\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport * as SliderPrimitive from '@radix-ui/react-slider';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, NumberFieldsOf } from '../types';\n\nexport function SliderField<TSchema extends z.ZodObject<Record<string, any>>>({\n name,\n label,\n description,\n disabled,\n className,\n form,\n min = 0,\n max = 100,\n step = 1,\n showReset,\n}: BaseFieldProps & {\n name: NumberFieldsOf<TSchema>;\n form?: UseFormReturn<z.input<TSchema>>;\n min?: number;\n max?: number;\n step?: number;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => {\n const value = field.value !== undefined ? (field.value as number) : min;\n\n return (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label htmlFor={name as string} className=\"text-sm font-medium leading-none\">\n {label}\n </label>\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm text-muted-foreground\">{value}</span>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n </div>\n <SliderPrimitive.Root\n value={[value]}\n onValueChange={([val]) => field.onChange(val)}\n min={min}\n max={max}\n step={step}\n disabled={disabled}\n className=\"relative flex w-full touch-none select-none items-center\"\n >\n <SliderPrimitive.Track className=\"relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20\">\n <SliderPrimitive.Range className=\"absolute h-full bg-primary\" />\n </SliderPrimitive.Track>\n <SliderPrimitive.Thumb className=\"block h-4 w-4 rounded-full border border-primary/50 bg-background shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\" />\n </SliderPrimitive.Root>\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n );\n }}\n />\n );\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\nimport { Command } from 'cmdk';\nimport { Check, ChevronsUpDown, X } from 'lucide-react';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps } from '../types';\n\nexport function MultiSelectField<\n TSchema extends z.ZodObject<Record<string, any>>,\n>({\n name,\n label,\n description,\n disabled,\n form,\n className,\n options,\n placeholder = 'Select options...',\n showReset,\n}: BaseFieldProps & {\n name: keyof z.input<TSchema>;\n form?: UseFormReturn<z.input<TSchema>>;\n options: Array<{ value: string; label: string }>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => {\n const selected: string[] = Array.isArray(field.value)\n ? field.value\n : [];\n\n const toggle = (val: string) => {\n const next = selected.includes(val)\n ? selected.filter((v) => v !== val)\n : [...selected, val];\n field.onChange(next);\n };\n\n return (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label className=\"text-sm font-medium leading-none\">\n {label}\n </label>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n <PopoverPrimitive.Root>\n <PopoverPrimitive.Trigger asChild>\n <button\n type=\"button\"\n role=\"combobox\"\n disabled={disabled}\n className={cn(\n 'flex min-h-9 w-full flex-wrap items-center justify-between gap-1 rounded-md border border-input bg-transparent px-3 py-1.5 text-sm shadow-sm focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50',\n !selected.length && 'text-muted-foreground',\n )}\n >\n <div className=\"flex flex-wrap gap-1\">\n {selected.length\n ? selected.map((val) => (\n <span\n key={val}\n className=\"inline-flex items-center gap-1 rounded-md border bg-secondary px-1.5 py-0.5 text-xs text-secondary-foreground\"\n >\n {options.find((o) => o.value === val)?.label ?? val}\n <span\n onClick={(e) => {\n e.stopPropagation();\n toggle(val);\n }}\n className=\"cursor-pointer\"\n >\n <X className=\"h-3 w-3\" />\n </span>\n </span>\n ))\n : placeholder}\n </div>\n <ChevronsUpDown className=\"ml-2 h-4 w-4 shrink-0 opacity-50\" />\n </button>\n </PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n align=\"start\"\n className=\"z-50 min-w-[200px] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md outline-none\"\n >\n <Command>\n <div className=\"flex items-center border-b px-3\">\n <Command.Input\n placeholder=\"Search...\"\n className=\"flex h-9 w-full bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground\"\n />\n </div>\n <Command.List className=\"max-h-[200px] overflow-y-auto p-1\">\n <Command.Empty className=\"py-6 text-center text-sm\">\n No options found.\n </Command.Empty>\n <Command.Group>\n {options.map((option) => (\n <Command.Item\n key={option.value}\n value={option.value}\n onSelect={() => toggle(option.value)}\n className=\"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none aria-selected:bg-accent aria-selected:text-accent-foreground\"\n >\n <Check\n className={cn(\n 'mr-2 h-4 w-4',\n selected.includes(option.value)\n ? 'opacity-100'\n : 'opacity-0',\n )}\n />\n {option.label}\n </Command.Item>\n ))}\n </Command.Group>\n </Command.List>\n </Command>\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n );\n }}\n />\n );\n}\n","import { useForm } from 'react-hook-form';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport type { DefaultValues, FieldValues } from 'react-hook-form';\nimport type { z } from 'zod';\n\nexport function useValidatedForm<TSchema extends z.ZodType<any, FieldValues>>({\n schema,\n defaultValues,\n}: {\n schema: TSchema;\n defaultValues?: DefaultValues<z.input<TSchema>>;\n}) {\n return useForm<z.input<TSchema>, any, z.output<TSchema>>({\n resolver: zodResolver(schema),\n defaultValues,\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,6BAAsC;AAEtC,6BAAuC;AA2CjC;AAxCC,SAAS,cAA0D;AAAA,EACxE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,MAAM;AAAA,EACN;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAgC;AAI9B,QAAM,mBAAe,gCAA8B;AAAA,IACjD,cAAU,+CAAuB,MAAM;AAAA,IACvC;AAAA,EACF,CAAC;AAED,QAAM,OAAO,gBAAgB;AAE7B,QAAM,eAAe,KAAK,aAAa,OAAO,SAAS;AACrD,QAAI;AACF,YAAM,SAAS,IAAI;AAAA,IACrB,SAAS,KAAU;AACjB,YAAM,cAAc,KAAK,MAAM;AAC/B,UAAI,aAAa;AACf,eAAO,QAAQ,WAAW,EAAE,QAAQ,CAAC,CAAC,OAAO,OAAO,MAAM;AACxD,eAAK,SAAS,OAAc,EAAE,QAA2B,CAAC;AAAA,QAC5D,CAAC;AAAA,MACH,OAAO;AACL,aAAK,SAAS,QAAQ;AAAA,UACpB,SAAS,KAAK,MAAM,WAAW,KAAK,WAAW;AAAA,QACjD,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF,CAAC;AAED,SACE,4CAAC,uCAAc,GAAG,MAChB,uDAAC,UAAK,UAAU,cAAc,WAAU,aACrC;AAAA,WAAO,aAAa,aAAa,SAAS,IAAI,IAAI;AAAA,IAClD,KAAK,UAAU,OAAO,SACpB,cACC,YAAY,KAAK,UAAU,OAAO,KAAK,OAAQ,IAE/C,4CAAC,OAAE,WAAU,wCACV,eAAK,UAAU,OAAO,KAAK,SAC9B;AAAA,IAEH,eACG,aAAa;AAAA,MACX,cAAc,KAAK,UAAU;AAAA,MAC7B,OAAO,KAAK;AAAA,IACd,CAAC,IACD,CAAC,cACC;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,UAAU,KAAK,UAAU;AAAA,QACzB,WAAU;AAAA,QAET,eAAK,UAAU,eACZ,kBACC,eAAe;AAAA;AAAA,IACtB;AAAA,KAER,GACF;AAEJ;;;ACzEA,IAAAA,cAAc;;;ACDd,mBAAkB;AAClB,IAAAC,0BAA2C;AAE3C,iBAAkB;;;ACHlB,kBAAsC;AACtC,4BAAwB;AAEjB,SAAS,MAAM,QAAsB;AAC1C,aAAO,mCAAQ,kBAAK,MAAM,CAAC;AAC7B;;;AD0BU,IAAAC,sBAAA;AAxBH,SAAS,UAA4D;AAAA,EAC1E;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP;AACF,GAIG;AACD,QAAM,kBAAc,wCAAiC;AACrD,QAAM,aAAa,QAAQ;AAE3B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,SAAS,WAAW;AAAA,MACpB;AAAA,MACA,QAAQ,CAAC,EAAE,OAAO,WAAW,MAC3B,8CAAC,SAAI,WAAW,GAAG,aAAa,SAAS,GACvC;AAAA,sDAAC,SAAI,WAAU,qCACb;AAAA;AAAA,YAAC;AAAA;AAAA,cACC,SAAS;AAAA,cACT,WAAU;AAAA,cAET;AAAA;AAAA,UACH;AAAA,UACC,aACC;AAAA,YAAC;AAAA;AAAA,cACC,MAAK;AAAA,cACL,SAAS,MAAM,WAAW,WAAW,IAAW;AAAA,cAChD,WAAU;AAAA,cACX;AAAA;AAAA,UAED;AAAA,WAEJ;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACE,GAAG;AAAA,YACJ,IAAI;AAAA,YACJ,OAAQ,MAAM,SAAoB;AAAA,YAClC;AAAA,YACA;AAAA,YACA;AAAA,YACA,WAAU;AAAA;AAAA,QACZ;AAAA,QACC,eACC,6CAAC,OAAE,WAAU,iCAAiC,uBAAY;AAAA,QAE3D,WAAW,SACV,6CAAC,OAAE,WAAU,wCACV,qBAAW,MAAM,SACpB;AAAA,SAEJ;AAAA;AAAA,EAEJ;AAEJ;;;AErEA,IAAAC,gBAAkB;AAClB,IAAAC,0BAA2C;AAE3C,IAAAC,cAAkB;AA4BR,IAAAC,sBAAA;AAxBH,SAAS,cAEd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAGG;AACD,QAAM,kBAAc,wCAAiC;AACrD,QAAM,aAAa,QAAQ;AAE3B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,SAAS,WAAW;AAAA,MACpB;AAAA,MACA,QAAQ,CAAC,EAAE,OAAO,WAAW,MAC3B,8CAAC,SAAI,WAAW,GAAG,aAAa,SAAS,GACvC;AAAA,sDAAC,SAAI,WAAU,qCACb;AAAA,uDAAC,WAAM,SAAS,MAAgB,WAAU,oCAAoC,iBAAM;AAAA,UACnF,aACC;AAAA,YAAC;AAAA;AAAA,cACC,MAAK;AAAA,cACL,SAAS,MAAM,WAAW,WAAW,IAAW;AAAA,cAChD,WAAU;AAAA,cACX;AAAA;AAAA,UAED;AAAA,WAEJ;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACE,GAAG;AAAA,YACJ,IAAI;AAAA,YACJ,OAAQ,MAAM,SAAoB;AAAA,YAClC;AAAA,YACA;AAAA,YACA,WAAU;AAAA;AAAA,QACZ;AAAA,QACC,eACC,6CAAC,OAAE,WAAU,iCAAiC,uBAAY;AAAA,QAE3D,WAAW,SACV,6CAAC,OAAE,WAAU,wCACV,qBAAW,MAAM,SACpB;AAAA,SAEJ;AAAA;AAAA,EAEJ;AAEJ;;;AC/DA,IAAAC,gBAAkB;AAClB,IAAAC,0BAA2C;AAE3C,IAAAC,cAAkB;AA0BR,IAAAC,sBAAA;AAtBH,SAAS,YAA8D;AAAA,EAC5E;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAGG;AACD,QAAM,kBAAc,wCAAiC;AACrD,QAAM,aAAa,QAAQ;AAE3B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,SAAS,WAAW;AAAA,MACpB;AAAA,MACA,QAAQ,CAAC,EAAE,OAAO,WAAW,MAC3B,8CAAC,SAAI,WAAW,GAAG,aAAa,SAAS,GACvC;AAAA,sDAAC,SAAI,WAAU,qCACb;AAAA,uDAAC,WAAM,SAAS,MAAgB,WAAU,oCAAoC,iBAAM;AAAA,UACnF,aACC;AAAA,YAAC;AAAA;AAAA,cACC,MAAK;AAAA,cACL,SAAS,MAAM,WAAW,WAAW,IAAW;AAAA,cAChD,WAAU;AAAA,cACX;AAAA;AAAA,UAED;AAAA,WAEJ;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACE,GAAG;AAAA,YACJ,IAAI;AAAA,YACJ,OAAQ,MAAM,SAAoB;AAAA,YAClC;AAAA,YACA;AAAA,YACA,MAAK;AAAA,YACL,UAAU,CAAC,MAAM;AACf,oBAAM,QAAQ,EAAE,OAAO;AACvB,oBAAM,SAAS,UAAU,KAAK,SAAY,OAAO,KAAK,CAAC;AAAA,YACzD;AAAA,YACA,WAAU;AAAA;AAAA,QACZ;AAAA,QACC,eACC,6CAAC,OAAE,WAAU,iCAAiC,uBAAY;AAAA,QAE3D,WAAW,SACV,6CAAC,OAAE,WAAU,wCACV,qBAAW,MAAM,SACpB;AAAA,SAEJ;AAAA;AAAA,EAEJ;AAEJ;;;AClEA,IAAAC,gBAAkB;AAClB,IAAAC,0BAA2C;AAE3C,IAAAC,cAAkB;AAClB,sBAAiC;AACjC,0BAAmC;AAkCzB,IAAAC,sBAAA;AA9BH,SAAS,YAGd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAOG;AACD,QAAM,kBAAc,wCAAiC;AACrD,QAAM,aAAa,QAAQ;AAE3B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,SAAS,WAAW;AAAA,MACpB;AAAA,MACA,QAAQ,CAAC,EAAE,OAAO,WAAW,MAC3B,8CAAC,SAAI,WAAW,GAAG,aAAa,SAAS,GACvC;AAAA,sDAAC,SAAI,WAAU,qCACb;AAAA,uDAAC,WAAM,SAAS,MAAgB,WAAU,oCAAoC,iBAAM;AAAA,UACnF,aACC;AAAA,YAAC;AAAA;AAAA,cACC,MAAK;AAAA,cACL,SAAS,MAAM,WAAW,WAAW,IAAW;AAAA,cAChD,WAAU;AAAA,cACX;AAAA;AAAA,UAED;AAAA,WAEJ;AAAA,QACA;AAAA,UAAiB;AAAA,UAAhB;AAAA,YACC,eAAe,MAAM;AAAA,YACrB,OAAO,OAAO,MAAM,SAAS,EAAE;AAAA,YAC/B;AAAA,YAEA;AAAA,4DAAiB,yBAAhB,EAAwB,WAAU,4PACjC;AAAA;AAAA,kBAAiB;AAAA,kBAAhB;AAAA,oBACC,aAAa,eAAe;AAAA;AAAA,gBAC9B;AAAA,gBACA,6CAAiB,sBAAhB,EACC,uDAAC,mCAAY,WAAU,sBAAqB,GAC9C;AAAA,iBACF;AAAA,cACA,6CAAiB,wBAAhB,EACC,uDAAiB,yBAAhB,EAAwB,WAAU,6GACjC,uDAAiB,0BAAhB,EAAyB,WAAU,OACjC,kBAAQ,IAAI,CAAC,WACZ;AAAA,gBAAiB;AAAA,gBAAhB;AAAA,kBAEC,OAAO,OAAO,OAAO,KAAK;AAAA,kBAC1B,WAAU;AAAA,kBAEV;AAAA,iEAAC,UAAK,WAAU,gEACd,uDAAiB,+BAAhB,EACC,uDAAC,6BAAM,WAAU,WAAU,GAC7B,GACF;AAAA,oBACA,6CAAiB,0BAAhB,EACE,iBAAO,OACV;AAAA;AAAA;AAAA,gBAXK,OAAO,OAAO,KAAK;AAAA,cAY1B,CACD,GACH,GACF,GACF;AAAA;AAAA;AAAA,QACF;AAAA,QACC,eACC,6CAAC,OAAE,WAAU,iCAAiC,uBAAY;AAAA,QAE3D,WAAW,SACV,6CAAC,OAAE,WAAU,wCACV,qBAAW,MAAM,SACpB;AAAA,SAEJ;AAAA;AAAA,EAEJ;AAEJ;;;ACnGA,IAAAC,0BAA2C;AAE3C,IAAAC,cAAkB;AAClB,wBAAmC;AACnC,IAAAC,uBAAsB;AA0BZ,IAAAC,sBAAA;AAtBH,SAAS,cAEd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAGG;AACD,QAAM,kBAAc,wCAAiC;AACrD,QAAM,aAAa,QAAQ;AAE3B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,SAAS,WAAW;AAAA,MACpB;AAAA,MACA,QAAQ,CAAC,EAAE,OAAO,WAAW,MAC3B,8CAAC,SAAI,WAAW,GAAG,aAAa,SAAS,GACvC;AAAA,sDAAC,SAAI,WAAU,2BACb;AAAA;AAAA,YAAmB;AAAA,YAAlB;AAAA,cACC,IAAI;AAAA,cACJ,SAAS,CAAC,CAAC,MAAM;AAAA,cACjB,iBAAiB,CAAC,YAAY,MAAM,SAAS,OAAO;AAAA,cACpD;AAAA,cACA,WAAU;AAAA,cAEV,uDAAmB,6BAAlB,EAA4B,WAAU,iDACrC,uDAAC,8BAAM,WAAU,WAAU,GAC7B;AAAA;AAAA,UACF;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACC,SAAS;AAAA,cACT,WAAU;AAAA,cAET;AAAA;AAAA,UACH;AAAA,WACF;AAAA,QACC,eACC,6CAAC,OAAE,WAAU,iCAAiC,uBAAY;AAAA,QAE3D,WAAW,SACV,6CAAC,OAAE,WAAU,wCACV,qBAAW,MAAM,SACpB;AAAA,SAEJ;AAAA;AAAA,EAEJ;AAEJ;;;AC7DA,IAAAC,gBAAkB;AAClB,IAAAC,0BAA2C;AAE3C,IAAAC,cAAkB;AAClB,8BAA0B;AAC1B,uBAAkC;AAClC,sBAAuB;AACvB,IAAAC,uBAA6B;AA2BjB,IAAAC,sBAAA;AAvBL,SAAS,UAA4D;AAAA,EAC1E;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAGG;AACD,QAAM,kBAAc,wCAAiC;AACrD,QAAM,aAAa,QAAQ;AAE3B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,SAAS,WAAW;AAAA,MACpB;AAAA,MACA,QAAQ,CAAC,EAAE,OAAO,WAAW,MAAM;AACjC,cAAM,OAAO,MAAM,QAAQ,IAAI,KAAK,MAAM,KAAY,IAAI;AAE1D,eACE,8CAAC,SAAI,WAAW,GAAG,aAAa,SAAS,GACvC;AAAA,wDAAC,SAAI,WAAU,qCACb;AAAA,yDAAC,WAAM,SAAS,MAAgB,WAAU,oCACvC,iBACH;AAAA,YACC,aACC;AAAA,cAAC;AAAA;AAAA,gBACC,MAAK;AAAA,gBACL,SAAS,MAAM,WAAW,WAAW,IAAW;AAAA,gBAChD,WAAU;AAAA,gBACX;AAAA;AAAA,YAED;AAAA,aAEJ;AAAA,UACA,8CAAkB,uBAAjB,EACC;AAAA,yDAAkB,0BAAjB,EAAyB,SAAO,MAC/B;AAAA,cAAC;AAAA;AAAA,gBACC,MAAK;AAAA,gBACL,WAAW;AAAA,kBACT;AAAA,kBACA,CAAC,QAAQ;AAAA,gBACX;AAAA,gBAEA;AAAA,+DAAC,qCAAa,WAAU,WAAU;AAAA,kBACjC,WAAO,wBAAO,MAAM,KAAK,IAAI;AAAA;AAAA;AAAA,YAChC,GACF;AAAA,YACA,6CAAkB,yBAAjB,EACC;AAAA,cAAkB;AAAA,cAAjB;AAAA,gBACC,OAAM;AAAA,gBACN,WAAU;AAAA,gBAEV;AAAA,kBAAC;AAAA;AAAA,oBACC,MAAK;AAAA,oBACL,UAAU;AAAA,oBACV,UAAU,CAAC,MAAM,MAAM,SAAS,CAAC;AAAA,oBACjC,WAAU;AAAA;AAAA,gBACZ;AAAA;AAAA,YACF,GACF;AAAA,aACF;AAAA,UACC,eACC,6CAAC,OAAE,WAAU,iCAAiC,uBAAY;AAAA,UAE3D,WAAW,SACV,6CAAC,OAAE,WAAU,wCACV,qBAAW,MAAM,SACpB;AAAA,WAEJ;AAAA,MAEJ;AAAA;AAAA,EACF;AAEJ;;;ACxFA,IAAAC,gBAAkB;AAClB,IAAAC,0BAA2C;AAE3C,IAAAC,cAAkB;AAClB,sBAAiC;AAmCnB,IAAAC,sBAAA;AA/BP,SAAS,YAA8D;AAAA,EAC5E;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,MAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAO;AAAA,EACP;AACF,GAMG;AACD,QAAM,kBAAc,wCAAiC;AACrD,QAAM,aAAa,QAAQ;AAE3B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,SAAS,WAAW;AAAA,MACpB;AAAA,MACA,QAAQ,CAAC,EAAE,OAAO,WAAW,MAAM;AACjC,cAAM,QAAQ,MAAM,UAAU,SAAa,MAAM,QAAmB;AAEpE,eACE,8CAAC,SAAI,WAAW,GAAG,aAAa,SAAS,GACvC;AAAA,wDAAC,SAAI,WAAU,qCACb;AAAA,yDAAC,WAAM,SAAS,MAAgB,WAAU,oCACvC,iBACH;AAAA,YACA,8CAAC,SAAI,WAAU,2BACb;AAAA,2DAAC,UAAK,WAAU,iCAAiC,iBAAM;AAAA,cACtD,aACC;AAAA,gBAAC;AAAA;AAAA,kBACC,MAAK;AAAA,kBACL,SAAS,MAAM,WAAW,WAAW,IAAW;AAAA,kBAChD,WAAU;AAAA,kBACX;AAAA;AAAA,cAED;AAAA,eAEJ;AAAA,aACF;AAAA,UACA;AAAA,YAAiB;AAAA,YAAhB;AAAA,cACC,OAAO,CAAC,KAAK;AAAA,cACb,eAAe,CAAC,CAAC,GAAG,MAAM,MAAM,SAAS,GAAG;AAAA,cAC5C;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA,WAAU;AAAA,cAEV;AAAA,6DAAiB,uBAAhB,EAAsB,WAAU,yEAC/B,uDAAiB,uBAAhB,EAAsB,WAAU,8BAA6B,GAChE;AAAA,gBACA,6CAAiB,uBAAhB,EAAsB,WAAU,uNAAsN;AAAA;AAAA;AAAA,UACzP;AAAA,UACC,eACC,6CAAC,OAAE,WAAU,iCAAiC,uBAAY;AAAA,UAE3D,WAAW,SACV,6CAAC,OAAE,WAAU,wCACV,qBAAW,MAAM,SACpB;AAAA,WAEJ;AAAA,MAEJ;AAAA;AAAA,EACF;AAEJ;;;AClFA,IAAAC,gBAAkB;AAClB,IAAAC,0BAA2C;AAE3C,IAAAC,cAAkB;AAClB,IAAAC,oBAAkC;AAClC,kBAAwB;AACxB,IAAAC,uBAAyC;AA0C7B,IAAAC,sBAAA;AAtCL,SAAS,iBAEd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd;AACF,GAIG;AACD,QAAM,kBAAc,wCAAiC;AACrD,QAAM,aAAa,QAAQ;AAE3B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,SAAS,WAAW;AAAA,MACpB;AAAA,MACA,QAAQ,CAAC,EAAE,OAAO,WAAW,MAAM;AACjC,cAAM,WAAqB,MAAM,QAAQ,MAAM,KAAK,IAChD,MAAM,QACN,CAAC;AAEL,cAAM,SAAS,CAAC,QAAgB;AAC9B,gBAAM,OAAO,SAAS,SAAS,GAAG,IAC9B,SAAS,OAAO,CAAC,MAAM,MAAM,GAAG,IAChC,CAAC,GAAG,UAAU,GAAG;AACrB,gBAAM,SAAS,IAAI;AAAA,QACrB;AAEA,eACE,8CAAC,SAAI,WAAW,GAAG,aAAa,SAAS,GACvC;AAAA,wDAAC,SAAI,WAAU,qCACb;AAAA,yDAAC,WAAM,WAAU,oCACd,iBACH;AAAA,YACC,aACC;AAAA,cAAC;AAAA;AAAA,gBACC,MAAK;AAAA,gBACL,SAAS,MAAM,WAAW,WAAW,IAAW;AAAA,gBAChD,WAAU;AAAA,gBACX;AAAA;AAAA,YAED;AAAA,aAEJ;AAAA,UACA,8CAAkB,wBAAjB,EACC;AAAA,yDAAkB,2BAAjB,EAAyB,SAAO,MAC/B;AAAA,cAAC;AAAA;AAAA,gBACC,MAAK;AAAA,gBACL,MAAK;AAAA,gBACL;AAAA,gBACA,WAAW;AAAA,kBACT;AAAA,kBACA,CAAC,SAAS,UAAU;AAAA,gBACtB;AAAA,gBAEA;AAAA,+DAAC,SAAI,WAAU,wBACZ,mBAAS,SACN,SAAS,IAAI,CAAC,QACZ;AAAA,oBAAC;AAAA;AAAA,sBAEC,WAAU;AAAA,sBAET;AAAA,gCAAQ,KAAK,CAAC,MAAM,EAAE,UAAU,GAAG,GAAG,SAAS;AAAA,wBAChD;AAAA,0BAAC;AAAA;AAAA,4BACC,SAAS,CAAC,MAAM;AACd,gCAAE,gBAAgB;AAClB,qCAAO,GAAG;AAAA,4BACZ;AAAA,4BACA,WAAU;AAAA,4BAEV,uDAAC,0BAAE,WAAU,WAAU;AAAA;AAAA,wBACzB;AAAA;AAAA;AAAA,oBAZK;AAAA,kBAaP,CACD,IACD,aACN;AAAA,kBACA,6CAAC,uCAAe,WAAU,oCAAmC;AAAA;AAAA;AAAA,YAC/D,GACF;AAAA,YACA,6CAAkB,0BAAjB,EACC;AAAA,cAAkB;AAAA,cAAjB;AAAA,gBACC,OAAM;AAAA,gBACN,WAAU;AAAA,gBAEV,wDAAC,uBACC;AAAA,+DAAC,SAAI,WAAU,mCACb;AAAA,oBAAC,oBAAQ;AAAA,oBAAR;AAAA,sBACC,aAAY;AAAA,sBACZ,WAAU;AAAA;AAAA,kBACZ,GACF;AAAA,kBACA,8CAAC,oBAAQ,MAAR,EAAa,WAAU,qCACtB;AAAA,iEAAC,oBAAQ,OAAR,EAAc,WAAU,4BAA2B,+BAEpD;AAAA,oBACA,6CAAC,oBAAQ,OAAR,EACE,kBAAQ,IAAI,CAAC,WACZ;AAAA,sBAAC,oBAAQ;AAAA,sBAAR;AAAA,wBAEC,OAAO,OAAO;AAAA,wBACd,UAAU,MAAM,OAAO,OAAO,KAAK;AAAA,wBACnC,WAAU;AAAA,wBAEV;AAAA;AAAA,4BAAC;AAAA;AAAA,8BACC,WAAW;AAAA,gCACT;AAAA,gCACA,SAAS,SAAS,OAAO,KAAK,IAC1B,gBACA;AAAA,8BACN;AAAA;AAAA,0BACF;AAAA,0BACC,OAAO;AAAA;AAAA;AAAA,sBAbH,OAAO;AAAA,oBAcd,CACD,GACH;AAAA,qBACF;AAAA,mBACF;AAAA;AAAA,YACF,GACF;AAAA,aACF;AAAA,UACC,eACC,6CAAC,OAAE,WAAU,iCAAiC,uBAAY;AAAA,UAE3D,WAAW,SACV,6CAAC,OAAE,WAAU,wCACV,qBAAW,MAAM,SACpB;AAAA,WAEJ;AAAA,MAEJ;AAAA;AAAA,EACF;AAEJ;;;ATzHI,IAAAC,uBAAA;AAdG,SAAS,WACd,QACA;AACA,QAAM,OAAO,CAAC;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,MAME;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MAMA;AAAA,MACA;AAAA,MACA;AAAA,MAEC;AAAA;AAAA,EACH;AAEF,OAAK,cAAc;AAEnB,QAAM,kBAAkB,CACtB,UACG,8CAAC,aAAoB,GAAG,OAAO;AACpC,kBAAgB,cAAc;AAE9B,QAAM,sBAAsB,CAC1B,UACG,8CAAC,aAAoB,GAAG,OAAO;AACpC,sBAAoB,cAAc;AAElC,QAAM,sBAAsB,CAC1B,UACG,8CAAC,iBAAwB,GAAG,OAAO;AACxC,sBAAoB,cAAc;AAElC,QAAM,oBAAoB,CACxB,UACG,8CAAC,eAAsB,GAAG,OAAO;AACtC,oBAAkB,cAAc;AAEhC,QAAM,oBAAoB,CACxB,UACG,8CAAC,eAA8B,GAAG,OAAO;AAC9C,oBAAkB,cAAc;AAEhC,QAAM,sBAAsB,CAC1B,UACG,8CAAC,iBAAwB,GAAG,OAAO;AACxC,sBAAoB,cAAc;AAElC,QAAM,kBAAkB,CACtB,UACG,8CAAC,aAAoB,GAAG,OAAO;AACpC,kBAAgB,cAAc;AAE9B,QAAM,oBAAoB,CACxB,UACG,8CAAC,eAAsB,GAAG,OAAO;AACtC,oBAAkB,cAAc;AAEhC,QAAM,yBAAyB,CAC7B,UACG,8CAAC,oBAA2B,GAAG,OAAO;AAC3C,yBAAuB,cAAc;AAErC,SAAO;AAAA,IACL;AAAA,IACA,WAAW;AAAA,IACX,eAAe;AAAA,IACf,eAAe;AAAA,IACf,aAAa;AAAA,IACb,aAAa;AAAA,IACb,eAAe;AAAA,IACf,WAAW;AAAA,IACX,aAAa;AAAA,IACb,kBAAkB;AAAA,EACpB;AACF;;;AUvGA,IAAAC,2BAAwB;AACxB,IAAAC,eAA4B;AAIrB,SAAS,iBAA8D;AAAA,EAC5E;AAAA,EACA;AACF,GAGG;AACD,aAAO,kCAAkD;AAAA,IACvD,cAAU,0BAAY,MAAM;AAAA,IAC5B;AAAA,EACF,CAAC;AACH;","names":["import_zod","import_react_hook_form","import_jsx_runtime","import_react","import_react_hook_form","import_zod","import_jsx_runtime","import_react","import_react_hook_form","import_zod","import_jsx_runtime","import_react","import_react_hook_form","import_zod","import_jsx_runtime","import_react_hook_form","import_zod","import_lucide_react","import_jsx_runtime","import_react","import_react_hook_form","import_zod","import_lucide_react","import_jsx_runtime","import_react","import_react_hook_form","import_zod","import_jsx_runtime","import_react","import_react_hook_form","import_zod","PopoverPrimitive","import_lucide_react","import_jsx_runtime","import_jsx_runtime","import_react_hook_form","import_zod"]}
package/dist/index.d.cts CHANGED
@@ -1,6 +1,7 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as react_hook_form from 'react-hook-form';
3
- import { FieldValues, DefaultValues, UseFormReturn } from 'react-hook-form';
3
+ import { DefaultValues, UseFormReturn, FieldValues } from 'react-hook-form';
4
+ import { StandardSchemaV1 } from '@standard-schema/spec';
4
5
  import z, { z as z$1 } from 'zod';
5
6
  import React$1 from 'react';
6
7
 
@@ -12,12 +13,15 @@ type BaseFieldProps = {
12
13
  className?: string;
13
14
  showReset?: boolean;
14
15
  };
15
- type ValidatedFormProps<TInput extends FieldValues, TOutput, TSchema> = {
16
+ type SchemaInput<T extends StandardSchemaV1<any, any>> = T extends StandardSchemaV1<infer I, any> ? I : never;
17
+ type SchemaOutput<T extends StandardSchemaV1<any, any>> = T extends StandardSchemaV1<any, infer O> ? O : never;
18
+ type ValidatedFormProps<TSchema extends StandardSchemaV1<any, any>> = {
16
19
  schema: TSchema;
17
- onSubmit: (data: TOutput) => Promise<void>;
18
- defaultValues?: DefaultValues<TInput>;
19
- children: React.ReactNode | ((form: UseFormReturn<TInput, any, TOutput>) => React.ReactNode);
20
- form?: UseFormReturn<TInput, any, TOutput>;
20
+ onSubmit: (data: SchemaOutput<TSchema>) => Promise<void>;
21
+ defaultValues?: DefaultValues<SchemaInput<TSchema>>;
22
+ children: React.ReactNode | ((form: UseFormReturn<SchemaInput<TSchema>, any, SchemaOutput<TSchema>>) => React.ReactNode);
23
+ form?: UseFormReturn<SchemaInput<TSchema>, any, SchemaOutput<TSchema>>;
24
+ components?: Partial<FormComponents>;
21
25
  submitLabel?: string;
22
26
  hideSubmit?: boolean;
23
27
  renderSubmit?: (state: {
@@ -25,7 +29,6 @@ type ValidatedFormProps<TInput extends FieldValues, TOutput, TSchema> = {
25
29
  reset: () => void;
26
30
  }) => React.ReactNode;
27
31
  renderError?: (message: string) => React.ReactNode;
28
- components?: Partial<FormComponents>;
29
32
  };
30
33
  type FormComponents = {
31
34
  Input: React.ComponentType<React.InputHTMLAttributes<HTMLInputElement>>;
@@ -55,7 +58,7 @@ type SelectFieldsOf<TSchema extends z.ZodObject<Record<string, any>>> = {
55
58
  [K in keyof TSchema['shape']]: TSchema['shape'][K] extends z.ZodOptional<z.ZodEnum<any>> | z.ZodNullable<z.ZodEnum<any>> | z.ZodEnum<any> | z.ZodOptional<z.ZodEnum<any>> | z.ZodUnion<readonly [z.ZodTypeAny, z.ZodTypeAny, ...z.ZodTypeAny[]]> | z.ZodOptional<z.ZodUnion<readonly [z.ZodTypeAny, z.ZodTypeAny, ...z.ZodTypeAny[]]>> ? K : never;
56
59
  }[keyof TSchema['shape']];
57
60
 
58
- declare function ValidatedForm<TSchema extends z$1.ZodType<FieldValues, FieldValues>, TInput extends FieldValues = z$1.input<TSchema> & FieldValues, TOutput extends FieldValues = z$1.output<TSchema> & FieldValues>({ children, schema, onSubmit, defaultValues, form: externalForm, submitLabel, hideSubmit, renderSubmit, renderError, }: ValidatedFormProps<TInput, TOutput, TSchema>): react_jsx_runtime.JSX.Element;
61
+ declare function ValidatedForm<TSchema extends StandardSchemaV1<any, any>>({ children, schema, onSubmit, defaultValues, form: externalForm, submitLabel, hideSubmit, renderSubmit, renderError, }: ValidatedFormProps<TSchema>): react_jsx_runtime.JSX.Element;
59
62
 
60
63
  declare function TextField<TSchema extends z$1.ZodObject<Record<string, any>>>({ name, label, placeholder, disabled, description, className, form, type, showReset, }: BaseFieldProps & {
61
64
  name: StringFieldsOf<TSchema>;
package/dist/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as react_hook_form from 'react-hook-form';
3
- import { FieldValues, DefaultValues, UseFormReturn } from 'react-hook-form';
3
+ import { DefaultValues, UseFormReturn, FieldValues } from 'react-hook-form';
4
+ import { StandardSchemaV1 } from '@standard-schema/spec';
4
5
  import z, { z as z$1 } from 'zod';
5
6
  import React$1 from 'react';
6
7
 
@@ -12,12 +13,15 @@ type BaseFieldProps = {
12
13
  className?: string;
13
14
  showReset?: boolean;
14
15
  };
15
- type ValidatedFormProps<TInput extends FieldValues, TOutput, TSchema> = {
16
+ type SchemaInput<T extends StandardSchemaV1<any, any>> = T extends StandardSchemaV1<infer I, any> ? I : never;
17
+ type SchemaOutput<T extends StandardSchemaV1<any, any>> = T extends StandardSchemaV1<any, infer O> ? O : never;
18
+ type ValidatedFormProps<TSchema extends StandardSchemaV1<any, any>> = {
16
19
  schema: TSchema;
17
- onSubmit: (data: TOutput) => Promise<void>;
18
- defaultValues?: DefaultValues<TInput>;
19
- children: React.ReactNode | ((form: UseFormReturn<TInput, any, TOutput>) => React.ReactNode);
20
- form?: UseFormReturn<TInput, any, TOutput>;
20
+ onSubmit: (data: SchemaOutput<TSchema>) => Promise<void>;
21
+ defaultValues?: DefaultValues<SchemaInput<TSchema>>;
22
+ children: React.ReactNode | ((form: UseFormReturn<SchemaInput<TSchema>, any, SchemaOutput<TSchema>>) => React.ReactNode);
23
+ form?: UseFormReturn<SchemaInput<TSchema>, any, SchemaOutput<TSchema>>;
24
+ components?: Partial<FormComponents>;
21
25
  submitLabel?: string;
22
26
  hideSubmit?: boolean;
23
27
  renderSubmit?: (state: {
@@ -25,7 +29,6 @@ type ValidatedFormProps<TInput extends FieldValues, TOutput, TSchema> = {
25
29
  reset: () => void;
26
30
  }) => React.ReactNode;
27
31
  renderError?: (message: string) => React.ReactNode;
28
- components?: Partial<FormComponents>;
29
32
  };
30
33
  type FormComponents = {
31
34
  Input: React.ComponentType<React.InputHTMLAttributes<HTMLInputElement>>;
@@ -55,7 +58,7 @@ type SelectFieldsOf<TSchema extends z.ZodObject<Record<string, any>>> = {
55
58
  [K in keyof TSchema['shape']]: TSchema['shape'][K] extends z.ZodOptional<z.ZodEnum<any>> | z.ZodNullable<z.ZodEnum<any>> | z.ZodEnum<any> | z.ZodOptional<z.ZodEnum<any>> | z.ZodUnion<readonly [z.ZodTypeAny, z.ZodTypeAny, ...z.ZodTypeAny[]]> | z.ZodOptional<z.ZodUnion<readonly [z.ZodTypeAny, z.ZodTypeAny, ...z.ZodTypeAny[]]>> ? K : never;
56
59
  }[keyof TSchema['shape']];
57
60
 
58
- declare function ValidatedForm<TSchema extends z$1.ZodType<FieldValues, FieldValues>, TInput extends FieldValues = z$1.input<TSchema> & FieldValues, TOutput extends FieldValues = z$1.output<TSchema> & FieldValues>({ children, schema, onSubmit, defaultValues, form: externalForm, submitLabel, hideSubmit, renderSubmit, renderError, }: ValidatedFormProps<TInput, TOutput, TSchema>): react_jsx_runtime.JSX.Element;
61
+ declare function ValidatedForm<TSchema extends StandardSchemaV1<any, any>>({ children, schema, onSubmit, defaultValues, form: externalForm, submitLabel, hideSubmit, renderSubmit, renderError, }: ValidatedFormProps<TSchema>): react_jsx_runtime.JSX.Element;
59
62
 
60
63
  declare function TextField<TSchema extends z$1.ZodObject<Record<string, any>>>({ name, label, placeholder, disabled, description, className, form, type, showReset, }: BaseFieldProps & {
61
64
  name: StringFieldsOf<TSchema>;
package/dist/index.js CHANGED
@@ -1,7 +1,6 @@
1
1
  // src/ValidatedForm.tsx
2
2
  import { useForm, FormProvider } from "react-hook-form";
3
- import { zodResolver } from "@hookform/resolvers/zod";
4
- import "zod";
3
+ import { standardSchemaResolver } from "@hookform/resolvers/standard-schema";
5
4
  import { jsx, jsxs } from "react/jsx-runtime";
6
5
  function ValidatedForm({
7
6
  children,
@@ -15,7 +14,7 @@ function ValidatedForm({
15
14
  renderError
16
15
  }) {
17
16
  const internalForm = useForm({
18
- resolver: zodResolver(schema),
17
+ resolver: standardSchemaResolver(schema),
19
18
  defaultValues
20
19
  });
21
20
  const form = externalForm ?? internalForm;
@@ -694,13 +693,13 @@ function createForm(schema) {
694
693
 
695
694
  // src/hooks/useValidatedForm.ts
696
695
  import { useForm as useForm2 } from "react-hook-form";
697
- import { zodResolver as zodResolver2 } from "@hookform/resolvers/zod";
696
+ import { zodResolver } from "@hookform/resolvers/zod";
698
697
  function useValidatedForm({
699
698
  schema,
700
699
  defaultValues
701
700
  }) {
702
701
  return useForm2({
703
- resolver: zodResolver2(schema),
702
+ resolver: zodResolver(schema),
704
703
  defaultValues
705
704
  });
706
705
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ValidatedForm.tsx","../src/createForm.tsx","../src/fields/TextField.tsx","../src/utils/cn.ts","../src/fields/TextAreaField.tsx","../src/fields/NumberField.tsx","../src/fields/SelectField.tsx","../src/fields/CheckboxField.tsx","../src/fields/DateField.tsx","../src/fields/SliderField.tsx","../src/fields/MultiSelectField.tsx","../src/hooks/useValidatedForm.ts"],"sourcesContent":["import { useForm, FormProvider } from 'react-hook-form';\nimport type { FieldValues } from 'react-hook-form';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { z } from 'zod';\nimport type { ValidatedFormProps } from './types';\n\nexport function ValidatedForm<\n TSchema extends z.ZodType<FieldValues, FieldValues>,\n TInput extends FieldValues = z.input<TSchema> & FieldValues,\n TOutput extends FieldValues = z.output<TSchema> & FieldValues,\n>({\n children,\n schema,\n onSubmit,\n defaultValues,\n form: externalForm,\n submitLabel,\n hideSubmit,\n renderSubmit,\n renderError,\n}: ValidatedFormProps<TInput, TOutput, TSchema>) {\n const internalForm = useForm<TInput, any, TOutput>({\n resolver: zodResolver(schema as any),\n defaultValues,\n });\n\n const form = externalForm ?? internalForm;\n\n const handleSubmit = form.handleSubmit(async (data) => {\n try {\n await onSubmit(data);\n } catch (err: any) {\n const fieldErrors = err?.data?.fieldErrors;\n if (fieldErrors) {\n Object.entries(fieldErrors).forEach(([field, message]) => {\n form.setError(field as any, { message: message as string });\n });\n } else {\n form.setError('root', {\n message: err?.data?.message ?? err?.message ?? 'Something went wrong',\n });\n }\n }\n });\n\n return (\n <FormProvider {...form}>\n <form onSubmit={handleSubmit} className=\"space-y-4\">\n {typeof children === 'function' ? children(form) : children}\n {form.formState.errors.root &&\n (renderError ? (\n renderError(form.formState.errors.root.message!)\n ) : (\n <p className=\"text-sm font-medium text-destructive\">\n {form.formState.errors.root.message}\n </p>\n ))}\n {renderSubmit\n ? renderSubmit({\n isSubmitting: form.formState.isSubmitting,\n reset: form.reset,\n })\n : !hideSubmit && (\n <button\n type=\"submit\"\n disabled={form.formState.isSubmitting}\n className=\"inline-flex h-9 items-center justify-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground shadow transition-colors hover:bg-primary/90 disabled:pointer-events-none disabled:opacity-50\"\n >\n {form.formState.isSubmitting\n ? 'Submitting...'\n : (submitLabel ?? 'Submit')}\n </button>\n )}\n </form>\n </FormProvider>\n );\n}\n","import { ValidatedForm } from '.';\nimport z from 'zod';\nimport type { DefaultValues } from 'react-hook-form';\nimport {\n TextField,\n TextAreaField,\n NumberField,\n SelectField,\n CheckboxField,\n DateField,\n SliderField,\n MultiSelectField,\n} from './fields';\nimport type { SelectFieldsOf } from '.';\nimport type { FormComponents } from './types';\nexport function createForm<TSchema extends z.ZodObject<Record<string, any>>>(\n schema: TSchema,\n) {\n const Form = ({\n children,\n onSubmit,\n defaultValues,\n components,\n }: {\n children: React.ReactNode;\n onSubmit: (data: z.output<TSchema>) => Promise<void>;\n defaultValues?: DefaultValues<z.input<TSchema>>;\n components?: Partial<FormComponents>; // add this\n }) => (\n <ValidatedForm\n schema={schema as any}\n onSubmit={onSubmit}\n defaultValues={defaultValues}\n components={components}\n >\n {children}\n </ValidatedForm>\n );\n Form.displayName = 'Form';\n\n const SchemaTextField = (\n props: Omit<Parameters<typeof TextField<TSchema>>[0], 'form'>,\n ) => <TextField<TSchema> {...props} />;\n SchemaTextField.displayName = 'TextField';\n\n const SchemaPasswordField = (\n props: Omit<Parameters<typeof TextField<TSchema>>[0], 'form'>,\n ) => <TextField<TSchema> {...props} />;\n SchemaPasswordField.displayName = 'PasswordField';\n\n const SchemaTextAreaField = (\n props: Omit<Parameters<typeof TextAreaField<TSchema>>[0], 'form'>,\n ) => <TextAreaField<TSchema> {...props} />;\n SchemaTextAreaField.displayName = 'TextAreaField';\n\n const SchemaNumberField = (\n props: Omit<Parameters<typeof NumberField<TSchema>>[0], 'form'>,\n ) => <NumberField<TSchema> {...props} />;\n SchemaNumberField.displayName = 'NumberField';\n\n const SchemaSelectField = <TField extends SelectFieldsOf<TSchema>>(\n props: Omit<Parameters<typeof SelectField<TSchema, TField>>[0], 'form'>,\n ) => <SelectField<TSchema, TField> {...props} />;\n SchemaSelectField.displayName = 'SelectField';\n\n const SchemaCheckboxField = (\n props: Omit<Parameters<typeof CheckboxField<TSchema>>[0], 'form'>,\n ) => <CheckboxField<TSchema> {...props} />;\n SchemaCheckboxField.displayName = 'CheckboxField';\n\n const SchemaDateField = (\n props: Omit<Parameters<typeof DateField<TSchema>>[0], 'form'>,\n ) => <DateField<TSchema> {...props} />;\n SchemaDateField.displayName = 'DateField';\n\n const SchemaSliderField = (\n props: Omit<Parameters<typeof SliderField<TSchema>>[0], 'form'>,\n ) => <SliderField<TSchema> {...props} />;\n SchemaSliderField.displayName = 'SliderField';\n\n const SchemaMultiSelectField = (\n props: Omit<Parameters<typeof MultiSelectField<TSchema>>[0], 'form'>,\n ) => <MultiSelectField<TSchema> {...props} />;\n SchemaMultiSelectField.displayName = 'MultiSelectField';\n\n return {\n Form,\n TextField: SchemaTextField,\n PasswordField: SchemaPasswordField,\n TextAreaField: SchemaTextAreaField,\n NumberField: SchemaNumberField,\n SelectField: SchemaSelectField,\n CheckboxField: SchemaCheckboxField,\n DateField: SchemaDateField,\n SliderField: SchemaSliderField,\n MultiSelectField: SchemaMultiSelectField,\n };\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, StringFieldsOf } from '../types';\n\nexport function TextField<TSchema extends z.ZodObject<Record<string, any>>>({\n name,\n label,\n placeholder,\n disabled,\n description,\n className,\n form,\n type = 'text',\n showReset,\n}: BaseFieldProps & {\n name: StringFieldsOf<TSchema>;\n type?: React.HTMLInputTypeAttribute;\n form?: UseFormReturn<z.input<TSchema>>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label\n htmlFor={name as string}\n className=\"text-sm font-medium leading-none\"\n >\n {label}\n </label>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n <input\n {...field}\n id={name as string}\n value={(field.value as string) ?? ''}\n placeholder={placeholder}\n disabled={disabled}\n type={type}\n className=\"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\"\n />\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n )}\n />\n );\n}\n","import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, StringFieldsOf } from '../types';\n\nexport function TextAreaField<\n TSchema extends z.ZodObject<Record<string, any>>,\n>({\n name,\n label,\n placeholder,\n disabled,\n description,\n className,\n form,\n showReset,\n}: BaseFieldProps & {\n name: StringFieldsOf<TSchema>;\n form?: UseFormReturn<z.input<TSchema>>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label htmlFor={name as string} className=\"text-sm font-medium leading-none\">{label}</label>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n <textarea\n {...field}\n id={name as string}\n value={(field.value as string) ?? ''}\n placeholder={placeholder}\n disabled={disabled}\n className=\"flex min-h-[75px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\"\n />\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n )}\n />\n );\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, NumberFieldsOf } from '../types';\n\nexport function NumberField<TSchema extends z.ZodObject<Record<string, any>>>({\n name,\n label,\n placeholder,\n disabled,\n description,\n className,\n form,\n showReset,\n}: BaseFieldProps & {\n name: NumberFieldsOf<TSchema>;\n form?: UseFormReturn<z.input<TSchema>>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label htmlFor={name as string} className=\"text-sm font-medium leading-none\">{label}</label>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n <input\n {...field}\n id={name as string}\n value={(field.value as number) ?? ''}\n placeholder={placeholder}\n disabled={disabled}\n type=\"number\"\n onChange={(e) => {\n const value = e.target.value;\n field.onChange(value === '' ? undefined : Number(value));\n }}\n className=\"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\"\n />\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n )}\n />\n );\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport * as SelectPrimitive from '@radix-ui/react-select';\nimport { Check, ChevronDown } from 'lucide-react';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, SelectFieldsOf } from '../types';\n\nexport function SelectField<\n TSchema extends z.ZodObject<Record<string, any>>,\n TField extends SelectFieldsOf<TSchema>,\n>({\n name,\n label,\n placeholder,\n disabled,\n description,\n className,\n form,\n options,\n showReset,\n}: BaseFieldProps & {\n name: TField;\n form?: UseFormReturn<z.input<TSchema>>;\n options: Array<{\n value: z.input<TSchema>[TField];\n label: string;\n }>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label htmlFor={name as string} className=\"text-sm font-medium leading-none\">{label}</label>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n <SelectPrimitive.Root\n onValueChange={field.onChange}\n value={String(field.value || '')}\n disabled={disabled}\n >\n <SelectPrimitive.Trigger className=\"flex h-9 w-full items-center justify-between rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50\">\n <SelectPrimitive.Value\n placeholder={placeholder ?? 'Select an option'}\n />\n <SelectPrimitive.Icon>\n <ChevronDown className=\"h-4 w-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content className=\"relative z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md\">\n <SelectPrimitive.Viewport className=\"p-1\">\n {options.map((option) => (\n <SelectPrimitive.Item\n key={String(option.value)}\n value={String(option.value)}\n className=\"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\"\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>\n {option.label}\n </SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n ))}\n </SelectPrimitive.Viewport>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n </SelectPrimitive.Root>\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n )}\n />\n );\n}\n","import { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox';\nimport { Check } from 'lucide-react';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, BooleanFieldsOf } from '../types';\n\nexport function CheckboxField<\n TSchema extends z.ZodObject<Record<string, any>>,\n>({\n name,\n label,\n disabled,\n description,\n className,\n form,\n}: BaseFieldProps & {\n name: BooleanFieldsOf<TSchema>;\n form?: UseFormReturn<z.input<TSchema>>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center gap-3\">\n <CheckboxPrimitive.Root\n id={name as string}\n checked={!!field.value}\n onCheckedChange={(checked) => field.onChange(checked)}\n disabled={disabled}\n className=\"h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\"\n >\n <CheckboxPrimitive.Indicator className=\"flex items-center justify-center text-current\">\n <Check className=\"h-3 w-3\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n <label\n htmlFor={name as string}\n className=\"text-sm font-medium leading-none\"\n >\n {label}\n </label>\n </div>\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n )}\n />\n );\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport { DayPicker } from 'react-day-picker';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\nimport { format } from 'date-fns';\nimport { CalendarIcon } from 'lucide-react';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, DateFieldsOf } from '../types';\n\nexport function DateField<TSchema extends z.ZodObject<Record<string, any>>>({\n name,\n label,\n description,\n className,\n form,\n showReset,\n}: BaseFieldProps & {\n name: DateFieldsOf<TSchema>;\n form?: UseFormReturn<z.input<TSchema>>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => {\n const date = field.value ? new Date(field.value as any) : undefined;\n\n return (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label htmlFor={name as string} className=\"text-sm font-medium leading-none\">\n {label}\n </label>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n <PopoverPrimitive.Root>\n <PopoverPrimitive.Trigger asChild>\n <button\n type=\"button\"\n className={cn(\n 'flex h-9 w-full items-center justify-start gap-2 rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50',\n !date && 'text-muted-foreground',\n )}\n >\n <CalendarIcon className=\"h-4 w-4\" />\n {date ? format(date, 'PPP') : 'Pick a date'}\n </button>\n </PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n align=\"start\"\n className=\"z-50 rounded-md border bg-popover p-0 text-popover-foreground shadow-md outline-none\"\n >\n <DayPicker\n mode=\"single\"\n selected={date}\n onSelect={(d) => field.onChange(d)}\n className=\"p-3\"\n />\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n );\n }}\n />\n );\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport * as SliderPrimitive from '@radix-ui/react-slider';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, NumberFieldsOf } from '../types';\n\nexport function SliderField<TSchema extends z.ZodObject<Record<string, any>>>({\n name,\n label,\n description,\n disabled,\n className,\n form,\n min = 0,\n max = 100,\n step = 1,\n showReset,\n}: BaseFieldProps & {\n name: NumberFieldsOf<TSchema>;\n form?: UseFormReturn<z.input<TSchema>>;\n min?: number;\n max?: number;\n step?: number;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => {\n const value = field.value !== undefined ? (field.value as number) : min;\n\n return (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label htmlFor={name as string} className=\"text-sm font-medium leading-none\">\n {label}\n </label>\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm text-muted-foreground\">{value}</span>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n </div>\n <SliderPrimitive.Root\n value={[value]}\n onValueChange={([val]) => field.onChange(val)}\n min={min}\n max={max}\n step={step}\n disabled={disabled}\n className=\"relative flex w-full touch-none select-none items-center\"\n >\n <SliderPrimitive.Track className=\"relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20\">\n <SliderPrimitive.Range className=\"absolute h-full bg-primary\" />\n </SliderPrimitive.Track>\n <SliderPrimitive.Thumb className=\"block h-4 w-4 rounded-full border border-primary/50 bg-background shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\" />\n </SliderPrimitive.Root>\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n );\n }}\n />\n );\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\nimport { Command } from 'cmdk';\nimport { Check, ChevronsUpDown, X } from 'lucide-react';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps } from '../types';\n\nexport function MultiSelectField<\n TSchema extends z.ZodObject<Record<string, any>>,\n>({\n name,\n label,\n description,\n disabled,\n form,\n className,\n options,\n placeholder = 'Select options...',\n showReset,\n}: BaseFieldProps & {\n name: keyof z.input<TSchema>;\n form?: UseFormReturn<z.input<TSchema>>;\n options: Array<{ value: string; label: string }>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => {\n const selected: string[] = Array.isArray(field.value)\n ? field.value\n : [];\n\n const toggle = (val: string) => {\n const next = selected.includes(val)\n ? selected.filter((v) => v !== val)\n : [...selected, val];\n field.onChange(next);\n };\n\n return (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label className=\"text-sm font-medium leading-none\">\n {label}\n </label>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n <PopoverPrimitive.Root>\n <PopoverPrimitive.Trigger asChild>\n <button\n type=\"button\"\n role=\"combobox\"\n disabled={disabled}\n className={cn(\n 'flex min-h-9 w-full flex-wrap items-center justify-between gap-1 rounded-md border border-input bg-transparent px-3 py-1.5 text-sm shadow-sm focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50',\n !selected.length && 'text-muted-foreground',\n )}\n >\n <div className=\"flex flex-wrap gap-1\">\n {selected.length\n ? selected.map((val) => (\n <span\n key={val}\n className=\"inline-flex items-center gap-1 rounded-md border bg-secondary px-1.5 py-0.5 text-xs text-secondary-foreground\"\n >\n {options.find((o) => o.value === val)?.label ?? val}\n <span\n onClick={(e) => {\n e.stopPropagation();\n toggle(val);\n }}\n className=\"cursor-pointer\"\n >\n <X className=\"h-3 w-3\" />\n </span>\n </span>\n ))\n : placeholder}\n </div>\n <ChevronsUpDown className=\"ml-2 h-4 w-4 shrink-0 opacity-50\" />\n </button>\n </PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n align=\"start\"\n className=\"z-50 min-w-[200px] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md outline-none\"\n >\n <Command>\n <div className=\"flex items-center border-b px-3\">\n <Command.Input\n placeholder=\"Search...\"\n className=\"flex h-9 w-full bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground\"\n />\n </div>\n <Command.List className=\"max-h-[200px] overflow-y-auto p-1\">\n <Command.Empty className=\"py-6 text-center text-sm\">\n No options found.\n </Command.Empty>\n <Command.Group>\n {options.map((option) => (\n <Command.Item\n key={option.value}\n value={option.value}\n onSelect={() => toggle(option.value)}\n className=\"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none aria-selected:bg-accent aria-selected:text-accent-foreground\"\n >\n <Check\n className={cn(\n 'mr-2 h-4 w-4',\n selected.includes(option.value)\n ? 'opacity-100'\n : 'opacity-0',\n )}\n />\n {option.label}\n </Command.Item>\n ))}\n </Command.Group>\n </Command.List>\n </Command>\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n );\n }}\n />\n );\n}\n","import { useForm } from 'react-hook-form';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport type { DefaultValues, FieldValues } from 'react-hook-form';\nimport type { z } from 'zod';\n\nexport function useValidatedForm<TSchema extends z.ZodType<any, FieldValues>>({\n schema,\n defaultValues,\n}: {\n schema: TSchema;\n defaultValues?: DefaultValues<z.input<TSchema>>;\n}) {\n return useForm<z.input<TSchema>, any, z.output<TSchema>>({\n resolver: zodResolver(schema),\n defaultValues,\n });\n}\n"],"mappings":"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","names":["jsx","jsxs","Controller","useFormContext","jsx","jsxs","useFormContext","Controller","Controller","useFormContext","jsx","jsxs","useFormContext","Controller","Controller","useFormContext","jsx","jsxs","useFormContext","Controller","Controller","useFormContext","Check","jsx","jsxs","useFormContext","Controller","Check","Controller","useFormContext","jsx","jsxs","useFormContext","Controller","Controller","useFormContext","jsx","jsxs","useFormContext","Controller","Controller","useFormContext","PopoverPrimitive","Check","jsx","jsxs","useFormContext","Controller","Check","jsx","useForm","zodResolver"]}
1
+ {"version":3,"sources":["../src/ValidatedForm.tsx","../src/createForm.tsx","../src/fields/TextField.tsx","../src/utils/cn.ts","../src/fields/TextAreaField.tsx","../src/fields/NumberField.tsx","../src/fields/SelectField.tsx","../src/fields/CheckboxField.tsx","../src/fields/DateField.tsx","../src/fields/SliderField.tsx","../src/fields/MultiSelectField.tsx","../src/hooks/useValidatedForm.ts"],"sourcesContent":["import { useForm, FormProvider } from 'react-hook-form';\nimport type { SchemaInput, ValidatedFormProps, SchemaOutput } from './types';\nimport { standardSchemaResolver } from '@hookform/resolvers/standard-schema';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\n\nexport function ValidatedForm<TSchema extends StandardSchemaV1<any, any>>({\n children,\n schema,\n onSubmit,\n defaultValues,\n form: externalForm,\n submitLabel,\n hideSubmit,\n renderSubmit,\n renderError,\n}: ValidatedFormProps<TSchema>) {\n type TInput = SchemaInput<TSchema>;\n type TOutput = SchemaOutput<TSchema>;\n\n const internalForm = useForm<TInput, any, TOutput>({\n resolver: standardSchemaResolver(schema) as any,\n defaultValues,\n });\n\n const form = externalForm ?? internalForm;\n\n const handleSubmit = form.handleSubmit(async (data) => {\n try {\n await onSubmit(data);\n } catch (err: any) {\n const fieldErrors = err?.data?.fieldErrors;\n if (fieldErrors) {\n Object.entries(fieldErrors).forEach(([field, message]) => {\n form.setError(field as any, { message: message as string });\n });\n } else {\n form.setError('root', {\n message: err?.data?.message ?? err?.message ?? 'Something went wrong',\n });\n }\n }\n });\n\n return (\n <FormProvider {...form}>\n <form onSubmit={handleSubmit} className=\"space-y-4\">\n {typeof children === 'function' ? children(form) : children}\n {form.formState.errors.root &&\n (renderError ? (\n renderError(form.formState.errors.root.message!)\n ) : (\n <p className=\"text-sm font-medium text-destructive\">\n {form.formState.errors.root.message}\n </p>\n ))}\n {renderSubmit\n ? renderSubmit({\n isSubmitting: form.formState.isSubmitting,\n reset: form.reset,\n })\n : !hideSubmit && (\n <button\n type=\"submit\"\n disabled={form.formState.isSubmitting}\n className=\"inline-flex h-9 items-center justify-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground shadow transition-colors hover:bg-primary/90 disabled:pointer-events-none disabled:opacity-50\"\n >\n {form.formState.isSubmitting\n ? 'Submitting...'\n : (submitLabel ?? 'Submit')}\n </button>\n )}\n </form>\n </FormProvider>\n );\n}\n","import { ValidatedForm } from '.';\nimport z from 'zod';\nimport type { DefaultValues } from 'react-hook-form';\nimport {\n TextField,\n TextAreaField,\n NumberField,\n SelectField,\n CheckboxField,\n DateField,\n SliderField,\n MultiSelectField,\n} from './fields';\nimport type { SelectFieldsOf } from '.';\nimport type { FormComponents } from './types';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nexport function createForm<TSchema extends z.ZodObject<Record<string, any>>>(\n schema: TSchema,\n) {\n const Form = ({\n children,\n onSubmit,\n defaultValues,\n components,\n }: {\n children: React.ReactNode;\n onSubmit: (data: z.output<TSchema>) => Promise<void>;\n defaultValues?: DefaultValues<z.input<TSchema>>;\n components?: Partial<FormComponents>;\n }) => (\n <ValidatedForm\n schema={\n schema as unknown as StandardSchemaV1<\n z.input<TSchema>,\n z.output<TSchema>\n >\n }\n onSubmit={onSubmit as any}\n defaultValues={defaultValues as any}\n components={components}\n >\n {children}\n </ValidatedForm>\n );\n Form.displayName = 'Form';\n\n const SchemaTextField = (\n props: Omit<Parameters<typeof TextField<TSchema>>[0], 'form'>,\n ) => <TextField<TSchema> {...props} />;\n SchemaTextField.displayName = 'TextField';\n\n const SchemaPasswordField = (\n props: Omit<Parameters<typeof TextField<TSchema>>[0], 'form'>,\n ) => <TextField<TSchema> {...props} />;\n SchemaPasswordField.displayName = 'PasswordField';\n\n const SchemaTextAreaField = (\n props: Omit<Parameters<typeof TextAreaField<TSchema>>[0], 'form'>,\n ) => <TextAreaField<TSchema> {...props} />;\n SchemaTextAreaField.displayName = 'TextAreaField';\n\n const SchemaNumberField = (\n props: Omit<Parameters<typeof NumberField<TSchema>>[0], 'form'>,\n ) => <NumberField<TSchema> {...props} />;\n SchemaNumberField.displayName = 'NumberField';\n\n const SchemaSelectField = <TField extends SelectFieldsOf<TSchema>>(\n props: Omit<Parameters<typeof SelectField<TSchema, TField>>[0], 'form'>,\n ) => <SelectField<TSchema, TField> {...props} />;\n SchemaSelectField.displayName = 'SelectField';\n\n const SchemaCheckboxField = (\n props: Omit<Parameters<typeof CheckboxField<TSchema>>[0], 'form'>,\n ) => <CheckboxField<TSchema> {...props} />;\n SchemaCheckboxField.displayName = 'CheckboxField';\n\n const SchemaDateField = (\n props: Omit<Parameters<typeof DateField<TSchema>>[0], 'form'>,\n ) => <DateField<TSchema> {...props} />;\n SchemaDateField.displayName = 'DateField';\n\n const SchemaSliderField = (\n props: Omit<Parameters<typeof SliderField<TSchema>>[0], 'form'>,\n ) => <SliderField<TSchema> {...props} />;\n SchemaSliderField.displayName = 'SliderField';\n\n const SchemaMultiSelectField = (\n props: Omit<Parameters<typeof MultiSelectField<TSchema>>[0], 'form'>,\n ) => <MultiSelectField<TSchema> {...props} />;\n SchemaMultiSelectField.displayName = 'MultiSelectField';\n\n return {\n Form,\n TextField: SchemaTextField,\n PasswordField: SchemaPasswordField,\n TextAreaField: SchemaTextAreaField,\n NumberField: SchemaNumberField,\n SelectField: SchemaSelectField,\n CheckboxField: SchemaCheckboxField,\n DateField: SchemaDateField,\n SliderField: SchemaSliderField,\n MultiSelectField: SchemaMultiSelectField,\n };\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, StringFieldsOf } from '../types';\n\nexport function TextField<TSchema extends z.ZodObject<Record<string, any>>>({\n name,\n label,\n placeholder,\n disabled,\n description,\n className,\n form,\n type = 'text',\n showReset,\n}: BaseFieldProps & {\n name: StringFieldsOf<TSchema>;\n type?: React.HTMLInputTypeAttribute;\n form?: UseFormReturn<z.input<TSchema>>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label\n htmlFor={name as string}\n className=\"text-sm font-medium leading-none\"\n >\n {label}\n </label>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n <input\n {...field}\n id={name as string}\n value={(field.value as string) ?? ''}\n placeholder={placeholder}\n disabled={disabled}\n type={type}\n className=\"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\"\n />\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n )}\n />\n );\n}\n","import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, StringFieldsOf } from '../types';\n\nexport function TextAreaField<\n TSchema extends z.ZodObject<Record<string, any>>,\n>({\n name,\n label,\n placeholder,\n disabled,\n description,\n className,\n form,\n showReset,\n}: BaseFieldProps & {\n name: StringFieldsOf<TSchema>;\n form?: UseFormReturn<z.input<TSchema>>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label htmlFor={name as string} className=\"text-sm font-medium leading-none\">{label}</label>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n <textarea\n {...field}\n id={name as string}\n value={(field.value as string) ?? ''}\n placeholder={placeholder}\n disabled={disabled}\n className=\"flex min-h-[75px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\"\n />\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n )}\n />\n );\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, NumberFieldsOf } from '../types';\n\nexport function NumberField<TSchema extends z.ZodObject<Record<string, any>>>({\n name,\n label,\n placeholder,\n disabled,\n description,\n className,\n form,\n showReset,\n}: BaseFieldProps & {\n name: NumberFieldsOf<TSchema>;\n form?: UseFormReturn<z.input<TSchema>>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label htmlFor={name as string} className=\"text-sm font-medium leading-none\">{label}</label>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n <input\n {...field}\n id={name as string}\n value={(field.value as number) ?? ''}\n placeholder={placeholder}\n disabled={disabled}\n type=\"number\"\n onChange={(e) => {\n const value = e.target.value;\n field.onChange(value === '' ? undefined : Number(value));\n }}\n className=\"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\"\n />\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n )}\n />\n );\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport * as SelectPrimitive from '@radix-ui/react-select';\nimport { Check, ChevronDown } from 'lucide-react';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, SelectFieldsOf } from '../types';\n\nexport function SelectField<\n TSchema extends z.ZodObject<Record<string, any>>,\n TField extends SelectFieldsOf<TSchema>,\n>({\n name,\n label,\n placeholder,\n disabled,\n description,\n className,\n form,\n options,\n showReset,\n}: BaseFieldProps & {\n name: TField;\n form?: UseFormReturn<z.input<TSchema>>;\n options: Array<{\n value: z.input<TSchema>[TField];\n label: string;\n }>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label htmlFor={name as string} className=\"text-sm font-medium leading-none\">{label}</label>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n <SelectPrimitive.Root\n onValueChange={field.onChange}\n value={String(field.value || '')}\n disabled={disabled}\n >\n <SelectPrimitive.Trigger className=\"flex h-9 w-full items-center justify-between rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50\">\n <SelectPrimitive.Value\n placeholder={placeholder ?? 'Select an option'}\n />\n <SelectPrimitive.Icon>\n <ChevronDown className=\"h-4 w-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content className=\"relative z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md\">\n <SelectPrimitive.Viewport className=\"p-1\">\n {options.map((option) => (\n <SelectPrimitive.Item\n key={String(option.value)}\n value={String(option.value)}\n className=\"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\"\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>\n {option.label}\n </SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n ))}\n </SelectPrimitive.Viewport>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n </SelectPrimitive.Root>\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n )}\n />\n );\n}\n","import { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox';\nimport { Check } from 'lucide-react';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, BooleanFieldsOf } from '../types';\n\nexport function CheckboxField<\n TSchema extends z.ZodObject<Record<string, any>>,\n>({\n name,\n label,\n disabled,\n description,\n className,\n form,\n}: BaseFieldProps & {\n name: BooleanFieldsOf<TSchema>;\n form?: UseFormReturn<z.input<TSchema>>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center gap-3\">\n <CheckboxPrimitive.Root\n id={name as string}\n checked={!!field.value}\n onCheckedChange={(checked) => field.onChange(checked)}\n disabled={disabled}\n className=\"h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\"\n >\n <CheckboxPrimitive.Indicator className=\"flex items-center justify-center text-current\">\n <Check className=\"h-3 w-3\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n <label\n htmlFor={name as string}\n className=\"text-sm font-medium leading-none\"\n >\n {label}\n </label>\n </div>\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n )}\n />\n );\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport { DayPicker } from 'react-day-picker';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\nimport { format } from 'date-fns';\nimport { CalendarIcon } from 'lucide-react';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, DateFieldsOf } from '../types';\n\nexport function DateField<TSchema extends z.ZodObject<Record<string, any>>>({\n name,\n label,\n description,\n className,\n form,\n showReset,\n}: BaseFieldProps & {\n name: DateFieldsOf<TSchema>;\n form?: UseFormReturn<z.input<TSchema>>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => {\n const date = field.value ? new Date(field.value as any) : undefined;\n\n return (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label htmlFor={name as string} className=\"text-sm font-medium leading-none\">\n {label}\n </label>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n <PopoverPrimitive.Root>\n <PopoverPrimitive.Trigger asChild>\n <button\n type=\"button\"\n className={cn(\n 'flex h-9 w-full items-center justify-start gap-2 rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50',\n !date && 'text-muted-foreground',\n )}\n >\n <CalendarIcon className=\"h-4 w-4\" />\n {date ? format(date, 'PPP') : 'Pick a date'}\n </button>\n </PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n align=\"start\"\n className=\"z-50 rounded-md border bg-popover p-0 text-popover-foreground shadow-md outline-none\"\n >\n <DayPicker\n mode=\"single\"\n selected={date}\n onSelect={(d) => field.onChange(d)}\n className=\"p-3\"\n />\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n );\n }}\n />\n );\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport * as SliderPrimitive from '@radix-ui/react-slider';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, NumberFieldsOf } from '../types';\n\nexport function SliderField<TSchema extends z.ZodObject<Record<string, any>>>({\n name,\n label,\n description,\n disabled,\n className,\n form,\n min = 0,\n max = 100,\n step = 1,\n showReset,\n}: BaseFieldProps & {\n name: NumberFieldsOf<TSchema>;\n form?: UseFormReturn<z.input<TSchema>>;\n min?: number;\n max?: number;\n step?: number;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => {\n const value = field.value !== undefined ? (field.value as number) : min;\n\n return (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label htmlFor={name as string} className=\"text-sm font-medium leading-none\">\n {label}\n </label>\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm text-muted-foreground\">{value}</span>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n </div>\n <SliderPrimitive.Root\n value={[value]}\n onValueChange={([val]) => field.onChange(val)}\n min={min}\n max={max}\n step={step}\n disabled={disabled}\n className=\"relative flex w-full touch-none select-none items-center\"\n >\n <SliderPrimitive.Track className=\"relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20\">\n <SliderPrimitive.Range className=\"absolute h-full bg-primary\" />\n </SliderPrimitive.Track>\n <SliderPrimitive.Thumb className=\"block h-4 w-4 rounded-full border border-primary/50 bg-background shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\" />\n </SliderPrimitive.Root>\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n );\n }}\n />\n );\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\nimport { Command } from 'cmdk';\nimport { Check, ChevronsUpDown, X } from 'lucide-react';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps } from '../types';\n\nexport function MultiSelectField<\n TSchema extends z.ZodObject<Record<string, any>>,\n>({\n name,\n label,\n description,\n disabled,\n form,\n className,\n options,\n placeholder = 'Select options...',\n showReset,\n}: BaseFieldProps & {\n name: keyof z.input<TSchema>;\n form?: UseFormReturn<z.input<TSchema>>;\n options: Array<{ value: string; label: string }>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => {\n const selected: string[] = Array.isArray(field.value)\n ? field.value\n : [];\n\n const toggle = (val: string) => {\n const next = selected.includes(val)\n ? selected.filter((v) => v !== val)\n : [...selected, val];\n field.onChange(next);\n };\n\n return (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label className=\"text-sm font-medium leading-none\">\n {label}\n </label>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n <PopoverPrimitive.Root>\n <PopoverPrimitive.Trigger asChild>\n <button\n type=\"button\"\n role=\"combobox\"\n disabled={disabled}\n className={cn(\n 'flex min-h-9 w-full flex-wrap items-center justify-between gap-1 rounded-md border border-input bg-transparent px-3 py-1.5 text-sm shadow-sm focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50',\n !selected.length && 'text-muted-foreground',\n )}\n >\n <div className=\"flex flex-wrap gap-1\">\n {selected.length\n ? selected.map((val) => (\n <span\n key={val}\n className=\"inline-flex items-center gap-1 rounded-md border bg-secondary px-1.5 py-0.5 text-xs text-secondary-foreground\"\n >\n {options.find((o) => o.value === val)?.label ?? val}\n <span\n onClick={(e) => {\n e.stopPropagation();\n toggle(val);\n }}\n className=\"cursor-pointer\"\n >\n <X className=\"h-3 w-3\" />\n </span>\n </span>\n ))\n : placeholder}\n </div>\n <ChevronsUpDown className=\"ml-2 h-4 w-4 shrink-0 opacity-50\" />\n </button>\n </PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n align=\"start\"\n className=\"z-50 min-w-[200px] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md outline-none\"\n >\n <Command>\n <div className=\"flex items-center border-b px-3\">\n <Command.Input\n placeholder=\"Search...\"\n className=\"flex h-9 w-full bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground\"\n />\n </div>\n <Command.List className=\"max-h-[200px] overflow-y-auto p-1\">\n <Command.Empty className=\"py-6 text-center text-sm\">\n No options found.\n </Command.Empty>\n <Command.Group>\n {options.map((option) => (\n <Command.Item\n key={option.value}\n value={option.value}\n onSelect={() => toggle(option.value)}\n className=\"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none aria-selected:bg-accent aria-selected:text-accent-foreground\"\n >\n <Check\n className={cn(\n 'mr-2 h-4 w-4',\n selected.includes(option.value)\n ? 'opacity-100'\n : 'opacity-0',\n )}\n />\n {option.label}\n </Command.Item>\n ))}\n </Command.Group>\n </Command.List>\n </Command>\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n );\n }}\n />\n );\n}\n","import { useForm } from 'react-hook-form';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport type { DefaultValues, FieldValues } from 'react-hook-form';\nimport type { z } from 'zod';\n\nexport function useValidatedForm<TSchema extends z.ZodType<any, FieldValues>>({\n schema,\n defaultValues,\n}: {\n schema: TSchema;\n defaultValues?: DefaultValues<z.input<TSchema>>;\n}) {\n return useForm<z.input<TSchema>, any, z.output<TSchema>>({\n resolver: zodResolver(schema),\n defaultValues,\n });\n}\n"],"mappings":";AAAA,SAAS,SAAS,oBAAoB;AAEtC,SAAS,8BAA8B;AA2CjC,SAMM,KANN;AAxCC,SAAS,cAA0D;AAAA,EACxE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,MAAM;AAAA,EACN;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAgC;AAI9B,QAAM,eAAe,QAA8B;AAAA,IACjD,UAAU,uBAAuB,MAAM;AAAA,IACvC;AAAA,EACF,CAAC;AAED,QAAM,OAAO,gBAAgB;AAE7B,QAAM,eAAe,KAAK,aAAa,OAAO,SAAS;AACrD,QAAI;AACF,YAAM,SAAS,IAAI;AAAA,IACrB,SAAS,KAAU;AACjB,YAAM,cAAc,KAAK,MAAM;AAC/B,UAAI,aAAa;AACf,eAAO,QAAQ,WAAW,EAAE,QAAQ,CAAC,CAAC,OAAO,OAAO,MAAM;AACxD,eAAK,SAAS,OAAc,EAAE,QAA2B,CAAC;AAAA,QAC5D,CAAC;AAAA,MACH,OAAO;AACL,aAAK,SAAS,QAAQ;AAAA,UACpB,SAAS,KAAK,MAAM,WAAW,KAAK,WAAW;AAAA,QACjD,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF,CAAC;AAED,SACE,oBAAC,gBAAc,GAAG,MAChB,+BAAC,UAAK,UAAU,cAAc,WAAU,aACrC;AAAA,WAAO,aAAa,aAAa,SAAS,IAAI,IAAI;AAAA,IAClD,KAAK,UAAU,OAAO,SACpB,cACC,YAAY,KAAK,UAAU,OAAO,KAAK,OAAQ,IAE/C,oBAAC,OAAE,WAAU,wCACV,eAAK,UAAU,OAAO,KAAK,SAC9B;AAAA,IAEH,eACG,aAAa;AAAA,MACX,cAAc,KAAK,UAAU;AAAA,MAC7B,OAAO,KAAK;AAAA,IACd,CAAC,IACD,CAAC,cACC;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,UAAU,KAAK,UAAU;AAAA,QACzB,WAAU;AAAA,QAET,eAAK,UAAU,eACZ,kBACC,eAAe;AAAA;AAAA,IACtB;AAAA,KAER,GACF;AAEJ;;;ACzEA,OAAc;;;ACDd,OAAkB;AAClB,SAAS,YAAY,sBAAsB;AAE3C,OAAkB;;;ACHlB,SAAS,YAA6B;AACtC,SAAS,eAAe;AAEjB,SAAS,MAAM,QAAsB;AAC1C,SAAO,QAAQ,KAAK,MAAM,CAAC;AAC7B;;;AD0BU,SACE,OAAAA,MADF,QAAAC,aAAA;AAxBH,SAAS,UAA4D;AAAA,EAC1E;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP;AACF,GAIG;AACD,QAAM,cAAc,eAAiC;AACrD,QAAM,aAAa,QAAQ;AAE3B,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC,SAAS,WAAW;AAAA,MACpB;AAAA,MACA,QAAQ,CAAC,EAAE,OAAO,WAAW,MAC3B,gBAAAC,MAAC,SAAI,WAAW,GAAG,aAAa,SAAS,GACvC;AAAA,wBAAAA,MAAC,SAAI,WAAU,qCACb;AAAA,0BAAAD;AAAA,YAAC;AAAA;AAAA,cACC,SAAS;AAAA,cACT,WAAU;AAAA,cAET;AAAA;AAAA,UACH;AAAA,UACC,aACC,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC,MAAK;AAAA,cACL,SAAS,MAAM,WAAW,WAAW,IAAW;AAAA,cAChD,WAAU;AAAA,cACX;AAAA;AAAA,UAED;AAAA,WAEJ;AAAA,QACA,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACE,GAAG;AAAA,YACJ,IAAI;AAAA,YACJ,OAAQ,MAAM,SAAoB;AAAA,YAClC;AAAA,YACA;AAAA,YACA;AAAA,YACA,WAAU;AAAA;AAAA,QACZ;AAAA,QACC,eACC,gBAAAA,KAAC,OAAE,WAAU,iCAAiC,uBAAY;AAAA,QAE3D,WAAW,SACV,gBAAAA,KAAC,OAAE,WAAU,wCACV,qBAAW,MAAM,SACpB;AAAA,SAEJ;AAAA;AAAA,EAEJ;AAEJ;;;AErEA,OAAkB;AAClB,SAAS,cAAAE,aAAY,kBAAAC,uBAAsB;AAE3C,OAAkB;AA4BR,SACE,OAAAC,MADF,QAAAC,aAAA;AAxBH,SAAS,cAEd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAGG;AACD,QAAM,cAAcC,gBAAiC;AACrD,QAAM,aAAa,QAAQ;AAE3B,SACE,gBAAAF;AAAA,IAACG;AAAA,IAAA;AAAA,MACC,SAAS,WAAW;AAAA,MACpB;AAAA,MACA,QAAQ,CAAC,EAAE,OAAO,WAAW,MAC3B,gBAAAF,MAAC,SAAI,WAAW,GAAG,aAAa,SAAS,GACvC;AAAA,wBAAAA,MAAC,SAAI,WAAU,qCACb;AAAA,0BAAAD,KAAC,WAAM,SAAS,MAAgB,WAAU,oCAAoC,iBAAM;AAAA,UACnF,aACC,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC,MAAK;AAAA,cACL,SAAS,MAAM,WAAW,WAAW,IAAW;AAAA,cAChD,WAAU;AAAA,cACX;AAAA;AAAA,UAED;AAAA,WAEJ;AAAA,QACA,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACE,GAAG;AAAA,YACJ,IAAI;AAAA,YACJ,OAAQ,MAAM,SAAoB;AAAA,YAClC;AAAA,YACA;AAAA,YACA,WAAU;AAAA;AAAA,QACZ;AAAA,QACC,eACC,gBAAAA,KAAC,OAAE,WAAU,iCAAiC,uBAAY;AAAA,QAE3D,WAAW,SACV,gBAAAA,KAAC,OAAE,WAAU,wCACV,qBAAW,MAAM,SACpB;AAAA,SAEJ;AAAA;AAAA,EAEJ;AAEJ;;;AC/DA,OAAkB;AAClB,SAAS,cAAAI,aAAY,kBAAAC,uBAAsB;AAE3C,OAAkB;AA0BR,SACE,OAAAC,MADF,QAAAC,aAAA;AAtBH,SAAS,YAA8D;AAAA,EAC5E;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAGG;AACD,QAAM,cAAcC,gBAAiC;AACrD,QAAM,aAAa,QAAQ;AAE3B,SACE,gBAAAF;AAAA,IAACG;AAAA,IAAA;AAAA,MACC,SAAS,WAAW;AAAA,MACpB;AAAA,MACA,QAAQ,CAAC,EAAE,OAAO,WAAW,MAC3B,gBAAAF,MAAC,SAAI,WAAW,GAAG,aAAa,SAAS,GACvC;AAAA,wBAAAA,MAAC,SAAI,WAAU,qCACb;AAAA,0BAAAD,KAAC,WAAM,SAAS,MAAgB,WAAU,oCAAoC,iBAAM;AAAA,UACnF,aACC,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC,MAAK;AAAA,cACL,SAAS,MAAM,WAAW,WAAW,IAAW;AAAA,cAChD,WAAU;AAAA,cACX;AAAA;AAAA,UAED;AAAA,WAEJ;AAAA,QACA,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACE,GAAG;AAAA,YACJ,IAAI;AAAA,YACJ,OAAQ,MAAM,SAAoB;AAAA,YAClC;AAAA,YACA;AAAA,YACA,MAAK;AAAA,YACL,UAAU,CAAC,MAAM;AACf,oBAAM,QAAQ,EAAE,OAAO;AACvB,oBAAM,SAAS,UAAU,KAAK,SAAY,OAAO,KAAK,CAAC;AAAA,YACzD;AAAA,YACA,WAAU;AAAA;AAAA,QACZ;AAAA,QACC,eACC,gBAAAA,KAAC,OAAE,WAAU,iCAAiC,uBAAY;AAAA,QAE3D,WAAW,SACV,gBAAAA,KAAC,OAAE,WAAU,wCACV,qBAAW,MAAM,SACpB;AAAA,SAEJ;AAAA;AAAA,EAEJ;AAEJ;;;AClEA,OAAkB;AAClB,SAAS,cAAAI,aAAY,kBAAAC,uBAAsB;AAE3C,OAAkB;AAClB,YAAY,qBAAqB;AACjC,SAAS,OAAO,mBAAmB;AAkCzB,SACE,OAAAC,MADF,QAAAC,aAAA;AA9BH,SAAS,YAGd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAOG;AACD,QAAM,cAAcC,gBAAiC;AACrD,QAAM,aAAa,QAAQ;AAE3B,SACE,gBAAAF;AAAA,IAACG;AAAA,IAAA;AAAA,MACC,SAAS,WAAW;AAAA,MACpB;AAAA,MACA,QAAQ,CAAC,EAAE,OAAO,WAAW,MAC3B,gBAAAF,MAAC,SAAI,WAAW,GAAG,aAAa,SAAS,GACvC;AAAA,wBAAAA,MAAC,SAAI,WAAU,qCACb;AAAA,0BAAAD,KAAC,WAAM,SAAS,MAAgB,WAAU,oCAAoC,iBAAM;AAAA,UACnF,aACC,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC,MAAK;AAAA,cACL,SAAS,MAAM,WAAW,WAAW,IAAW;AAAA,cAChD,WAAU;AAAA,cACX;AAAA;AAAA,UAED;AAAA,WAEJ;AAAA,QACA,gBAAAC;AAAA,UAAiB;AAAA,UAAhB;AAAA,YACC,eAAe,MAAM;AAAA,YACrB,OAAO,OAAO,MAAM,SAAS,EAAE;AAAA,YAC/B;AAAA,YAEA;AAAA,8BAAAA,MAAiB,yBAAhB,EAAwB,WAAU,4PACjC;AAAA,gCAAAD;AAAA,kBAAiB;AAAA,kBAAhB;AAAA,oBACC,aAAa,eAAe;AAAA;AAAA,gBAC9B;AAAA,gBACA,gBAAAA,KAAiB,sBAAhB,EACC,0BAAAA,KAAC,eAAY,WAAU,sBAAqB,GAC9C;AAAA,iBACF;AAAA,cACA,gBAAAA,KAAiB,wBAAhB,EACC,0BAAAA,KAAiB,yBAAhB,EAAwB,WAAU,6GACjC,0BAAAA,KAAiB,0BAAhB,EAAyB,WAAU,OACjC,kBAAQ,IAAI,CAAC,WACZ,gBAAAC;AAAA,gBAAiB;AAAA,gBAAhB;AAAA,kBAEC,OAAO,OAAO,OAAO,KAAK;AAAA,kBAC1B,WAAU;AAAA,kBAEV;AAAA,oCAAAD,KAAC,UAAK,WAAU,gEACd,0BAAAA,KAAiB,+BAAhB,EACC,0BAAAA,KAAC,SAAM,WAAU,WAAU,GAC7B,GACF;AAAA,oBACA,gBAAAA,KAAiB,0BAAhB,EACE,iBAAO,OACV;AAAA;AAAA;AAAA,gBAXK,OAAO,OAAO,KAAK;AAAA,cAY1B,CACD,GACH,GACF,GACF;AAAA;AAAA;AAAA,QACF;AAAA,QACC,eACC,gBAAAA,KAAC,OAAE,WAAU,iCAAiC,uBAAY;AAAA,QAE3D,WAAW,SACV,gBAAAA,KAAC,OAAE,WAAU,wCACV,qBAAW,MAAM,SACpB;AAAA,SAEJ;AAAA;AAAA,EAEJ;AAEJ;;;ACnGA,SAAS,cAAAI,aAAY,kBAAAC,uBAAsB;AAE3C,OAAkB;AAClB,YAAY,uBAAuB;AACnC,SAAS,SAAAC,cAAa;AA0BZ,SASM,OAAAC,MATN,QAAAC,aAAA;AAtBH,SAAS,cAEd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAGG;AACD,QAAM,cAAcC,gBAAiC;AACrD,QAAM,aAAa,QAAQ;AAE3B,SACE,gBAAAF;AAAA,IAACG;AAAA,IAAA;AAAA,MACC,SAAS,WAAW;AAAA,MACpB;AAAA,MACA,QAAQ,CAAC,EAAE,OAAO,WAAW,MAC3B,gBAAAF,MAAC,SAAI,WAAW,GAAG,aAAa,SAAS,GACvC;AAAA,wBAAAA,MAAC,SAAI,WAAU,2BACb;AAAA,0BAAAD;AAAA,YAAmB;AAAA,YAAlB;AAAA,cACC,IAAI;AAAA,cACJ,SAAS,CAAC,CAAC,MAAM;AAAA,cACjB,iBAAiB,CAAC,YAAY,MAAM,SAAS,OAAO;AAAA,cACpD;AAAA,cACA,WAAU;AAAA,cAEV,0BAAAA,KAAmB,6BAAlB,EAA4B,WAAU,iDACrC,0BAAAA,KAACI,QAAA,EAAM,WAAU,WAAU,GAC7B;AAAA;AAAA,UACF;AAAA,UACA,gBAAAJ;AAAA,YAAC;AAAA;AAAA,cACC,SAAS;AAAA,cACT,WAAU;AAAA,cAET;AAAA;AAAA,UACH;AAAA,WACF;AAAA,QACC,eACC,gBAAAA,KAAC,OAAE,WAAU,iCAAiC,uBAAY;AAAA,QAE3D,WAAW,SACV,gBAAAA,KAAC,OAAE,WAAU,wCACV,qBAAW,MAAM,SACpB;AAAA,SAEJ;AAAA;AAAA,EAEJ;AAEJ;;;AC7DA,OAAkB;AAClB,SAAS,cAAAK,aAAY,kBAAAC,uBAAsB;AAE3C,OAAkB;AAClB,SAAS,iBAAiB;AAC1B,YAAY,sBAAsB;AAClC,SAAS,cAAc;AACvB,SAAS,oBAAoB;AA2BjB,SACE,OAAAC,MADF,QAAAC,aAAA;AAvBL,SAAS,UAA4D;AAAA,EAC1E;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAGG;AACD,QAAM,cAAcC,gBAAiC;AACrD,QAAM,aAAa,QAAQ;AAE3B,SACE,gBAAAF;AAAA,IAACG;AAAA,IAAA;AAAA,MACC,SAAS,WAAW;AAAA,MACpB;AAAA,MACA,QAAQ,CAAC,EAAE,OAAO,WAAW,MAAM;AACjC,cAAM,OAAO,MAAM,QAAQ,IAAI,KAAK,MAAM,KAAY,IAAI;AAE1D,eACE,gBAAAF,MAAC,SAAI,WAAW,GAAG,aAAa,SAAS,GACvC;AAAA,0BAAAA,MAAC,SAAI,WAAU,qCACb;AAAA,4BAAAD,KAAC,WAAM,SAAS,MAAgB,WAAU,oCACvC,iBACH;AAAA,YACC,aACC,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,MAAK;AAAA,gBACL,SAAS,MAAM,WAAW,WAAW,IAAW;AAAA,gBAChD,WAAU;AAAA,gBACX;AAAA;AAAA,YAED;AAAA,aAEJ;AAAA,UACA,gBAAAC,MAAkB,uBAAjB,EACC;AAAA,4BAAAD,KAAkB,0BAAjB,EAAyB,SAAO,MAC/B,0BAAAC;AAAA,cAAC;AAAA;AAAA,gBACC,MAAK;AAAA,gBACL,WAAW;AAAA,kBACT;AAAA,kBACA,CAAC,QAAQ;AAAA,gBACX;AAAA,gBAEA;AAAA,kCAAAD,KAAC,gBAAa,WAAU,WAAU;AAAA,kBACjC,OAAO,OAAO,MAAM,KAAK,IAAI;AAAA;AAAA;AAAA,YAChC,GACF;AAAA,YACA,gBAAAA,KAAkB,yBAAjB,EACC,0BAAAA;AAAA,cAAkB;AAAA,cAAjB;AAAA,gBACC,OAAM;AAAA,gBACN,WAAU;AAAA,gBAEV,0BAAAA;AAAA,kBAAC;AAAA;AAAA,oBACC,MAAK;AAAA,oBACL,UAAU;AAAA,oBACV,UAAU,CAAC,MAAM,MAAM,SAAS,CAAC;AAAA,oBACjC,WAAU;AAAA;AAAA,gBACZ;AAAA;AAAA,YACF,GACF;AAAA,aACF;AAAA,UACC,eACC,gBAAAA,KAAC,OAAE,WAAU,iCAAiC,uBAAY;AAAA,UAE3D,WAAW,SACV,gBAAAA,KAAC,OAAE,WAAU,wCACV,qBAAW,MAAM,SACpB;AAAA,WAEJ;AAAA,MAEJ;AAAA;AAAA,EACF;AAEJ;;;ACxFA,OAAkB;AAClB,SAAS,cAAAI,aAAY,kBAAAC,uBAAsB;AAE3C,OAAkB;AAClB,YAAY,qBAAqB;AAmCnB,gBAAAC,MAGA,QAAAC,aAHA;AA/BP,SAAS,YAA8D;AAAA,EAC5E;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,MAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAO;AAAA,EACP;AACF,GAMG;AACD,QAAM,cAAcC,gBAAiC;AACrD,QAAM,aAAa,QAAQ;AAE3B,SACE,gBAAAF;AAAA,IAACG;AAAA,IAAA;AAAA,MACC,SAAS,WAAW;AAAA,MACpB;AAAA,MACA,QAAQ,CAAC,EAAE,OAAO,WAAW,MAAM;AACjC,cAAM,QAAQ,MAAM,UAAU,SAAa,MAAM,QAAmB;AAEpE,eACE,gBAAAF,MAAC,SAAI,WAAW,GAAG,aAAa,SAAS,GACvC;AAAA,0BAAAA,MAAC,SAAI,WAAU,qCACb;AAAA,4BAAAD,KAAC,WAAM,SAAS,MAAgB,WAAU,oCACvC,iBACH;AAAA,YACA,gBAAAC,MAAC,SAAI,WAAU,2BACb;AAAA,8BAAAD,KAAC,UAAK,WAAU,iCAAiC,iBAAM;AAAA,cACtD,aACC,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,MAAK;AAAA,kBACL,SAAS,MAAM,WAAW,WAAW,IAAW;AAAA,kBAChD,WAAU;AAAA,kBACX;AAAA;AAAA,cAED;AAAA,eAEJ;AAAA,aACF;AAAA,UACA,gBAAAC;AAAA,YAAiB;AAAA,YAAhB;AAAA,cACC,OAAO,CAAC,KAAK;AAAA,cACb,eAAe,CAAC,CAAC,GAAG,MAAM,MAAM,SAAS,GAAG;AAAA,cAC5C;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA,WAAU;AAAA,cAEV;AAAA,gCAAAD,KAAiB,uBAAhB,EAAsB,WAAU,yEAC/B,0BAAAA,KAAiB,uBAAhB,EAAsB,WAAU,8BAA6B,GAChE;AAAA,gBACA,gBAAAA,KAAiB,uBAAhB,EAAsB,WAAU,uNAAsN;AAAA;AAAA;AAAA,UACzP;AAAA,UACC,eACC,gBAAAA,KAAC,OAAE,WAAU,iCAAiC,uBAAY;AAAA,UAE3D,WAAW,SACV,gBAAAA,KAAC,OAAE,WAAU,wCACV,qBAAW,MAAM,SACpB;AAAA,WAEJ;AAAA,MAEJ;AAAA;AAAA,EACF;AAEJ;;;AClFA,OAAkB;AAClB,SAAS,cAAAI,aAAY,kBAAAC,uBAAsB;AAE3C,OAAkB;AAClB,YAAYC,uBAAsB;AAClC,SAAS,eAAe;AACxB,SAAS,SAAAC,QAAO,gBAAgB,SAAS;AA0C7B,SACE,OAAAC,MADF,QAAAC,aAAA;AAtCL,SAAS,iBAEd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd;AACF,GAIG;AACD,QAAM,cAAcC,gBAAiC;AACrD,QAAM,aAAa,QAAQ;AAE3B,SACE,gBAAAF;AAAA,IAACG;AAAA,IAAA;AAAA,MACC,SAAS,WAAW;AAAA,MACpB;AAAA,MACA,QAAQ,CAAC,EAAE,OAAO,WAAW,MAAM;AACjC,cAAM,WAAqB,MAAM,QAAQ,MAAM,KAAK,IAChD,MAAM,QACN,CAAC;AAEL,cAAM,SAAS,CAAC,QAAgB;AAC9B,gBAAM,OAAO,SAAS,SAAS,GAAG,IAC9B,SAAS,OAAO,CAAC,MAAM,MAAM,GAAG,IAChC,CAAC,GAAG,UAAU,GAAG;AACrB,gBAAM,SAAS,IAAI;AAAA,QACrB;AAEA,eACE,gBAAAF,MAAC,SAAI,WAAW,GAAG,aAAa,SAAS,GACvC;AAAA,0BAAAA,MAAC,SAAI,WAAU,qCACb;AAAA,4BAAAD,KAAC,WAAM,WAAU,oCACd,iBACH;AAAA,YACC,aACC,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,MAAK;AAAA,gBACL,SAAS,MAAM,WAAW,WAAW,IAAW;AAAA,gBAChD,WAAU;AAAA,gBACX;AAAA;AAAA,YAED;AAAA,aAEJ;AAAA,UACA,gBAAAC,MAAkB,wBAAjB,EACC;AAAA,4BAAAD,KAAkB,2BAAjB,EAAyB,SAAO,MAC/B,0BAAAC;AAAA,cAAC;AAAA;AAAA,gBACC,MAAK;AAAA,gBACL,MAAK;AAAA,gBACL;AAAA,gBACA,WAAW;AAAA,kBACT;AAAA,kBACA,CAAC,SAAS,UAAU;AAAA,gBACtB;AAAA,gBAEA;AAAA,kCAAAD,KAAC,SAAI,WAAU,wBACZ,mBAAS,SACN,SAAS,IAAI,CAAC,QACZ,gBAAAC;AAAA,oBAAC;AAAA;AAAA,sBAEC,WAAU;AAAA,sBAET;AAAA,gCAAQ,KAAK,CAAC,MAAM,EAAE,UAAU,GAAG,GAAG,SAAS;AAAA,wBAChD,gBAAAD;AAAA,0BAAC;AAAA;AAAA,4BACC,SAAS,CAAC,MAAM;AACd,gCAAE,gBAAgB;AAClB,qCAAO,GAAG;AAAA,4BACZ;AAAA,4BACA,WAAU;AAAA,4BAEV,0BAAAA,KAAC,KAAE,WAAU,WAAU;AAAA;AAAA,wBACzB;AAAA;AAAA;AAAA,oBAZK;AAAA,kBAaP,CACD,IACD,aACN;AAAA,kBACA,gBAAAA,KAAC,kBAAe,WAAU,oCAAmC;AAAA;AAAA;AAAA,YAC/D,GACF;AAAA,YACA,gBAAAA,KAAkB,0BAAjB,EACC,0BAAAA;AAAA,cAAkB;AAAA,cAAjB;AAAA,gBACC,OAAM;AAAA,gBACN,WAAU;AAAA,gBAEV,0BAAAC,MAAC,WACC;AAAA,kCAAAD,KAAC,SAAI,WAAU,mCACb,0BAAAA;AAAA,oBAAC,QAAQ;AAAA,oBAAR;AAAA,sBACC,aAAY;AAAA,sBACZ,WAAU;AAAA;AAAA,kBACZ,GACF;AAAA,kBACA,gBAAAC,MAAC,QAAQ,MAAR,EAAa,WAAU,qCACtB;AAAA,oCAAAD,KAAC,QAAQ,OAAR,EAAc,WAAU,4BAA2B,+BAEpD;AAAA,oBACA,gBAAAA,KAAC,QAAQ,OAAR,EACE,kBAAQ,IAAI,CAAC,WACZ,gBAAAC;AAAA,sBAAC,QAAQ;AAAA,sBAAR;AAAA,wBAEC,OAAO,OAAO;AAAA,wBACd,UAAU,MAAM,OAAO,OAAO,KAAK;AAAA,wBACnC,WAAU;AAAA,wBAEV;AAAA,0CAAAD;AAAA,4BAACI;AAAA,4BAAA;AAAA,8BACC,WAAW;AAAA,gCACT;AAAA,gCACA,SAAS,SAAS,OAAO,KAAK,IAC1B,gBACA;AAAA,8BACN;AAAA;AAAA,0BACF;AAAA,0BACC,OAAO;AAAA;AAAA;AAAA,sBAbH,OAAO;AAAA,oBAcd,CACD,GACH;AAAA,qBACF;AAAA,mBACF;AAAA;AAAA,YACF,GACF;AAAA,aACF;AAAA,UACC,eACC,gBAAAJ,KAAC,OAAE,WAAU,iCAAiC,uBAAY;AAAA,UAE3D,WAAW,SACV,gBAAAA,KAAC,OAAE,WAAU,wCACV,qBAAW,MAAM,SACpB;AAAA,WAEJ;AAAA,MAEJ;AAAA;AAAA,EACF;AAEJ;;;ATzHI,gBAAAK,aAAA;AAdG,SAAS,WACd,QACA;AACA,QAAM,OAAO,CAAC;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,MAME,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MAMA;AAAA,MACA;AAAA,MACA;AAAA,MAEC;AAAA;AAAA,EACH;AAEF,OAAK,cAAc;AAEnB,QAAM,kBAAkB,CACtB,UACG,gBAAAA,MAAC,aAAoB,GAAG,OAAO;AACpC,kBAAgB,cAAc;AAE9B,QAAM,sBAAsB,CAC1B,UACG,gBAAAA,MAAC,aAAoB,GAAG,OAAO;AACpC,sBAAoB,cAAc;AAElC,QAAM,sBAAsB,CAC1B,UACG,gBAAAA,MAAC,iBAAwB,GAAG,OAAO;AACxC,sBAAoB,cAAc;AAElC,QAAM,oBAAoB,CACxB,UACG,gBAAAA,MAAC,eAAsB,GAAG,OAAO;AACtC,oBAAkB,cAAc;AAEhC,QAAM,oBAAoB,CACxB,UACG,gBAAAA,MAAC,eAA8B,GAAG,OAAO;AAC9C,oBAAkB,cAAc;AAEhC,QAAM,sBAAsB,CAC1B,UACG,gBAAAA,MAAC,iBAAwB,GAAG,OAAO;AACxC,sBAAoB,cAAc;AAElC,QAAM,kBAAkB,CACtB,UACG,gBAAAA,MAAC,aAAoB,GAAG,OAAO;AACpC,kBAAgB,cAAc;AAE9B,QAAM,oBAAoB,CACxB,UACG,gBAAAA,MAAC,eAAsB,GAAG,OAAO;AACtC,oBAAkB,cAAc;AAEhC,QAAM,yBAAyB,CAC7B,UACG,gBAAAA,MAAC,oBAA2B,GAAG,OAAO;AAC3C,yBAAuB,cAAc;AAErC,SAAO;AAAA,IACL;AAAA,IACA,WAAW;AAAA,IACX,eAAe;AAAA,IACf,eAAe;AAAA,IACf,aAAa;AAAA,IACb,aAAa;AAAA,IACb,eAAe;AAAA,IACf,WAAW;AAAA,IACX,aAAa;AAAA,IACb,kBAAkB;AAAA,EACpB;AACF;;;AUvGA,SAAS,WAAAC,gBAAe;AACxB,SAAS,mBAAmB;AAIrB,SAAS,iBAA8D;AAAA,EAC5E;AAAA,EACA;AACF,GAGG;AACD,SAAOA,SAAkD;AAAA,IACvD,UAAU,YAAY,MAAM;AAAA,IAC5B;AAAA,EACF,CAAC;AACH;","names":["jsx","jsxs","Controller","useFormContext","jsx","jsxs","useFormContext","Controller","Controller","useFormContext","jsx","jsxs","useFormContext","Controller","Controller","useFormContext","jsx","jsxs","useFormContext","Controller","Controller","useFormContext","Check","jsx","jsxs","useFormContext","Controller","Check","Controller","useFormContext","jsx","jsxs","useFormContext","Controller","Controller","useFormContext","jsx","jsxs","useFormContext","Controller","Controller","useFormContext","PopoverPrimitive","Check","jsx","jsxs","useFormContext","Controller","Check","jsx","useForm"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@liam-michel/validated-form",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "A type-safe form library built on React Hook Form and Zod",
5
5
  "license": "MIT",
6
6
  "type": "module",