@saas-ui/forms 3.0.0-next.2 → 3.0.0-next.21

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/CHANGELOG.md CHANGED
@@ -1,5 +1,154 @@
1
1
  # @saas-ui/forms
2
2
 
3
+ ## 3.0.0-next.21
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [b48ad37]
8
+ - @saas-ui/react@3.0.0-next.21
9
+
10
+ ## 3.0.0-next.20
11
+
12
+ ### Minor Changes
13
+
14
+ - f18c762: useForm now supports standard schema, with support for zod, valibot, arktype and more.
15
+
16
+ ### Patch Changes
17
+
18
+ - Updated dependencies [729b57d]
19
+ - @saas-ui/react@3.0.0-next.20
20
+
21
+ ## 3.0.0-next.19
22
+
23
+ ### Patch Changes
24
+
25
+ - Updated dependencies
26
+ - @saas-ui/react@3.0.0-next.19
27
+
28
+ ## 3.0.0-next.18
29
+
30
+ ### Patch Changes
31
+
32
+ - Updated dependencies
33
+ - @saas-ui/react@3.0.0-next.18
34
+
35
+ ## 3.0.0-next.17
36
+
37
+ ### Patch Changes
38
+
39
+ - Updated dependencies [d87c2ac]
40
+ - @saas-ui/react@3.0.0-next.17
41
+ - @saas-ui/core@3.0.0-next.4
42
+
43
+ ## 3.0.0-next.16
44
+
45
+ ### Patch Changes
46
+
47
+ - @saas-ui/core@3.0.0-next.3
48
+ - @saas-ui/react@3.0.0-next.16
49
+
50
+ ## 3.0.0-next.15
51
+
52
+ ### Patch Changes
53
+
54
+ - Updated dependencies [d4fb186]
55
+ - Updated dependencies [a169eb7]
56
+ - Updated dependencies [d4fb186]
57
+ - @saas-ui/react@3.0.0-next.15
58
+
59
+ ## 3.0.0-next.14
60
+
61
+ ### Minor Changes
62
+
63
+ - 546dca1: BREAKING: Form onSubmit prop moved to useForm, Form onSubmit now accepts the native onSubmit handler and will override the build in form handler.
64
+ - 546dca1: BREAKING: Form onError moved to useForm and renamed to onInvalid
65
+
66
+ ### Patch Changes
67
+
68
+ - Updated dependencies [78d7999]
69
+ - Updated dependencies [042ec4f]
70
+ - @saas-ui/react@3.0.0-next.14
71
+
72
+ ## 3.0.0-next.13
73
+
74
+ ### Patch Changes
75
+
76
+ - Updated dependencies [f995ba3]
77
+ - @saas-ui/react@3.0.0-next.13
78
+
79
+ ## 3.0.0-next.12
80
+
81
+ ### Patch Changes
82
+
83
+ - 2afe09f: Fixed missing ref prop on form field type
84
+ - Updated dependencies [2afe09f]
85
+ - @saas-ui/react@3.0.0-next.12
86
+
87
+ ## 3.0.0-next.11
88
+
89
+ ### Patch Changes
90
+
91
+ - Updated dependencies [dae627e]
92
+ - @saas-ui/core@3.0.0-next.2
93
+ - @saas-ui/react@3.0.0-next.11
94
+
95
+ ## 3.0.0-next.10
96
+
97
+ ### Patch Changes
98
+
99
+ - Updated dependencies
100
+ - @saas-ui/react@3.0.0-next.10
101
+
102
+ ## 3.0.0-next.9
103
+
104
+ ### Patch Changes
105
+
106
+ - Updated dependencies
107
+ - @saas-ui/react@3.0.0-next.9
108
+
109
+ ## 3.0.0-next.8
110
+
111
+ ### Patch Changes
112
+
113
+ - Updated dependencies
114
+ - @saas-ui/react@3.0.0-next.8
115
+
116
+ ## 3.0.0-next.7
117
+
118
+ ### Patch Changes
119
+
120
+ - Updated dependencies
121
+ - @saas-ui/react@3.0.0-next.7
122
+
123
+ ## 3.0.0-next.6
124
+
125
+ ### Patch Changes
126
+
127
+ - Updated dependencies
128
+ - @saas-ui/react@3.0.0-next.6
129
+
130
+ ## 3.0.0-next.5
131
+
132
+ ### Patch Changes
133
+
134
+ - Updated dependencies
135
+ - @saas-ui/react@3.0.0-next.5
136
+
137
+ ## 3.0.0-next.4
138
+
139
+ ### Patch Changes
140
+
141
+ - Updated dependencies [e86d242]
142
+ - @saas-ui/react@3.0.0-next.4
143
+
144
+ ## 3.0.0-next.3
145
+
146
+ ### Patch Changes
147
+
148
+ - Updated dependencies [860649d]
149
+ - @saas-ui/react@3.0.0-next.3
150
+ - @saas-ui/core@3.0.0-next.1
151
+
3
152
  ## 3.0.0-next.2
4
153
 
5
154
  ### Patch Changes
package/dist/index.d.mts CHANGED
@@ -4,7 +4,7 @@ import { SimpleGridProps, RecipeProps, InputProps, SystemStyleObject, TextareaPr
4
4
  import { MaybeRenderProp } from '@saas-ui/core/utils';
5
5
  import * as react_hook_form from 'react-hook-form';
6
6
  import { FieldValues, FieldPath, UseFormReturn as UseFormReturn$2, UseFieldArrayReturn, UseFormProps as UseFormProps$1, WatchObserver, SubmitHandler, SubmitErrorHandler, ResolverOptions, ResolverResult, RegisterOptions, useForm as useForm$1, DefaultValues, FormProviderProps as FormProviderProps$1 } from 'react-hook-form';
7
- export { ArrayPath, BatchFieldArrayUpdate, BrowserNativeObject, ChangeHandler, Control, Controller, ControllerFieldState, ControllerProps, ControllerRenderProps, CriteriaMode, CustomElement, DeepMap, DeepPartial, DeepPartialSkipArrayKey, DeepRequired, DefaultValues, DelayCallback, EmptyObject, ErrorOption, EventType, ExtractObjects, FieldArray, FieldArrayMethodProps, FieldArrayPath, FieldArrayPathValue, FieldArrayWithId, Field as FieldDef, FieldElement, FieldError, FieldErrors, FieldErrorsImpl, FieldName, FieldNamesMarkedBoolean, FieldPath, FieldPathByValue, FieldPathValue, FieldPathValues, FieldRefs, FieldValue, FieldValues, FormProviderProps, FormState, FormStateProxy, FormStateSubjectRef, GetIsDirty, InternalFieldErrors, InternalFieldName, InternalNameSet, IsAny, IsFlatObject, KeepStateOptions, LiteralUnion, Message, Mode, MultipleFieldErrors, Names, NativeFieldValue, NestedValue, NonUndefined, Noop, Primitive, ReadFormState, Ref, RefCallBack, RegisterOptions, Resolver, ResolverError, ResolverOptions, ResolverResult, ResolverSuccess, SetFieldValue, SetValueConfig, Subjects, SubmitErrorHandler, SubmitHandler, TriggerConfig, UnpackNestedValue, UseControllerProps, UseControllerReturn, UseFieldArrayProps, UseFieldArrayReturn, UseFormClearErrors, UseFormGetValues, UseFormHandleSubmit, UseFormRegister, UseFormRegisterReturn, UseFormReset, UseFormResetField, UseFormSetError, UseFormSetFocus, UseFormSetValue, UseFormStateProps, UseFormStateReturn, UseFormTrigger, UseFormUnregister, UseFormWatch, UseWatchProps, Validate, ValidateResult, ValidationMode, ValidationRule, ValidationValue, ValidationValueMessage, WatchInternal, WatchObserver, appendErrors, useController, useFieldArray, useFormState, useWatch } from 'react-hook-form';
7
+ export { ArrayPath, BatchFieldArrayUpdate, BrowserNativeObject, ChangeHandler, Control, Controller, ControllerFieldState, ControllerProps, ControllerRenderProps, CriteriaMode, CustomElement, DeepMap, DeepPartial, DeepPartialSkipArrayKey, DeepRequired, DefaultValues, DelayCallback, EmptyObject, ErrorOption, EventType, ExtractObjects, FieldArray, FieldArrayMethodProps, FieldArrayPath, FieldArrayPathValue, FieldArrayWithId, Field as FieldDef, FieldElement, FieldError, FieldErrors, FieldErrorsImpl, FieldName, FieldNamesMarkedBoolean, FieldPath, FieldPathByValue, FieldPathValue, FieldPathValues, FieldRefs, FieldValue, FieldValues, FormProviderProps, FormState, FormStateProxy, FormStateSubjectRef, GetIsDirty, InternalFieldErrors, InternalFieldName, InternalNameSet, IsAny, IsFlatObject, KeepStateOptions, LiteralUnion, Message, Mode, MultipleFieldErrors, Names, NativeFieldValue, NestedValue, NonUndefined, Noop, Primitive, ReadFormState, Ref, RefCallBack, RegisterOptions, Resolver, ResolverError, ResolverOptions, ResolverResult, ResolverSuccess, SetFieldValue, SetValueConfig, Subjects, SubmitErrorHandler, SubmitHandler, TriggerConfig, UseControllerProps, UseControllerReturn, UseFieldArrayProps, UseFieldArrayReturn, UseFormClearErrors, UseFormGetValues, UseFormHandleSubmit, UseFormRegister, UseFormRegisterReturn, UseFormReset, UseFormResetField, UseFormSetError, UseFormSetFocus, UseFormSetValue, UseFormStateProps, UseFormStateReturn, UseFormTrigger, UseFormUnregister, UseFormWatch, UseWatchProps, Validate, ValidateResult, ValidationMode, ValidationRule, ValidationValue, ValidationValueMessage, WatchInternal, WatchObserver, appendErrors, useController, useFieldArray, useFormState, useWatch } from 'react-hook-form';
8
8
  import { CheckboxProps } from '@saas-ui/react/checkbox';
9
9
  import { NumberInputProps } from '@saas-ui/react/number-input';
10
10
  import { PasswordInputProps } from '@saas-ui/react/password-input';
@@ -15,6 +15,7 @@ import { SwitchProps } from '@saas-ui/react/switch';
15
15
  import * as react_jsx_runtime from 'react/jsx-runtime';
16
16
  import { UseStepperReturn } from '@saas-ui/core';
17
17
  import { ButtonProps } from '@saas-ui/react/button';
18
+ import { StandardSchemaV1 } from '@standard-schema/spec';
18
19
  import { z } from 'zod';
19
20
 
20
21
  interface FormLayoutOptions {
@@ -38,13 +39,13 @@ interface InputFieldProps extends InputProps {
38
39
  startElement?: React__default.ReactNode;
39
40
  endElement?: React__default.ReactNode;
40
41
  }
41
- declare const InputField: React__default.FC<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof InputFieldProps> & InputFieldProps>;
42
+ declare const InputField: React__default.ForwardRefExoticComponent<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof InputFieldProps> & InputFieldProps & React__default.RefAttributes<HTMLInputElement>>;
42
43
  interface NumberInputFieldProps extends NumberInputProps {
43
44
  type: 'number';
44
45
  }
45
46
  interface TextareaFieldProps extends TextareaProps {
46
47
  }
47
- declare const TextareaField: React__default.FC<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof TextareaFieldProps> & TextareaFieldProps>;
48
+ declare const TextareaField: React__default.ForwardRefExoticComponent<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof TextareaFieldProps> & TextareaFieldProps & React__default.RefAttributes<HTMLTextAreaElement>>;
48
49
  interface SwitchFieldProps extends SwitchProps {
49
50
  type: 'switch';
50
51
  }
@@ -75,19 +76,19 @@ interface PinFieldProps extends Omit<PinInputProps, 'type' | 'value' | 'onChange
75
76
  onChange?: (value: string) => void;
76
77
  }
77
78
  declare const defaultFieldTypes: {
78
- text: React__default.FC<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof InputFieldProps> & InputFieldProps>;
79
- email: React__default.FC<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof InputFieldProps> & InputFieldProps>;
80
- url: React__default.FC<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof InputFieldProps> & InputFieldProps>;
81
- phone: React__default.FC<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof InputFieldProps> & InputFieldProps>;
82
- time: React__default.FC<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof InputFieldProps> & InputFieldProps>;
83
- number: React__default.FC<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof NumberInputFieldProps> & NumberInputFieldProps>;
84
- pin: React__default.FC<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof PinFieldProps> & PinFieldProps>;
85
- checkbox: React__default.FC<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof CheckboxFieldProps> & CheckboxFieldProps>;
86
- radio: React__default.FC<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof RadioFieldProps> & RadioFieldProps>;
87
- password: React__default.FC<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof PasswordInputProps> & PasswordInputProps>;
88
- select: React__default.FC<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof SelectFieldProps<boolean>> & SelectFieldProps<boolean>>;
89
- switch: React__default.FC<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof SwitchFieldProps> & SwitchFieldProps>;
90
- textarea: React__default.FC<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof TextareaFieldProps> & TextareaFieldProps>;
79
+ text: React__default.ForwardRefExoticComponent<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof InputFieldProps> & InputFieldProps & React__default.RefAttributes<HTMLInputElement>>;
80
+ email: React__default.ForwardRefExoticComponent<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof InputFieldProps> & InputFieldProps & React__default.RefAttributes<HTMLInputElement>>;
81
+ url: React__default.ForwardRefExoticComponent<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof InputFieldProps> & InputFieldProps & React__default.RefAttributes<HTMLInputElement>>;
82
+ phone: React__default.ForwardRefExoticComponent<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof InputFieldProps> & InputFieldProps & React__default.RefAttributes<HTMLInputElement>>;
83
+ time: React__default.ForwardRefExoticComponent<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof InputFieldProps> & InputFieldProps & React__default.RefAttributes<HTMLInputElement>>;
84
+ number: React__default.ForwardRefExoticComponent<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof NumberInputFieldProps> & NumberInputFieldProps & React__default.RefAttributes<HTMLInputElement>>;
85
+ pin: React__default.ForwardRefExoticComponent<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof PinFieldProps> & PinFieldProps & React__default.RefAttributes<HTMLInputElement>>;
86
+ checkbox: React__default.ForwardRefExoticComponent<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof CheckboxFieldProps> & CheckboxFieldProps & React__default.RefAttributes<HTMLInputElement>>;
87
+ radio: React__default.ForwardRefExoticComponent<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof RadioFieldProps> & RadioFieldProps & React__default.RefAttributes<HTMLInputElement>>;
88
+ password: React__default.ForwardRefExoticComponent<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof PasswordInputProps> & PasswordInputProps & React__default.RefAttributes<HTMLInputElement>>;
89
+ select: React__default.ForwardRefExoticComponent<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof SelectFieldProps<boolean>> & SelectFieldProps<boolean> & React__default.RefAttributes<HTMLDivElement>>;
90
+ switch: React__default.ForwardRefExoticComponent<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof SwitchFieldProps> & SwitchFieldProps & React__default.RefAttributes<HTMLInputElement>>;
91
+ textarea: React__default.ForwardRefExoticComponent<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof TextareaFieldProps> & TextareaFieldProps & React__default.RefAttributes<HTMLTextAreaElement>>;
91
92
  };
92
93
  type DefaultFields = typeof defaultFieldTypes;
93
94
 
@@ -386,6 +387,26 @@ interface BaseFieldProps<TFieldValues extends FieldValues = FieldValues, TName e
386
387
  * The input placeholder
387
388
  */
388
389
  placeholder?: string;
390
+ /**
391
+ * Whether the field is invalid
392
+ */
393
+ invalid?: boolean;
394
+ /**
395
+ * Whether the field is required
396
+ */
397
+ required?: boolean;
398
+ /**
399
+ * Whether the field is disabled
400
+ */
401
+ disabled?: boolean;
402
+ /**
403
+ * Whether the field is read-only
404
+ */
405
+ readOnly?: boolean;
406
+ /**
407
+ * Orientation of the field
408
+ */
409
+ orientation?: 'horizontal' | 'vertical';
389
410
  /**
390
411
  * React children
391
412
  */
@@ -554,27 +575,33 @@ type FormType<FieldDefs, ExtraProps = object, ExtraFieldProps extends object = o
554
575
  };
555
576
  declare function createForm<FieldDefs, TGetBaseField extends GetBaseField<any> = GetBaseField<any>>({ resolver, fieldResolver, fields, getBaseField, }?: CreateFormProps<FieldDefs, TGetBaseField>): FormType<FieldDefs, object, TGetBaseField extends GetBaseField<infer ExtraFieldProps extends object> ? ExtraFieldProps : object, object>;
556
577
 
557
- interface UseFormProps<TFieldValues extends FieldValues, TContext extends object> extends UseFormProps$1<TFieldValues, TContext> {
578
+ interface UseFormProps<TFieldValues extends FieldValues, TContext = any, TTransformedValues = TFieldValues> extends UseFormProps$1<TFieldValues, TContext, TTransformedValues> {
579
+ schema?: StandardSchemaV1<TFieldValues, TTransformedValues>;
580
+ onSubmit: SubmitHandler<TTransformedValues>;
581
+ onInvalid?: SubmitErrorHandler<FieldValues>;
558
582
  }
559
- interface UseFormReturn$1<TFieldValues extends FieldValues, TContext extends object> extends UseFormReturn$2<TFieldValues, TContext> {
583
+ interface UseFormReturn$1<TFieldValues extends FieldValues = FieldValues, TContext = any, TTransformedValues = TFieldValues> extends UseFormReturn$2<TFieldValues, TContext, TTransformedValues> {
560
584
  Form: React.FC<Omit<FormProps<TFieldValues, TContext>, 'form'>>;
561
585
  Field: React.FC<FieldProps<TFieldValues>>;
562
586
  DisplayIf: React.FC<DisplayIfProps<TFieldValues>>;
563
587
  ArrayField: React.FC<ArrayFieldProps<TFieldValues> & React.RefAttributes<UseArrayFieldReturn>>;
564
588
  ObjectField: React.FC<ObjectFieldProps<TFieldValues>>;
565
589
  }
566
- declare function useForm<TFieldValues extends FieldValues, TContext extends object>(props?: UseFormProps<TFieldValues, TContext>): UseFormReturn$1<TFieldValues, TContext>;
567
- interface FormProps<TFieldValues extends FieldValues = FieldValues, TContext extends object = object> extends HTMLChakraProps<'form'> {
590
+ declare function useForm<TFieldValues extends FieldValues = FieldValues, TContext = any, TTransformedValues = TFieldValues>(props: UseFormProps<TFieldValues, TContext, TTransformedValues>): UseFormReturn$1<TFieldValues, TContext, TTransformedValues>;
591
+ interface FormProps<TFieldValues extends FieldValues = FieldValues, TContext = any, TTransformedValues = TFieldValues> extends HTMLChakraProps<'form'> {
568
592
  children: React.ReactNode;
569
- form: ReturnType<typeof useForm$1<TFieldValues, TContext>>;
570
- onSubmit: (data: any) => void;
571
- onError?: (errors: any) => void;
593
+ form: ReturnType<typeof useForm$1<TFieldValues, TContext, TTransformedValues>>;
572
594
  }
573
595
  interface UseZodFormProps<TSchema extends z.AnyZodObject | z.ZodEffects<z.AnyZodObject> = z.AnyZodObject, TFieldValues extends InferObjectSchema<TSchema> = InferObjectSchema<TSchema>, TContext extends object = object> extends Omit<UseFormProps$1<TFieldValues, TContext>, 'defaultValues'> {
574
596
  schema: TSchema;
575
- defaultValues?: DefaultValues<InferObjectSchema<TSchema>> | AsyncDefaultValues<InferObjectSchema<TSchema>>;
597
+ onSubmit: SubmitHandler<TFieldValues>;
598
+ onInvalid?: SubmitErrorHandler<FieldValues>;
599
+ defaultValues?: DefaultValues<TFieldValues> | AsyncDefaultValues<TFieldValues>;
576
600
  }
577
- declare function useZodForm<TSchema extends z.AnyZodObject | z.ZodEffects<z.AnyZodObject> = z.AnyZodObject, TFieldValues extends InferObjectSchema<TSchema> = InferObjectSchema<TSchema>, TContext extends object = object>(props: UseZodFormProps<TSchema, TFieldValues, TContext>): UseFormReturn$1<InferObjectSchema<TSchema>, TContext>;
601
+ /**
602
+ * @deprecated Use useForm instead, which supports standard schema out of the box.
603
+ */
604
+ declare function useZodForm<TSchema extends z.AnyZodObject | z.ZodEffects<z.AnyZodObject> = z.AnyZodObject, TFieldValues extends InferObjectSchema<TSchema> = InferObjectSchema<TSchema>, TContext extends object = object>(props: UseZodFormProps<TSchema, TFieldValues, TContext>): UseFormReturn$1<TFieldValues, TContext, TFieldValues>;
578
605
  type InferObjectSchema<T extends z.ZodTypeAny | z.ZodEffects<z.ZodTypeAny>> = T extends z.ZodEffects<infer TSchema> ? z.infer<TSchema> : z.infer<T>;
579
606
  type AsyncDefaultValues<TFieldValues> = (payload?: unknown) => Promise<TFieldValues>;
580
607
 
@@ -649,11 +676,12 @@ declare const useFormContext: <TFieldValues extends FieldValues = FieldValues, T
649
676
  formState: react_hook_form.FormState<TFieldValues>;
650
677
  resetField: react_hook_form.UseFormResetField<TFieldValues>;
651
678
  reset: react_hook_form.UseFormReset<TFieldValues>;
652
- handleSubmit: react_hook_form.UseFormHandleSubmit<TFieldValues, undefined>;
679
+ handleSubmit: react_hook_form.UseFormHandleSubmit<TFieldValues, TFieldValues>;
653
680
  unregister: react_hook_form.UseFormUnregister<TFieldValues>;
654
- control: react_hook_form.Control<TFieldValues, TContext>;
681
+ control: react_hook_form.Control<TFieldValues, TContext, TFieldValues>;
655
682
  register: react_hook_form.UseFormRegister<TFieldValues>;
656
683
  setFocus: react_hook_form.UseFormSetFocus<TFieldValues>;
684
+ subscribe: react_hook_form.UseFromSubscribe<TFieldValues>;
657
685
  };
658
686
  type UseFormReturn<TFieldValues extends FieldValues = FieldValues, TContext = any, TSchema = any> = ReturnType<typeof useFormContext<TFieldValues, TContext, TSchema>>;
659
687
  declare const FormProvider: <TFieldValues extends FieldValues = FieldValues, TContext = any, TSchema = any>(props: FormProviderProps<TFieldValues, TContext, TSchema>) => react_jsx_runtime.JSX.Element;
@@ -707,7 +735,7 @@ interface ControlProps {
707
735
  * @param options.isControlled Set this to true if this is a controlled field.
708
736
  * @param options.hideLabel Hide the field label, for example for the checkbox field.
709
737
  */
710
- declare const createField: <TType = unknown, TProps extends object = object>(component: ForwardRefRenderFunction<TType, PropsWithoutRef<TProps & ControlProps>>, options?: CreateFieldOptions) => React__default.FC<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof TProps> & TProps>;
738
+ declare const createField: <TType = unknown, TProps extends object = object>(component: ForwardRefRenderFunction<TType, PropsWithoutRef<TProps & ControlProps>>, options?: CreateFieldOptions) => React__default.ForwardRefExoticComponent<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof TProps> & TProps & React__default.RefAttributes<TType>>;
711
739
 
712
740
  /**
713
741
  * Form component.
package/dist/index.d.ts CHANGED
@@ -4,7 +4,7 @@ import { SimpleGridProps, RecipeProps, InputProps, SystemStyleObject, TextareaPr
4
4
  import { MaybeRenderProp } from '@saas-ui/core/utils';
5
5
  import * as react_hook_form from 'react-hook-form';
6
6
  import { FieldValues, FieldPath, UseFormReturn as UseFormReturn$2, UseFieldArrayReturn, UseFormProps as UseFormProps$1, WatchObserver, SubmitHandler, SubmitErrorHandler, ResolverOptions, ResolverResult, RegisterOptions, useForm as useForm$1, DefaultValues, FormProviderProps as FormProviderProps$1 } from 'react-hook-form';
7
- export { ArrayPath, BatchFieldArrayUpdate, BrowserNativeObject, ChangeHandler, Control, Controller, ControllerFieldState, ControllerProps, ControllerRenderProps, CriteriaMode, CustomElement, DeepMap, DeepPartial, DeepPartialSkipArrayKey, DeepRequired, DefaultValues, DelayCallback, EmptyObject, ErrorOption, EventType, ExtractObjects, FieldArray, FieldArrayMethodProps, FieldArrayPath, FieldArrayPathValue, FieldArrayWithId, Field as FieldDef, FieldElement, FieldError, FieldErrors, FieldErrorsImpl, FieldName, FieldNamesMarkedBoolean, FieldPath, FieldPathByValue, FieldPathValue, FieldPathValues, FieldRefs, FieldValue, FieldValues, FormProviderProps, FormState, FormStateProxy, FormStateSubjectRef, GetIsDirty, InternalFieldErrors, InternalFieldName, InternalNameSet, IsAny, IsFlatObject, KeepStateOptions, LiteralUnion, Message, Mode, MultipleFieldErrors, Names, NativeFieldValue, NestedValue, NonUndefined, Noop, Primitive, ReadFormState, Ref, RefCallBack, RegisterOptions, Resolver, ResolverError, ResolverOptions, ResolverResult, ResolverSuccess, SetFieldValue, SetValueConfig, Subjects, SubmitErrorHandler, SubmitHandler, TriggerConfig, UnpackNestedValue, UseControllerProps, UseControllerReturn, UseFieldArrayProps, UseFieldArrayReturn, UseFormClearErrors, UseFormGetValues, UseFormHandleSubmit, UseFormRegister, UseFormRegisterReturn, UseFormReset, UseFormResetField, UseFormSetError, UseFormSetFocus, UseFormSetValue, UseFormStateProps, UseFormStateReturn, UseFormTrigger, UseFormUnregister, UseFormWatch, UseWatchProps, Validate, ValidateResult, ValidationMode, ValidationRule, ValidationValue, ValidationValueMessage, WatchInternal, WatchObserver, appendErrors, useController, useFieldArray, useFormState, useWatch } from 'react-hook-form';
7
+ export { ArrayPath, BatchFieldArrayUpdate, BrowserNativeObject, ChangeHandler, Control, Controller, ControllerFieldState, ControllerProps, ControllerRenderProps, CriteriaMode, CustomElement, DeepMap, DeepPartial, DeepPartialSkipArrayKey, DeepRequired, DefaultValues, DelayCallback, EmptyObject, ErrorOption, EventType, ExtractObjects, FieldArray, FieldArrayMethodProps, FieldArrayPath, FieldArrayPathValue, FieldArrayWithId, Field as FieldDef, FieldElement, FieldError, FieldErrors, FieldErrorsImpl, FieldName, FieldNamesMarkedBoolean, FieldPath, FieldPathByValue, FieldPathValue, FieldPathValues, FieldRefs, FieldValue, FieldValues, FormProviderProps, FormState, FormStateProxy, FormStateSubjectRef, GetIsDirty, InternalFieldErrors, InternalFieldName, InternalNameSet, IsAny, IsFlatObject, KeepStateOptions, LiteralUnion, Message, Mode, MultipleFieldErrors, Names, NativeFieldValue, NestedValue, NonUndefined, Noop, Primitive, ReadFormState, Ref, RefCallBack, RegisterOptions, Resolver, ResolverError, ResolverOptions, ResolverResult, ResolverSuccess, SetFieldValue, SetValueConfig, Subjects, SubmitErrorHandler, SubmitHandler, TriggerConfig, UseControllerProps, UseControllerReturn, UseFieldArrayProps, UseFieldArrayReturn, UseFormClearErrors, UseFormGetValues, UseFormHandleSubmit, UseFormRegister, UseFormRegisterReturn, UseFormReset, UseFormResetField, UseFormSetError, UseFormSetFocus, UseFormSetValue, UseFormStateProps, UseFormStateReturn, UseFormTrigger, UseFormUnregister, UseFormWatch, UseWatchProps, Validate, ValidateResult, ValidationMode, ValidationRule, ValidationValue, ValidationValueMessage, WatchInternal, WatchObserver, appendErrors, useController, useFieldArray, useFormState, useWatch } from 'react-hook-form';
8
8
  import { CheckboxProps } from '@saas-ui/react/checkbox';
9
9
  import { NumberInputProps } from '@saas-ui/react/number-input';
10
10
  import { PasswordInputProps } from '@saas-ui/react/password-input';
@@ -15,6 +15,7 @@ import { SwitchProps } from '@saas-ui/react/switch';
15
15
  import * as react_jsx_runtime from 'react/jsx-runtime';
16
16
  import { UseStepperReturn } from '@saas-ui/core';
17
17
  import { ButtonProps } from '@saas-ui/react/button';
18
+ import { StandardSchemaV1 } from '@standard-schema/spec';
18
19
  import { z } from 'zod';
19
20
 
20
21
  interface FormLayoutOptions {
@@ -38,13 +39,13 @@ interface InputFieldProps extends InputProps {
38
39
  startElement?: React__default.ReactNode;
39
40
  endElement?: React__default.ReactNode;
40
41
  }
41
- declare const InputField: React__default.FC<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof InputFieldProps> & InputFieldProps>;
42
+ declare const InputField: React__default.ForwardRefExoticComponent<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof InputFieldProps> & InputFieldProps & React__default.RefAttributes<HTMLInputElement>>;
42
43
  interface NumberInputFieldProps extends NumberInputProps {
43
44
  type: 'number';
44
45
  }
45
46
  interface TextareaFieldProps extends TextareaProps {
46
47
  }
47
- declare const TextareaField: React__default.FC<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof TextareaFieldProps> & TextareaFieldProps>;
48
+ declare const TextareaField: React__default.ForwardRefExoticComponent<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof TextareaFieldProps> & TextareaFieldProps & React__default.RefAttributes<HTMLTextAreaElement>>;
48
49
  interface SwitchFieldProps extends SwitchProps {
49
50
  type: 'switch';
50
51
  }
@@ -75,19 +76,19 @@ interface PinFieldProps extends Omit<PinInputProps, 'type' | 'value' | 'onChange
75
76
  onChange?: (value: string) => void;
76
77
  }
77
78
  declare const defaultFieldTypes: {
78
- text: React__default.FC<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof InputFieldProps> & InputFieldProps>;
79
- email: React__default.FC<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof InputFieldProps> & InputFieldProps>;
80
- url: React__default.FC<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof InputFieldProps> & InputFieldProps>;
81
- phone: React__default.FC<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof InputFieldProps> & InputFieldProps>;
82
- time: React__default.FC<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof InputFieldProps> & InputFieldProps>;
83
- number: React__default.FC<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof NumberInputFieldProps> & NumberInputFieldProps>;
84
- pin: React__default.FC<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof PinFieldProps> & PinFieldProps>;
85
- checkbox: React__default.FC<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof CheckboxFieldProps> & CheckboxFieldProps>;
86
- radio: React__default.FC<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof RadioFieldProps> & RadioFieldProps>;
87
- password: React__default.FC<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof PasswordInputProps> & PasswordInputProps>;
88
- select: React__default.FC<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof SelectFieldProps<boolean>> & SelectFieldProps<boolean>>;
89
- switch: React__default.FC<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof SwitchFieldProps> & SwitchFieldProps>;
90
- textarea: React__default.FC<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof TextareaFieldProps> & TextareaFieldProps>;
79
+ text: React__default.ForwardRefExoticComponent<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof InputFieldProps> & InputFieldProps & React__default.RefAttributes<HTMLInputElement>>;
80
+ email: React__default.ForwardRefExoticComponent<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof InputFieldProps> & InputFieldProps & React__default.RefAttributes<HTMLInputElement>>;
81
+ url: React__default.ForwardRefExoticComponent<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof InputFieldProps> & InputFieldProps & React__default.RefAttributes<HTMLInputElement>>;
82
+ phone: React__default.ForwardRefExoticComponent<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof InputFieldProps> & InputFieldProps & React__default.RefAttributes<HTMLInputElement>>;
83
+ time: React__default.ForwardRefExoticComponent<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof InputFieldProps> & InputFieldProps & React__default.RefAttributes<HTMLInputElement>>;
84
+ number: React__default.ForwardRefExoticComponent<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof NumberInputFieldProps> & NumberInputFieldProps & React__default.RefAttributes<HTMLInputElement>>;
85
+ pin: React__default.ForwardRefExoticComponent<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof PinFieldProps> & PinFieldProps & React__default.RefAttributes<HTMLInputElement>>;
86
+ checkbox: React__default.ForwardRefExoticComponent<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof CheckboxFieldProps> & CheckboxFieldProps & React__default.RefAttributes<HTMLInputElement>>;
87
+ radio: React__default.ForwardRefExoticComponent<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof RadioFieldProps> & RadioFieldProps & React__default.RefAttributes<HTMLInputElement>>;
88
+ password: React__default.ForwardRefExoticComponent<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof PasswordInputProps> & PasswordInputProps & React__default.RefAttributes<HTMLInputElement>>;
89
+ select: React__default.ForwardRefExoticComponent<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof SelectFieldProps<boolean>> & SelectFieldProps<boolean> & React__default.RefAttributes<HTMLDivElement>>;
90
+ switch: React__default.ForwardRefExoticComponent<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof SwitchFieldProps> & SwitchFieldProps & React__default.RefAttributes<HTMLInputElement>>;
91
+ textarea: React__default.ForwardRefExoticComponent<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof TextareaFieldProps> & TextareaFieldProps & React__default.RefAttributes<HTMLTextAreaElement>>;
91
92
  };
92
93
  type DefaultFields = typeof defaultFieldTypes;
93
94
 
@@ -386,6 +387,26 @@ interface BaseFieldProps<TFieldValues extends FieldValues = FieldValues, TName e
386
387
  * The input placeholder
387
388
  */
388
389
  placeholder?: string;
390
+ /**
391
+ * Whether the field is invalid
392
+ */
393
+ invalid?: boolean;
394
+ /**
395
+ * Whether the field is required
396
+ */
397
+ required?: boolean;
398
+ /**
399
+ * Whether the field is disabled
400
+ */
401
+ disabled?: boolean;
402
+ /**
403
+ * Whether the field is read-only
404
+ */
405
+ readOnly?: boolean;
406
+ /**
407
+ * Orientation of the field
408
+ */
409
+ orientation?: 'horizontal' | 'vertical';
389
410
  /**
390
411
  * React children
391
412
  */
@@ -554,27 +575,33 @@ type FormType<FieldDefs, ExtraProps = object, ExtraFieldProps extends object = o
554
575
  };
555
576
  declare function createForm<FieldDefs, TGetBaseField extends GetBaseField<any> = GetBaseField<any>>({ resolver, fieldResolver, fields, getBaseField, }?: CreateFormProps<FieldDefs, TGetBaseField>): FormType<FieldDefs, object, TGetBaseField extends GetBaseField<infer ExtraFieldProps extends object> ? ExtraFieldProps : object, object>;
556
577
 
557
- interface UseFormProps<TFieldValues extends FieldValues, TContext extends object> extends UseFormProps$1<TFieldValues, TContext> {
578
+ interface UseFormProps<TFieldValues extends FieldValues, TContext = any, TTransformedValues = TFieldValues> extends UseFormProps$1<TFieldValues, TContext, TTransformedValues> {
579
+ schema?: StandardSchemaV1<TFieldValues, TTransformedValues>;
580
+ onSubmit: SubmitHandler<TTransformedValues>;
581
+ onInvalid?: SubmitErrorHandler<FieldValues>;
558
582
  }
559
- interface UseFormReturn$1<TFieldValues extends FieldValues, TContext extends object> extends UseFormReturn$2<TFieldValues, TContext> {
583
+ interface UseFormReturn$1<TFieldValues extends FieldValues = FieldValues, TContext = any, TTransformedValues = TFieldValues> extends UseFormReturn$2<TFieldValues, TContext, TTransformedValues> {
560
584
  Form: React.FC<Omit<FormProps<TFieldValues, TContext>, 'form'>>;
561
585
  Field: React.FC<FieldProps<TFieldValues>>;
562
586
  DisplayIf: React.FC<DisplayIfProps<TFieldValues>>;
563
587
  ArrayField: React.FC<ArrayFieldProps<TFieldValues> & React.RefAttributes<UseArrayFieldReturn>>;
564
588
  ObjectField: React.FC<ObjectFieldProps<TFieldValues>>;
565
589
  }
566
- declare function useForm<TFieldValues extends FieldValues, TContext extends object>(props?: UseFormProps<TFieldValues, TContext>): UseFormReturn$1<TFieldValues, TContext>;
567
- interface FormProps<TFieldValues extends FieldValues = FieldValues, TContext extends object = object> extends HTMLChakraProps<'form'> {
590
+ declare function useForm<TFieldValues extends FieldValues = FieldValues, TContext = any, TTransformedValues = TFieldValues>(props: UseFormProps<TFieldValues, TContext, TTransformedValues>): UseFormReturn$1<TFieldValues, TContext, TTransformedValues>;
591
+ interface FormProps<TFieldValues extends FieldValues = FieldValues, TContext = any, TTransformedValues = TFieldValues> extends HTMLChakraProps<'form'> {
568
592
  children: React.ReactNode;
569
- form: ReturnType<typeof useForm$1<TFieldValues, TContext>>;
570
- onSubmit: (data: any) => void;
571
- onError?: (errors: any) => void;
593
+ form: ReturnType<typeof useForm$1<TFieldValues, TContext, TTransformedValues>>;
572
594
  }
573
595
  interface UseZodFormProps<TSchema extends z.AnyZodObject | z.ZodEffects<z.AnyZodObject> = z.AnyZodObject, TFieldValues extends InferObjectSchema<TSchema> = InferObjectSchema<TSchema>, TContext extends object = object> extends Omit<UseFormProps$1<TFieldValues, TContext>, 'defaultValues'> {
574
596
  schema: TSchema;
575
- defaultValues?: DefaultValues<InferObjectSchema<TSchema>> | AsyncDefaultValues<InferObjectSchema<TSchema>>;
597
+ onSubmit: SubmitHandler<TFieldValues>;
598
+ onInvalid?: SubmitErrorHandler<FieldValues>;
599
+ defaultValues?: DefaultValues<TFieldValues> | AsyncDefaultValues<TFieldValues>;
576
600
  }
577
- declare function useZodForm<TSchema extends z.AnyZodObject | z.ZodEffects<z.AnyZodObject> = z.AnyZodObject, TFieldValues extends InferObjectSchema<TSchema> = InferObjectSchema<TSchema>, TContext extends object = object>(props: UseZodFormProps<TSchema, TFieldValues, TContext>): UseFormReturn$1<InferObjectSchema<TSchema>, TContext>;
601
+ /**
602
+ * @deprecated Use useForm instead, which supports standard schema out of the box.
603
+ */
604
+ declare function useZodForm<TSchema extends z.AnyZodObject | z.ZodEffects<z.AnyZodObject> = z.AnyZodObject, TFieldValues extends InferObjectSchema<TSchema> = InferObjectSchema<TSchema>, TContext extends object = object>(props: UseZodFormProps<TSchema, TFieldValues, TContext>): UseFormReturn$1<TFieldValues, TContext, TFieldValues>;
578
605
  type InferObjectSchema<T extends z.ZodTypeAny | z.ZodEffects<z.ZodTypeAny>> = T extends z.ZodEffects<infer TSchema> ? z.infer<TSchema> : z.infer<T>;
579
606
  type AsyncDefaultValues<TFieldValues> = (payload?: unknown) => Promise<TFieldValues>;
580
607
 
@@ -649,11 +676,12 @@ declare const useFormContext: <TFieldValues extends FieldValues = FieldValues, T
649
676
  formState: react_hook_form.FormState<TFieldValues>;
650
677
  resetField: react_hook_form.UseFormResetField<TFieldValues>;
651
678
  reset: react_hook_form.UseFormReset<TFieldValues>;
652
- handleSubmit: react_hook_form.UseFormHandleSubmit<TFieldValues, undefined>;
679
+ handleSubmit: react_hook_form.UseFormHandleSubmit<TFieldValues, TFieldValues>;
653
680
  unregister: react_hook_form.UseFormUnregister<TFieldValues>;
654
- control: react_hook_form.Control<TFieldValues, TContext>;
681
+ control: react_hook_form.Control<TFieldValues, TContext, TFieldValues>;
655
682
  register: react_hook_form.UseFormRegister<TFieldValues>;
656
683
  setFocus: react_hook_form.UseFormSetFocus<TFieldValues>;
684
+ subscribe: react_hook_form.UseFromSubscribe<TFieldValues>;
657
685
  };
658
686
  type UseFormReturn<TFieldValues extends FieldValues = FieldValues, TContext = any, TSchema = any> = ReturnType<typeof useFormContext<TFieldValues, TContext, TSchema>>;
659
687
  declare const FormProvider: <TFieldValues extends FieldValues = FieldValues, TContext = any, TSchema = any>(props: FormProviderProps<TFieldValues, TContext, TSchema>) => react_jsx_runtime.JSX.Element;
@@ -707,7 +735,7 @@ interface ControlProps {
707
735
  * @param options.isControlled Set this to true if this is a controlled field.
708
736
  * @param options.hideLabel Hide the field label, for example for the checkbox field.
709
737
  */
710
- declare const createField: <TType = unknown, TProps extends object = object>(component: ForwardRefRenderFunction<TType, PropsWithoutRef<TProps & ControlProps>>, options?: CreateFieldOptions) => React__default.FC<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof TProps> & TProps>;
738
+ declare const createField: <TType = unknown, TProps extends object = object>(component: ForwardRefRenderFunction<TType, PropsWithoutRef<TProps & ControlProps>>, options?: CreateFieldOptions) => React__default.ForwardRefExoticComponent<Omit<BaseFieldProps<react_hook_form.FieldValues, string>, keyof TProps> & TProps & React__default.RefAttributes<TType>>;
711
739
 
712
740
  /**
713
741
  * Form component.