@zayne-labs/ui-react 0.8.10 → 0.8.12
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/css/preset.css +1 -0
- package/css/style.css +2 -0
- package/css/theme.css +0 -14
- package/css/utilities.css +7 -0
- package/dist/esm/{chunk-L2SROZYQ.js → chunk-2P3P5AXH.js} +5 -4
- package/dist/esm/chunk-2P3P5AXH.js.map +1 -0
- package/dist/esm/common/await/index.d.ts +5 -5
- package/dist/esm/common/await/index.js +4 -6
- package/dist/esm/common/await/index.js.map +1 -1
- package/dist/esm/common/error-boundary/index.d.ts +3 -3
- package/dist/esm/common/for/index.d.ts +6 -6
- package/dist/esm/common/show/index.d.ts +8 -8
- package/dist/esm/common/slot/index.d.ts +3 -3
- package/dist/esm/common/slot/index.js +1 -1
- package/dist/esm/common/suspense-with-boundary/index.d.ts +2 -2
- package/dist/esm/common/switch/index.d.ts +7 -7
- package/dist/esm/common/teleport/index.d.ts +4 -4
- package/dist/esm/common/teleport/index.js +11 -10
- package/dist/esm/common/teleport/index.js.map +1 -1
- package/dist/esm/ui/card/index.d.ts +8 -8
- package/dist/esm/ui/card/index.js +2 -2
- package/dist/esm/ui/card/index.js.map +1 -1
- package/dist/esm/ui/carousel/index.d.ts +11 -11
- package/dist/esm/ui/drag-scroll/index.d.ts +9 -298
- package/dist/esm/ui/drag-scroll/index.js +9 -7
- package/dist/esm/ui/drag-scroll/index.js.map +1 -1
- package/dist/esm/ui/drop-zone/index.d.ts +3 -3
- package/dist/esm/ui/drop-zone/index.js +7 -11
- package/dist/esm/ui/drop-zone/index.js.map +1 -1
- package/dist/esm/ui/form/index.d.ts +35 -35
- package/dist/esm/ui/form/index.js +6 -6
- package/dist/esm/ui/form/index.js.map +1 -1
- package/dist/style.css +467 -0
- package/package.json +12 -14
- package/dist/esm/chunk-L2SROZYQ.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as React$1 from 'react';
|
|
2
2
|
import { DiscriminatedRenderProps, InferProps, PolymorphicProps } from '@zayne-labs/toolkit-react/utils';
|
|
3
3
|
import { UseFormStateReturn, ControllerProps, Control, FieldPath, ControllerRenderProps, ControllerFieldState, RegisterOptions, UseFormReturn, FieldPathValues, FieldPathValue } from 'react-hook-form';
|
|
4
4
|
export { useFormContext as useFormRootContext } from 'react-hook-form';
|
|
@@ -18,11 +18,11 @@ type FormFieldContextProps = DiscriminatedRenderProps<(contextValue: FieldContex
|
|
|
18
18
|
declare const useStrictFormFieldContext: () => FieldContextValue;
|
|
19
19
|
|
|
20
20
|
type FieldValues = Record<string, unknown>;
|
|
21
|
-
type FormRootProps<TFieldValues extends FieldValues> =
|
|
22
|
-
children:
|
|
21
|
+
type FormRootProps<TFieldValues extends FieldValues> = React$1.ComponentPropsWithoutRef<"form"> & {
|
|
22
|
+
children: React$1.ReactNode;
|
|
23
23
|
methods: UseFormReturn<TFieldValues>;
|
|
24
24
|
};
|
|
25
|
-
declare function FormRoot<TValues extends FieldValues>(props: FormRootProps<TValues>):
|
|
25
|
+
declare function FormRoot<TValues extends FieldValues>(props: FormRootProps<TValues>): React$1.JSX.Element;
|
|
26
26
|
type FormFieldProps<TControl, TFieldValues extends FieldValues> = (TControl extends Control<infer TValues> ? {
|
|
27
27
|
control?: never;
|
|
28
28
|
name: FieldPath<TValues>;
|
|
@@ -32,39 +32,39 @@ type FormFieldProps<TControl, TFieldValues extends FieldValues> = (TControl exte
|
|
|
32
32
|
}) & ((InferProps<"div"> & {
|
|
33
33
|
withWrapper?: true;
|
|
34
34
|
}) | {
|
|
35
|
-
children:
|
|
35
|
+
children: React$1.ReactNode;
|
|
36
36
|
className?: never;
|
|
37
37
|
withWrapper: false;
|
|
38
38
|
});
|
|
39
|
-
declare function FormField<TControl, TFieldValues extends FieldValues = FieldValues>(props: FormFieldProps<TControl, TFieldValues>):
|
|
40
|
-
declare function FormControlledField<TFieldValues extends FieldValues>(props: ControllerProps<TFieldValues>):
|
|
39
|
+
declare function FormField<TControl, TFieldValues extends FieldValues = FieldValues>(props: FormFieldProps<TControl, TFieldValues>): React$1.JSX.Element;
|
|
40
|
+
declare function FormControlledField<TFieldValues extends FieldValues>(props: ControllerProps<TFieldValues>): React$1.JSX.Element;
|
|
41
41
|
type FormFieldControllerRenderFn = (props: {
|
|
42
42
|
field: Omit<ControllerRenderProps, "value"> & {
|
|
43
43
|
value: never;
|
|
44
44
|
};
|
|
45
45
|
fieldState: ControllerFieldState;
|
|
46
46
|
formState: UseFormStateReturn<never>;
|
|
47
|
-
}) =>
|
|
47
|
+
}) => React$1.ReactElement;
|
|
48
48
|
type FormFieldControllerProps = Omit<ControllerProps<FieldValues, FieldPath<FieldValues>>, "control" | "name" | "render"> & {
|
|
49
49
|
render: FormFieldControllerRenderFn;
|
|
50
50
|
};
|
|
51
|
-
declare function FormFieldController(props: FormFieldControllerProps):
|
|
52
|
-
declare function FormFieldContext(props: FormFieldContextProps):
|
|
53
|
-
declare function FormLabel(props: InferProps<"label">):
|
|
54
|
-
declare function FormInputGroup(props: InferProps<"div">):
|
|
51
|
+
declare function FormFieldController(props: FormFieldControllerProps): React$1.JSX.Element;
|
|
52
|
+
declare function FormFieldContext(props: FormFieldContextProps): React$1.ReactNode;
|
|
53
|
+
declare function FormLabel(props: InferProps<"label">): React$1.JSX.Element;
|
|
54
|
+
declare function FormInputGroup(props: InferProps<"div">): React$1.JSX.Element;
|
|
55
55
|
type FormSideItemProps = {
|
|
56
|
-
children?:
|
|
56
|
+
children?: React$1.ReactNode;
|
|
57
57
|
className?: string;
|
|
58
58
|
};
|
|
59
|
-
declare function FormInputLeftItem<TElement extends
|
|
59
|
+
declare function FormInputLeftItem<TElement extends React$1.ElementType = "span">(props: PolymorphicProps<TElement, FormSideItemProps>): React$1.JSX.Element;
|
|
60
60
|
declare namespace FormInputLeftItem {
|
|
61
61
|
var slotSymbol: symbol;
|
|
62
62
|
}
|
|
63
|
-
declare function FormInputRightItem<TElement extends
|
|
63
|
+
declare function FormInputRightItem<TElement extends React$1.ElementType = "span">(props: PolymorphicProps<TElement, FormSideItemProps>): React$1.JSX.Element;
|
|
64
64
|
declare namespace FormInputRightItem {
|
|
65
65
|
var slotSymbol: symbol;
|
|
66
66
|
}
|
|
67
|
-
type FormInputPrimitiveProps<TFieldValues extends FieldValues = FieldValues> = Omit<
|
|
67
|
+
type FormInputPrimitiveProps<TFieldValues extends FieldValues = FieldValues> = Omit<React$1.ComponentPropsWithRef<"input">, "children"> & {
|
|
68
68
|
classNames?: {
|
|
69
69
|
error?: string;
|
|
70
70
|
eyeIcon?: string;
|
|
@@ -76,7 +76,7 @@ type FormInputPrimitiveProps<TFieldValues extends FieldValues = FieldValues> = O
|
|
|
76
76
|
name?: FieldPath<TFieldValues>;
|
|
77
77
|
withEyeIcon?: boolean;
|
|
78
78
|
};
|
|
79
|
-
type FormTextAreaPrimitiveProps<TFieldValues extends FieldValues = FieldValues> =
|
|
79
|
+
type FormTextAreaPrimitiveProps<TFieldValues extends FieldValues = FieldValues> = React$1.ComponentPropsWithRef<"textarea"> & {
|
|
80
80
|
classNames?: {
|
|
81
81
|
base?: string;
|
|
82
82
|
error?: string;
|
|
@@ -85,7 +85,7 @@ type FormTextAreaPrimitiveProps<TFieldValues extends FieldValues = FieldValues>
|
|
|
85
85
|
fieldState?: FieldState;
|
|
86
86
|
name?: FieldPath<TFieldValues>;
|
|
87
87
|
};
|
|
88
|
-
type FormSelectPrimitiveProps<TFieldValues extends FieldValues = FieldValues> =
|
|
88
|
+
type FormSelectPrimitiveProps<TFieldValues extends FieldValues = FieldValues> = React$1.ComponentPropsWithRef<"select"> & {
|
|
89
89
|
classNames?: {
|
|
90
90
|
base?: string;
|
|
91
91
|
error?: string;
|
|
@@ -96,13 +96,13 @@ type FormSelectPrimitiveProps<TFieldValues extends FieldValues = FieldValues> =
|
|
|
96
96
|
};
|
|
97
97
|
declare function FormInputPrimitive<TFieldValues extends FieldValues>(props: FormInputPrimitiveProps<TFieldValues> & {
|
|
98
98
|
rules?: RegisterOptions;
|
|
99
|
-
}):
|
|
99
|
+
}): React$1.JSX.Element;
|
|
100
100
|
declare function FormTextAreaPrimitive<TFieldValues extends FieldValues>(props: FormTextAreaPrimitiveProps<TFieldValues> & {
|
|
101
101
|
rules?: RegisterOptions;
|
|
102
|
-
}):
|
|
102
|
+
}): React$1.JSX.Element;
|
|
103
103
|
declare function FormSelectPrimitive<TFieldValues extends FieldValues>(props: FormSelectPrimitiveProps<TFieldValues> & {
|
|
104
104
|
rules?: RegisterOptions;
|
|
105
|
-
}):
|
|
105
|
+
}): React$1.JSX.Element;
|
|
106
106
|
type PrimitivePropsToOmit = "control" | "formState" | "name";
|
|
107
107
|
type FormInputProps = Omit<FormInputPrimitiveProps, PrimitivePropsToOmit> & {
|
|
108
108
|
rules?: RegisterOptions;
|
|
@@ -120,10 +120,10 @@ type CombinedFormInputProps = (FormSelectProps & {
|
|
|
120
120
|
}) | FormInputProps;
|
|
121
121
|
declare function FormInput(props: CombinedFormInputProps & {
|
|
122
122
|
rules?: RegisterOptions;
|
|
123
|
-
}):
|
|
124
|
-
declare function FormTextArea(props: FormTextAreaProps):
|
|
125
|
-
declare function FormSelect(props: FormSelectProps):
|
|
126
|
-
declare function FormDescription(props: InferProps<"p">):
|
|
123
|
+
}): React$1.JSX.Element;
|
|
124
|
+
declare function FormTextArea(props: FormTextAreaProps): React$1.JSX.Element;
|
|
125
|
+
declare function FormSelect(props: FormSelectProps): React$1.JSX.Element;
|
|
126
|
+
declare function FormDescription(props: InferProps<"p">): React$1.JSX.Element;
|
|
127
127
|
type ErrorMessageRenderProps = {
|
|
128
128
|
className: string;
|
|
129
129
|
"data-index": number;
|
|
@@ -131,7 +131,7 @@ type ErrorMessageRenderProps = {
|
|
|
131
131
|
"data-scope": "form";
|
|
132
132
|
"data-slot": "form-error-message";
|
|
133
133
|
id: string | undefined;
|
|
134
|
-
onAnimationEnd?:
|
|
134
|
+
onAnimationEnd?: React$1.ReactEventHandler<HTMLElement>;
|
|
135
135
|
};
|
|
136
136
|
type ErrorMessageRenderState = {
|
|
137
137
|
errorMessage: string;
|
|
@@ -141,7 +141,7 @@ type ErrorMessageRenderState = {
|
|
|
141
141
|
type ErrorMessageRenderFn = (context: {
|
|
142
142
|
props: ErrorMessageRenderProps;
|
|
143
143
|
state: ErrorMessageRenderState;
|
|
144
|
-
}) =>
|
|
144
|
+
}) => React$1.ReactNode;
|
|
145
145
|
type FormErrorMessagePrimitiveProps<TFieldValues extends FieldValues> = DiscriminatedRenderProps<ErrorMessageRenderFn> & {
|
|
146
146
|
className?: string;
|
|
147
147
|
classNames?: {
|
|
@@ -162,10 +162,10 @@ type FormErrorMessagePrimitiveProps<TFieldValues extends FieldValues> = Discrimi
|
|
|
162
162
|
type FormErrorMessagePrimitiveType = {
|
|
163
163
|
<TFieldValues extends FieldValues>(props: Extract<FormErrorMessagePrimitiveProps<TFieldValues>, {
|
|
164
164
|
type?: "regular";
|
|
165
|
-
}>):
|
|
165
|
+
}>): React$1.ReactNode;
|
|
166
166
|
<TFieldValues extends FieldValues>(props: Extract<FormErrorMessagePrimitiveProps<TFieldValues>, {
|
|
167
167
|
type: "root";
|
|
168
|
-
}>):
|
|
168
|
+
}>): React$1.ReactNode;
|
|
169
169
|
};
|
|
170
170
|
declare const FormErrorMessagePrimitive: FormErrorMessagePrimitiveType;
|
|
171
171
|
type FormErrorMessageProps<TControl, TFieldValues extends FieldValues> = (TControl extends Control<infer TValues> ? {
|
|
@@ -184,26 +184,26 @@ type FormErrorMessageProps<TControl, TFieldValues extends FieldValues> = (TContr
|
|
|
184
184
|
errorField: string;
|
|
185
185
|
type: "root";
|
|
186
186
|
};
|
|
187
|
-
declare function FormErrorMessage<TControl, TFieldValues extends FieldValues = FieldValues>(props: FormErrorMessageProps<TControl, TFieldValues>):
|
|
187
|
+
declare function FormErrorMessage<TControl, TFieldValues extends FieldValues = FieldValues>(props: FormErrorMessageProps<TControl, TFieldValues>): React$1.JSX.Element;
|
|
188
188
|
type FormSubmitProps = InferProps<"button"> & {
|
|
189
189
|
asChild?: boolean;
|
|
190
190
|
};
|
|
191
|
-
declare function FormSubmit<TElement extends
|
|
191
|
+
declare function FormSubmit<TElement extends React$1.ElementType = "button">(props: PolymorphicProps<TElement, FormSubmitProps>): React$1.JSX.Element;
|
|
192
192
|
type GetFieldValue<TFieldPathOrPaths, TFieldValues extends FieldValues> = TFieldPathOrPaths extends Array<FieldPath<TFieldValues>> ? FieldPathValues<TFieldValues, TFieldPathOrPaths> : TFieldPathOrPaths extends FieldPath<TFieldValues> ? FieldPathValue<TFieldValues, TFieldPathOrPaths> : unknown;
|
|
193
193
|
type FormSubscribeToFieldValueRenderFn<TFieldValues extends FieldValues, TFieldPathOrPaths> = (props: {
|
|
194
194
|
value: GetFieldValue<TFieldPathOrPaths, TFieldValues>;
|
|
195
|
-
}) =>
|
|
195
|
+
}) => React$1.ReactNode;
|
|
196
196
|
type FormSubscribeToFieldValueProps<TFieldValues extends FieldValues, TFieldPathOrPaths> = DiscriminatedRenderProps<FormSubscribeToFieldValueRenderFn<TFieldValues, TFieldPathOrPaths>> & {
|
|
197
197
|
control: Control<TFieldValues>;
|
|
198
198
|
name?: TFieldPathOrPaths;
|
|
199
199
|
};
|
|
200
|
-
declare function FormSubscribeToFieldValue<TFieldValues extends FieldValues, const TFieldPathOrPaths extends Array<FieldPath<TFieldValues>> | FieldPath<TFieldValues>>(props: FormSubscribeToFieldValueProps<TFieldValues, TFieldPathOrPaths>):
|
|
201
|
-
type FormSubscribeToFormStateRenderFn<TFieldValues extends FieldValues> = (props: UseFormStateReturn<TFieldValues>) =>
|
|
200
|
+
declare function FormSubscribeToFieldValue<TFieldValues extends FieldValues, const TFieldPathOrPaths extends Array<FieldPath<TFieldValues>> | FieldPath<TFieldValues>>(props: FormSubscribeToFieldValueProps<TFieldValues, TFieldPathOrPaths>): React$1.ReactNode;
|
|
201
|
+
type FormSubscribeToFormStateRenderFn<TFieldValues extends FieldValues> = (props: UseFormStateReturn<TFieldValues>) => React$1.ReactNode;
|
|
202
202
|
type FormSubscribeToFormStateProps<TFieldValues extends FieldValues> = DiscriminatedRenderProps<FormSubscribeToFormStateRenderFn<TFieldValues>> & {
|
|
203
203
|
control?: Control<TFieldValues>;
|
|
204
204
|
name?: Array<FieldPath<TFieldValues>> | FieldPath<TFieldValues>;
|
|
205
205
|
};
|
|
206
|
-
declare function FormSubscribeToFormState<TFieldValues extends FieldValues = FieldValues>(props: FormSubscribeToFormStateProps<TFieldValues>):
|
|
206
|
+
declare function FormSubscribeToFormState<TFieldValues extends FieldValues = FieldValues>(props: FormSubscribeToFormStateProps<TFieldValues>): React$1.ReactNode;
|
|
207
207
|
|
|
208
208
|
declare namespace formParts {
|
|
209
209
|
export { FormControlledField as ControlledField, FormDescription as Description, FormErrorMessage as ErrorMessage, FormErrorMessagePrimitive as ErrorMessagePrimitive, FormField as Field, FormFieldContext as FieldContext, FormFieldController as FieldController, FormInput as Input, FormInputGroup as InputGroup, FormInputLeftItem as InputLeftItem, FormInputPrimitive as InputPrimitive, FormInputRightItem as InputRightItem, FormLabel as Label, FormRoot as Root, FormSelect as Select, FormSubmit as Submit, FormSubscribeToFieldValue as SubscribeToFieldValue, FormSubscribeToFormState as SubscribeToFormState, FormTextArea as TextArea, FormTextAreaPrimitive as TextAreaPrimitive };
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { dataAttr } from '../../chunk-DNYM6XGW.js';
|
|
2
2
|
import { cnMerge } from '../../chunk-OHG7GB7O.js';
|
|
3
3
|
import { getElementList } from '../../chunk-DW3FXTFL.js';
|
|
4
|
-
import { Slot } from '../../chunk-
|
|
4
|
+
import { Slot } from '../../chunk-2P3P5AXH.js';
|
|
5
5
|
import { __export } from '../../chunk-PZ5AY32C.js';
|
|
6
6
|
import * as React2 from 'react';
|
|
7
7
|
import { Fragment, useId, useMemo, useRef, useEffect } from 'react';
|
|
8
8
|
import { toArray } from '@zayne-labs/toolkit-core';
|
|
9
9
|
import { createCustomContext, useToggle, ContextError } from '@zayne-labs/toolkit-react';
|
|
10
|
-
import { getMultipleSlots,
|
|
10
|
+
import { getMultipleSlots, composeTwoEventHandlers, composeRefs } from '@zayne-labs/toolkit-react/utils';
|
|
11
11
|
import { defineEnum } from '@zayne-labs/toolkit-type-helpers';
|
|
12
12
|
import { useFormState, useWatch, FormProvider, Controller, useFormContext } from 'react-hook-form';
|
|
13
13
|
export { useFormContext as useFormRootContext } from 'react-hook-form';
|
|
@@ -237,7 +237,7 @@ function FormInputPrimitive(props) {
|
|
|
237
237
|
type: type === "password" && isPasswordVisible ? "text" : type,
|
|
238
238
|
className: cnMerge(
|
|
239
239
|
!inputTypesWithoutFullWith.has(type) && "flex w-full",
|
|
240
|
-
`placeholder:text-shadcn-muted-foreground
|
|
240
|
+
`focus-visible:outline-hidden placeholder:text-shadcn-muted-foreground bg-transparent
|
|
241
241
|
text-sm file:border-0 file:bg-transparent disabled:cursor-not-allowed disabled:opacity-50`,
|
|
242
242
|
className,
|
|
243
243
|
classNames?.input,
|
|
@@ -353,9 +353,9 @@ function FormInput(props) {
|
|
|
353
353
|
name,
|
|
354
354
|
...registerProps,
|
|
355
355
|
...restOfProps,
|
|
356
|
-
ref: composeRefs(
|
|
357
|
-
onChange:
|
|
358
|
-
onBlur:
|
|
356
|
+
ref: composeRefs(registerProps?.ref, ref),
|
|
357
|
+
onChange: composeTwoEventHandlers(registerProps?.onChange, onChange),
|
|
358
|
+
onBlur: composeTwoEventHandlers(registerProps?.onBlur, onBlur)
|
|
359
359
|
}
|
|
360
360
|
);
|
|
361
361
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/ui/form/form-context.ts","../../../../src/components/ui/form/icons.tsx","../../../../src/components/ui/form/form.tsx","../../../../src/components/ui/form/form-parts.ts"],"names":["React","HookFormProvider","ReactFragment","useFormState"],"mappings":"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","file":"index.js","sourcesContent":["import { ContextError, createCustomContext } from \"@zayne-labs/toolkit-react\";\nimport type { DiscriminatedRenderProps } from \"@zayne-labs/toolkit-react/utils\";\nimport {\n\ttype Control,\n\ttype UseFormReturn,\n\ttype UseFormStateReturn,\n\tuseFormContext,\n\tuseFormState,\n} from \"react-hook-form\";\nimport type { FieldValues } from \"./form\";\n\nexport const useFormRootContext = <TStrict extends boolean = true>(options: { strict?: TStrict } = {}) => {\n\tconst { strict = true } = options;\n\tconst formContext = useFormContext();\n\n\tif (strict && !(formContext as unknown)) {\n\t\tthrow new ContextError(\n\t\t\t`useFormRootContext returned \"null\". Did you forget to wrap the necessary components within FormRoot?`\n\t\t);\n\t}\n\n\treturn formContext as TStrict extends true\n\t\t? UseFormReturn<FieldValues>\n\t\t: UseFormReturn<FieldValues> | null;\n};\nexport type FieldState = {\n\terrors?: UseFormStateReturn<FieldValues>[\"errors\"];\n\tisDisabled?: boolean;\n\tisInvalid?: boolean;\n};\n\n// eslint-disable-next-line ts-eslint/no-explicit-any -- any is used here for type compatibility\nexport type AnyControl = Control<any>;\n\ntype FieldStateOptions =\n\t| {\n\t\t\tcontrol: AnyControl | undefined;\n\t\t\tname?: string;\n\t }\n\t| {\n\t\t\tcontrol?: AnyControl;\n\t\t\tname: string | undefined;\n\t };\n\nexport const useLaxFormFieldState = (options?: FieldStateOptions): FieldState => {\n\tconst { control = options?.control } = useFormRootContext({ strict: false }) ?? {};\n\tconst { name = options?.name } = useLaxFormFieldContext() ?? {};\n\n\tconst getFormState = control ? useFormState : () => ({}) as Partial<ReturnType<typeof useFormState>>;\n\n\tconst { disabled, errors } = getFormState({ control, name });\n\n\treturn { errors, isDisabled: disabled, isInvalid: Boolean(options?.name && errors?.[options.name]) };\n};\n\n// export const useStrictGetFieldState = () => {\n// \tconst { name } = useStrictFormFieldContext();\n\n// \tconst { getFieldState } = useFormRootContext();\n\n// \tconst fieldState = getFieldState(name);\n\n// \treturn fieldState;\n// };\n\nexport type FieldContextValue = {\n\tformDescriptionId: `${string}-(${string})-form-item-description`;\n\tformItemId: `${string}-(${string})-form-item`;\n\tformMessageId: `${string}-(${string})-form-item-message`;\n\tname: string;\n};\n\nexport type FormFieldContextProps = DiscriminatedRenderProps<\n\t(contextValue: FieldContextValue) => React.ReactNode\n>;\n\nexport const [StrictFormFieldProvider, useStrictFormFieldContext] = createCustomContext<FieldContextValue>(\n\t{\n\t\thookName: \"useFormFieldContext\",\n\t\tname: \"StrictFormFieldContext\",\n\t\tproviderName: \"FormField\",\n\t}\n);\n\nexport const [LaxFormFieldProvider, useLaxFormFieldContext] = createCustomContext<\n\tFieldContextValue,\n\tfalse\n>({\n\thookName: \"useLaxFormFieldContext\",\n\tname: \"LaxFormFieldContext\",\n\tproviderName: \"FormField\",\n\tstrict: false,\n});\n","import * as React from \"react\";\n\nexport const EyeIconInvisible = (props: React.SVGProps<SVGSVGElement>) => (\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" {...props}>\n\t\t<path\n\t\t\tfill=\"currentColor\"\n\t\t\td=\"M15.175 8.325q.725.725 1.063 1.65t.237 1.9q0 .375-.275.638t-.65.262t-.638-.262t-.262-.638q.125-.65-.075-1.25T13.95 9.6t-1.025-.65t-1.275-.1q-.375 0-.638-.275t-.262-.65t.263-.637t.637-.263q.95-.1 1.875.238t1.65 1.062M12 6q-.475 0-.925.037t-.9.138q-.425.075-.763-.125t-.462-.6t.088-.775t.612-.45q.575-.125 1.163-.175T12 4q3.425 0 6.263 1.8t4.337 4.85q.1.2.15.413t.05.437t-.038.438t-.137.412q-.45 1-1.112 1.875t-1.463 1.6q-.3.275-.7.225t-.65-.4t-.212-.763t.337-.687q.6-.575 1.1-1.25t.875-1.45q-1.25-2.525-3.613-4.012T12 6m0 13q-3.35 0-6.125-1.812T1.5 12.425q-.125-.2-.187-.437T1.25 11.5t.05-.475t.175-.45q.5-1 1.163-1.912T4.15 7L2.075 4.9q-.275-.3-.262-.712T2.1 3.5t.7-.275t.7.275l17 17q.275.275.288.688t-.288.712q-.275.275-.7.275t-.7-.275l-3.5-3.45q-.875.275-1.775.413T12 19M5.55 8.4q-.725.65-1.325 1.425T3.2 11.5q1.25 2.525 3.613 4.013T12 17q.5 0 .975-.062t.975-.138l-.9-.95q-.275.075-.525.113T12 16q-1.875 0-3.188-1.312T7.5 11.5q0-.275.038-.525t.112-.525zm4.2 4.2\"\n\t\t/>\n\t</svg>\n);\n\nexport const EyeIconVisible = (props: React.SVGProps<SVGSVGElement>) => (\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" {...props}>\n\t\t<path\n\t\t\tfill=\"currentColor\"\n\t\t\td=\"M12 16q1.875 0 3.188-1.312T16.5 11.5t-1.312-3.187T12 7T8.813 8.313T7.5 11.5t1.313 3.188T12 16m0-1.8q-1.125 0-1.912-.788T9.3 11.5t.788-1.912T12 8.8t1.913.788t.787 1.912t-.787 1.913T12 14.2m0 4.8q-3.35 0-6.113-1.8t-4.362-4.75q-.125-.225-.187-.462t-.063-.488t.063-.488t.187-.462q1.6-2.95 4.363-4.75T12 4t6.113 1.8t4.362 4.75q.125.225.188.463t.062.487t-.062.488t-.188.462q-1.6 2.95-4.362 4.75T12 19m0-2q2.825 0 5.188-1.487T20.8 11.5q-1.25-2.525-3.613-4.012T12 6T6.813 7.488T3.2 11.5q1.25 2.525 3.613 4.013T12 17\"\n\t\t/>\n\t</svg>\n);\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { getElementList } from \"@/components/common/for\";\nimport { Slot } from \"@/components/common/slot\";\nimport { cnMerge } from \"@/lib/utils/cn\";\nimport { dataAttr } from \"@/lib/utils/common\";\nimport { toArray } from \"@zayne-labs/toolkit-core\";\nimport { useToggle } from \"@zayne-labs/toolkit-react\";\nimport {\n\ttype DiscriminatedRenderProps,\n\ttype InferProps,\n\ttype PolymorphicProps,\n\tcomposeEventHandlers,\n\tcomposeRefs,\n\tgetMultipleSlots,\n} from \"@zayne-labs/toolkit-react/utils\";\nimport { type AnyString, defineEnum } from \"@zayne-labs/toolkit-type-helpers\";\nimport { Fragment as ReactFragment, useEffect, useId, useMemo, useRef } from \"react\";\nimport {\n\ttype Control,\n\tController,\n\ttype ControllerFieldState,\n\ttype ControllerProps,\n\ttype ControllerRenderProps,\n\ttype FieldPath,\n\ttype FieldPathValue,\n\ttype FieldPathValues,\n\tFormProvider as HookFormProvider,\n\ttype RegisterOptions,\n\ttype UseFormReturn,\n\ttype UseFormStateReturn,\n\tuseFormState,\n\tuseWatch,\n} from \"react-hook-form\";\nimport {\n\ttype FieldContextValue,\n\ttype FieldState,\n\ttype FormFieldContextProps,\n\tLaxFormFieldProvider,\n\tStrictFormFieldProvider,\n\tuseFormRootContext,\n\tuseLaxFormFieldContext,\n\tuseLaxFormFieldState,\n\tuseStrictFormFieldContext,\n} from \"./form-context\";\nimport { EyeIconInvisible, EyeIconVisible } from \"./icons\";\n\nexport type FieldValues = Record<string, unknown>;\n\ntype FormRootProps<TFieldValues extends FieldValues> = React.ComponentPropsWithoutRef<\"form\"> & {\n\tchildren: React.ReactNode;\n\tmethods: UseFormReturn<TFieldValues>;\n};\n\nexport function FormRoot<TValues extends FieldValues>(props: FormRootProps<TValues>) {\n\tconst { children, className, methods, ...restOfProps } = props;\n\n\treturn (\n\t\t<HookFormProvider {...methods}>\n\t\t\t<form\n\t\t\t\tclassName={cnMerge(\"flex flex-col\", className)}\n\t\t\t\t{...restOfProps}\n\t\t\t\tdata-scope=\"form\"\n\t\t\t\tdata-part=\"root\"\n\t\t\t\tdata-slot=\"form-root\"\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</form>\n\t\t</HookFormProvider>\n\t);\n}\n\ntype FormFieldProps<TControl, TFieldValues extends FieldValues> = (TControl extends Control<infer TValues>\n\t? {\n\t\t\tcontrol?: never;\n\t\t\tname: FieldPath<TValues>;\n\t\t}\n\t: {\n\t\t\tcontrol?: Control<TFieldValues>;\n\t\t\tname: FieldPath<TFieldValues>;\n\t\t})\n\t& (\n\t\t| (InferProps<\"div\"> & {\n\t\t\t\twithWrapper?: true;\n\t\t })\n\t\t| { children: React.ReactNode; className?: never; withWrapper: false }\n\t);\n\nexport function FormField<TControl, TFieldValues extends FieldValues = FieldValues>(\n\tprops: FormFieldProps<TControl, TFieldValues>\n) {\n\tconst { children, className, name, withWrapper = true } = props;\n\n\tconst { isDisabled, isInvalid } = useLaxFormFieldState({ name });\n\n\tconst uniqueId = useId();\n\n\tconst fieldContextValue = useMemo(\n\t\t() =>\n\t\t\t({\n\t\t\t\tformDescriptionId: `${name}-(${uniqueId})-form-item-description`,\n\t\t\t\tformItemId: `${name}-(${uniqueId})-form-item`,\n\t\t\t\tformMessageId: `${name}-(${uniqueId})-form-item-message`,\n\t\t\t\tname,\n\t\t\t}) satisfies FieldContextValue,\n\t\t[name, uniqueId]\n\t);\n\n\tconst WrapperElement = withWrapper ? \"div\" : ReactFragment;\n\n\tconst wrapperElementProps = withWrapper && {\n\t\tclassName: cnMerge(\"flex flex-col\", className),\n\t\t\"data-part\": \"field\",\n\t\t\"data-scope\": \"form\",\n\t\t\"data-slot\": \"form-field\",\n\t\t/* eslint-disable perfectionist/sort-objects -- order of attributes does not matter */\n\t\t\"data-disabled\": dataAttr(isDisabled),\n\t\t\"data-invalid\": dataAttr(isInvalid),\n\t\t/* eslint-enable perfectionist/sort-objects -- order of attributes does not matter */\n\t};\n\treturn (\n\t\t<StrictFormFieldProvider value={fieldContextValue}>\n\t\t\t<LaxFormFieldProvider value={fieldContextValue}>\n\t\t\t\t<WrapperElement {...wrapperElementProps}>{children}</WrapperElement>\n\t\t\t</LaxFormFieldProvider>\n\t\t</StrictFormFieldProvider>\n\t);\n}\n\nexport function FormControlledField<TFieldValues extends FieldValues>(\n\tprops: ControllerProps<TFieldValues>\n) {\n\tconst { name } = props;\n\n\tconst uniqueId = useId();\n\n\tconst fieldContextValue = useMemo(\n\t\t() =>\n\t\t\t({\n\t\t\t\tformDescriptionId: `${name}-(${uniqueId})-form-item-description`,\n\t\t\t\tformItemId: `${name}-(${uniqueId})-form-item`,\n\t\t\t\tformMessageId: `${name}-(${uniqueId})-form-item-message`,\n\t\t\t\tname,\n\t\t\t}) satisfies FieldContextValue,\n\t\t[name, uniqueId]\n\t);\n\n\treturn (\n\t\t<StrictFormFieldProvider value={fieldContextValue}>\n\t\t\t<LaxFormFieldProvider value={fieldContextValue}>\n\t\t\t\t<Controller {...props} />\n\t\t\t</LaxFormFieldProvider>\n\t\t</StrictFormFieldProvider>\n\t);\n}\n\ntype FormFieldControllerRenderFn = (props: {\n\tfield: Omit<ControllerRenderProps, \"value\"> & {\n\t\tvalue: never;\n\t};\n\tfieldState: ControllerFieldState;\n\tformState: UseFormStateReturn<never>;\n}) => React.ReactElement;\n\ntype FormFieldControllerProps = Omit<\n\tControllerProps<FieldValues, FieldPath<FieldValues>>,\n\t\"control\" | \"name\" | \"render\"\n> & {\n\trender: FormFieldControllerRenderFn;\n};\n\nexport function FormFieldController(props: FormFieldControllerProps) {\n\tconst { control } = useFormRootContext();\n\tconst { name } = useStrictFormFieldContext();\n\tconst { render, ...restOfProps } = props;\n\n\treturn <Controller name={name} control={control} render={render as never} {...restOfProps} />;\n}\n\nexport function FormFieldContext(props: FormFieldContextProps) {\n\tconst { children, render } = props;\n\tconst fieldContextValues = useStrictFormFieldContext();\n\n\tif (typeof children === \"function\") {\n\t\treturn children(fieldContextValues);\n\t}\n\n\treturn render(fieldContextValues);\n}\n\nexport function FormLabel(props: InferProps<\"label\">) {\n\tconst { formItemId, name } = useStrictFormFieldContext();\n\tconst { children, className, ...restOfProps } = props;\n\n\tconst { isDisabled, isInvalid } = useLaxFormFieldState({ name });\n\n\treturn (\n\t\t<label\n\t\t\tdata-scope=\"form\"\n\t\t\tdata-part=\"label\"\n\t\t\tdata-slot=\"form-label\"\n\t\t\tdata-disabled={dataAttr(isDisabled)}\n\t\t\tdata-invalid={dataAttr(isInvalid)}\n\t\t\thtmlFor={formItemId}\n\t\t\tclassName={className}\n\t\t\t{...restOfProps}\n\t\t>\n\t\t\t{children}\n\t\t</label>\n\t);\n}\n\nexport function FormInputGroup(props: InferProps<\"div\">) {\n\tconst { children, className, ...restOfProps } = props;\n\n\tconst { isDisabled, isInvalid } = useLaxFormFieldState();\n\n\tconst {\n\t\tregularChildren,\n\t\tslots: [leftItemSlot, rightItemSlot],\n\t} = getMultipleSlots(children, [FormInputLeftItem, FormInputRightItem]);\n\n\treturn (\n\t\t<div\n\t\t\tdata-scope=\"form\"\n\t\t\tdata-part=\"input-group\"\n\t\t\tdata-slot=\"form-input-group\"\n\t\t\tdata-invalid={dataAttr(isInvalid)}\n\t\t\tdata-disabled={dataAttr(isDisabled)}\n\t\t\tclassName={cnMerge(\"flex items-center justify-between gap-2\", className)}\n\t\t\t{...restOfProps}\n\t\t>\n\t\t\t{leftItemSlot}\n\t\t\t{regularChildren}\n\t\t\t{rightItemSlot}\n\t\t</div>\n\t);\n}\n\ntype FormSideItemProps = {\n\tchildren?: React.ReactNode;\n\tclassName?: string;\n};\n\nexport function FormInputLeftItem<TElement extends React.ElementType = \"span\">(\n\tprops: PolymorphicProps<TElement, FormSideItemProps>\n) {\n\tconst { as: Element = \"span\", children, className, ...restOfProps } = props;\n\n\treturn (\n\t\t<Element\n\t\t\tdata-scope=\"form\"\n\t\t\tdata-part=\"left-item\"\n\t\t\tdata-slot=\"form-left-item\"\n\t\t\tclassName={cnMerge(\"inline-flex items-center justify-center\", className)}\n\t\t\t{...restOfProps}\n\t\t>\n\t\t\t{children}\n\t\t</Element>\n\t);\n}\nFormInputLeftItem.slotSymbol = Symbol(\"input-left-item\");\n\nexport function FormInputRightItem<TElement extends React.ElementType = \"span\">(\n\tprops: PolymorphicProps<TElement, FormSideItemProps>\n) {\n\tconst { as: Element = \"span\", children, className, ...restOfProps } = props;\n\n\treturn (\n\t\t<Element\n\t\t\tdata-scope=\"form\"\n\t\t\tdata-part=\"right-item\"\n\t\t\tdata-slot=\"form-right-item\"\n\t\t\tclassName={cnMerge(\"inline-flex items-center justify-center\", className)}\n\t\t\t{...restOfProps}\n\t\t>\n\t\t\t{children}\n\t\t</Element>\n\t);\n}\nFormInputRightItem.slotSymbol = Symbol(\"input-right-item\");\n\ntype FormInputPrimitiveProps<TFieldValues extends FieldValues = FieldValues> = Omit<\n\tReact.ComponentPropsWithRef<\"input\">,\n\t\"children\"\n> & {\n\tclassNames?: { error?: string; eyeIcon?: string; input?: string; inputGroup?: string };\n\tcontrol?: Control<TFieldValues>;\n\tfieldState?: FieldState;\n\tname?: FieldPath<TFieldValues>;\n\twithEyeIcon?: boolean;\n};\n\ntype FormTextAreaPrimitiveProps<TFieldValues extends FieldValues = FieldValues> =\n\tReact.ComponentPropsWithRef<\"textarea\"> & {\n\t\tclassNames?: { base?: string; error?: string };\n\t\tcontrol?: Control<TFieldValues>;\n\t\tfieldState?: FieldState;\n\t\tname?: FieldPath<TFieldValues>;\n\t};\n\ntype FormSelectPrimitiveProps<TFieldValues extends FieldValues = FieldValues> =\n\tReact.ComponentPropsWithRef<\"select\"> & {\n\t\tclassNames?: { base?: string; error?: string };\n\t\tcontrol?: Control<TFieldValues>;\n\t\tfieldState?: FieldState;\n\t\tname?: FieldPath<TFieldValues>;\n\t};\n\nconst inputTypesWithoutFullWith = new Set<React.HTMLInputTypeAttribute>([\"checkbox\", \"radio\"]);\n\nexport function FormInputPrimitive<TFieldValues extends FieldValues>(\n\tprops: FormInputPrimitiveProps<TFieldValues> & { rules?: RegisterOptions }\n) {\n\tconst fieldContextValues = useLaxFormFieldContext();\n\n\tconst {\n\t\tclassName,\n\t\tclassNames,\n\t\tcontrol,\n\t\tfieldState,\n\t\tid = fieldContextValues?.formItemId,\n\t\tname = fieldContextValues?.name,\n\t\trules,\n\t\ttype = \"text\",\n\t\twithEyeIcon = true,\n\t\t...restOfProps\n\t} = props;\n\n\tconst fieldStateFromLaxFormField = useLaxFormFieldState({ control, name });\n\n\tconst { isDisabled, isInvalid } = fieldState ?? fieldStateFromLaxFormField;\n\n\tconst [isPasswordVisible, toggleVisibility] = useToggle(false);\n\n\tconst shouldHaveEyeIcon = withEyeIcon && type === \"password\";\n\n\tconst WrapperElement = shouldHaveEyeIcon ? FormInputGroup : ReactFragment;\n\n\tconst wrapperElementProps = shouldHaveEyeIcon && {\n\t\tclassName: cnMerge(\"w-full\", classNames?.inputGroup, isInvalid && classNames?.error),\n\t};\n\n\tconst { register } = useFormRootContext({ strict: false }) ?? {};\n\n\treturn (\n\t\t<WrapperElement {...wrapperElementProps}>\n\t\t\t<input\n\t\t\t\tdata-scope=\"form\"\n\t\t\t\tdata-part=\"input\"\n\t\t\t\tdata-slot=\"form-input\"\n\t\t\t\taria-describedby={\n\t\t\t\t\t!isInvalid\n\t\t\t\t\t\t? fieldContextValues?.formDescriptionId\n\t\t\t\t\t\t: `${fieldContextValues?.formDescriptionId} ${fieldContextValues?.formMessageId}`\n\t\t\t\t}\n\t\t\t\taria-invalid={dataAttr(isInvalid)}\n\t\t\t\tdata-invalid={dataAttr(isInvalid)}\n\t\t\t\tdata-disabled={dataAttr(isDisabled)}\n\t\t\t\tid={id}\n\t\t\t\tname={name}\n\t\t\t\ttype={type === \"password\" && isPasswordVisible ? \"text\" : type}\n\t\t\t\tclassName={cnMerge(\n\t\t\t\t\t!inputTypesWithoutFullWith.has(type) && \"flex w-full\",\n\t\t\t\t\t`placeholder:text-shadcn-muted-foreground focus-visible:outline-hidden bg-transparent\n\t\t\t\t\ttext-sm file:border-0 file:bg-transparent disabled:cursor-not-allowed disabled:opacity-50`,\n\t\t\t\t\tclassName,\n\t\t\t\t\tclassNames?.input,\n\t\t\t\t\ttype !== \"password\" && isInvalid && classNames?.error\n\t\t\t\t)}\n\t\t\t\t{...(Boolean(name) && register?.(name, rules))}\n\t\t\t\t{...restOfProps}\n\t\t\t/>\n\n\t\t\t{shouldHaveEyeIcon && (\n\t\t\t\t<FormInputRightItem\n\t\t\t\t\tas=\"button\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tonClick={toggleVisibility}\n\t\t\t\t\tclassName=\"size-5 shrink-0 lg:size-6\"\n\t\t\t\t>\n\t\t\t\t\t{isPasswordVisible ? (\n\t\t\t\t\t\t<EyeIconInvisible className={cnMerge(\"size-full\", classNames?.eyeIcon)} />\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<EyeIconVisible className={cnMerge(\"size-full\", classNames?.eyeIcon)} />\n\t\t\t\t\t)}\n\t\t\t\t</FormInputRightItem>\n\t\t\t)}\n\t\t</WrapperElement>\n\t);\n}\n\nexport function FormTextAreaPrimitive<TFieldValues extends FieldValues>(\n\tprops: FormTextAreaPrimitiveProps<TFieldValues> & { rules?: RegisterOptions }\n) {\n\tconst fieldContextValues = useLaxFormFieldContext();\n\n\tconst {\n\t\tclassName,\n\t\tclassNames,\n\t\tcontrol,\n\t\tfieldState,\n\t\tid = fieldContextValues?.formItemId,\n\t\tname = fieldContextValues?.name,\n\t\trules,\n\t\t...restOfProps\n\t} = props;\n\n\tconst fieldStateFromLaxFormField = useLaxFormFieldState({ control, name });\n\n\tconst { isDisabled, isInvalid } = fieldState ?? fieldStateFromLaxFormField;\n\n\tconst { register } = useFormRootContext({ strict: false }) ?? {};\n\n\treturn (\n\t\t<textarea\n\t\t\tdata-scope=\"form\"\n\t\t\tdata-part=\"textarea\"\n\t\t\tdata-slot=\"form-textarea\"\n\t\t\taria-describedby={\n\t\t\t\t!isInvalid\n\t\t\t\t\t? fieldContextValues?.formDescriptionId\n\t\t\t\t\t: `${fieldContextValues?.formDescriptionId} ${fieldContextValues?.formMessageId}`\n\t\t\t}\n\t\t\taria-invalid={dataAttr(isInvalid)}\n\t\t\tdata-disabled={dataAttr(isDisabled)}\n\t\t\tdata-invalid={dataAttr(isInvalid)}\n\t\t\tid={id}\n\t\t\tname={name}\n\t\t\tclassName={cnMerge(\n\t\t\t\t`placeholder:text-shadcn-muted-foreground focus-visible:outline-hidden w-full bg-transparent\n\t\t\t\ttext-sm disabled:cursor-not-allowed disabled:opacity-50`,\n\t\t\t\tclassName,\n\t\t\t\tclassNames?.base,\n\t\t\t\tisInvalid && classNames?.error\n\t\t\t)}\n\t\t\t{...(Boolean(name) && register?.(name, rules))}\n\t\t\t{...restOfProps}\n\t\t/>\n\t);\n}\nexport function FormSelectPrimitive<TFieldValues extends FieldValues>(\n\tprops: FormSelectPrimitiveProps<TFieldValues> & { rules?: RegisterOptions }\n) {\n\tconst fieldContextValues = useLaxFormFieldContext();\n\n\tconst {\n\t\tclassName,\n\t\tclassNames,\n\t\tcontrol,\n\t\tfieldState,\n\t\tid = fieldContextValues?.formItemId,\n\t\tname = fieldContextValues?.name,\n\t\trules,\n\t\t...restOfProps\n\t} = props;\n\n\tconst fieldStateFromLaxFormField = useLaxFormFieldState({ control, name });\n\n\tconst { isDisabled, isInvalid } = fieldState ?? fieldStateFromLaxFormField;\n\n\tconst { register } = useFormRootContext({ strict: false }) ?? {};\n\n\treturn (\n\t\t<select\n\t\t\tdefaultValue=\"\"\n\t\t\tdata-scope=\"form\"\n\t\t\tdata-part=\"select\"\n\t\t\tdata-slot=\"form-select\"\n\t\t\taria-describedby={\n\t\t\t\t!isInvalid\n\t\t\t\t\t? fieldContextValues?.formDescriptionId\n\t\t\t\t\t: `${fieldContextValues?.formDescriptionId} ${fieldContextValues?.formMessageId}`\n\t\t\t}\n\t\t\taria-invalid={dataAttr(isInvalid)}\n\t\t\tdata-disabled={dataAttr(isDisabled)}\n\t\t\tdata-invalid={dataAttr(isInvalid)}\n\t\t\tid={id}\n\t\t\tname={name}\n\t\t\tclassName={cnMerge(\n\t\t\t\t`placeholder:text-shadcn-muted-foreground focus-visible:outline-hidden w-full bg-transparent\n\t\t\t\ttext-sm disabled:cursor-not-allowed disabled:opacity-50`,\n\t\t\t\tclassName,\n\t\t\t\tclassNames?.base,\n\t\t\t\tisInvalid && classNames?.error\n\t\t\t)}\n\t\t\t{...(Boolean(name) && register?.(name, rules))}\n\t\t\t{...restOfProps}\n\t\t/>\n\t);\n}\n\ntype PrimitivePropsToOmit = \"control\" | \"formState\" | \"name\";\n\nexport type FormInputProps = Omit<FormInputPrimitiveProps, PrimitivePropsToOmit> & {\n\trules?: RegisterOptions;\n};\n\nexport type FormTextAreaProps = Omit<FormTextAreaPrimitiveProps, PrimitivePropsToOmit> & {\n\trules?: RegisterOptions;\n};\n\nexport type FormSelectProps = Omit<FormSelectPrimitiveProps, PrimitivePropsToOmit> & {\n\trules?: RegisterOptions;\n};\n\ntype CombinedFormInputProps =\n\t| (FormSelectProps & { type: \"select\" })\n\t| (FormTextAreaProps & { type: \"textarea\" })\n\t| FormInputProps;\n\nconst InputTypeMap = defineEnum({\n\tselect: FormSelectPrimitive,\n\ttextarea: FormTextAreaPrimitive,\n});\n\nexport function FormInput(props: CombinedFormInputProps & { rules?: RegisterOptions }) {\n\tconst { onBlur, onChange, ref, rules, type, ...restOfProps } = props;\n\n\tconst { name } = useStrictFormFieldContext();\n\tconst { register } = useFormRootContext();\n\n\tconst SelectedInput =\n\t\ttype === \"textarea\" || type === \"select\"\n\t\t\t? InputTypeMap[type as Exclude<typeof type, AnyString>]\n\t\t\t: FormInputPrimitive;\n\n\tconst registerProps = name ? register(name, rules) : null;\n\n\treturn (\n\t\t<SelectedInput\n\t\t\ttype={type as never}\n\t\t\tname={name}\n\t\t\t{...registerProps}\n\t\t\t{...(restOfProps as NonNullable<unknown>)}\n\t\t\tref={composeRefs([registerProps?.ref, ref as never])}\n\t\t\tonChange={composeEventHandlers([registerProps?.onChange, onChange as never])}\n\t\t\tonBlur={composeEventHandlers([registerProps?.onBlur, onBlur as never])}\n\t\t/>\n\t);\n}\n\nexport function FormTextArea(props: FormTextAreaProps) {\n\treturn <FormInput {...props} type=\"textarea\" />;\n}\n\nexport function FormSelect(props: FormSelectProps) {\n\treturn <FormInput {...props} type=\"select\" />;\n}\n\nexport function FormDescription(props: InferProps<\"p\">) {\n\tconst { className, ...restOfProps } = props;\n\n\tconst { formDescriptionId } = useLaxFormFieldContext() ?? {};\n\n\treturn <p id={formDescriptionId} className={cnMerge(\"text-[12px]\", className)} {...restOfProps} />;\n}\n\ntype ErrorMessageRenderProps = {\n\tclassName: string;\n\t\"data-index\": number;\n\t\"data-part\": \"error-message\";\n\t\"data-scope\": \"form\";\n\t\"data-slot\": \"form-error-message\";\n\tid: string | undefined;\n\tonAnimationEnd?: React.ReactEventHandler<HTMLElement>;\n};\n\ntype ErrorMessageRenderState = { errorMessage: string; errorMessageArray: string[]; index: number };\n\ntype ErrorMessageRenderFn = (context: {\n\tprops: ErrorMessageRenderProps;\n\tstate: ErrorMessageRenderState;\n}) => React.ReactNode;\n\ntype FormErrorMessagePrimitiveProps<TFieldValues extends FieldValues> =\n\tDiscriminatedRenderProps<ErrorMessageRenderFn> & {\n\t\tclassName?: string;\n\t\tclassNames?: {\n\t\t\tcontainer?: string;\n\t\t\terrorMessage?: string;\n\t\t\terrorMessageAnimation?: string;\n\t\t};\n\t\tcontrol?: Control<TFieldValues>; // == Here for type inference of errorField prop\n\t\tdisableErrorAnimation?: boolean;\n\t\tdisableScrollToErrorField?: boolean;\n\t} & (\n\t\t\t| {\n\t\t\t\t\terrorField: FieldPath<TFieldValues>;\n\t\t\t\t\ttype?: \"regular\";\n\t\t\t }\n\t\t\t| {\n\t\t\t\t\terrorField: string;\n\t\t\t\t\ttype: \"root\";\n\t\t\t }\n\t\t);\n\ntype FormErrorMessagePrimitiveType = {\n\t<TFieldValues extends FieldValues>(\n\t\tprops: Extract<FormErrorMessagePrimitiveProps<TFieldValues>, { type?: \"regular\" }>\n\t): React.ReactNode;\n\t<TFieldValues extends FieldValues>(\n\t\t// eslint-disable-next-line ts-eslint/unified-signatures -- Using overloads are better because it gives better error messages\n\t\tprops: Extract<FormErrorMessagePrimitiveProps<TFieldValues>, { type: \"root\" }>\n\t): React.ReactNode;\n};\n\nexport const FormErrorMessagePrimitive: FormErrorMessagePrimitiveType = (props) => {\n\tconst fieldContextValues = useLaxFormFieldContext();\n\tconst rootContextValues = useFormRootContext({ strict: false });\n\n\tconst {\n\t\tchildren,\n\t\tclassName,\n\t\tclassNames,\n\t\tcontrol = rootContextValues?.control,\n\t\tdisableErrorAnimation = false,\n\t\tdisableScrollToErrorField = false,\n\t\terrorField = fieldContextValues?.name,\n\t\trender,\n\t\ttype = \"regular\",\n\t} = props;\n\n\tconst { errors } = useLaxFormFieldState({ control, name: errorField });\n\n\tconst { formMessageId } = useLaxFormFieldContext() ?? {};\n\n\tconst wrapperRef = useRef<HTMLUListElement>(null);\n\n\tconst errorAnimationClass = classNames?.errorMessageAnimation ?? \"animate-shake\";\n\n\tuseEffect(() => {\n\t\tif (disableErrorAnimation) return;\n\n\t\tconst errorMessageElements = wrapperRef.current?.children ?? [];\n\n\t\tfor (const element of errorMessageElements) {\n\t\t\telement.classList.add(errorAnimationClass);\n\t\t}\n\t}, [errorAnimationClass, disableErrorAnimation]);\n\n\tuseEffect(() => {\n\t\tif (disableScrollToErrorField) return;\n\n\t\tconst errorMessageElements = wrapperRef.current?.children;\n\n\t\tif (!errorMessageElements || !errors) return;\n\n\t\t// == Scroll to first error message\n\t\tif (Object.keys(errors).indexOf(errorField as string) === 0) {\n\t\t\terrorMessageElements[0]?.scrollIntoView({\n\t\t\t\tbehavior: \"smooth\",\n\t\t\t\tblock: \"center\",\n\t\t\t});\n\n\t\t\twindow.scrollBy({ behavior: \"smooth\", top: -100 });\n\t\t}\n\t}, [disableScrollToErrorField, errorField, errors]);\n\n\tconst message = (\n\t\ttype === \"root\"\n\t\t\t? errors?.root?.[errorField as string]?.message\n\t\t\t: errors?.[errorField as string]?.message\n\t) as string | string[];\n\n\tif (!message) {\n\t\treturn null;\n\t}\n\n\tconst errorMessageArray = toArray(message);\n\n\tconst [ErrorMessageList] = getElementList();\n\n\tconst onAnimationEnd: React.AnimationEventHandler<HTMLElement> | undefined = disableErrorAnimation\n\t\t? (event) => event.currentTarget.classList.remove(errorAnimationClass)\n\t\t: undefined;\n\n\tconst getRenderProps = ({ index }: { index: number }) =>\n\t\t({\n\t\t\tclassName: cnMerge(errorAnimationClass, className, classNames?.errorMessage),\n\t\t\t\"data-index\": index,\n\t\t\t\"data-part\": \"error-message\",\n\t\t\t\"data-scope\": \"form\",\n\t\t\t\"data-slot\": \"form-error-message\",\n\t\t\tid: formMessageId,\n\t\t\tonAnimationEnd,\n\t\t}) satisfies ErrorMessageRenderProps;\n\n\tconst getRenderState = ({ errorMessage, index }: { errorMessage: string; index: number }) =>\n\t\t({\n\t\t\terrorMessage,\n\t\t\terrorMessageArray,\n\t\t\tindex,\n\t\t}) satisfies ErrorMessageRenderState;\n\n\tconst renderFn = typeof children === \"function\" ? children : render;\n\n\treturn (\n\t\t<ErrorMessageList\n\t\t\teach={errorMessageArray}\n\t\t\tref={wrapperRef}\n\t\t\tclassName={cnMerge(\"flex flex-col\", classNames?.container)}\n\t\t\trender={(errorMessage, index) => {\n\t\t\t\treturn renderFn({\n\t\t\t\t\tprops: getRenderProps({ index }),\n\t\t\t\t\tstate: getRenderState({ errorMessage, index }),\n\t\t\t\t});\n\t\t\t}}\n\t\t/>\n\t);\n};\n\ntype FormErrorMessageProps<TControl, TFieldValues extends FieldValues> =\n\t| (TControl extends Control<infer TValues>\n\t\t\t? {\n\t\t\t\t\tclassName?: string;\n\t\t\t\t\tcontrol?: never;\n\t\t\t\t\terrorField?: FieldPath<TValues>;\n\t\t\t\t\ttype?: \"regular\";\n\t\t\t\t}\n\t\t\t: {\n\t\t\t\t\tclassName?: string;\n\t\t\t\t\tcontrol?: Control<TFieldValues>; // == Here for type inference of errorField prop\n\t\t\t\t\terrorField?: FieldPath<TFieldValues>;\n\t\t\t\t\ttype?: \"regular\";\n\t\t\t\t})\n\t| {\n\t\t\tclassName?: string;\n\t\t\tcontrol?: never;\n\t\t\terrorField: string;\n\t\t\ttype: \"root\";\n\t };\n\nexport function FormErrorMessage<TControl, TFieldValues extends FieldValues = FieldValues>(\n\tprops: FormErrorMessageProps<TControl, TFieldValues>\n) {\n\tconst fieldContextValues = useLaxFormFieldContext();\n\n\tconst { className, errorField = fieldContextValues?.name, type = \"regular\" } = props;\n\n\tconst { control } = useFormRootContext();\n\n\treturn (\n\t\t<FormErrorMessagePrimitive\n\t\t\tcontrol={control}\n\t\t\terrorField={errorField as NonNullable<typeof errorField>}\n\t\t\ttype={type as \"root\"}\n\t\t\trender={({ props: renderProps, state: { errorMessage } }) => (\n\t\t\t\t<p\n\t\t\t\t\tkey={errorMessage}\n\t\t\t\t\t{...renderProps}\n\t\t\t\t\tclassName={cnMerge(\"text-[13px]\", \"data-[index=0]:mt-1\", renderProps.className, className)}\n\t\t\t\t>\n\t\t\t\t\t{errorMessage}\n\t\t\t\t</p>\n\t\t\t)}\n\t\t/>\n\t);\n}\n\ntype FormSubmitProps = InferProps<\"button\"> & { asChild?: boolean };\n\nexport function FormSubmit<TElement extends React.ElementType = \"button\">(\n\tprops: PolymorphicProps<TElement, FormSubmitProps>\n) {\n\tconst { as: Element = \"button\", asChild, children, type = \"submit\", ...restOfProps } = props;\n\n\tconst Component = asChild ? Slot : Element;\n\n\treturn (\n\t\t<Component type={type} {...restOfProps}>\n\t\t\t{children}\n\t\t</Component>\n\t);\n}\n\ntype GetFieldValue<TFieldPathOrPaths, TFieldValues extends FieldValues> =\n\tTFieldPathOrPaths extends Array<FieldPath<TFieldValues>>\n\t\t? FieldPathValues<TFieldValues, TFieldPathOrPaths>\n\t\t: TFieldPathOrPaths extends FieldPath<TFieldValues>\n\t\t\t? FieldPathValue<TFieldValues, TFieldPathOrPaths>\n\t\t\t: unknown;\n\ntype FormSubscribeToFieldValueRenderFn<TFieldValues extends FieldValues, TFieldPathOrPaths> = (props: {\n\tvalue: GetFieldValue<TFieldPathOrPaths, TFieldValues>;\n}) => React.ReactNode;\n\ntype FormSubscribeToFieldValueProps<\n\tTFieldValues extends FieldValues,\n\tTFieldPathOrPaths,\n> = DiscriminatedRenderProps<FormSubscribeToFieldValueRenderFn<TFieldValues, TFieldPathOrPaths>> & {\n\tcontrol: Control<TFieldValues>;\n\tname?: TFieldPathOrPaths;\n};\n\nexport function FormSubscribeToFieldValue<\n\tTFieldValues extends FieldValues,\n\tconst TFieldPathOrPaths extends Array<FieldPath<TFieldValues>> | FieldPath<TFieldValues>,\n>(props: FormSubscribeToFieldValueProps<TFieldValues, TFieldPathOrPaths>) {\n\tconst fieldContextValues = useLaxFormFieldContext();\n\n\tconst { children, name = fieldContextValues?.name, render } = props;\n\n\tconst { control } = useFormRootContext();\n\n\tconst formValue = useWatch({ control, name: name as string });\n\n\tconst fieldProps = { value: formValue };\n\n\tif (typeof children === \"function\") {\n\t\treturn children(fieldProps as never);\n\t}\n\n\treturn render(fieldProps as never);\n}\n\ntype FormSubscribeToFormStateRenderFn<TFieldValues extends FieldValues> = (\n\tprops: UseFormStateReturn<TFieldValues>\n) => React.ReactNode;\n\ntype FormSubscribeToFormStateProps<TFieldValues extends FieldValues> = DiscriminatedRenderProps<\n\tFormSubscribeToFormStateRenderFn<TFieldValues>\n> & {\n\tcontrol?: Control<TFieldValues>;\n\tname?: Array<FieldPath<TFieldValues>> | FieldPath<TFieldValues>;\n};\n\nexport function FormSubscribeToFormState<TFieldValues extends FieldValues = FieldValues>(\n\tprops: FormSubscribeToFormStateProps<TFieldValues>\n) {\n\tconst fieldContextValues = useLaxFormFieldContext();\n\n\tconst { children, control, name = fieldContextValues?.name, render } = props;\n\n\tconst formState = useFormState({ control, name: name as FieldPath<TFieldValues> });\n\n\tif (typeof children === \"function\") {\n\t\treturn children(formState as never);\n\t}\n\n\treturn render(formState as never);\n}\n","export {\n\tFormControlledField as ControlledField,\n\tFormDescription as Description,\n\tFormErrorMessage as ErrorMessage,\n\tFormErrorMessagePrimitive as ErrorMessagePrimitive,\n\tFormField as Field,\n\tFormFieldContext as FieldContext,\n\tFormFieldController as FieldController,\n\tFormInput as Input,\n\tFormInputGroup as InputGroup,\n\tFormInputLeftItem as InputLeftItem,\n\tFormInputPrimitive as InputPrimitive,\n\tFormInputRightItem as InputRightItem,\n\tFormLabel as Label,\n\tFormRoot as Root,\n\tFormSelect as Select,\n\tFormSubmit as Submit,\n\tFormSubscribeToFieldValue as SubscribeToFieldValue,\n\tFormSubscribeToFormState as SubscribeToFormState,\n\tFormTextArea as TextArea,\n\tFormTextAreaPrimitive as TextAreaPrimitive,\n} from \"./form\";\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/ui/form/form-context.ts","../../../../src/components/ui/form/icons.tsx","../../../../src/components/ui/form/form.tsx","../../../../src/components/ui/form/form-parts.ts"],"names":["React","HookFormProvider","ReactFragment","useFormState"],"mappings":"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","file":"index.js","sourcesContent":["import { ContextError, createCustomContext } from \"@zayne-labs/toolkit-react\";\nimport type { DiscriminatedRenderProps } from \"@zayne-labs/toolkit-react/utils\";\nimport {\n\ttype Control,\n\ttype UseFormReturn,\n\ttype UseFormStateReturn,\n\tuseFormContext,\n\tuseFormState,\n} from \"react-hook-form\";\nimport type { FieldValues } from \"./form\";\n\nexport const useFormRootContext = <TStrict extends boolean = true>(options: { strict?: TStrict } = {}) => {\n\tconst { strict = true } = options;\n\tconst formContext = useFormContext();\n\n\tif (strict && !(formContext as unknown)) {\n\t\tthrow new ContextError(\n\t\t\t`useFormRootContext returned \"null\". Did you forget to wrap the necessary components within FormRoot?`\n\t\t);\n\t}\n\n\treturn formContext as TStrict extends true\n\t\t? UseFormReturn<FieldValues>\n\t\t: UseFormReturn<FieldValues> | null;\n};\nexport type FieldState = {\n\terrors?: UseFormStateReturn<FieldValues>[\"errors\"];\n\tisDisabled?: boolean;\n\tisInvalid?: boolean;\n};\n\n// eslint-disable-next-line ts-eslint/no-explicit-any -- any is used here for type compatibility\nexport type AnyControl = Control<any>;\n\ntype FieldStateOptions =\n\t| {\n\t\t\tcontrol: AnyControl | undefined;\n\t\t\tname?: string;\n\t }\n\t| {\n\t\t\tcontrol?: AnyControl;\n\t\t\tname: string | undefined;\n\t };\n\nexport const useLaxFormFieldState = (options?: FieldStateOptions): FieldState => {\n\tconst { control = options?.control } = useFormRootContext({ strict: false }) ?? {};\n\tconst { name = options?.name } = useLaxFormFieldContext() ?? {};\n\n\tconst getFormState = control ? useFormState : () => ({}) as Partial<ReturnType<typeof useFormState>>;\n\n\tconst { disabled, errors } = getFormState({ control, name });\n\n\treturn { errors, isDisabled: disabled, isInvalid: Boolean(options?.name && errors?.[options.name]) };\n};\n\n// export const useStrictGetFieldState = () => {\n// \tconst { name } = useStrictFormFieldContext();\n\n// \tconst { getFieldState } = useFormRootContext();\n\n// \tconst fieldState = getFieldState(name);\n\n// \treturn fieldState;\n// };\n\nexport type FieldContextValue = {\n\tformDescriptionId: `${string}-(${string})-form-item-description`;\n\tformItemId: `${string}-(${string})-form-item`;\n\tformMessageId: `${string}-(${string})-form-item-message`;\n\tname: string;\n};\n\nexport type FormFieldContextProps = DiscriminatedRenderProps<\n\t(contextValue: FieldContextValue) => React.ReactNode\n>;\n\nexport const [StrictFormFieldProvider, useStrictFormFieldContext] = createCustomContext<FieldContextValue>(\n\t{\n\t\thookName: \"useFormFieldContext\",\n\t\tname: \"StrictFormFieldContext\",\n\t\tproviderName: \"FormField\",\n\t}\n);\n\nexport const [LaxFormFieldProvider, useLaxFormFieldContext] = createCustomContext<\n\tFieldContextValue,\n\tfalse\n>({\n\thookName: \"useLaxFormFieldContext\",\n\tname: \"LaxFormFieldContext\",\n\tproviderName: \"FormField\",\n\tstrict: false,\n});\n","import * as React from \"react\";\n\nexport const EyeIconInvisible = (props: React.SVGProps<SVGSVGElement>) => (\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" {...props}>\n\t\t<path\n\t\t\tfill=\"currentColor\"\n\t\t\td=\"M15.175 8.325q.725.725 1.063 1.65t.237 1.9q0 .375-.275.638t-.65.262t-.638-.262t-.262-.638q.125-.65-.075-1.25T13.95 9.6t-1.025-.65t-1.275-.1q-.375 0-.638-.275t-.262-.65t.263-.637t.637-.263q.95-.1 1.875.238t1.65 1.062M12 6q-.475 0-.925.037t-.9.138q-.425.075-.763-.125t-.462-.6t.088-.775t.612-.45q.575-.125 1.163-.175T12 4q3.425 0 6.263 1.8t4.337 4.85q.1.2.15.413t.05.437t-.038.438t-.137.412q-.45 1-1.112 1.875t-1.463 1.6q-.3.275-.7.225t-.65-.4t-.212-.763t.337-.687q.6-.575 1.1-1.25t.875-1.45q-1.25-2.525-3.613-4.012T12 6m0 13q-3.35 0-6.125-1.812T1.5 12.425q-.125-.2-.187-.437T1.25 11.5t.05-.475t.175-.45q.5-1 1.163-1.912T4.15 7L2.075 4.9q-.275-.3-.262-.712T2.1 3.5t.7-.275t.7.275l17 17q.275.275.288.688t-.288.712q-.275.275-.7.275t-.7-.275l-3.5-3.45q-.875.275-1.775.413T12 19M5.55 8.4q-.725.65-1.325 1.425T3.2 11.5q1.25 2.525 3.613 4.013T12 17q.5 0 .975-.062t.975-.138l-.9-.95q-.275.075-.525.113T12 16q-1.875 0-3.188-1.312T7.5 11.5q0-.275.038-.525t.112-.525zm4.2 4.2\"\n\t\t/>\n\t</svg>\n);\n\nexport const EyeIconVisible = (props: React.SVGProps<SVGSVGElement>) => (\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" {...props}>\n\t\t<path\n\t\t\tfill=\"currentColor\"\n\t\t\td=\"M12 16q1.875 0 3.188-1.312T16.5 11.5t-1.312-3.187T12 7T8.813 8.313T7.5 11.5t1.313 3.188T12 16m0-1.8q-1.125 0-1.912-.788T9.3 11.5t.788-1.912T12 8.8t1.913.788t.787 1.912t-.787 1.913T12 14.2m0 4.8q-3.35 0-6.113-1.8t-4.362-4.75q-.125-.225-.187-.462t-.063-.488t.063-.488t.187-.462q1.6-2.95 4.363-4.75T12 4t6.113 1.8t4.362 4.75q.125.225.188.463t.062.487t-.062.488t-.188.462q-1.6 2.95-4.362 4.75T12 19m0-2q2.825 0 5.188-1.487T20.8 11.5q-1.25-2.525-3.613-4.012T12 6T6.813 7.488T3.2 11.5q1.25 2.525 3.613 4.013T12 17\"\n\t\t/>\n\t</svg>\n);\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { getElementList } from \"@/components/common/for\";\nimport { Slot } from \"@/components/common/slot\";\nimport { cnMerge } from \"@/lib/utils/cn\";\nimport { dataAttr } from \"@/lib/utils/common\";\nimport { toArray } from \"@zayne-labs/toolkit-core\";\nimport { useToggle } from \"@zayne-labs/toolkit-react\";\nimport {\n\ttype DiscriminatedRenderProps,\n\ttype InferProps,\n\ttype PolymorphicProps,\n\tcomposeRefs,\n\tcomposeTwoEventHandlers,\n\tgetMultipleSlots,\n} from \"@zayne-labs/toolkit-react/utils\";\nimport { type AnyString, defineEnum } from \"@zayne-labs/toolkit-type-helpers\";\nimport { Fragment as ReactFragment, useEffect, useId, useMemo, useRef } from \"react\";\nimport {\n\ttype Control,\n\tController,\n\ttype ControllerFieldState,\n\ttype ControllerProps,\n\ttype ControllerRenderProps,\n\ttype FieldPath,\n\ttype FieldPathValue,\n\ttype FieldPathValues,\n\tFormProvider as HookFormProvider,\n\ttype RegisterOptions,\n\ttype UseFormReturn,\n\ttype UseFormStateReturn,\n\tuseFormState,\n\tuseWatch,\n} from \"react-hook-form\";\nimport {\n\ttype FieldContextValue,\n\ttype FieldState,\n\ttype FormFieldContextProps,\n\tLaxFormFieldProvider,\n\tStrictFormFieldProvider,\n\tuseFormRootContext,\n\tuseLaxFormFieldContext,\n\tuseLaxFormFieldState,\n\tuseStrictFormFieldContext,\n} from \"./form-context\";\nimport { EyeIconInvisible, EyeIconVisible } from \"./icons\";\n\nexport type FieldValues = Record<string, unknown>;\n\ntype FormRootProps<TFieldValues extends FieldValues> = React.ComponentPropsWithoutRef<\"form\"> & {\n\tchildren: React.ReactNode;\n\tmethods: UseFormReturn<TFieldValues>;\n};\n\nexport function FormRoot<TValues extends FieldValues>(props: FormRootProps<TValues>) {\n\tconst { children, className, methods, ...restOfProps } = props;\n\n\treturn (\n\t\t<HookFormProvider {...methods}>\n\t\t\t<form\n\t\t\t\tclassName={cnMerge(\"flex flex-col\", className)}\n\t\t\t\t{...restOfProps}\n\t\t\t\tdata-scope=\"form\"\n\t\t\t\tdata-part=\"root\"\n\t\t\t\tdata-slot=\"form-root\"\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</form>\n\t\t</HookFormProvider>\n\t);\n}\n\ntype FormFieldProps<TControl, TFieldValues extends FieldValues> = (TControl extends Control<infer TValues>\n\t? {\n\t\t\tcontrol?: never;\n\t\t\tname: FieldPath<TValues>;\n\t\t}\n\t: {\n\t\t\tcontrol?: Control<TFieldValues>;\n\t\t\tname: FieldPath<TFieldValues>;\n\t\t})\n\t& (\n\t\t| (InferProps<\"div\"> & {\n\t\t\t\twithWrapper?: true;\n\t\t })\n\t\t| { children: React.ReactNode; className?: never; withWrapper: false }\n\t);\n\nexport function FormField<TControl, TFieldValues extends FieldValues = FieldValues>(\n\tprops: FormFieldProps<TControl, TFieldValues>\n) {\n\tconst { children, className, name, withWrapper = true } = props;\n\n\tconst { isDisabled, isInvalid } = useLaxFormFieldState({ name });\n\n\tconst uniqueId = useId();\n\n\tconst fieldContextValue = useMemo(\n\t\t() =>\n\t\t\t({\n\t\t\t\tformDescriptionId: `${name}-(${uniqueId})-form-item-description`,\n\t\t\t\tformItemId: `${name}-(${uniqueId})-form-item`,\n\t\t\t\tformMessageId: `${name}-(${uniqueId})-form-item-message`,\n\t\t\t\tname,\n\t\t\t}) satisfies FieldContextValue,\n\t\t[name, uniqueId]\n\t);\n\n\tconst WrapperElement = withWrapper ? \"div\" : ReactFragment;\n\n\tconst wrapperElementProps = withWrapper && {\n\t\tclassName: cnMerge(\"flex flex-col\", className),\n\t\t\"data-part\": \"field\",\n\t\t\"data-scope\": \"form\",\n\t\t\"data-slot\": \"form-field\",\n\t\t/* eslint-disable perfectionist/sort-objects -- order of attributes does not matter */\n\t\t\"data-disabled\": dataAttr(isDisabled),\n\t\t\"data-invalid\": dataAttr(isInvalid),\n\t\t/* eslint-enable perfectionist/sort-objects -- order of attributes does not matter */\n\t};\n\treturn (\n\t\t<StrictFormFieldProvider value={fieldContextValue}>\n\t\t\t<LaxFormFieldProvider value={fieldContextValue}>\n\t\t\t\t<WrapperElement {...wrapperElementProps}>{children}</WrapperElement>\n\t\t\t</LaxFormFieldProvider>\n\t\t</StrictFormFieldProvider>\n\t);\n}\n\nexport function FormControlledField<TFieldValues extends FieldValues>(\n\tprops: ControllerProps<TFieldValues>\n) {\n\tconst { name } = props;\n\n\tconst uniqueId = useId();\n\n\tconst fieldContextValue = useMemo(\n\t\t() =>\n\t\t\t({\n\t\t\t\tformDescriptionId: `${name}-(${uniqueId})-form-item-description`,\n\t\t\t\tformItemId: `${name}-(${uniqueId})-form-item`,\n\t\t\t\tformMessageId: `${name}-(${uniqueId})-form-item-message`,\n\t\t\t\tname,\n\t\t\t}) satisfies FieldContextValue,\n\t\t[name, uniqueId]\n\t);\n\n\treturn (\n\t\t<StrictFormFieldProvider value={fieldContextValue}>\n\t\t\t<LaxFormFieldProvider value={fieldContextValue}>\n\t\t\t\t<Controller {...props} />\n\t\t\t</LaxFormFieldProvider>\n\t\t</StrictFormFieldProvider>\n\t);\n}\n\ntype FormFieldControllerRenderFn = (props: {\n\tfield: Omit<ControllerRenderProps, \"value\"> & {\n\t\tvalue: never;\n\t};\n\tfieldState: ControllerFieldState;\n\tformState: UseFormStateReturn<never>;\n}) => React.ReactElement;\n\ntype FormFieldControllerProps = Omit<\n\tControllerProps<FieldValues, FieldPath<FieldValues>>,\n\t\"control\" | \"name\" | \"render\"\n> & {\n\trender: FormFieldControllerRenderFn;\n};\n\nexport function FormFieldController(props: FormFieldControllerProps) {\n\tconst { control } = useFormRootContext();\n\tconst { name } = useStrictFormFieldContext();\n\tconst { render, ...restOfProps } = props;\n\n\treturn <Controller name={name} control={control} render={render as never} {...restOfProps} />;\n}\n\nexport function FormFieldContext(props: FormFieldContextProps) {\n\tconst { children, render } = props;\n\tconst fieldContextValues = useStrictFormFieldContext();\n\n\tif (typeof children === \"function\") {\n\t\treturn children(fieldContextValues);\n\t}\n\n\treturn render(fieldContextValues);\n}\n\nexport function FormLabel(props: InferProps<\"label\">) {\n\tconst { formItemId, name } = useStrictFormFieldContext();\n\tconst { children, className, ...restOfProps } = props;\n\n\tconst { isDisabled, isInvalid } = useLaxFormFieldState({ name });\n\n\treturn (\n\t\t<label\n\t\t\tdata-scope=\"form\"\n\t\t\tdata-part=\"label\"\n\t\t\tdata-slot=\"form-label\"\n\t\t\tdata-disabled={dataAttr(isDisabled)}\n\t\t\tdata-invalid={dataAttr(isInvalid)}\n\t\t\thtmlFor={formItemId}\n\t\t\tclassName={className}\n\t\t\t{...restOfProps}\n\t\t>\n\t\t\t{children}\n\t\t</label>\n\t);\n}\n\nexport function FormInputGroup(props: InferProps<\"div\">) {\n\tconst { children, className, ...restOfProps } = props;\n\n\tconst { isDisabled, isInvalid } = useLaxFormFieldState();\n\n\tconst {\n\t\tregularChildren,\n\t\tslots: [leftItemSlot, rightItemSlot],\n\t} = getMultipleSlots(children, [FormInputLeftItem, FormInputRightItem]);\n\n\treturn (\n\t\t<div\n\t\t\tdata-scope=\"form\"\n\t\t\tdata-part=\"input-group\"\n\t\t\tdata-slot=\"form-input-group\"\n\t\t\tdata-invalid={dataAttr(isInvalid)}\n\t\t\tdata-disabled={dataAttr(isDisabled)}\n\t\t\tclassName={cnMerge(\"flex items-center justify-between gap-2\", className)}\n\t\t\t{...restOfProps}\n\t\t>\n\t\t\t{leftItemSlot}\n\t\t\t{regularChildren}\n\t\t\t{rightItemSlot}\n\t\t</div>\n\t);\n}\n\ntype FormSideItemProps = {\n\tchildren?: React.ReactNode;\n\tclassName?: string;\n};\n\nexport function FormInputLeftItem<TElement extends React.ElementType = \"span\">(\n\tprops: PolymorphicProps<TElement, FormSideItemProps>\n) {\n\tconst { as: Element = \"span\", children, className, ...restOfProps } = props;\n\n\treturn (\n\t\t<Element\n\t\t\tdata-scope=\"form\"\n\t\t\tdata-part=\"left-item\"\n\t\t\tdata-slot=\"form-left-item\"\n\t\t\tclassName={cnMerge(\"inline-flex items-center justify-center\", className)}\n\t\t\t{...restOfProps}\n\t\t>\n\t\t\t{children}\n\t\t</Element>\n\t);\n}\nFormInputLeftItem.slotSymbol = Symbol(\"input-left-item\");\n\nexport function FormInputRightItem<TElement extends React.ElementType = \"span\">(\n\tprops: PolymorphicProps<TElement, FormSideItemProps>\n) {\n\tconst { as: Element = \"span\", children, className, ...restOfProps } = props;\n\n\treturn (\n\t\t<Element\n\t\t\tdata-scope=\"form\"\n\t\t\tdata-part=\"right-item\"\n\t\t\tdata-slot=\"form-right-item\"\n\t\t\tclassName={cnMerge(\"inline-flex items-center justify-center\", className)}\n\t\t\t{...restOfProps}\n\t\t>\n\t\t\t{children}\n\t\t</Element>\n\t);\n}\nFormInputRightItem.slotSymbol = Symbol(\"input-right-item\");\n\ntype FormInputPrimitiveProps<TFieldValues extends FieldValues = FieldValues> = Omit<\n\tReact.ComponentPropsWithRef<\"input\">,\n\t\"children\"\n> & {\n\tclassNames?: { error?: string; eyeIcon?: string; input?: string; inputGroup?: string };\n\tcontrol?: Control<TFieldValues>;\n\tfieldState?: FieldState;\n\tname?: FieldPath<TFieldValues>;\n\twithEyeIcon?: boolean;\n};\n\ntype FormTextAreaPrimitiveProps<TFieldValues extends FieldValues = FieldValues> =\n\tReact.ComponentPropsWithRef<\"textarea\"> & {\n\t\tclassNames?: { base?: string; error?: string };\n\t\tcontrol?: Control<TFieldValues>;\n\t\tfieldState?: FieldState;\n\t\tname?: FieldPath<TFieldValues>;\n\t};\n\ntype FormSelectPrimitiveProps<TFieldValues extends FieldValues = FieldValues> =\n\tReact.ComponentPropsWithRef<\"select\"> & {\n\t\tclassNames?: { base?: string; error?: string };\n\t\tcontrol?: Control<TFieldValues>;\n\t\tfieldState?: FieldState;\n\t\tname?: FieldPath<TFieldValues>;\n\t};\n\nconst inputTypesWithoutFullWith = new Set<React.HTMLInputTypeAttribute>([\"checkbox\", \"radio\"]);\n\nexport function FormInputPrimitive<TFieldValues extends FieldValues>(\n\tprops: FormInputPrimitiveProps<TFieldValues> & { rules?: RegisterOptions }\n) {\n\tconst fieldContextValues = useLaxFormFieldContext();\n\n\tconst {\n\t\tclassName,\n\t\tclassNames,\n\t\tcontrol,\n\t\tfieldState,\n\t\tid = fieldContextValues?.formItemId,\n\t\tname = fieldContextValues?.name,\n\t\trules,\n\t\ttype = \"text\",\n\t\twithEyeIcon = true,\n\t\t...restOfProps\n\t} = props;\n\n\tconst fieldStateFromLaxFormField = useLaxFormFieldState({ control, name });\n\n\tconst { isDisabled, isInvalid } = fieldState ?? fieldStateFromLaxFormField;\n\n\tconst [isPasswordVisible, toggleVisibility] = useToggle(false);\n\n\tconst shouldHaveEyeIcon = withEyeIcon && type === \"password\";\n\n\tconst WrapperElement = shouldHaveEyeIcon ? FormInputGroup : ReactFragment;\n\n\tconst wrapperElementProps = shouldHaveEyeIcon && {\n\t\tclassName: cnMerge(\"w-full\", classNames?.inputGroup, isInvalid && classNames?.error),\n\t};\n\n\tconst { register } = useFormRootContext({ strict: false }) ?? {};\n\n\treturn (\n\t\t<WrapperElement {...wrapperElementProps}>\n\t\t\t<input\n\t\t\t\tdata-scope=\"form\"\n\t\t\t\tdata-part=\"input\"\n\t\t\t\tdata-slot=\"form-input\"\n\t\t\t\taria-describedby={\n\t\t\t\t\t!isInvalid\n\t\t\t\t\t\t? fieldContextValues?.formDescriptionId\n\t\t\t\t\t\t: `${fieldContextValues?.formDescriptionId} ${fieldContextValues?.formMessageId}`\n\t\t\t\t}\n\t\t\t\taria-invalid={dataAttr(isInvalid)}\n\t\t\t\tdata-invalid={dataAttr(isInvalid)}\n\t\t\t\tdata-disabled={dataAttr(isDisabled)}\n\t\t\t\tid={id}\n\t\t\t\tname={name}\n\t\t\t\ttype={type === \"password\" && isPasswordVisible ? \"text\" : type}\n\t\t\t\tclassName={cnMerge(\n\t\t\t\t\t!inputTypesWithoutFullWith.has(type) && \"flex w-full\",\n\t\t\t\t\t`focus-visible:outline-hidden placeholder:text-shadcn-muted-foreground bg-transparent\n\t\t\t\t\ttext-sm file:border-0 file:bg-transparent disabled:cursor-not-allowed disabled:opacity-50`,\n\t\t\t\t\tclassName,\n\t\t\t\t\tclassNames?.input,\n\t\t\t\t\ttype !== \"password\" && isInvalid && classNames?.error\n\t\t\t\t)}\n\t\t\t\t{...(Boolean(name) && register?.(name, rules))}\n\t\t\t\t{...restOfProps}\n\t\t\t/>\n\n\t\t\t{shouldHaveEyeIcon && (\n\t\t\t\t<FormInputRightItem\n\t\t\t\t\tas=\"button\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tonClick={toggleVisibility}\n\t\t\t\t\tclassName=\"size-5 shrink-0 lg:size-6\"\n\t\t\t\t>\n\t\t\t\t\t{isPasswordVisible ? (\n\t\t\t\t\t\t<EyeIconInvisible className={cnMerge(\"size-full\", classNames?.eyeIcon)} />\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<EyeIconVisible className={cnMerge(\"size-full\", classNames?.eyeIcon)} />\n\t\t\t\t\t)}\n\t\t\t\t</FormInputRightItem>\n\t\t\t)}\n\t\t</WrapperElement>\n\t);\n}\n\nexport function FormTextAreaPrimitive<TFieldValues extends FieldValues>(\n\tprops: FormTextAreaPrimitiveProps<TFieldValues> & { rules?: RegisterOptions }\n) {\n\tconst fieldContextValues = useLaxFormFieldContext();\n\n\tconst {\n\t\tclassName,\n\t\tclassNames,\n\t\tcontrol,\n\t\tfieldState,\n\t\tid = fieldContextValues?.formItemId,\n\t\tname = fieldContextValues?.name,\n\t\trules,\n\t\t...restOfProps\n\t} = props;\n\n\tconst fieldStateFromLaxFormField = useLaxFormFieldState({ control, name });\n\n\tconst { isDisabled, isInvalid } = fieldState ?? fieldStateFromLaxFormField;\n\n\tconst { register } = useFormRootContext({ strict: false }) ?? {};\n\n\treturn (\n\t\t<textarea\n\t\t\tdata-scope=\"form\"\n\t\t\tdata-part=\"textarea\"\n\t\t\tdata-slot=\"form-textarea\"\n\t\t\taria-describedby={\n\t\t\t\t!isInvalid\n\t\t\t\t\t? fieldContextValues?.formDescriptionId\n\t\t\t\t\t: `${fieldContextValues?.formDescriptionId} ${fieldContextValues?.formMessageId}`\n\t\t\t}\n\t\t\taria-invalid={dataAttr(isInvalid)}\n\t\t\tdata-disabled={dataAttr(isDisabled)}\n\t\t\tdata-invalid={dataAttr(isInvalid)}\n\t\t\tid={id}\n\t\t\tname={name}\n\t\t\tclassName={cnMerge(\n\t\t\t\t`placeholder:text-shadcn-muted-foreground focus-visible:outline-hidden w-full bg-transparent\n\t\t\t\ttext-sm disabled:cursor-not-allowed disabled:opacity-50`,\n\t\t\t\tclassName,\n\t\t\t\tclassNames?.base,\n\t\t\t\tisInvalid && classNames?.error\n\t\t\t)}\n\t\t\t{...(Boolean(name) && register?.(name, rules))}\n\t\t\t{...restOfProps}\n\t\t/>\n\t);\n}\nexport function FormSelectPrimitive<TFieldValues extends FieldValues>(\n\tprops: FormSelectPrimitiveProps<TFieldValues> & { rules?: RegisterOptions }\n) {\n\tconst fieldContextValues = useLaxFormFieldContext();\n\n\tconst {\n\t\tclassName,\n\t\tclassNames,\n\t\tcontrol,\n\t\tfieldState,\n\t\tid = fieldContextValues?.formItemId,\n\t\tname = fieldContextValues?.name,\n\t\trules,\n\t\t...restOfProps\n\t} = props;\n\n\tconst fieldStateFromLaxFormField = useLaxFormFieldState({ control, name });\n\n\tconst { isDisabled, isInvalid } = fieldState ?? fieldStateFromLaxFormField;\n\n\tconst { register } = useFormRootContext({ strict: false }) ?? {};\n\n\treturn (\n\t\t<select\n\t\t\tdefaultValue=\"\"\n\t\t\tdata-scope=\"form\"\n\t\t\tdata-part=\"select\"\n\t\t\tdata-slot=\"form-select\"\n\t\t\taria-describedby={\n\t\t\t\t!isInvalid\n\t\t\t\t\t? fieldContextValues?.formDescriptionId\n\t\t\t\t\t: `${fieldContextValues?.formDescriptionId} ${fieldContextValues?.formMessageId}`\n\t\t\t}\n\t\t\taria-invalid={dataAttr(isInvalid)}\n\t\t\tdata-disabled={dataAttr(isDisabled)}\n\t\t\tdata-invalid={dataAttr(isInvalid)}\n\t\t\tid={id}\n\t\t\tname={name}\n\t\t\tclassName={cnMerge(\n\t\t\t\t`placeholder:text-shadcn-muted-foreground focus-visible:outline-hidden w-full bg-transparent\n\t\t\t\ttext-sm disabled:cursor-not-allowed disabled:opacity-50`,\n\t\t\t\tclassName,\n\t\t\t\tclassNames?.base,\n\t\t\t\tisInvalid && classNames?.error\n\t\t\t)}\n\t\t\t{...(Boolean(name) && register?.(name, rules))}\n\t\t\t{...restOfProps}\n\t\t/>\n\t);\n}\n\ntype PrimitivePropsToOmit = \"control\" | \"formState\" | \"name\";\n\nexport type FormInputProps = Omit<FormInputPrimitiveProps, PrimitivePropsToOmit> & {\n\trules?: RegisterOptions;\n};\n\nexport type FormTextAreaProps = Omit<FormTextAreaPrimitiveProps, PrimitivePropsToOmit> & {\n\trules?: RegisterOptions;\n};\n\nexport type FormSelectProps = Omit<FormSelectPrimitiveProps, PrimitivePropsToOmit> & {\n\trules?: RegisterOptions;\n};\n\ntype CombinedFormInputProps =\n\t| (FormSelectProps & { type: \"select\" })\n\t| (FormTextAreaProps & { type: \"textarea\" })\n\t| FormInputProps;\n\nconst InputTypeMap = defineEnum({\n\tselect: FormSelectPrimitive,\n\ttextarea: FormTextAreaPrimitive,\n});\n\nexport function FormInput(props: CombinedFormInputProps & { rules?: RegisterOptions }) {\n\tconst { onBlur, onChange, ref, rules, type, ...restOfProps } = props;\n\n\tconst { name } = useStrictFormFieldContext();\n\tconst { register } = useFormRootContext();\n\n\tconst SelectedInput =\n\t\ttype === \"textarea\" || type === \"select\"\n\t\t\t? InputTypeMap[type as Exclude<typeof type, AnyString>]\n\t\t\t: FormInputPrimitive;\n\n\tconst registerProps = name ? register(name, rules) : null;\n\n\treturn (\n\t\t<SelectedInput\n\t\t\ttype={type as never}\n\t\t\tname={name}\n\t\t\t{...registerProps}\n\t\t\t{...(restOfProps as NonNullable<unknown>)}\n\t\t\tref={composeRefs(registerProps?.ref, ref)}\n\t\t\tonChange={composeTwoEventHandlers(registerProps?.onChange, onChange)}\n\t\t\tonBlur={composeTwoEventHandlers(registerProps?.onBlur, onBlur)}\n\t\t/>\n\t);\n}\n\nexport function FormTextArea(props: FormTextAreaProps) {\n\treturn <FormInput {...props} type=\"textarea\" />;\n}\n\nexport function FormSelect(props: FormSelectProps) {\n\treturn <FormInput {...props} type=\"select\" />;\n}\n\nexport function FormDescription(props: InferProps<\"p\">) {\n\tconst { className, ...restOfProps } = props;\n\n\tconst { formDescriptionId } = useLaxFormFieldContext() ?? {};\n\n\treturn <p id={formDescriptionId} className={cnMerge(\"text-[12px]\", className)} {...restOfProps} />;\n}\n\ntype ErrorMessageRenderProps = {\n\tclassName: string;\n\t\"data-index\": number;\n\t\"data-part\": \"error-message\";\n\t\"data-scope\": \"form\";\n\t\"data-slot\": \"form-error-message\";\n\tid: string | undefined;\n\tonAnimationEnd?: React.ReactEventHandler<HTMLElement>;\n};\n\ntype ErrorMessageRenderState = { errorMessage: string; errorMessageArray: string[]; index: number };\n\ntype ErrorMessageRenderFn = (context: {\n\tprops: ErrorMessageRenderProps;\n\tstate: ErrorMessageRenderState;\n}) => React.ReactNode;\n\ntype FormErrorMessagePrimitiveProps<TFieldValues extends FieldValues> =\n\tDiscriminatedRenderProps<ErrorMessageRenderFn> & {\n\t\tclassName?: string;\n\t\tclassNames?: {\n\t\t\tcontainer?: string;\n\t\t\terrorMessage?: string;\n\t\t\terrorMessageAnimation?: string;\n\t\t};\n\t\tcontrol?: Control<TFieldValues>; // == Here for type inference of errorField prop\n\t\tdisableErrorAnimation?: boolean;\n\t\tdisableScrollToErrorField?: boolean;\n\t} & (\n\t\t\t| {\n\t\t\t\t\terrorField: FieldPath<TFieldValues>;\n\t\t\t\t\ttype?: \"regular\";\n\t\t\t }\n\t\t\t| {\n\t\t\t\t\terrorField: string;\n\t\t\t\t\ttype: \"root\";\n\t\t\t }\n\t\t);\n\ntype FormErrorMessagePrimitiveType = {\n\t<TFieldValues extends FieldValues>(\n\t\tprops: Extract<FormErrorMessagePrimitiveProps<TFieldValues>, { type?: \"regular\" }>\n\t): React.ReactNode;\n\t<TFieldValues extends FieldValues>(\n\t\t// eslint-disable-next-line ts-eslint/unified-signatures -- Using overloads are better because it gives better error messages\n\t\tprops: Extract<FormErrorMessagePrimitiveProps<TFieldValues>, { type: \"root\" }>\n\t): React.ReactNode;\n};\n\nexport const FormErrorMessagePrimitive: FormErrorMessagePrimitiveType = (props) => {\n\tconst fieldContextValues = useLaxFormFieldContext();\n\tconst rootContextValues = useFormRootContext({ strict: false });\n\n\tconst {\n\t\tchildren,\n\t\tclassName,\n\t\tclassNames,\n\t\tcontrol = rootContextValues?.control,\n\t\tdisableErrorAnimation = false,\n\t\tdisableScrollToErrorField = false,\n\t\terrorField = fieldContextValues?.name,\n\t\trender,\n\t\ttype = \"regular\",\n\t} = props;\n\n\tconst { errors } = useLaxFormFieldState({ control, name: errorField });\n\n\tconst { formMessageId } = useLaxFormFieldContext() ?? {};\n\n\tconst wrapperRef = useRef<HTMLUListElement>(null);\n\n\tconst errorAnimationClass = classNames?.errorMessageAnimation ?? \"animate-shake\";\n\n\tuseEffect(() => {\n\t\tif (disableErrorAnimation) return;\n\n\t\tconst errorMessageElements = wrapperRef.current?.children ?? [];\n\n\t\tfor (const element of errorMessageElements) {\n\t\t\telement.classList.add(errorAnimationClass);\n\t\t}\n\t}, [errorAnimationClass, disableErrorAnimation]);\n\n\tuseEffect(() => {\n\t\tif (disableScrollToErrorField) return;\n\n\t\tconst errorMessageElements = wrapperRef.current?.children;\n\n\t\tif (!errorMessageElements || !errors) return;\n\n\t\t// == Scroll to first error message\n\t\tif (Object.keys(errors).indexOf(errorField as string) === 0) {\n\t\t\terrorMessageElements[0]?.scrollIntoView({\n\t\t\t\tbehavior: \"smooth\",\n\t\t\t\tblock: \"center\",\n\t\t\t});\n\n\t\t\twindow.scrollBy({ behavior: \"smooth\", top: -100 });\n\t\t}\n\t}, [disableScrollToErrorField, errorField, errors]);\n\n\tconst message = (\n\t\ttype === \"root\"\n\t\t\t? errors?.root?.[errorField as string]?.message\n\t\t\t: errors?.[errorField as string]?.message\n\t) as string | string[];\n\n\tif (!message) {\n\t\treturn null;\n\t}\n\n\tconst errorMessageArray = toArray(message);\n\n\tconst [ErrorMessageList] = getElementList();\n\n\tconst onAnimationEnd: React.AnimationEventHandler<HTMLElement> | undefined = disableErrorAnimation\n\t\t? (event) => event.currentTarget.classList.remove(errorAnimationClass)\n\t\t: undefined;\n\n\tconst getRenderProps = ({ index }: { index: number }) =>\n\t\t({\n\t\t\tclassName: cnMerge(errorAnimationClass, className, classNames?.errorMessage),\n\t\t\t\"data-index\": index,\n\t\t\t\"data-part\": \"error-message\",\n\t\t\t\"data-scope\": \"form\",\n\t\t\t\"data-slot\": \"form-error-message\",\n\t\t\tid: formMessageId,\n\t\t\tonAnimationEnd,\n\t\t}) satisfies ErrorMessageRenderProps;\n\n\tconst getRenderState = ({ errorMessage, index }: { errorMessage: string; index: number }) =>\n\t\t({\n\t\t\terrorMessage,\n\t\t\terrorMessageArray,\n\t\t\tindex,\n\t\t}) satisfies ErrorMessageRenderState;\n\n\tconst renderFn = typeof children === \"function\" ? children : render;\n\n\treturn (\n\t\t<ErrorMessageList\n\t\t\teach={errorMessageArray}\n\t\t\tref={wrapperRef}\n\t\t\tclassName={cnMerge(\"flex flex-col\", classNames?.container)}\n\t\t\trender={(errorMessage, index) => {\n\t\t\t\treturn renderFn({\n\t\t\t\t\tprops: getRenderProps({ index }),\n\t\t\t\t\tstate: getRenderState({ errorMessage, index }),\n\t\t\t\t});\n\t\t\t}}\n\t\t/>\n\t);\n};\n\ntype FormErrorMessageProps<TControl, TFieldValues extends FieldValues> =\n\t| (TControl extends Control<infer TValues>\n\t\t\t? {\n\t\t\t\t\tclassName?: string;\n\t\t\t\t\tcontrol?: never;\n\t\t\t\t\terrorField?: FieldPath<TValues>;\n\t\t\t\t\ttype?: \"regular\";\n\t\t\t\t}\n\t\t\t: {\n\t\t\t\t\tclassName?: string;\n\t\t\t\t\tcontrol?: Control<TFieldValues>; // == Here for type inference of errorField prop\n\t\t\t\t\terrorField?: FieldPath<TFieldValues>;\n\t\t\t\t\ttype?: \"regular\";\n\t\t\t\t})\n\t| {\n\t\t\tclassName?: string;\n\t\t\tcontrol?: never;\n\t\t\terrorField: string;\n\t\t\ttype: \"root\";\n\t };\n\nexport function FormErrorMessage<TControl, TFieldValues extends FieldValues = FieldValues>(\n\tprops: FormErrorMessageProps<TControl, TFieldValues>\n) {\n\tconst fieldContextValues = useLaxFormFieldContext();\n\n\tconst { className, errorField = fieldContextValues?.name, type = \"regular\" } = props;\n\n\tconst { control } = useFormRootContext();\n\n\treturn (\n\t\t<FormErrorMessagePrimitive\n\t\t\tcontrol={control}\n\t\t\terrorField={errorField as NonNullable<typeof errorField>}\n\t\t\ttype={type as \"root\"}\n\t\t\trender={({ props: renderProps, state: { errorMessage } }) => (\n\t\t\t\t<p\n\t\t\t\t\tkey={errorMessage}\n\t\t\t\t\t{...renderProps}\n\t\t\t\t\tclassName={cnMerge(\"text-[13px]\", \"data-[index=0]:mt-1\", renderProps.className, className)}\n\t\t\t\t>\n\t\t\t\t\t{errorMessage}\n\t\t\t\t</p>\n\t\t\t)}\n\t\t/>\n\t);\n}\n\ntype FormSubmitProps = InferProps<\"button\"> & { asChild?: boolean };\n\nexport function FormSubmit<TElement extends React.ElementType = \"button\">(\n\tprops: PolymorphicProps<TElement, FormSubmitProps>\n) {\n\tconst { as: Element = \"button\", asChild, children, type = \"submit\", ...restOfProps } = props;\n\n\tconst Component = asChild ? Slot : Element;\n\n\treturn (\n\t\t<Component type={type} {...restOfProps}>\n\t\t\t{children}\n\t\t</Component>\n\t);\n}\n\ntype GetFieldValue<TFieldPathOrPaths, TFieldValues extends FieldValues> =\n\tTFieldPathOrPaths extends Array<FieldPath<TFieldValues>>\n\t\t? FieldPathValues<TFieldValues, TFieldPathOrPaths>\n\t\t: TFieldPathOrPaths extends FieldPath<TFieldValues>\n\t\t\t? FieldPathValue<TFieldValues, TFieldPathOrPaths>\n\t\t\t: unknown;\n\ntype FormSubscribeToFieldValueRenderFn<TFieldValues extends FieldValues, TFieldPathOrPaths> = (props: {\n\tvalue: GetFieldValue<TFieldPathOrPaths, TFieldValues>;\n}) => React.ReactNode;\n\ntype FormSubscribeToFieldValueProps<\n\tTFieldValues extends FieldValues,\n\tTFieldPathOrPaths,\n> = DiscriminatedRenderProps<FormSubscribeToFieldValueRenderFn<TFieldValues, TFieldPathOrPaths>> & {\n\tcontrol: Control<TFieldValues>;\n\tname?: TFieldPathOrPaths;\n};\n\nexport function FormSubscribeToFieldValue<\n\tTFieldValues extends FieldValues,\n\tconst TFieldPathOrPaths extends Array<FieldPath<TFieldValues>> | FieldPath<TFieldValues>,\n>(props: FormSubscribeToFieldValueProps<TFieldValues, TFieldPathOrPaths>) {\n\tconst fieldContextValues = useLaxFormFieldContext();\n\n\tconst { children, name = fieldContextValues?.name, render } = props;\n\n\tconst { control } = useFormRootContext();\n\n\tconst formValue = useWatch({ control, name: name as string });\n\n\tconst fieldProps = { value: formValue };\n\n\tif (typeof children === \"function\") {\n\t\treturn children(fieldProps as never);\n\t}\n\n\treturn render(fieldProps as never);\n}\n\ntype FormSubscribeToFormStateRenderFn<TFieldValues extends FieldValues> = (\n\tprops: UseFormStateReturn<TFieldValues>\n) => React.ReactNode;\n\ntype FormSubscribeToFormStateProps<TFieldValues extends FieldValues> = DiscriminatedRenderProps<\n\tFormSubscribeToFormStateRenderFn<TFieldValues>\n> & {\n\tcontrol?: Control<TFieldValues>;\n\tname?: Array<FieldPath<TFieldValues>> | FieldPath<TFieldValues>;\n};\n\nexport function FormSubscribeToFormState<TFieldValues extends FieldValues = FieldValues>(\n\tprops: FormSubscribeToFormStateProps<TFieldValues>\n) {\n\tconst fieldContextValues = useLaxFormFieldContext();\n\n\tconst { children, control, name = fieldContextValues?.name, render } = props;\n\n\tconst formState = useFormState({ control, name: name as FieldPath<TFieldValues> });\n\n\tif (typeof children === \"function\") {\n\t\treturn children(formState as never);\n\t}\n\n\treturn render(formState as never);\n}\n","export {\n\tFormControlledField as ControlledField,\n\tFormDescription as Description,\n\tFormErrorMessage as ErrorMessage,\n\tFormErrorMessagePrimitive as ErrorMessagePrimitive,\n\tFormField as Field,\n\tFormFieldContext as FieldContext,\n\tFormFieldController as FieldController,\n\tFormInput as Input,\n\tFormInputGroup as InputGroup,\n\tFormInputLeftItem as InputLeftItem,\n\tFormInputPrimitive as InputPrimitive,\n\tFormInputRightItem as InputRightItem,\n\tFormLabel as Label,\n\tFormRoot as Root,\n\tFormSelect as Select,\n\tFormSubmit as Submit,\n\tFormSubscribeToFieldValue as SubscribeToFieldValue,\n\tFormSubscribeToFormState as SubscribeToFormState,\n\tFormTextArea as TextArea,\n\tFormTextAreaPrimitive as TextAreaPrimitive,\n} from \"./form\";\n"]}
|