@liam-michel/validated-form 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +13 -14
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +11 -8
- package/dist/index.d.ts +11 -8
- package/dist/index.js +4 -5
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -46,8 +46,7 @@ module.exports = __toCommonJS(index_exports);
|
|
|
46
46
|
|
|
47
47
|
// src/ValidatedForm.tsx
|
|
48
48
|
var import_react_hook_form = require("react-hook-form");
|
|
49
|
-
var
|
|
50
|
-
var import_zod2 = require("zod");
|
|
49
|
+
var import_standard_schema = require("@hookform/resolvers/standard-schema");
|
|
51
50
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
52
51
|
function ValidatedForm({
|
|
53
52
|
children,
|
|
@@ -61,7 +60,7 @@ function ValidatedForm({
|
|
|
61
60
|
renderError
|
|
62
61
|
}) {
|
|
63
62
|
const internalForm = (0, import_react_hook_form.useForm)({
|
|
64
|
-
resolver: (0,
|
|
63
|
+
resolver: (0, import_standard_schema.standardSchemaResolver)(schema),
|
|
65
64
|
defaultValues
|
|
66
65
|
});
|
|
67
66
|
const form = externalForm ?? internalForm;
|
|
@@ -100,12 +99,12 @@ function ValidatedForm({
|
|
|
100
99
|
}
|
|
101
100
|
|
|
102
101
|
// src/createForm.tsx
|
|
103
|
-
var
|
|
102
|
+
var import_zod9 = require("zod");
|
|
104
103
|
|
|
105
104
|
// src/fields/TextField.tsx
|
|
106
105
|
var import_react = require("react");
|
|
107
106
|
var import_react_hook_form2 = require("react-hook-form");
|
|
108
|
-
var
|
|
107
|
+
var import_zod = require("zod");
|
|
109
108
|
|
|
110
109
|
// src/utils/cn.ts
|
|
111
110
|
var import_clsx = require("clsx");
|
|
@@ -176,7 +175,7 @@ function TextField({
|
|
|
176
175
|
// src/fields/TextAreaField.tsx
|
|
177
176
|
var import_react2 = require("react");
|
|
178
177
|
var import_react_hook_form3 = require("react-hook-form");
|
|
179
|
-
var
|
|
178
|
+
var import_zod2 = require("zod");
|
|
180
179
|
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
181
180
|
function TextAreaField({
|
|
182
181
|
name,
|
|
@@ -229,7 +228,7 @@ function TextAreaField({
|
|
|
229
228
|
// src/fields/NumberField.tsx
|
|
230
229
|
var import_react3 = require("react");
|
|
231
230
|
var import_react_hook_form4 = require("react-hook-form");
|
|
232
|
-
var
|
|
231
|
+
var import_zod3 = require("zod");
|
|
233
232
|
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
234
233
|
function NumberField({
|
|
235
234
|
name,
|
|
@@ -287,7 +286,7 @@ function NumberField({
|
|
|
287
286
|
// src/fields/SelectField.tsx
|
|
288
287
|
var import_react4 = require("react");
|
|
289
288
|
var import_react_hook_form5 = require("react-hook-form");
|
|
290
|
-
var
|
|
289
|
+
var import_zod4 = require("zod");
|
|
291
290
|
var SelectPrimitive = __toESM(require("@radix-ui/react-select"), 1);
|
|
292
291
|
var import_lucide_react = require("lucide-react");
|
|
293
292
|
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
@@ -362,7 +361,7 @@ function SelectField({
|
|
|
362
361
|
|
|
363
362
|
// src/fields/CheckboxField.tsx
|
|
364
363
|
var import_react_hook_form6 = require("react-hook-form");
|
|
365
|
-
var
|
|
364
|
+
var import_zod5 = require("zod");
|
|
366
365
|
var CheckboxPrimitive = __toESM(require("@radix-ui/react-checkbox"), 1);
|
|
367
366
|
var import_lucide_react2 = require("lucide-react");
|
|
368
367
|
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
@@ -413,7 +412,7 @@ function CheckboxField({
|
|
|
413
412
|
// src/fields/DateField.tsx
|
|
414
413
|
var import_react5 = require("react");
|
|
415
414
|
var import_react_hook_form7 = require("react-hook-form");
|
|
416
|
-
var
|
|
415
|
+
var import_zod6 = require("zod");
|
|
417
416
|
var import_react_day_picker = require("react-day-picker");
|
|
418
417
|
var PopoverPrimitive = __toESM(require("@radix-ui/react-popover"), 1);
|
|
419
418
|
var import_date_fns = require("date-fns");
|
|
@@ -492,7 +491,7 @@ function DateField({
|
|
|
492
491
|
// src/fields/SliderField.tsx
|
|
493
492
|
var import_react6 = require("react");
|
|
494
493
|
var import_react_hook_form8 = require("react-hook-form");
|
|
495
|
-
var
|
|
494
|
+
var import_zod7 = require("zod");
|
|
496
495
|
var SliderPrimitive = __toESM(require("@radix-ui/react-slider"), 1);
|
|
497
496
|
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
498
497
|
function SliderField({
|
|
@@ -559,7 +558,7 @@ function SliderField({
|
|
|
559
558
|
// src/fields/MultiSelectField.tsx
|
|
560
559
|
var import_react7 = require("react");
|
|
561
560
|
var import_react_hook_form9 = require("react-hook-form");
|
|
562
|
-
var
|
|
561
|
+
var import_zod8 = require("zod");
|
|
563
562
|
var PopoverPrimitive2 = __toESM(require("@radix-ui/react-popover"), 1);
|
|
564
563
|
var import_cmdk = require("cmdk");
|
|
565
564
|
var import_lucide_react4 = require("lucide-react");
|
|
@@ -740,13 +739,13 @@ function createForm(schema) {
|
|
|
740
739
|
|
|
741
740
|
// src/hooks/useValidatedForm.ts
|
|
742
741
|
var import_react_hook_form10 = require("react-hook-form");
|
|
743
|
-
var
|
|
742
|
+
var import_zod10 = require("@hookform/resolvers/zod");
|
|
744
743
|
function useValidatedForm({
|
|
745
744
|
schema,
|
|
746
745
|
defaultValues
|
|
747
746
|
}) {
|
|
748
747
|
return (0, import_react_hook_form10.useForm)({
|
|
749
|
-
resolver: (0,
|
|
748
|
+
resolver: (0, import_zod10.zodResolver)(schema),
|
|
750
749
|
defaultValues
|
|
751
750
|
});
|
|
752
751
|
}
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/ValidatedForm.tsx","../src/createForm.tsx","../src/fields/TextField.tsx","../src/utils/cn.ts","../src/fields/TextAreaField.tsx","../src/fields/NumberField.tsx","../src/fields/SelectField.tsx","../src/fields/CheckboxField.tsx","../src/fields/DateField.tsx","../src/fields/SliderField.tsx","../src/fields/MultiSelectField.tsx","../src/hooks/useValidatedForm.ts"],"sourcesContent":["export { ValidatedForm } from './ValidatedForm';\nexport { createForm } from './createForm';\nexport { useValidatedForm } from './hooks/useValidatedForm';\n\nexport {\n TextField,\n TextAreaField,\n NumberField,\n SelectField,\n CheckboxField,\n DateField,\n SliderField,\n MultiSelectField,\n} from './fields';\n\nexport type {\n BaseFieldProps,\n StringFieldsOf,\n NumberFieldsOf,\n BooleanFieldsOf,\n DateFieldsOf,\n SelectFieldsOf,\n PasswordFieldsOf,\n} from './types';\n","import { useForm, FormProvider } from 'react-hook-form';\nimport type { FieldValues } from 'react-hook-form';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { z } from 'zod';\nimport type { ValidatedFormProps } from './types';\n\nexport function ValidatedForm<\n TSchema extends z.ZodType<FieldValues, FieldValues>,\n TInput extends FieldValues = z.input<TSchema> & FieldValues,\n TOutput extends FieldValues = z.output<TSchema> & FieldValues,\n>({\n children,\n schema,\n onSubmit,\n defaultValues,\n form: externalForm,\n submitLabel,\n hideSubmit,\n renderSubmit,\n renderError,\n}: ValidatedFormProps<TInput, TOutput, TSchema>) {\n const internalForm = useForm<TInput, any, TOutput>({\n resolver: zodResolver(schema as any),\n defaultValues,\n });\n\n const form = externalForm ?? internalForm;\n\n const handleSubmit = form.handleSubmit(async (data) => {\n try {\n await onSubmit(data);\n } catch (err: any) {\n const fieldErrors = err?.data?.fieldErrors;\n if (fieldErrors) {\n Object.entries(fieldErrors).forEach(([field, message]) => {\n form.setError(field as any, { message: message as string });\n });\n } else {\n form.setError('root', {\n message: err?.data?.message ?? err?.message ?? 'Something went wrong',\n });\n }\n }\n });\n\n return (\n <FormProvider {...form}>\n <form onSubmit={handleSubmit} className=\"space-y-4\">\n {typeof children === 'function' ? children(form) : children}\n {form.formState.errors.root &&\n (renderError ? (\n renderError(form.formState.errors.root.message!)\n ) : (\n <p className=\"text-sm font-medium text-destructive\">\n {form.formState.errors.root.message}\n </p>\n ))}\n {renderSubmit\n ? renderSubmit({\n isSubmitting: form.formState.isSubmitting,\n reset: form.reset,\n })\n : !hideSubmit && (\n <button\n type=\"submit\"\n disabled={form.formState.isSubmitting}\n className=\"inline-flex h-9 items-center justify-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground shadow transition-colors hover:bg-primary/90 disabled:pointer-events-none disabled:opacity-50\"\n >\n {form.formState.isSubmitting\n ? 'Submitting...'\n : (submitLabel ?? 'Submit')}\n </button>\n )}\n </form>\n </FormProvider>\n );\n}\n","import { ValidatedForm } from '.';\nimport z from 'zod';\nimport type { DefaultValues } from 'react-hook-form';\nimport {\n TextField,\n TextAreaField,\n NumberField,\n SelectField,\n CheckboxField,\n DateField,\n SliderField,\n MultiSelectField,\n} from './fields';\nimport type { SelectFieldsOf } from '.';\nimport type { FormComponents } from './types';\nexport function createForm<TSchema extends z.ZodObject<Record<string, any>>>(\n schema: TSchema,\n) {\n const Form = ({\n children,\n onSubmit,\n defaultValues,\n components,\n }: {\n children: React.ReactNode;\n onSubmit: (data: z.output<TSchema>) => Promise<void>;\n defaultValues?: DefaultValues<z.input<TSchema>>;\n components?: Partial<FormComponents>; // add this\n }) => (\n <ValidatedForm\n schema={schema as any}\n onSubmit={onSubmit}\n defaultValues={defaultValues}\n components={components}\n >\n {children}\n </ValidatedForm>\n );\n Form.displayName = 'Form';\n\n const SchemaTextField = (\n props: Omit<Parameters<typeof TextField<TSchema>>[0], 'form'>,\n ) => <TextField<TSchema> {...props} />;\n SchemaTextField.displayName = 'TextField';\n\n const SchemaPasswordField = (\n props: Omit<Parameters<typeof TextField<TSchema>>[0], 'form'>,\n ) => <TextField<TSchema> {...props} />;\n SchemaPasswordField.displayName = 'PasswordField';\n\n const SchemaTextAreaField = (\n props: Omit<Parameters<typeof TextAreaField<TSchema>>[0], 'form'>,\n ) => <TextAreaField<TSchema> {...props} />;\n SchemaTextAreaField.displayName = 'TextAreaField';\n\n const SchemaNumberField = (\n props: Omit<Parameters<typeof NumberField<TSchema>>[0], 'form'>,\n ) => <NumberField<TSchema> {...props} />;\n SchemaNumberField.displayName = 'NumberField';\n\n const SchemaSelectField = <TField extends SelectFieldsOf<TSchema>>(\n props: Omit<Parameters<typeof SelectField<TSchema, TField>>[0], 'form'>,\n ) => <SelectField<TSchema, TField> {...props} />;\n SchemaSelectField.displayName = 'SelectField';\n\n const SchemaCheckboxField = (\n props: Omit<Parameters<typeof CheckboxField<TSchema>>[0], 'form'>,\n ) => <CheckboxField<TSchema> {...props} />;\n SchemaCheckboxField.displayName = 'CheckboxField';\n\n const SchemaDateField = (\n props: Omit<Parameters<typeof DateField<TSchema>>[0], 'form'>,\n ) => <DateField<TSchema> {...props} />;\n SchemaDateField.displayName = 'DateField';\n\n const SchemaSliderField = (\n props: Omit<Parameters<typeof SliderField<TSchema>>[0], 'form'>,\n ) => <SliderField<TSchema> {...props} />;\n SchemaSliderField.displayName = 'SliderField';\n\n const SchemaMultiSelectField = (\n props: Omit<Parameters<typeof MultiSelectField<TSchema>>[0], 'form'>,\n ) => <MultiSelectField<TSchema> {...props} />;\n SchemaMultiSelectField.displayName = 'MultiSelectField';\n\n return {\n Form,\n TextField: SchemaTextField,\n PasswordField: SchemaPasswordField,\n TextAreaField: SchemaTextAreaField,\n NumberField: SchemaNumberField,\n SelectField: SchemaSelectField,\n CheckboxField: SchemaCheckboxField,\n DateField: SchemaDateField,\n SliderField: SchemaSliderField,\n MultiSelectField: SchemaMultiSelectField,\n };\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, StringFieldsOf } from '../types';\n\nexport function TextField<TSchema extends z.ZodObject<Record<string, any>>>({\n name,\n label,\n placeholder,\n disabled,\n description,\n className,\n form,\n type = 'text',\n showReset,\n}: BaseFieldProps & {\n name: StringFieldsOf<TSchema>;\n type?: React.HTMLInputTypeAttribute;\n form?: UseFormReturn<z.input<TSchema>>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label\n htmlFor={name as string}\n className=\"text-sm font-medium leading-none\"\n >\n {label}\n </label>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n <input\n {...field}\n id={name as string}\n value={(field.value as string) ?? ''}\n placeholder={placeholder}\n disabled={disabled}\n type={type}\n className=\"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\"\n />\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n )}\n />\n );\n}\n","import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, StringFieldsOf } from '../types';\n\nexport function TextAreaField<\n TSchema extends z.ZodObject<Record<string, any>>,\n>({\n name,\n label,\n placeholder,\n disabled,\n description,\n className,\n form,\n showReset,\n}: BaseFieldProps & {\n name: StringFieldsOf<TSchema>;\n form?: UseFormReturn<z.input<TSchema>>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label htmlFor={name as string} className=\"text-sm font-medium leading-none\">{label}</label>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n <textarea\n {...field}\n id={name as string}\n value={(field.value as string) ?? ''}\n placeholder={placeholder}\n disabled={disabled}\n className=\"flex min-h-[75px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\"\n />\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n )}\n />\n );\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, NumberFieldsOf } from '../types';\n\nexport function NumberField<TSchema extends z.ZodObject<Record<string, any>>>({\n name,\n label,\n placeholder,\n disabled,\n description,\n className,\n form,\n showReset,\n}: BaseFieldProps & {\n name: NumberFieldsOf<TSchema>;\n form?: UseFormReturn<z.input<TSchema>>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label htmlFor={name as string} className=\"text-sm font-medium leading-none\">{label}</label>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n <input\n {...field}\n id={name as string}\n value={(field.value as number) ?? ''}\n placeholder={placeholder}\n disabled={disabled}\n type=\"number\"\n onChange={(e) => {\n const value = e.target.value;\n field.onChange(value === '' ? undefined : Number(value));\n }}\n className=\"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\"\n />\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n )}\n />\n );\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport * as SelectPrimitive from '@radix-ui/react-select';\nimport { Check, ChevronDown } from 'lucide-react';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, SelectFieldsOf } from '../types';\n\nexport function SelectField<\n TSchema extends z.ZodObject<Record<string, any>>,\n TField extends SelectFieldsOf<TSchema>,\n>({\n name,\n label,\n placeholder,\n disabled,\n description,\n className,\n form,\n options,\n showReset,\n}: BaseFieldProps & {\n name: TField;\n form?: UseFormReturn<z.input<TSchema>>;\n options: Array<{\n value: z.input<TSchema>[TField];\n label: string;\n }>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label htmlFor={name as string} className=\"text-sm font-medium leading-none\">{label}</label>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n <SelectPrimitive.Root\n onValueChange={field.onChange}\n value={String(field.value || '')}\n disabled={disabled}\n >\n <SelectPrimitive.Trigger className=\"flex h-9 w-full items-center justify-between rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50\">\n <SelectPrimitive.Value\n placeholder={placeholder ?? 'Select an option'}\n />\n <SelectPrimitive.Icon>\n <ChevronDown className=\"h-4 w-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content className=\"relative z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md\">\n <SelectPrimitive.Viewport className=\"p-1\">\n {options.map((option) => (\n <SelectPrimitive.Item\n key={String(option.value)}\n value={String(option.value)}\n className=\"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\"\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>\n {option.label}\n </SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n ))}\n </SelectPrimitive.Viewport>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n </SelectPrimitive.Root>\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n )}\n />\n );\n}\n","import { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox';\nimport { Check } from 'lucide-react';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, BooleanFieldsOf } from '../types';\n\nexport function CheckboxField<\n TSchema extends z.ZodObject<Record<string, any>>,\n>({\n name,\n label,\n disabled,\n description,\n className,\n form,\n}: BaseFieldProps & {\n name: BooleanFieldsOf<TSchema>;\n form?: UseFormReturn<z.input<TSchema>>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center gap-3\">\n <CheckboxPrimitive.Root\n id={name as string}\n checked={!!field.value}\n onCheckedChange={(checked) => field.onChange(checked)}\n disabled={disabled}\n className=\"h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\"\n >\n <CheckboxPrimitive.Indicator className=\"flex items-center justify-center text-current\">\n <Check className=\"h-3 w-3\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n <label\n htmlFor={name as string}\n className=\"text-sm font-medium leading-none\"\n >\n {label}\n </label>\n </div>\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n )}\n />\n );\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport { DayPicker } from 'react-day-picker';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\nimport { format } from 'date-fns';\nimport { CalendarIcon } from 'lucide-react';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, DateFieldsOf } from '../types';\n\nexport function DateField<TSchema extends z.ZodObject<Record<string, any>>>({\n name,\n label,\n description,\n className,\n form,\n showReset,\n}: BaseFieldProps & {\n name: DateFieldsOf<TSchema>;\n form?: UseFormReturn<z.input<TSchema>>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => {\n const date = field.value ? new Date(field.value as any) : undefined;\n\n return (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label htmlFor={name as string} className=\"text-sm font-medium leading-none\">\n {label}\n </label>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n <PopoverPrimitive.Root>\n <PopoverPrimitive.Trigger asChild>\n <button\n type=\"button\"\n className={cn(\n 'flex h-9 w-full items-center justify-start gap-2 rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50',\n !date && 'text-muted-foreground',\n )}\n >\n <CalendarIcon className=\"h-4 w-4\" />\n {date ? format(date, 'PPP') : 'Pick a date'}\n </button>\n </PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n align=\"start\"\n className=\"z-50 rounded-md border bg-popover p-0 text-popover-foreground shadow-md outline-none\"\n >\n <DayPicker\n mode=\"single\"\n selected={date}\n onSelect={(d) => field.onChange(d)}\n className=\"p-3\"\n />\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n );\n }}\n />\n );\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport * as SliderPrimitive from '@radix-ui/react-slider';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, NumberFieldsOf } from '../types';\n\nexport function SliderField<TSchema extends z.ZodObject<Record<string, any>>>({\n name,\n label,\n description,\n disabled,\n className,\n form,\n min = 0,\n max = 100,\n step = 1,\n showReset,\n}: BaseFieldProps & {\n name: NumberFieldsOf<TSchema>;\n form?: UseFormReturn<z.input<TSchema>>;\n min?: number;\n max?: number;\n step?: number;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => {\n const value = field.value !== undefined ? (field.value as number) : min;\n\n return (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label htmlFor={name as string} className=\"text-sm font-medium leading-none\">\n {label}\n </label>\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm text-muted-foreground\">{value}</span>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n </div>\n <SliderPrimitive.Root\n value={[value]}\n onValueChange={([val]) => field.onChange(val)}\n min={min}\n max={max}\n step={step}\n disabled={disabled}\n className=\"relative flex w-full touch-none select-none items-center\"\n >\n <SliderPrimitive.Track className=\"relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20\">\n <SliderPrimitive.Range className=\"absolute h-full bg-primary\" />\n </SliderPrimitive.Track>\n <SliderPrimitive.Thumb className=\"block h-4 w-4 rounded-full border border-primary/50 bg-background shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\" />\n </SliderPrimitive.Root>\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n );\n }}\n />\n );\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\nimport { Command } from 'cmdk';\nimport { Check, ChevronsUpDown, X } from 'lucide-react';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps } from '../types';\n\nexport function MultiSelectField<\n TSchema extends z.ZodObject<Record<string, any>>,\n>({\n name,\n label,\n description,\n disabled,\n form,\n className,\n options,\n placeholder = 'Select options...',\n showReset,\n}: BaseFieldProps & {\n name: keyof z.input<TSchema>;\n form?: UseFormReturn<z.input<TSchema>>;\n options: Array<{ value: string; label: string }>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => {\n const selected: string[] = Array.isArray(field.value)\n ? field.value\n : [];\n\n const toggle = (val: string) => {\n const next = selected.includes(val)\n ? selected.filter((v) => v !== val)\n : [...selected, val];\n field.onChange(next);\n };\n\n return (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label className=\"text-sm font-medium leading-none\">\n {label}\n </label>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n <PopoverPrimitive.Root>\n <PopoverPrimitive.Trigger asChild>\n <button\n type=\"button\"\n role=\"combobox\"\n disabled={disabled}\n className={cn(\n 'flex min-h-9 w-full flex-wrap items-center justify-between gap-1 rounded-md border border-input bg-transparent px-3 py-1.5 text-sm shadow-sm focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50',\n !selected.length && 'text-muted-foreground',\n )}\n >\n <div className=\"flex flex-wrap gap-1\">\n {selected.length\n ? selected.map((val) => (\n <span\n key={val}\n className=\"inline-flex items-center gap-1 rounded-md border bg-secondary px-1.5 py-0.5 text-xs text-secondary-foreground\"\n >\n {options.find((o) => o.value === val)?.label ?? val}\n <span\n onClick={(e) => {\n e.stopPropagation();\n toggle(val);\n }}\n className=\"cursor-pointer\"\n >\n <X className=\"h-3 w-3\" />\n </span>\n </span>\n ))\n : placeholder}\n </div>\n <ChevronsUpDown className=\"ml-2 h-4 w-4 shrink-0 opacity-50\" />\n </button>\n </PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n align=\"start\"\n className=\"z-50 min-w-[200px] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md outline-none\"\n >\n <Command>\n <div className=\"flex items-center border-b px-3\">\n <Command.Input\n placeholder=\"Search...\"\n className=\"flex h-9 w-full bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground\"\n />\n </div>\n <Command.List className=\"max-h-[200px] overflow-y-auto p-1\">\n <Command.Empty className=\"py-6 text-center text-sm\">\n No options found.\n </Command.Empty>\n <Command.Group>\n {options.map((option) => (\n <Command.Item\n key={option.value}\n value={option.value}\n onSelect={() => toggle(option.value)}\n className=\"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none aria-selected:bg-accent aria-selected:text-accent-foreground\"\n >\n <Check\n className={cn(\n 'mr-2 h-4 w-4',\n selected.includes(option.value)\n ? 'opacity-100'\n : 'opacity-0',\n )}\n />\n {option.label}\n </Command.Item>\n ))}\n </Command.Group>\n </Command.List>\n </Command>\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n );\n }}\n />\n );\n}\n","import { useForm } from 'react-hook-form';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport type { DefaultValues, FieldValues } from 'react-hook-form';\nimport type { z } from 'zod';\n\nexport function useValidatedForm<TSchema extends z.ZodType<any, FieldValues>>({\n schema,\n defaultValues,\n}: {\n schema: TSchema;\n defaultValues?: DefaultValues<z.input<TSchema>>;\n}) {\n return useForm<z.input<TSchema>, any, z.output<TSchema>>({\n resolver: zodResolver(schema),\n defaultValues,\n });\n}\n"],"mappings":"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","names":["import_zod","import_zod","import_react_hook_form","import_zod","import_jsx_runtime","import_react","import_react_hook_form","import_zod","import_jsx_runtime","import_react","import_react_hook_form","import_zod","import_jsx_runtime","import_react","import_react_hook_form","import_zod","import_jsx_runtime","import_react_hook_form","import_zod","import_lucide_react","import_jsx_runtime","import_react","import_react_hook_form","import_zod","import_lucide_react","import_jsx_runtime","import_react","import_react_hook_form","import_zod","import_jsx_runtime","import_react","import_react_hook_form","import_zod","PopoverPrimitive","import_lucide_react","import_jsx_runtime","import_jsx_runtime","import_react_hook_form","import_zod"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/ValidatedForm.tsx","../src/createForm.tsx","../src/fields/TextField.tsx","../src/utils/cn.ts","../src/fields/TextAreaField.tsx","../src/fields/NumberField.tsx","../src/fields/SelectField.tsx","../src/fields/CheckboxField.tsx","../src/fields/DateField.tsx","../src/fields/SliderField.tsx","../src/fields/MultiSelectField.tsx","../src/hooks/useValidatedForm.ts"],"sourcesContent":["export { ValidatedForm } from './ValidatedForm';\nexport { createForm } from './createForm';\nexport { useValidatedForm } from './hooks/useValidatedForm';\n\nexport {\n TextField,\n TextAreaField,\n NumberField,\n SelectField,\n CheckboxField,\n DateField,\n SliderField,\n MultiSelectField,\n} from './fields';\n\nexport type {\n BaseFieldProps,\n StringFieldsOf,\n NumberFieldsOf,\n BooleanFieldsOf,\n DateFieldsOf,\n SelectFieldsOf,\n PasswordFieldsOf,\n} from './types';\n","import { useForm, FormProvider } from 'react-hook-form';\nimport type { SchemaInput, ValidatedFormProps, SchemaOutput } from './types';\nimport { standardSchemaResolver } from '@hookform/resolvers/standard-schema';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\n\nexport function ValidatedForm<TSchema extends StandardSchemaV1<any, any>>({\n children,\n schema,\n onSubmit,\n defaultValues,\n form: externalForm,\n submitLabel,\n hideSubmit,\n renderSubmit,\n renderError,\n}: ValidatedFormProps<TSchema>) {\n type TInput = SchemaInput<TSchema>;\n type TOutput = SchemaOutput<TSchema>;\n\n const internalForm = useForm<TInput, any, TOutput>({\n resolver: standardSchemaResolver(schema) as any,\n defaultValues,\n });\n\n const form = externalForm ?? internalForm;\n\n const handleSubmit = form.handleSubmit(async (data) => {\n try {\n await onSubmit(data);\n } catch (err: any) {\n const fieldErrors = err?.data?.fieldErrors;\n if (fieldErrors) {\n Object.entries(fieldErrors).forEach(([field, message]) => {\n form.setError(field as any, { message: message as string });\n });\n } else {\n form.setError('root', {\n message: err?.data?.message ?? err?.message ?? 'Something went wrong',\n });\n }\n }\n });\n\n return (\n <FormProvider {...form}>\n <form onSubmit={handleSubmit} className=\"space-y-4\">\n {typeof children === 'function' ? children(form) : children}\n {form.formState.errors.root &&\n (renderError ? (\n renderError(form.formState.errors.root.message!)\n ) : (\n <p className=\"text-sm font-medium text-destructive\">\n {form.formState.errors.root.message}\n </p>\n ))}\n {renderSubmit\n ? renderSubmit({\n isSubmitting: form.formState.isSubmitting,\n reset: form.reset,\n })\n : !hideSubmit && (\n <button\n type=\"submit\"\n disabled={form.formState.isSubmitting}\n className=\"inline-flex h-9 items-center justify-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground shadow transition-colors hover:bg-primary/90 disabled:pointer-events-none disabled:opacity-50\"\n >\n {form.formState.isSubmitting\n ? 'Submitting...'\n : (submitLabel ?? 'Submit')}\n </button>\n )}\n </form>\n </FormProvider>\n );\n}\n","import { ValidatedForm } from '.';\nimport z from 'zod';\nimport type { DefaultValues } from 'react-hook-form';\nimport {\n TextField,\n TextAreaField,\n NumberField,\n SelectField,\n CheckboxField,\n DateField,\n SliderField,\n MultiSelectField,\n} from './fields';\nimport type { SelectFieldsOf } from '.';\nimport type { FormComponents } from './types';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nexport function createForm<TSchema extends z.ZodObject<Record<string, any>>>(\n schema: TSchema,\n) {\n const Form = ({\n children,\n onSubmit,\n defaultValues,\n components,\n }: {\n children: React.ReactNode;\n onSubmit: (data: z.output<TSchema>) => Promise<void>;\n defaultValues?: DefaultValues<z.input<TSchema>>;\n components?: Partial<FormComponents>;\n }) => (\n <ValidatedForm\n schema={\n schema as unknown as StandardSchemaV1<\n z.input<TSchema>,\n z.output<TSchema>\n >\n }\n onSubmit={onSubmit as any}\n defaultValues={defaultValues as any}\n components={components}\n >\n {children}\n </ValidatedForm>\n );\n Form.displayName = 'Form';\n\n const SchemaTextField = (\n props: Omit<Parameters<typeof TextField<TSchema>>[0], 'form'>,\n ) => <TextField<TSchema> {...props} />;\n SchemaTextField.displayName = 'TextField';\n\n const SchemaPasswordField = (\n props: Omit<Parameters<typeof TextField<TSchema>>[0], 'form'>,\n ) => <TextField<TSchema> {...props} />;\n SchemaPasswordField.displayName = 'PasswordField';\n\n const SchemaTextAreaField = (\n props: Omit<Parameters<typeof TextAreaField<TSchema>>[0], 'form'>,\n ) => <TextAreaField<TSchema> {...props} />;\n SchemaTextAreaField.displayName = 'TextAreaField';\n\n const SchemaNumberField = (\n props: Omit<Parameters<typeof NumberField<TSchema>>[0], 'form'>,\n ) => <NumberField<TSchema> {...props} />;\n SchemaNumberField.displayName = 'NumberField';\n\n const SchemaSelectField = <TField extends SelectFieldsOf<TSchema>>(\n props: Omit<Parameters<typeof SelectField<TSchema, TField>>[0], 'form'>,\n ) => <SelectField<TSchema, TField> {...props} />;\n SchemaSelectField.displayName = 'SelectField';\n\n const SchemaCheckboxField = (\n props: Omit<Parameters<typeof CheckboxField<TSchema>>[0], 'form'>,\n ) => <CheckboxField<TSchema> {...props} />;\n SchemaCheckboxField.displayName = 'CheckboxField';\n\n const SchemaDateField = (\n props: Omit<Parameters<typeof DateField<TSchema>>[0], 'form'>,\n ) => <DateField<TSchema> {...props} />;\n SchemaDateField.displayName = 'DateField';\n\n const SchemaSliderField = (\n props: Omit<Parameters<typeof SliderField<TSchema>>[0], 'form'>,\n ) => <SliderField<TSchema> {...props} />;\n SchemaSliderField.displayName = 'SliderField';\n\n const SchemaMultiSelectField = (\n props: Omit<Parameters<typeof MultiSelectField<TSchema>>[0], 'form'>,\n ) => <MultiSelectField<TSchema> {...props} />;\n SchemaMultiSelectField.displayName = 'MultiSelectField';\n\n return {\n Form,\n TextField: SchemaTextField,\n PasswordField: SchemaPasswordField,\n TextAreaField: SchemaTextAreaField,\n NumberField: SchemaNumberField,\n SelectField: SchemaSelectField,\n CheckboxField: SchemaCheckboxField,\n DateField: SchemaDateField,\n SliderField: SchemaSliderField,\n MultiSelectField: SchemaMultiSelectField,\n };\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, StringFieldsOf } from '../types';\n\nexport function TextField<TSchema extends z.ZodObject<Record<string, any>>>({\n name,\n label,\n placeholder,\n disabled,\n description,\n className,\n form,\n type = 'text',\n showReset,\n}: BaseFieldProps & {\n name: StringFieldsOf<TSchema>;\n type?: React.HTMLInputTypeAttribute;\n form?: UseFormReturn<z.input<TSchema>>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label\n htmlFor={name as string}\n className=\"text-sm font-medium leading-none\"\n >\n {label}\n </label>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n <input\n {...field}\n id={name as string}\n value={(field.value as string) ?? ''}\n placeholder={placeholder}\n disabled={disabled}\n type={type}\n className=\"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\"\n />\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n )}\n />\n );\n}\n","import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, StringFieldsOf } from '../types';\n\nexport function TextAreaField<\n TSchema extends z.ZodObject<Record<string, any>>,\n>({\n name,\n label,\n placeholder,\n disabled,\n description,\n className,\n form,\n showReset,\n}: BaseFieldProps & {\n name: StringFieldsOf<TSchema>;\n form?: UseFormReturn<z.input<TSchema>>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label htmlFor={name as string} className=\"text-sm font-medium leading-none\">{label}</label>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n <textarea\n {...field}\n id={name as string}\n value={(field.value as string) ?? ''}\n placeholder={placeholder}\n disabled={disabled}\n className=\"flex min-h-[75px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\"\n />\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n )}\n />\n );\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, NumberFieldsOf } from '../types';\n\nexport function NumberField<TSchema extends z.ZodObject<Record<string, any>>>({\n name,\n label,\n placeholder,\n disabled,\n description,\n className,\n form,\n showReset,\n}: BaseFieldProps & {\n name: NumberFieldsOf<TSchema>;\n form?: UseFormReturn<z.input<TSchema>>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label htmlFor={name as string} className=\"text-sm font-medium leading-none\">{label}</label>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n <input\n {...field}\n id={name as string}\n value={(field.value as number) ?? ''}\n placeholder={placeholder}\n disabled={disabled}\n type=\"number\"\n onChange={(e) => {\n const value = e.target.value;\n field.onChange(value === '' ? undefined : Number(value));\n }}\n className=\"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\"\n />\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n )}\n />\n );\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport * as SelectPrimitive from '@radix-ui/react-select';\nimport { Check, ChevronDown } from 'lucide-react';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, SelectFieldsOf } from '../types';\n\nexport function SelectField<\n TSchema extends z.ZodObject<Record<string, any>>,\n TField extends SelectFieldsOf<TSchema>,\n>({\n name,\n label,\n placeholder,\n disabled,\n description,\n className,\n form,\n options,\n showReset,\n}: BaseFieldProps & {\n name: TField;\n form?: UseFormReturn<z.input<TSchema>>;\n options: Array<{\n value: z.input<TSchema>[TField];\n label: string;\n }>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label htmlFor={name as string} className=\"text-sm font-medium leading-none\">{label}</label>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n <SelectPrimitive.Root\n onValueChange={field.onChange}\n value={String(field.value || '')}\n disabled={disabled}\n >\n <SelectPrimitive.Trigger className=\"flex h-9 w-full items-center justify-between rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50\">\n <SelectPrimitive.Value\n placeholder={placeholder ?? 'Select an option'}\n />\n <SelectPrimitive.Icon>\n <ChevronDown className=\"h-4 w-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content className=\"relative z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md\">\n <SelectPrimitive.Viewport className=\"p-1\">\n {options.map((option) => (\n <SelectPrimitive.Item\n key={String(option.value)}\n value={String(option.value)}\n className=\"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\"\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>\n {option.label}\n </SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n ))}\n </SelectPrimitive.Viewport>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n </SelectPrimitive.Root>\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n )}\n />\n );\n}\n","import { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox';\nimport { Check } from 'lucide-react';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, BooleanFieldsOf } from '../types';\n\nexport function CheckboxField<\n TSchema extends z.ZodObject<Record<string, any>>,\n>({\n name,\n label,\n disabled,\n description,\n className,\n form,\n}: BaseFieldProps & {\n name: BooleanFieldsOf<TSchema>;\n form?: UseFormReturn<z.input<TSchema>>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center gap-3\">\n <CheckboxPrimitive.Root\n id={name as string}\n checked={!!field.value}\n onCheckedChange={(checked) => field.onChange(checked)}\n disabled={disabled}\n className=\"h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\"\n >\n <CheckboxPrimitive.Indicator className=\"flex items-center justify-center text-current\">\n <Check className=\"h-3 w-3\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n <label\n htmlFor={name as string}\n className=\"text-sm font-medium leading-none\"\n >\n {label}\n </label>\n </div>\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n )}\n />\n );\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport { DayPicker } from 'react-day-picker';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\nimport { format } from 'date-fns';\nimport { CalendarIcon } from 'lucide-react';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, DateFieldsOf } from '../types';\n\nexport function DateField<TSchema extends z.ZodObject<Record<string, any>>>({\n name,\n label,\n description,\n className,\n form,\n showReset,\n}: BaseFieldProps & {\n name: DateFieldsOf<TSchema>;\n form?: UseFormReturn<z.input<TSchema>>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => {\n const date = field.value ? new Date(field.value as any) : undefined;\n\n return (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label htmlFor={name as string} className=\"text-sm font-medium leading-none\">\n {label}\n </label>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n <PopoverPrimitive.Root>\n <PopoverPrimitive.Trigger asChild>\n <button\n type=\"button\"\n className={cn(\n 'flex h-9 w-full items-center justify-start gap-2 rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50',\n !date && 'text-muted-foreground',\n )}\n >\n <CalendarIcon className=\"h-4 w-4\" />\n {date ? format(date, 'PPP') : 'Pick a date'}\n </button>\n </PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n align=\"start\"\n className=\"z-50 rounded-md border bg-popover p-0 text-popover-foreground shadow-md outline-none\"\n >\n <DayPicker\n mode=\"single\"\n selected={date}\n onSelect={(d) => field.onChange(d)}\n className=\"p-3\"\n />\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n );\n }}\n />\n );\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport * as SliderPrimitive from '@radix-ui/react-slider';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, NumberFieldsOf } from '../types';\n\nexport function SliderField<TSchema extends z.ZodObject<Record<string, any>>>({\n name,\n label,\n description,\n disabled,\n className,\n form,\n min = 0,\n max = 100,\n step = 1,\n showReset,\n}: BaseFieldProps & {\n name: NumberFieldsOf<TSchema>;\n form?: UseFormReturn<z.input<TSchema>>;\n min?: number;\n max?: number;\n step?: number;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => {\n const value = field.value !== undefined ? (field.value as number) : min;\n\n return (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label htmlFor={name as string} className=\"text-sm font-medium leading-none\">\n {label}\n </label>\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm text-muted-foreground\">{value}</span>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n </div>\n <SliderPrimitive.Root\n value={[value]}\n onValueChange={([val]) => field.onChange(val)}\n min={min}\n max={max}\n step={step}\n disabled={disabled}\n className=\"relative flex w-full touch-none select-none items-center\"\n >\n <SliderPrimitive.Track className=\"relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20\">\n <SliderPrimitive.Range className=\"absolute h-full bg-primary\" />\n </SliderPrimitive.Track>\n <SliderPrimitive.Thumb className=\"block h-4 w-4 rounded-full border border-primary/50 bg-background shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\" />\n </SliderPrimitive.Root>\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n );\n }}\n />\n );\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\nimport { Command } from 'cmdk';\nimport { Check, ChevronsUpDown, X } from 'lucide-react';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps } from '../types';\n\nexport function MultiSelectField<\n TSchema extends z.ZodObject<Record<string, any>>,\n>({\n name,\n label,\n description,\n disabled,\n form,\n className,\n options,\n placeholder = 'Select options...',\n showReset,\n}: BaseFieldProps & {\n name: keyof z.input<TSchema>;\n form?: UseFormReturn<z.input<TSchema>>;\n options: Array<{ value: string; label: string }>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => {\n const selected: string[] = Array.isArray(field.value)\n ? field.value\n : [];\n\n const toggle = (val: string) => {\n const next = selected.includes(val)\n ? selected.filter((v) => v !== val)\n : [...selected, val];\n field.onChange(next);\n };\n\n return (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label className=\"text-sm font-medium leading-none\">\n {label}\n </label>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n <PopoverPrimitive.Root>\n <PopoverPrimitive.Trigger asChild>\n <button\n type=\"button\"\n role=\"combobox\"\n disabled={disabled}\n className={cn(\n 'flex min-h-9 w-full flex-wrap items-center justify-between gap-1 rounded-md border border-input bg-transparent px-3 py-1.5 text-sm shadow-sm focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50',\n !selected.length && 'text-muted-foreground',\n )}\n >\n <div className=\"flex flex-wrap gap-1\">\n {selected.length\n ? selected.map((val) => (\n <span\n key={val}\n className=\"inline-flex items-center gap-1 rounded-md border bg-secondary px-1.5 py-0.5 text-xs text-secondary-foreground\"\n >\n {options.find((o) => o.value === val)?.label ?? val}\n <span\n onClick={(e) => {\n e.stopPropagation();\n toggle(val);\n }}\n className=\"cursor-pointer\"\n >\n <X className=\"h-3 w-3\" />\n </span>\n </span>\n ))\n : placeholder}\n </div>\n <ChevronsUpDown className=\"ml-2 h-4 w-4 shrink-0 opacity-50\" />\n </button>\n </PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n align=\"start\"\n className=\"z-50 min-w-[200px] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md outline-none\"\n >\n <Command>\n <div className=\"flex items-center border-b px-3\">\n <Command.Input\n placeholder=\"Search...\"\n className=\"flex h-9 w-full bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground\"\n />\n </div>\n <Command.List className=\"max-h-[200px] overflow-y-auto p-1\">\n <Command.Empty className=\"py-6 text-center text-sm\">\n No options found.\n </Command.Empty>\n <Command.Group>\n {options.map((option) => (\n <Command.Item\n key={option.value}\n value={option.value}\n onSelect={() => toggle(option.value)}\n className=\"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none aria-selected:bg-accent aria-selected:text-accent-foreground\"\n >\n <Check\n className={cn(\n 'mr-2 h-4 w-4',\n selected.includes(option.value)\n ? 'opacity-100'\n : 'opacity-0',\n )}\n />\n {option.label}\n </Command.Item>\n ))}\n </Command.Group>\n </Command.List>\n </Command>\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n );\n }}\n />\n );\n}\n","import { useForm } from 'react-hook-form';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport type { DefaultValues, FieldValues } from 'react-hook-form';\nimport type { z } from 'zod';\n\nexport function useValidatedForm<TSchema extends z.ZodType<any, FieldValues>>({\n schema,\n defaultValues,\n}: {\n schema: TSchema;\n defaultValues?: DefaultValues<z.input<TSchema>>;\n}) {\n return useForm<z.input<TSchema>, any, z.output<TSchema>>({\n resolver: zodResolver(schema),\n defaultValues,\n });\n}\n"],"mappings":"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","names":["import_zod","import_react_hook_form","import_jsx_runtime","import_react","import_react_hook_form","import_zod","import_jsx_runtime","import_react","import_react_hook_form","import_zod","import_jsx_runtime","import_react","import_react_hook_form","import_zod","import_jsx_runtime","import_react_hook_form","import_zod","import_lucide_react","import_jsx_runtime","import_react","import_react_hook_form","import_zod","import_lucide_react","import_jsx_runtime","import_react","import_react_hook_form","import_zod","import_jsx_runtime","import_react","import_react_hook_form","import_zod","PopoverPrimitive","import_lucide_react","import_jsx_runtime","import_jsx_runtime","import_react_hook_form","import_zod"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import * as react_hook_form from 'react-hook-form';
|
|
3
|
-
import {
|
|
3
|
+
import { DefaultValues, UseFormReturn, FieldValues } from 'react-hook-form';
|
|
4
|
+
import { StandardSchemaV1 } from '@standard-schema/spec';
|
|
4
5
|
import z, { z as z$1 } from 'zod';
|
|
5
6
|
import React$1 from 'react';
|
|
6
7
|
|
|
@@ -12,12 +13,15 @@ type BaseFieldProps = {
|
|
|
12
13
|
className?: string;
|
|
13
14
|
showReset?: boolean;
|
|
14
15
|
};
|
|
15
|
-
type
|
|
16
|
+
type SchemaInput<T extends StandardSchemaV1<any, any>> = T extends StandardSchemaV1<infer I, any> ? I : never;
|
|
17
|
+
type SchemaOutput<T extends StandardSchemaV1<any, any>> = T extends StandardSchemaV1<any, infer O> ? O : never;
|
|
18
|
+
type ValidatedFormProps<TSchema extends StandardSchemaV1<any, any>> = {
|
|
16
19
|
schema: TSchema;
|
|
17
|
-
onSubmit: (data:
|
|
18
|
-
defaultValues?: DefaultValues<
|
|
19
|
-
children: React.ReactNode | ((form: UseFormReturn<
|
|
20
|
-
form?: UseFormReturn<
|
|
20
|
+
onSubmit: (data: SchemaOutput<TSchema>) => Promise<void>;
|
|
21
|
+
defaultValues?: DefaultValues<SchemaInput<TSchema>>;
|
|
22
|
+
children: React.ReactNode | ((form: UseFormReturn<SchemaInput<TSchema>, any, SchemaOutput<TSchema>>) => React.ReactNode);
|
|
23
|
+
form?: UseFormReturn<SchemaInput<TSchema>, any, SchemaOutput<TSchema>>;
|
|
24
|
+
components?: Partial<FormComponents>;
|
|
21
25
|
submitLabel?: string;
|
|
22
26
|
hideSubmit?: boolean;
|
|
23
27
|
renderSubmit?: (state: {
|
|
@@ -25,7 +29,6 @@ type ValidatedFormProps<TInput extends FieldValues, TOutput, TSchema> = {
|
|
|
25
29
|
reset: () => void;
|
|
26
30
|
}) => React.ReactNode;
|
|
27
31
|
renderError?: (message: string) => React.ReactNode;
|
|
28
|
-
components?: Partial<FormComponents>;
|
|
29
32
|
};
|
|
30
33
|
type FormComponents = {
|
|
31
34
|
Input: React.ComponentType<React.InputHTMLAttributes<HTMLInputElement>>;
|
|
@@ -55,7 +58,7 @@ type SelectFieldsOf<TSchema extends z.ZodObject<Record<string, any>>> = {
|
|
|
55
58
|
[K in keyof TSchema['shape']]: TSchema['shape'][K] extends z.ZodOptional<z.ZodEnum<any>> | z.ZodNullable<z.ZodEnum<any>> | z.ZodEnum<any> | z.ZodOptional<z.ZodEnum<any>> | z.ZodUnion<readonly [z.ZodTypeAny, z.ZodTypeAny, ...z.ZodTypeAny[]]> | z.ZodOptional<z.ZodUnion<readonly [z.ZodTypeAny, z.ZodTypeAny, ...z.ZodTypeAny[]]>> ? K : never;
|
|
56
59
|
}[keyof TSchema['shape']];
|
|
57
60
|
|
|
58
|
-
declare function ValidatedForm<TSchema extends
|
|
61
|
+
declare function ValidatedForm<TSchema extends StandardSchemaV1<any, any>>({ children, schema, onSubmit, defaultValues, form: externalForm, submitLabel, hideSubmit, renderSubmit, renderError, }: ValidatedFormProps<TSchema>): react_jsx_runtime.JSX.Element;
|
|
59
62
|
|
|
60
63
|
declare function TextField<TSchema extends z$1.ZodObject<Record<string, any>>>({ name, label, placeholder, disabled, description, className, form, type, showReset, }: BaseFieldProps & {
|
|
61
64
|
name: StringFieldsOf<TSchema>;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import * as react_hook_form from 'react-hook-form';
|
|
3
|
-
import {
|
|
3
|
+
import { DefaultValues, UseFormReturn, FieldValues } from 'react-hook-form';
|
|
4
|
+
import { StandardSchemaV1 } from '@standard-schema/spec';
|
|
4
5
|
import z, { z as z$1 } from 'zod';
|
|
5
6
|
import React$1 from 'react';
|
|
6
7
|
|
|
@@ -12,12 +13,15 @@ type BaseFieldProps = {
|
|
|
12
13
|
className?: string;
|
|
13
14
|
showReset?: boolean;
|
|
14
15
|
};
|
|
15
|
-
type
|
|
16
|
+
type SchemaInput<T extends StandardSchemaV1<any, any>> = T extends StandardSchemaV1<infer I, any> ? I : never;
|
|
17
|
+
type SchemaOutput<T extends StandardSchemaV1<any, any>> = T extends StandardSchemaV1<any, infer O> ? O : never;
|
|
18
|
+
type ValidatedFormProps<TSchema extends StandardSchemaV1<any, any>> = {
|
|
16
19
|
schema: TSchema;
|
|
17
|
-
onSubmit: (data:
|
|
18
|
-
defaultValues?: DefaultValues<
|
|
19
|
-
children: React.ReactNode | ((form: UseFormReturn<
|
|
20
|
-
form?: UseFormReturn<
|
|
20
|
+
onSubmit: (data: SchemaOutput<TSchema>) => Promise<void>;
|
|
21
|
+
defaultValues?: DefaultValues<SchemaInput<TSchema>>;
|
|
22
|
+
children: React.ReactNode | ((form: UseFormReturn<SchemaInput<TSchema>, any, SchemaOutput<TSchema>>) => React.ReactNode);
|
|
23
|
+
form?: UseFormReturn<SchemaInput<TSchema>, any, SchemaOutput<TSchema>>;
|
|
24
|
+
components?: Partial<FormComponents>;
|
|
21
25
|
submitLabel?: string;
|
|
22
26
|
hideSubmit?: boolean;
|
|
23
27
|
renderSubmit?: (state: {
|
|
@@ -25,7 +29,6 @@ type ValidatedFormProps<TInput extends FieldValues, TOutput, TSchema> = {
|
|
|
25
29
|
reset: () => void;
|
|
26
30
|
}) => React.ReactNode;
|
|
27
31
|
renderError?: (message: string) => React.ReactNode;
|
|
28
|
-
components?: Partial<FormComponents>;
|
|
29
32
|
};
|
|
30
33
|
type FormComponents = {
|
|
31
34
|
Input: React.ComponentType<React.InputHTMLAttributes<HTMLInputElement>>;
|
|
@@ -55,7 +58,7 @@ type SelectFieldsOf<TSchema extends z.ZodObject<Record<string, any>>> = {
|
|
|
55
58
|
[K in keyof TSchema['shape']]: TSchema['shape'][K] extends z.ZodOptional<z.ZodEnum<any>> | z.ZodNullable<z.ZodEnum<any>> | z.ZodEnum<any> | z.ZodOptional<z.ZodEnum<any>> | z.ZodUnion<readonly [z.ZodTypeAny, z.ZodTypeAny, ...z.ZodTypeAny[]]> | z.ZodOptional<z.ZodUnion<readonly [z.ZodTypeAny, z.ZodTypeAny, ...z.ZodTypeAny[]]>> ? K : never;
|
|
56
59
|
}[keyof TSchema['shape']];
|
|
57
60
|
|
|
58
|
-
declare function ValidatedForm<TSchema extends
|
|
61
|
+
declare function ValidatedForm<TSchema extends StandardSchemaV1<any, any>>({ children, schema, onSubmit, defaultValues, form: externalForm, submitLabel, hideSubmit, renderSubmit, renderError, }: ValidatedFormProps<TSchema>): react_jsx_runtime.JSX.Element;
|
|
59
62
|
|
|
60
63
|
declare function TextField<TSchema extends z$1.ZodObject<Record<string, any>>>({ name, label, placeholder, disabled, description, className, form, type, showReset, }: BaseFieldProps & {
|
|
61
64
|
name: StringFieldsOf<TSchema>;
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
// src/ValidatedForm.tsx
|
|
2
2
|
import { useForm, FormProvider } from "react-hook-form";
|
|
3
|
-
import {
|
|
4
|
-
import "zod";
|
|
3
|
+
import { standardSchemaResolver } from "@hookform/resolvers/standard-schema";
|
|
5
4
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
5
|
function ValidatedForm({
|
|
7
6
|
children,
|
|
@@ -15,7 +14,7 @@ function ValidatedForm({
|
|
|
15
14
|
renderError
|
|
16
15
|
}) {
|
|
17
16
|
const internalForm = useForm({
|
|
18
|
-
resolver:
|
|
17
|
+
resolver: standardSchemaResolver(schema),
|
|
19
18
|
defaultValues
|
|
20
19
|
});
|
|
21
20
|
const form = externalForm ?? internalForm;
|
|
@@ -694,13 +693,13 @@ function createForm(schema) {
|
|
|
694
693
|
|
|
695
694
|
// src/hooks/useValidatedForm.ts
|
|
696
695
|
import { useForm as useForm2 } from "react-hook-form";
|
|
697
|
-
import { zodResolver
|
|
696
|
+
import { zodResolver } from "@hookform/resolvers/zod";
|
|
698
697
|
function useValidatedForm({
|
|
699
698
|
schema,
|
|
700
699
|
defaultValues
|
|
701
700
|
}) {
|
|
702
701
|
return useForm2({
|
|
703
|
-
resolver:
|
|
702
|
+
resolver: zodResolver(schema),
|
|
704
703
|
defaultValues
|
|
705
704
|
});
|
|
706
705
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ValidatedForm.tsx","../src/createForm.tsx","../src/fields/TextField.tsx","../src/utils/cn.ts","../src/fields/TextAreaField.tsx","../src/fields/NumberField.tsx","../src/fields/SelectField.tsx","../src/fields/CheckboxField.tsx","../src/fields/DateField.tsx","../src/fields/SliderField.tsx","../src/fields/MultiSelectField.tsx","../src/hooks/useValidatedForm.ts"],"sourcesContent":["import { useForm, FormProvider } from 'react-hook-form';\nimport type { FieldValues } from 'react-hook-form';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { z } from 'zod';\nimport type { ValidatedFormProps } from './types';\n\nexport function ValidatedForm<\n TSchema extends z.ZodType<FieldValues, FieldValues>,\n TInput extends FieldValues = z.input<TSchema> & FieldValues,\n TOutput extends FieldValues = z.output<TSchema> & FieldValues,\n>({\n children,\n schema,\n onSubmit,\n defaultValues,\n form: externalForm,\n submitLabel,\n hideSubmit,\n renderSubmit,\n renderError,\n}: ValidatedFormProps<TInput, TOutput, TSchema>) {\n const internalForm = useForm<TInput, any, TOutput>({\n resolver: zodResolver(schema as any),\n defaultValues,\n });\n\n const form = externalForm ?? internalForm;\n\n const handleSubmit = form.handleSubmit(async (data) => {\n try {\n await onSubmit(data);\n } catch (err: any) {\n const fieldErrors = err?.data?.fieldErrors;\n if (fieldErrors) {\n Object.entries(fieldErrors).forEach(([field, message]) => {\n form.setError(field as any, { message: message as string });\n });\n } else {\n form.setError('root', {\n message: err?.data?.message ?? err?.message ?? 'Something went wrong',\n });\n }\n }\n });\n\n return (\n <FormProvider {...form}>\n <form onSubmit={handleSubmit} className=\"space-y-4\">\n {typeof children === 'function' ? children(form) : children}\n {form.formState.errors.root &&\n (renderError ? (\n renderError(form.formState.errors.root.message!)\n ) : (\n <p className=\"text-sm font-medium text-destructive\">\n {form.formState.errors.root.message}\n </p>\n ))}\n {renderSubmit\n ? renderSubmit({\n isSubmitting: form.formState.isSubmitting,\n reset: form.reset,\n })\n : !hideSubmit && (\n <button\n type=\"submit\"\n disabled={form.formState.isSubmitting}\n className=\"inline-flex h-9 items-center justify-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground shadow transition-colors hover:bg-primary/90 disabled:pointer-events-none disabled:opacity-50\"\n >\n {form.formState.isSubmitting\n ? 'Submitting...'\n : (submitLabel ?? 'Submit')}\n </button>\n )}\n </form>\n </FormProvider>\n );\n}\n","import { ValidatedForm } from '.';\nimport z from 'zod';\nimport type { DefaultValues } from 'react-hook-form';\nimport {\n TextField,\n TextAreaField,\n NumberField,\n SelectField,\n CheckboxField,\n DateField,\n SliderField,\n MultiSelectField,\n} from './fields';\nimport type { SelectFieldsOf } from '.';\nimport type { FormComponents } from './types';\nexport function createForm<TSchema extends z.ZodObject<Record<string, any>>>(\n schema: TSchema,\n) {\n const Form = ({\n children,\n onSubmit,\n defaultValues,\n components,\n }: {\n children: React.ReactNode;\n onSubmit: (data: z.output<TSchema>) => Promise<void>;\n defaultValues?: DefaultValues<z.input<TSchema>>;\n components?: Partial<FormComponents>; // add this\n }) => (\n <ValidatedForm\n schema={schema as any}\n onSubmit={onSubmit}\n defaultValues={defaultValues}\n components={components}\n >\n {children}\n </ValidatedForm>\n );\n Form.displayName = 'Form';\n\n const SchemaTextField = (\n props: Omit<Parameters<typeof TextField<TSchema>>[0], 'form'>,\n ) => <TextField<TSchema> {...props} />;\n SchemaTextField.displayName = 'TextField';\n\n const SchemaPasswordField = (\n props: Omit<Parameters<typeof TextField<TSchema>>[0], 'form'>,\n ) => <TextField<TSchema> {...props} />;\n SchemaPasswordField.displayName = 'PasswordField';\n\n const SchemaTextAreaField = (\n props: Omit<Parameters<typeof TextAreaField<TSchema>>[0], 'form'>,\n ) => <TextAreaField<TSchema> {...props} />;\n SchemaTextAreaField.displayName = 'TextAreaField';\n\n const SchemaNumberField = (\n props: Omit<Parameters<typeof NumberField<TSchema>>[0], 'form'>,\n ) => <NumberField<TSchema> {...props} />;\n SchemaNumberField.displayName = 'NumberField';\n\n const SchemaSelectField = <TField extends SelectFieldsOf<TSchema>>(\n props: Omit<Parameters<typeof SelectField<TSchema, TField>>[0], 'form'>,\n ) => <SelectField<TSchema, TField> {...props} />;\n SchemaSelectField.displayName = 'SelectField';\n\n const SchemaCheckboxField = (\n props: Omit<Parameters<typeof CheckboxField<TSchema>>[0], 'form'>,\n ) => <CheckboxField<TSchema> {...props} />;\n SchemaCheckboxField.displayName = 'CheckboxField';\n\n const SchemaDateField = (\n props: Omit<Parameters<typeof DateField<TSchema>>[0], 'form'>,\n ) => <DateField<TSchema> {...props} />;\n SchemaDateField.displayName = 'DateField';\n\n const SchemaSliderField = (\n props: Omit<Parameters<typeof SliderField<TSchema>>[0], 'form'>,\n ) => <SliderField<TSchema> {...props} />;\n SchemaSliderField.displayName = 'SliderField';\n\n const SchemaMultiSelectField = (\n props: Omit<Parameters<typeof MultiSelectField<TSchema>>[0], 'form'>,\n ) => <MultiSelectField<TSchema> {...props} />;\n SchemaMultiSelectField.displayName = 'MultiSelectField';\n\n return {\n Form,\n TextField: SchemaTextField,\n PasswordField: SchemaPasswordField,\n TextAreaField: SchemaTextAreaField,\n NumberField: SchemaNumberField,\n SelectField: SchemaSelectField,\n CheckboxField: SchemaCheckboxField,\n DateField: SchemaDateField,\n SliderField: SchemaSliderField,\n MultiSelectField: SchemaMultiSelectField,\n };\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, StringFieldsOf } from '../types';\n\nexport function TextField<TSchema extends z.ZodObject<Record<string, any>>>({\n name,\n label,\n placeholder,\n disabled,\n description,\n className,\n form,\n type = 'text',\n showReset,\n}: BaseFieldProps & {\n name: StringFieldsOf<TSchema>;\n type?: React.HTMLInputTypeAttribute;\n form?: UseFormReturn<z.input<TSchema>>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label\n htmlFor={name as string}\n className=\"text-sm font-medium leading-none\"\n >\n {label}\n </label>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n <input\n {...field}\n id={name as string}\n value={(field.value as string) ?? ''}\n placeholder={placeholder}\n disabled={disabled}\n type={type}\n className=\"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\"\n />\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n )}\n />\n );\n}\n","import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, StringFieldsOf } from '../types';\n\nexport function TextAreaField<\n TSchema extends z.ZodObject<Record<string, any>>,\n>({\n name,\n label,\n placeholder,\n disabled,\n description,\n className,\n form,\n showReset,\n}: BaseFieldProps & {\n name: StringFieldsOf<TSchema>;\n form?: UseFormReturn<z.input<TSchema>>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label htmlFor={name as string} className=\"text-sm font-medium leading-none\">{label}</label>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n <textarea\n {...field}\n id={name as string}\n value={(field.value as string) ?? ''}\n placeholder={placeholder}\n disabled={disabled}\n className=\"flex min-h-[75px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\"\n />\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n )}\n />\n );\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, NumberFieldsOf } from '../types';\n\nexport function NumberField<TSchema extends z.ZodObject<Record<string, any>>>({\n name,\n label,\n placeholder,\n disabled,\n description,\n className,\n form,\n showReset,\n}: BaseFieldProps & {\n name: NumberFieldsOf<TSchema>;\n form?: UseFormReturn<z.input<TSchema>>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label htmlFor={name as string} className=\"text-sm font-medium leading-none\">{label}</label>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n <input\n {...field}\n id={name as string}\n value={(field.value as number) ?? ''}\n placeholder={placeholder}\n disabled={disabled}\n type=\"number\"\n onChange={(e) => {\n const value = e.target.value;\n field.onChange(value === '' ? undefined : Number(value));\n }}\n className=\"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\"\n />\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n )}\n />\n );\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport * as SelectPrimitive from '@radix-ui/react-select';\nimport { Check, ChevronDown } from 'lucide-react';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, SelectFieldsOf } from '../types';\n\nexport function SelectField<\n TSchema extends z.ZodObject<Record<string, any>>,\n TField extends SelectFieldsOf<TSchema>,\n>({\n name,\n label,\n placeholder,\n disabled,\n description,\n className,\n form,\n options,\n showReset,\n}: BaseFieldProps & {\n name: TField;\n form?: UseFormReturn<z.input<TSchema>>;\n options: Array<{\n value: z.input<TSchema>[TField];\n label: string;\n }>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label htmlFor={name as string} className=\"text-sm font-medium leading-none\">{label}</label>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n <SelectPrimitive.Root\n onValueChange={field.onChange}\n value={String(field.value || '')}\n disabled={disabled}\n >\n <SelectPrimitive.Trigger className=\"flex h-9 w-full items-center justify-between rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50\">\n <SelectPrimitive.Value\n placeholder={placeholder ?? 'Select an option'}\n />\n <SelectPrimitive.Icon>\n <ChevronDown className=\"h-4 w-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content className=\"relative z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md\">\n <SelectPrimitive.Viewport className=\"p-1\">\n {options.map((option) => (\n <SelectPrimitive.Item\n key={String(option.value)}\n value={String(option.value)}\n className=\"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\"\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>\n {option.label}\n </SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n ))}\n </SelectPrimitive.Viewport>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n </SelectPrimitive.Root>\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n )}\n />\n );\n}\n","import { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox';\nimport { Check } from 'lucide-react';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, BooleanFieldsOf } from '../types';\n\nexport function CheckboxField<\n TSchema extends z.ZodObject<Record<string, any>>,\n>({\n name,\n label,\n disabled,\n description,\n className,\n form,\n}: BaseFieldProps & {\n name: BooleanFieldsOf<TSchema>;\n form?: UseFormReturn<z.input<TSchema>>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center gap-3\">\n <CheckboxPrimitive.Root\n id={name as string}\n checked={!!field.value}\n onCheckedChange={(checked) => field.onChange(checked)}\n disabled={disabled}\n className=\"h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\"\n >\n <CheckboxPrimitive.Indicator className=\"flex items-center justify-center text-current\">\n <Check className=\"h-3 w-3\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n <label\n htmlFor={name as string}\n className=\"text-sm font-medium leading-none\"\n >\n {label}\n </label>\n </div>\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n )}\n />\n );\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport { DayPicker } from 'react-day-picker';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\nimport { format } from 'date-fns';\nimport { CalendarIcon } from 'lucide-react';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, DateFieldsOf } from '../types';\n\nexport function DateField<TSchema extends z.ZodObject<Record<string, any>>>({\n name,\n label,\n description,\n className,\n form,\n showReset,\n}: BaseFieldProps & {\n name: DateFieldsOf<TSchema>;\n form?: UseFormReturn<z.input<TSchema>>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => {\n const date = field.value ? new Date(field.value as any) : undefined;\n\n return (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label htmlFor={name as string} className=\"text-sm font-medium leading-none\">\n {label}\n </label>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n <PopoverPrimitive.Root>\n <PopoverPrimitive.Trigger asChild>\n <button\n type=\"button\"\n className={cn(\n 'flex h-9 w-full items-center justify-start gap-2 rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50',\n !date && 'text-muted-foreground',\n )}\n >\n <CalendarIcon className=\"h-4 w-4\" />\n {date ? format(date, 'PPP') : 'Pick a date'}\n </button>\n </PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n align=\"start\"\n className=\"z-50 rounded-md border bg-popover p-0 text-popover-foreground shadow-md outline-none\"\n >\n <DayPicker\n mode=\"single\"\n selected={date}\n onSelect={(d) => field.onChange(d)}\n className=\"p-3\"\n />\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n );\n }}\n />\n );\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport * as SliderPrimitive from '@radix-ui/react-slider';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, NumberFieldsOf } from '../types';\n\nexport function SliderField<TSchema extends z.ZodObject<Record<string, any>>>({\n name,\n label,\n description,\n disabled,\n className,\n form,\n min = 0,\n max = 100,\n step = 1,\n showReset,\n}: BaseFieldProps & {\n name: NumberFieldsOf<TSchema>;\n form?: UseFormReturn<z.input<TSchema>>;\n min?: number;\n max?: number;\n step?: number;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => {\n const value = field.value !== undefined ? (field.value as number) : min;\n\n return (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label htmlFor={name as string} className=\"text-sm font-medium leading-none\">\n {label}\n </label>\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm text-muted-foreground\">{value}</span>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n </div>\n <SliderPrimitive.Root\n value={[value]}\n onValueChange={([val]) => field.onChange(val)}\n min={min}\n max={max}\n step={step}\n disabled={disabled}\n className=\"relative flex w-full touch-none select-none items-center\"\n >\n <SliderPrimitive.Track className=\"relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20\">\n <SliderPrimitive.Range className=\"absolute h-full bg-primary\" />\n </SliderPrimitive.Track>\n <SliderPrimitive.Thumb className=\"block h-4 w-4 rounded-full border border-primary/50 bg-background shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\" />\n </SliderPrimitive.Root>\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n );\n }}\n />\n );\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\nimport { Command } from 'cmdk';\nimport { Check, ChevronsUpDown, X } from 'lucide-react';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps } from '../types';\n\nexport function MultiSelectField<\n TSchema extends z.ZodObject<Record<string, any>>,\n>({\n name,\n label,\n description,\n disabled,\n form,\n className,\n options,\n placeholder = 'Select options...',\n showReset,\n}: BaseFieldProps & {\n name: keyof z.input<TSchema>;\n form?: UseFormReturn<z.input<TSchema>>;\n options: Array<{ value: string; label: string }>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => {\n const selected: string[] = Array.isArray(field.value)\n ? field.value\n : [];\n\n const toggle = (val: string) => {\n const next = selected.includes(val)\n ? selected.filter((v) => v !== val)\n : [...selected, val];\n field.onChange(next);\n };\n\n return (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label className=\"text-sm font-medium leading-none\">\n {label}\n </label>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n <PopoverPrimitive.Root>\n <PopoverPrimitive.Trigger asChild>\n <button\n type=\"button\"\n role=\"combobox\"\n disabled={disabled}\n className={cn(\n 'flex min-h-9 w-full flex-wrap items-center justify-between gap-1 rounded-md border border-input bg-transparent px-3 py-1.5 text-sm shadow-sm focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50',\n !selected.length && 'text-muted-foreground',\n )}\n >\n <div className=\"flex flex-wrap gap-1\">\n {selected.length\n ? selected.map((val) => (\n <span\n key={val}\n className=\"inline-flex items-center gap-1 rounded-md border bg-secondary px-1.5 py-0.5 text-xs text-secondary-foreground\"\n >\n {options.find((o) => o.value === val)?.label ?? val}\n <span\n onClick={(e) => {\n e.stopPropagation();\n toggle(val);\n }}\n className=\"cursor-pointer\"\n >\n <X className=\"h-3 w-3\" />\n </span>\n </span>\n ))\n : placeholder}\n </div>\n <ChevronsUpDown className=\"ml-2 h-4 w-4 shrink-0 opacity-50\" />\n </button>\n </PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n align=\"start\"\n className=\"z-50 min-w-[200px] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md outline-none\"\n >\n <Command>\n <div className=\"flex items-center border-b px-3\">\n <Command.Input\n placeholder=\"Search...\"\n className=\"flex h-9 w-full bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground\"\n />\n </div>\n <Command.List className=\"max-h-[200px] overflow-y-auto p-1\">\n <Command.Empty className=\"py-6 text-center text-sm\">\n No options found.\n </Command.Empty>\n <Command.Group>\n {options.map((option) => (\n <Command.Item\n key={option.value}\n value={option.value}\n onSelect={() => toggle(option.value)}\n className=\"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none aria-selected:bg-accent aria-selected:text-accent-foreground\"\n >\n <Check\n className={cn(\n 'mr-2 h-4 w-4',\n selected.includes(option.value)\n ? 'opacity-100'\n : 'opacity-0',\n )}\n />\n {option.label}\n </Command.Item>\n ))}\n </Command.Group>\n </Command.List>\n </Command>\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n );\n }}\n />\n );\n}\n","import { useForm } from 'react-hook-form';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport type { DefaultValues, FieldValues } from 'react-hook-form';\nimport type { z } from 'zod';\n\nexport function useValidatedForm<TSchema extends z.ZodType<any, FieldValues>>({\n schema,\n defaultValues,\n}: {\n schema: TSchema;\n defaultValues?: DefaultValues<z.input<TSchema>>;\n}) {\n return useForm<z.input<TSchema>, any, z.output<TSchema>>({\n resolver: zodResolver(schema),\n defaultValues,\n });\n}\n"],"mappings":"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","names":["jsx","jsxs","Controller","useFormContext","jsx","jsxs","useFormContext","Controller","Controller","useFormContext","jsx","jsxs","useFormContext","Controller","Controller","useFormContext","jsx","jsxs","useFormContext","Controller","Controller","useFormContext","Check","jsx","jsxs","useFormContext","Controller","Check","Controller","useFormContext","jsx","jsxs","useFormContext","Controller","Controller","useFormContext","jsx","jsxs","useFormContext","Controller","Controller","useFormContext","PopoverPrimitive","Check","jsx","jsxs","useFormContext","Controller","Check","jsx","useForm","zodResolver"]}
|
|
1
|
+
{"version":3,"sources":["../src/ValidatedForm.tsx","../src/createForm.tsx","../src/fields/TextField.tsx","../src/utils/cn.ts","../src/fields/TextAreaField.tsx","../src/fields/NumberField.tsx","../src/fields/SelectField.tsx","../src/fields/CheckboxField.tsx","../src/fields/DateField.tsx","../src/fields/SliderField.tsx","../src/fields/MultiSelectField.tsx","../src/hooks/useValidatedForm.ts"],"sourcesContent":["import { useForm, FormProvider } from 'react-hook-form';\nimport type { SchemaInput, ValidatedFormProps, SchemaOutput } from './types';\nimport { standardSchemaResolver } from '@hookform/resolvers/standard-schema';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\n\nexport function ValidatedForm<TSchema extends StandardSchemaV1<any, any>>({\n children,\n schema,\n onSubmit,\n defaultValues,\n form: externalForm,\n submitLabel,\n hideSubmit,\n renderSubmit,\n renderError,\n}: ValidatedFormProps<TSchema>) {\n type TInput = SchemaInput<TSchema>;\n type TOutput = SchemaOutput<TSchema>;\n\n const internalForm = useForm<TInput, any, TOutput>({\n resolver: standardSchemaResolver(schema) as any,\n defaultValues,\n });\n\n const form = externalForm ?? internalForm;\n\n const handleSubmit = form.handleSubmit(async (data) => {\n try {\n await onSubmit(data);\n } catch (err: any) {\n const fieldErrors = err?.data?.fieldErrors;\n if (fieldErrors) {\n Object.entries(fieldErrors).forEach(([field, message]) => {\n form.setError(field as any, { message: message as string });\n });\n } else {\n form.setError('root', {\n message: err?.data?.message ?? err?.message ?? 'Something went wrong',\n });\n }\n }\n });\n\n return (\n <FormProvider {...form}>\n <form onSubmit={handleSubmit} className=\"space-y-4\">\n {typeof children === 'function' ? children(form) : children}\n {form.formState.errors.root &&\n (renderError ? (\n renderError(form.formState.errors.root.message!)\n ) : (\n <p className=\"text-sm font-medium text-destructive\">\n {form.formState.errors.root.message}\n </p>\n ))}\n {renderSubmit\n ? renderSubmit({\n isSubmitting: form.formState.isSubmitting,\n reset: form.reset,\n })\n : !hideSubmit && (\n <button\n type=\"submit\"\n disabled={form.formState.isSubmitting}\n className=\"inline-flex h-9 items-center justify-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground shadow transition-colors hover:bg-primary/90 disabled:pointer-events-none disabled:opacity-50\"\n >\n {form.formState.isSubmitting\n ? 'Submitting...'\n : (submitLabel ?? 'Submit')}\n </button>\n )}\n </form>\n </FormProvider>\n );\n}\n","import { ValidatedForm } from '.';\nimport z from 'zod';\nimport type { DefaultValues } from 'react-hook-form';\nimport {\n TextField,\n TextAreaField,\n NumberField,\n SelectField,\n CheckboxField,\n DateField,\n SliderField,\n MultiSelectField,\n} from './fields';\nimport type { SelectFieldsOf } from '.';\nimport type { FormComponents } from './types';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nexport function createForm<TSchema extends z.ZodObject<Record<string, any>>>(\n schema: TSchema,\n) {\n const Form = ({\n children,\n onSubmit,\n defaultValues,\n components,\n }: {\n children: React.ReactNode;\n onSubmit: (data: z.output<TSchema>) => Promise<void>;\n defaultValues?: DefaultValues<z.input<TSchema>>;\n components?: Partial<FormComponents>;\n }) => (\n <ValidatedForm\n schema={\n schema as unknown as StandardSchemaV1<\n z.input<TSchema>,\n z.output<TSchema>\n >\n }\n onSubmit={onSubmit as any}\n defaultValues={defaultValues as any}\n components={components}\n >\n {children}\n </ValidatedForm>\n );\n Form.displayName = 'Form';\n\n const SchemaTextField = (\n props: Omit<Parameters<typeof TextField<TSchema>>[0], 'form'>,\n ) => <TextField<TSchema> {...props} />;\n SchemaTextField.displayName = 'TextField';\n\n const SchemaPasswordField = (\n props: Omit<Parameters<typeof TextField<TSchema>>[0], 'form'>,\n ) => <TextField<TSchema> {...props} />;\n SchemaPasswordField.displayName = 'PasswordField';\n\n const SchemaTextAreaField = (\n props: Omit<Parameters<typeof TextAreaField<TSchema>>[0], 'form'>,\n ) => <TextAreaField<TSchema> {...props} />;\n SchemaTextAreaField.displayName = 'TextAreaField';\n\n const SchemaNumberField = (\n props: Omit<Parameters<typeof NumberField<TSchema>>[0], 'form'>,\n ) => <NumberField<TSchema> {...props} />;\n SchemaNumberField.displayName = 'NumberField';\n\n const SchemaSelectField = <TField extends SelectFieldsOf<TSchema>>(\n props: Omit<Parameters<typeof SelectField<TSchema, TField>>[0], 'form'>,\n ) => <SelectField<TSchema, TField> {...props} />;\n SchemaSelectField.displayName = 'SelectField';\n\n const SchemaCheckboxField = (\n props: Omit<Parameters<typeof CheckboxField<TSchema>>[0], 'form'>,\n ) => <CheckboxField<TSchema> {...props} />;\n SchemaCheckboxField.displayName = 'CheckboxField';\n\n const SchemaDateField = (\n props: Omit<Parameters<typeof DateField<TSchema>>[0], 'form'>,\n ) => <DateField<TSchema> {...props} />;\n SchemaDateField.displayName = 'DateField';\n\n const SchemaSliderField = (\n props: Omit<Parameters<typeof SliderField<TSchema>>[0], 'form'>,\n ) => <SliderField<TSchema> {...props} />;\n SchemaSliderField.displayName = 'SliderField';\n\n const SchemaMultiSelectField = (\n props: Omit<Parameters<typeof MultiSelectField<TSchema>>[0], 'form'>,\n ) => <MultiSelectField<TSchema> {...props} />;\n SchemaMultiSelectField.displayName = 'MultiSelectField';\n\n return {\n Form,\n TextField: SchemaTextField,\n PasswordField: SchemaPasswordField,\n TextAreaField: SchemaTextAreaField,\n NumberField: SchemaNumberField,\n SelectField: SchemaSelectField,\n CheckboxField: SchemaCheckboxField,\n DateField: SchemaDateField,\n SliderField: SchemaSliderField,\n MultiSelectField: SchemaMultiSelectField,\n };\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, StringFieldsOf } from '../types';\n\nexport function TextField<TSchema extends z.ZodObject<Record<string, any>>>({\n name,\n label,\n placeholder,\n disabled,\n description,\n className,\n form,\n type = 'text',\n showReset,\n}: BaseFieldProps & {\n name: StringFieldsOf<TSchema>;\n type?: React.HTMLInputTypeAttribute;\n form?: UseFormReturn<z.input<TSchema>>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label\n htmlFor={name as string}\n className=\"text-sm font-medium leading-none\"\n >\n {label}\n </label>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n <input\n {...field}\n id={name as string}\n value={(field.value as string) ?? ''}\n placeholder={placeholder}\n disabled={disabled}\n type={type}\n className=\"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\"\n />\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n )}\n />\n );\n}\n","import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, StringFieldsOf } from '../types';\n\nexport function TextAreaField<\n TSchema extends z.ZodObject<Record<string, any>>,\n>({\n name,\n label,\n placeholder,\n disabled,\n description,\n className,\n form,\n showReset,\n}: BaseFieldProps & {\n name: StringFieldsOf<TSchema>;\n form?: UseFormReturn<z.input<TSchema>>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label htmlFor={name as string} className=\"text-sm font-medium leading-none\">{label}</label>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n <textarea\n {...field}\n id={name as string}\n value={(field.value as string) ?? ''}\n placeholder={placeholder}\n disabled={disabled}\n className=\"flex min-h-[75px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\"\n />\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n )}\n />\n );\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, NumberFieldsOf } from '../types';\n\nexport function NumberField<TSchema extends z.ZodObject<Record<string, any>>>({\n name,\n label,\n placeholder,\n disabled,\n description,\n className,\n form,\n showReset,\n}: BaseFieldProps & {\n name: NumberFieldsOf<TSchema>;\n form?: UseFormReturn<z.input<TSchema>>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label htmlFor={name as string} className=\"text-sm font-medium leading-none\">{label}</label>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n <input\n {...field}\n id={name as string}\n value={(field.value as number) ?? ''}\n placeholder={placeholder}\n disabled={disabled}\n type=\"number\"\n onChange={(e) => {\n const value = e.target.value;\n field.onChange(value === '' ? undefined : Number(value));\n }}\n className=\"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\"\n />\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n )}\n />\n );\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport * as SelectPrimitive from '@radix-ui/react-select';\nimport { Check, ChevronDown } from 'lucide-react';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, SelectFieldsOf } from '../types';\n\nexport function SelectField<\n TSchema extends z.ZodObject<Record<string, any>>,\n TField extends SelectFieldsOf<TSchema>,\n>({\n name,\n label,\n placeholder,\n disabled,\n description,\n className,\n form,\n options,\n showReset,\n}: BaseFieldProps & {\n name: TField;\n form?: UseFormReturn<z.input<TSchema>>;\n options: Array<{\n value: z.input<TSchema>[TField];\n label: string;\n }>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label htmlFor={name as string} className=\"text-sm font-medium leading-none\">{label}</label>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n <SelectPrimitive.Root\n onValueChange={field.onChange}\n value={String(field.value || '')}\n disabled={disabled}\n >\n <SelectPrimitive.Trigger className=\"flex h-9 w-full items-center justify-between rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50\">\n <SelectPrimitive.Value\n placeholder={placeholder ?? 'Select an option'}\n />\n <SelectPrimitive.Icon>\n <ChevronDown className=\"h-4 w-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content className=\"relative z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md\">\n <SelectPrimitive.Viewport className=\"p-1\">\n {options.map((option) => (\n <SelectPrimitive.Item\n key={String(option.value)}\n value={String(option.value)}\n className=\"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\"\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>\n {option.label}\n </SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n ))}\n </SelectPrimitive.Viewport>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n </SelectPrimitive.Root>\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n )}\n />\n );\n}\n","import { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox';\nimport { Check } from 'lucide-react';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, BooleanFieldsOf } from '../types';\n\nexport function CheckboxField<\n TSchema extends z.ZodObject<Record<string, any>>,\n>({\n name,\n label,\n disabled,\n description,\n className,\n form,\n}: BaseFieldProps & {\n name: BooleanFieldsOf<TSchema>;\n form?: UseFormReturn<z.input<TSchema>>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center gap-3\">\n <CheckboxPrimitive.Root\n id={name as string}\n checked={!!field.value}\n onCheckedChange={(checked) => field.onChange(checked)}\n disabled={disabled}\n className=\"h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\"\n >\n <CheckboxPrimitive.Indicator className=\"flex items-center justify-center text-current\">\n <Check className=\"h-3 w-3\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n <label\n htmlFor={name as string}\n className=\"text-sm font-medium leading-none\"\n >\n {label}\n </label>\n </div>\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n )}\n />\n );\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport { DayPicker } from 'react-day-picker';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\nimport { format } from 'date-fns';\nimport { CalendarIcon } from 'lucide-react';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, DateFieldsOf } from '../types';\n\nexport function DateField<TSchema extends z.ZodObject<Record<string, any>>>({\n name,\n label,\n description,\n className,\n form,\n showReset,\n}: BaseFieldProps & {\n name: DateFieldsOf<TSchema>;\n form?: UseFormReturn<z.input<TSchema>>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => {\n const date = field.value ? new Date(field.value as any) : undefined;\n\n return (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label htmlFor={name as string} className=\"text-sm font-medium leading-none\">\n {label}\n </label>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n <PopoverPrimitive.Root>\n <PopoverPrimitive.Trigger asChild>\n <button\n type=\"button\"\n className={cn(\n 'flex h-9 w-full items-center justify-start gap-2 rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50',\n !date && 'text-muted-foreground',\n )}\n >\n <CalendarIcon className=\"h-4 w-4\" />\n {date ? format(date, 'PPP') : 'Pick a date'}\n </button>\n </PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n align=\"start\"\n className=\"z-50 rounded-md border bg-popover p-0 text-popover-foreground shadow-md outline-none\"\n >\n <DayPicker\n mode=\"single\"\n selected={date}\n onSelect={(d) => field.onChange(d)}\n className=\"p-3\"\n />\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n );\n }}\n />\n );\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport * as SliderPrimitive from '@radix-ui/react-slider';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps, NumberFieldsOf } from '../types';\n\nexport function SliderField<TSchema extends z.ZodObject<Record<string, any>>>({\n name,\n label,\n description,\n disabled,\n className,\n form,\n min = 0,\n max = 100,\n step = 1,\n showReset,\n}: BaseFieldProps & {\n name: NumberFieldsOf<TSchema>;\n form?: UseFormReturn<z.input<TSchema>>;\n min?: number;\n max?: number;\n step?: number;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => {\n const value = field.value !== undefined ? (field.value as number) : min;\n\n return (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label htmlFor={name as string} className=\"text-sm font-medium leading-none\">\n {label}\n </label>\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm text-muted-foreground\">{value}</span>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n </div>\n <SliderPrimitive.Root\n value={[value]}\n onValueChange={([val]) => field.onChange(val)}\n min={min}\n max={max}\n step={step}\n disabled={disabled}\n className=\"relative flex w-full touch-none select-none items-center\"\n >\n <SliderPrimitive.Track className=\"relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20\">\n <SliderPrimitive.Range className=\"absolute h-full bg-primary\" />\n </SliderPrimitive.Track>\n <SliderPrimitive.Thumb className=\"block h-4 w-4 rounded-full border border-primary/50 bg-background shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\" />\n </SliderPrimitive.Root>\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n );\n }}\n />\n );\n}\n","import React from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport type { UseFormReturn } from 'react-hook-form';\nimport { z } from 'zod';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\nimport { Command } from 'cmdk';\nimport { Check, ChevronsUpDown, X } from 'lucide-react';\nimport { cn } from '../utils/cn';\nimport type { BaseFieldProps } from '../types';\n\nexport function MultiSelectField<\n TSchema extends z.ZodObject<Record<string, any>>,\n>({\n name,\n label,\n description,\n disabled,\n form,\n className,\n options,\n placeholder = 'Select options...',\n showReset,\n}: BaseFieldProps & {\n name: keyof z.input<TSchema>;\n form?: UseFormReturn<z.input<TSchema>>;\n options: Array<{ value: string; label: string }>;\n}) {\n const contextForm = useFormContext<z.input<TSchema>>();\n const actualForm = form || contextForm;\n\n return (\n <Controller\n control={actualForm.control}\n name={name as any}\n render={({ field, fieldState }) => {\n const selected: string[] = Array.isArray(field.value)\n ? field.value\n : [];\n\n const toggle = (val: string) => {\n const next = selected.includes(val)\n ? selected.filter((v) => v !== val)\n : [...selected, val];\n field.onChange(next);\n };\n\n return (\n <div className={cn('space-y-2', className)}>\n <div className=\"flex items-center justify-between\">\n <label className=\"text-sm font-medium leading-none\">\n {label}\n </label>\n {showReset && (\n <button\n type=\"button\"\n onClick={() => actualForm.resetField(name as any)}\n className=\"text-xs text-muted-foreground hover:text-foreground\"\n >\n Reset\n </button>\n )}\n </div>\n <PopoverPrimitive.Root>\n <PopoverPrimitive.Trigger asChild>\n <button\n type=\"button\"\n role=\"combobox\"\n disabled={disabled}\n className={cn(\n 'flex min-h-9 w-full flex-wrap items-center justify-between gap-1 rounded-md border border-input bg-transparent px-3 py-1.5 text-sm shadow-sm focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50',\n !selected.length && 'text-muted-foreground',\n )}\n >\n <div className=\"flex flex-wrap gap-1\">\n {selected.length\n ? selected.map((val) => (\n <span\n key={val}\n className=\"inline-flex items-center gap-1 rounded-md border bg-secondary px-1.5 py-0.5 text-xs text-secondary-foreground\"\n >\n {options.find((o) => o.value === val)?.label ?? val}\n <span\n onClick={(e) => {\n e.stopPropagation();\n toggle(val);\n }}\n className=\"cursor-pointer\"\n >\n <X className=\"h-3 w-3\" />\n </span>\n </span>\n ))\n : placeholder}\n </div>\n <ChevronsUpDown className=\"ml-2 h-4 w-4 shrink-0 opacity-50\" />\n </button>\n </PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n align=\"start\"\n className=\"z-50 min-w-[200px] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md outline-none\"\n >\n <Command>\n <div className=\"flex items-center border-b px-3\">\n <Command.Input\n placeholder=\"Search...\"\n className=\"flex h-9 w-full bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground\"\n />\n </div>\n <Command.List className=\"max-h-[200px] overflow-y-auto p-1\">\n <Command.Empty className=\"py-6 text-center text-sm\">\n No options found.\n </Command.Empty>\n <Command.Group>\n {options.map((option) => (\n <Command.Item\n key={option.value}\n value={option.value}\n onSelect={() => toggle(option.value)}\n className=\"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none aria-selected:bg-accent aria-selected:text-accent-foreground\"\n >\n <Check\n className={cn(\n 'mr-2 h-4 w-4',\n selected.includes(option.value)\n ? 'opacity-100'\n : 'opacity-0',\n )}\n />\n {option.label}\n </Command.Item>\n ))}\n </Command.Group>\n </Command.List>\n </Command>\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {fieldState.error && (\n <p className=\"text-sm font-medium text-destructive\">\n {fieldState.error.message}\n </p>\n )}\n </div>\n );\n }}\n />\n );\n}\n","import { useForm } from 'react-hook-form';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport type { DefaultValues, FieldValues } from 'react-hook-form';\nimport type { z } from 'zod';\n\nexport function useValidatedForm<TSchema extends z.ZodType<any, FieldValues>>({\n schema,\n defaultValues,\n}: {\n schema: TSchema;\n defaultValues?: DefaultValues<z.input<TSchema>>;\n}) {\n return useForm<z.input<TSchema>, any, z.output<TSchema>>({\n resolver: zodResolver(schema),\n defaultValues,\n });\n}\n"],"mappings":"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","names":["jsx","jsxs","Controller","useFormContext","jsx","jsxs","useFormContext","Controller","Controller","useFormContext","jsx","jsxs","useFormContext","Controller","Controller","useFormContext","jsx","jsxs","useFormContext","Controller","Controller","useFormContext","Check","jsx","jsxs","useFormContext","Controller","Check","Controller","useFormContext","jsx","jsxs","useFormContext","Controller","Controller","useFormContext","jsx","jsxs","useFormContext","Controller","Controller","useFormContext","PopoverPrimitive","Check","jsx","jsxs","useFormContext","Controller","Check","jsx","useForm"]}
|