@gmcode/forms 0.2.0 → 0.2.1

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.d.mts CHANGED
@@ -60,13 +60,15 @@ declare function CheckboxField<TFieldValues extends FieldValues$1 = FieldValues$
60
60
  }): import("react").JSX.Element;
61
61
  //#endregion
62
62
  //#region src/components/input-field.d.ts
63
- declare function InputField<TFieldValues extends FieldValues$1 = FieldValues$1>({ autoComplete, control, disabled, inputId, inputName, label, placeholder, readOnly, type, ...props }: Omit<ComponentProps<typeof Field>, 'onChange'> & {
63
+ declare function InputField<TFieldValues extends FieldValues$1 = FieldValues$1>({ autoComplete, control, disabled, inputClassName, inputId, inputName, label, labelClassName, placeholder, readOnly, type, ...props }: Omit<ComponentProps<typeof Field>, 'onChange'> & {
64
64
  autoComplete?: HTMLInputAutoCompleteAttribute;
65
65
  control: Control<TFieldValues>;
66
66
  disabled?: boolean;
67
+ inputClassName?: string;
67
68
  inputId?: string;
68
69
  inputName: FieldPath<TFieldValues>;
69
70
  label?: string;
71
+ labelClassName?: string;
70
72
  onChange?: ChangeEventHandler<HTMLDivElement, HTMLInputElement>;
71
73
  placeholder?: string;
72
74
  readOnly?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/i18n.ts","../src/types/index.d.ts","../src/components/calendar-field.tsx","../src/components/checkbox-field.tsx","../src/components/input-field.tsx","../src/components/email-field.tsx","../src/components/error-monitor.tsx","../src/components/fancy-radio-field.tsx","../src/components/form.tsx","../src/components/hidden-field.tsx","../src/components/info-checkbox-field.tsx","../src/components/nullable-select-field.tsx","../src/components/numeric-field.tsx","../src/components/password-field.tsx","../src/components/select-field.tsx","../src/components/submit.tsx","../src/components/switch-field.tsx","../src/components/text-field.tsx","../src/components/textarea-field.tsx"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/i18n.ts","../src/types/index.d.ts","../src/components/calendar-field.tsx","../src/components/checkbox-field.tsx","../src/components/input-field.tsx","../src/components/email-field.tsx","../src/components/error-monitor.tsx","../src/components/fancy-radio-field.tsx","../src/components/form.tsx","../src/components/hidden-field.tsx","../src/components/info-checkbox-field.tsx","../src/components/nullable-select-field.tsx","../src/components/numeric-field.tsx","../src/components/password-field.tsx","../src/components/select-field.tsx","../src/components/submit.tsx","../src/components/switch-field.tsx","../src/components/text-field.tsx","../src/components/textarea-field.tsx"],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -152,48 +152,54 @@ function CheckboxField({ control, disabled, inputId, inputName, label, onChecked
152
152
  //#endregion
153
153
  //#region src/components/input-field.tsx
154
154
  function InputField(t0) {
155
- const $ = c(26);
156
- if ($[0] !== "963cedd0a6cfacf8200253d589709508da00dc8c89d35cc10c99714d44b78c30") {
157
- for (let $i = 0; $i < 26; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
158
- $[0] = "963cedd0a6cfacf8200253d589709508da00dc8c89d35cc10c99714d44b78c30";
155
+ const $ = c(30);
156
+ if ($[0] !== "aab99ea89f82bf9ad035187c77f9a074c946660203bd56d7567ddbfe835f48cb") {
157
+ for (let $i = 0; $i < 30; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
158
+ $[0] = "aab99ea89f82bf9ad035187c77f9a074c946660203bd56d7567ddbfe835f48cb";
159
159
  }
160
160
  let autoComplete;
161
161
  let control;
162
162
  let disabled;
163
+ let inputClassName;
163
164
  let inputId;
164
165
  let inputName;
165
166
  let label;
167
+ let labelClassName;
166
168
  let placeholder;
167
169
  let props;
168
170
  let readOnly;
169
171
  let type;
170
172
  if ($[1] !== t0) {
171
- ({autoComplete, control, disabled, inputId, inputName, label, placeholder, readOnly, type, ...props} = t0);
173
+ ({autoComplete, control, disabled, inputClassName, inputId, inputName, label, labelClassName, placeholder, readOnly, type, ...props} = t0);
172
174
  $[1] = t0;
173
175
  $[2] = autoComplete;
174
176
  $[3] = control;
175
177
  $[4] = disabled;
176
- $[5] = inputId;
177
- $[6] = inputName;
178
- $[7] = label;
179
- $[8] = placeholder;
180
- $[9] = props;
181
- $[10] = readOnly;
182
- $[11] = type;
178
+ $[5] = inputClassName;
179
+ $[6] = inputId;
180
+ $[7] = inputName;
181
+ $[8] = label;
182
+ $[9] = labelClassName;
183
+ $[10] = placeholder;
184
+ $[11] = props;
185
+ $[12] = readOnly;
186
+ $[13] = type;
183
187
  } else {
184
188
  autoComplete = $[2];
185
189
  control = $[3];
186
190
  disabled = $[4];
187
- inputId = $[5];
188
- inputName = $[6];
189
- label = $[7];
190
- placeholder = $[8];
191
- props = $[9];
192
- readOnly = $[10];
193
- type = $[11];
191
+ inputClassName = $[5];
192
+ inputId = $[6];
193
+ inputName = $[7];
194
+ label = $[8];
195
+ labelClassName = $[9];
196
+ placeholder = $[10];
197
+ props = $[11];
198
+ readOnly = $[12];
199
+ type = $[13];
194
200
  }
195
201
  let t1;
196
- if ($[12] !== autoComplete || $[13] !== inputId || $[14] !== inputName || $[15] !== label || $[16] !== placeholder || $[17] !== props || $[18] !== readOnly || $[19] !== type) {
202
+ if ($[14] !== autoComplete || $[15] !== inputClassName || $[16] !== inputId || $[17] !== inputName || $[18] !== label || $[19] !== labelClassName || $[20] !== placeholder || $[21] !== props || $[22] !== readOnly || $[23] !== type) {
197
203
  t1 = (t2) => {
198
204
  const { field, fieldState } = t2;
199
205
  return /* @__PURE__ */ jsxs(Field, {
@@ -201,12 +207,14 @@ function InputField(t0) {
201
207
  ...props,
202
208
  children: [
203
209
  label && /* @__PURE__ */ jsx(FieldLabel, {
210
+ className: labelClassName,
204
211
  htmlFor: inputId ?? inputName,
205
212
  children: label
206
213
  }),
207
214
  /* @__PURE__ */ jsx(Input, {
208
215
  "aria-invalid": fieldState.invalid,
209
216
  autoComplete,
217
+ className: inputClassName,
210
218
  id: inputId ?? (label ? inputName : void 0),
211
219
  placeholder,
212
220
  readOnly,
@@ -217,30 +225,32 @@ function InputField(t0) {
217
225
  ]
218
226
  });
219
227
  };
220
- $[12] = autoComplete;
221
- $[13] = inputId;
222
- $[14] = inputName;
223
- $[15] = label;
224
- $[16] = placeholder;
225
- $[17] = props;
226
- $[18] = readOnly;
227
- $[19] = type;
228
- $[20] = t1;
229
- } else t1 = $[20];
228
+ $[14] = autoComplete;
229
+ $[15] = inputClassName;
230
+ $[16] = inputId;
231
+ $[17] = inputName;
232
+ $[18] = label;
233
+ $[19] = labelClassName;
234
+ $[20] = placeholder;
235
+ $[21] = props;
236
+ $[22] = readOnly;
237
+ $[23] = type;
238
+ $[24] = t1;
239
+ } else t1 = $[24];
230
240
  let t2;
231
- if ($[21] !== control || $[22] !== disabled || $[23] !== inputName || $[24] !== t1) {
241
+ if ($[25] !== control || $[26] !== disabled || $[27] !== inputName || $[28] !== t1) {
232
242
  t2 = /* @__PURE__ */ jsx(Controller, {
233
243
  control,
234
244
  disabled,
235
245
  name: inputName,
236
246
  render: t1
237
247
  });
238
- $[21] = control;
239
- $[22] = disabled;
240
- $[23] = inputName;
241
- $[24] = t1;
242
- $[25] = t2;
243
- } else t2 = $[25];
248
+ $[25] = control;
249
+ $[26] = disabled;
250
+ $[27] = inputName;
251
+ $[28] = t1;
252
+ $[29] = t2;
253
+ } else t2 = $[29];
244
254
  return t2;
245
255
  }
246
256
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["error","label","autoComplete","placeholder","readOnly","type","control","disabled","inputName","label","description","defaultValue","control","disabled","inputName","label","autoComplete","placeholder","description","control","disabled","inputName","$","label","autoComplete","placeholder","description","control","disabled","inputName"],"sources":["../src/i18n.ts","../src/components/error-monitor.tsx","../src/lib/utils.ts","../src/components/calendar-field.tsx","../src/components/checkbox-field.tsx","../src/components/input-field.tsx","../src/components/email-field.tsx","../src/components/fancy-radio-field.tsx","../src/components/form.tsx","../src/components/hidden-field.tsx","../src/components/info-checkbox-field.tsx","../src/components/nullable-select-field.tsx","../src/components/numeric-field.tsx","../src/components/password-field.tsx","../src/components/select-field.tsx","../src/components/submit.tsx","../src/components/switch-field.tsx","../src/components/text-field.tsx","../src/components/textarea-field.tsx"],"sourcesContent":["import { type i18n as Ti18n, createInstance } from 'i18next'\nimport en from '@/locales/en'\n\n/**\n * @deprecated Use the `forms` namespace instead.\n */\nconst i18n: Ti18n = createInstance({\n fallbackLng: 'en',\n interpolation: { escapeValue: false },\n resources: { en }\n})\n\nvoid i18n.init()\n\nexport default i18n\n","import { FieldError } from '@gmcode/react-ui'\nimport { useTranslation } from 'react-i18next'\nimport type { ErrorData } from '@/types'\n\nexport function ErrorMonitor({ error }: { error?: ErrorData }) {\n // i18n\n const { t } = useTranslation('forms')\n\n if (!error?.message) {\n return null\n }\n\n if (t.name === 'notReadyT') {\n return <FieldError errors={error} />\n }\n\n // @ts-expect-error: assert error.message to be a translation key\n return <FieldError errors={{ message: t(error.message, error.params) }} />\n}\n","/**\n * Convert a javascript `Date` object to a string with the format `aaaa-mm-dd`.\n */\nexport function dateToString(date: Date): string {\n return `${date.getFullYear()}-${(date.getMonth() + 1 + '').padStart(2, '0')}-${(date.getDate() + '').padStart(2, '0')}`\n}\n\n/**\n * Convert a string to a javascript `Date` object or undefined if the string is\n * not a valid date.\n */\nexport function stringToDate(string: string | undefined): Date | undefined {\n if (!string) {\n return undefined\n }\n\n const date = new Date(string)\n\n if (isNaN(date.getFullYear())) {\n return undefined\n }\n\n return date\n}\n","import { Calendar, Field, FieldLabel } from '@gmcode/react-ui'\nimport type { ComponentProps } from 'react'\nimport type { DayPickerLocale, Matcher } from 'react-day-picker'\nimport { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport type { FieldValues } from 'react-hook-form'\nimport { ErrorMonitor } from '@/components/error-monitor'\nimport {\n dateToString as defaultDateToString,\n stringToDate as defaultStringToDate\n} from '@/lib/utils'\n\nexport function CalendarField<TFieldValues extends FieldValues = FieldValues>({\n control,\n dateToString = defaultDateToString,\n disabled,\n inputId,\n inputName,\n label,\n locale,\n stringToDate = defaultStringToDate,\n ...props\n}: ComponentProps<typeof Field> & {\n control: Control<TFieldValues>\n dateToString?: (date: Date) => string\n disabled?: Matcher | Matcher[]\n inputId?: string\n inputName: FieldPath<TFieldValues>\n label?: string\n locale?: Partial<DayPickerLocale>\n stringToDate?: (string: string | undefined) => Date | undefined\n}) {\n return (\n <Controller\n control={control}\n name={inputName}\n render={({ field, fieldState }) => (\n <Field\n data-invalid={fieldState.invalid}\n {...props}\n >\n {label && (\n <FieldLabel htmlFor={inputId ?? inputName}>{label}</FieldLabel>\n )}\n\n <Calendar\n aria-invalid={fieldState.invalid}\n className=\"w-full rounded-md border\"\n disabled={disabled}\n fixedWeeks={true}\n id={inputId ?? (label ? inputName : undefined)}\n locale={locale}\n mode=\"single\"\n onSelect={(date) => field.onChange(date ? dateToString(date) : '')}\n selected={stringToDate(field.value)}\n />\n\n <ErrorMonitor error={fieldState.error} />\n </Field>\n )}\n />\n )\n}\n","import { Checkbox, Field, FieldLabel } from '@gmcode/react-ui'\nimport type { Checkbox as CheckboxPrimitive } from 'radix-ui'\nimport type { ComponentProps } from 'react'\nimport { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport type { ControllerRenderProps, FieldValues } from 'react-hook-form'\nimport { ErrorMonitor } from '@/components/error-monitor'\n\nexport function CheckboxField<TFieldValues extends FieldValues = FieldValues>({\n control,\n disabled,\n inputId,\n inputName,\n label,\n onCheckedChange,\n orientation = 'horizontal',\n readOnly,\n uncheckedValue = '',\n value = 'true',\n ...props\n}: ComponentProps<typeof Field> & {\n control: Control<TFieldValues>\n disabled?: boolean\n inputId?: string\n inputName: FieldPath<TFieldValues>\n label?: string\n onCheckedChange?: (\n checked: CheckboxPrimitive.CheckedState,\n field: ControllerRenderProps<TFieldValues, FieldPath<TFieldValues>>\n ) => void\n readOnly?: boolean\n uncheckedValue?: string\n value?: string\n}) {\n return (\n <Controller\n control={control}\n disabled={disabled}\n name={inputName}\n render={({ field, fieldState }) => (\n <Field\n data-invalid={fieldState.invalid}\n orientation={orientation}\n {...props}\n >\n <Checkbox\n aria-invalid={fieldState.invalid}\n aria-readonly={readOnly}\n checked={field.value === value}\n className=\"aria-readonly:opacity-50\"\n disabled={field.disabled}\n id={inputId ?? (label ? inputName : undefined)}\n name={field.name}\n onBlur={field.onBlur}\n onCheckedChange={(checked) => {\n if (!readOnly) {\n field.onChange(checked === true ? value : uncheckedValue)\n if (onCheckedChange) onCheckedChange(checked, field)\n }\n }}\n ref={field.ref}\n value={value}\n />\n\n {label && (\n <FieldLabel htmlFor={inputId ?? inputName}>{label}</FieldLabel>\n )}\n\n <ErrorMonitor error={fieldState.error} />\n </Field>\n )}\n />\n )\n}\n","import { Field, FieldLabel, Input } from '@gmcode/react-ui'\nimport type {\n ChangeEventHandler,\n ComponentProps,\n HTMLInputAutoCompleteAttribute,\n HTMLInputTypeAttribute\n} from 'react'\nimport { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport type { FieldValues } from 'react-hook-form'\nimport { ErrorMonitor } from '@/components/error-monitor'\n\nexport function InputField<TFieldValues extends FieldValues = FieldValues>({\n autoComplete,\n control,\n disabled,\n inputId,\n inputName,\n label,\n placeholder,\n readOnly,\n type,\n ...props\n}: Omit<ComponentProps<typeof Field>, 'onChange'> & {\n autoComplete?: HTMLInputAutoCompleteAttribute\n control: Control<TFieldValues>\n disabled?: boolean\n inputId?: string\n inputName: FieldPath<TFieldValues>\n label?: string\n onChange?: ChangeEventHandler<HTMLDivElement, HTMLInputElement>\n placeholder?: string\n readOnly?: boolean\n type?: HTMLInputTypeAttribute\n}) {\n return (\n <Controller\n control={control}\n disabled={disabled}\n name={inputName}\n render={({ field, fieldState }) => (\n <Field\n data-invalid={fieldState.invalid}\n {...props}\n >\n {label && (\n <FieldLabel htmlFor={inputId ?? inputName}>{label}</FieldLabel>\n )}\n\n <Input\n aria-invalid={fieldState.invalid}\n autoComplete={autoComplete}\n id={inputId ?? (label ? inputName : undefined)}\n placeholder={placeholder}\n readOnly={readOnly}\n type={type}\n {...field}\n />\n\n <ErrorMonitor error={fieldState.error} />\n </Field>\n )}\n />\n )\n}\n","import type { ComponentProps } from 'react'\nimport type { FieldValues } from 'react-hook-form'\nimport { InputField } from '@/components/input-field'\n\nexport function EmailField<TFieldValues extends FieldValues = FieldValues>({\n autoComplete = 'on',\n type = 'email',\n ...props\n}: ComponentProps<typeof InputField<TFieldValues>>) {\n return (\n <InputField\n autoComplete={autoComplete}\n type={type}\n {...props}\n />\n )\n}\n","import {\n FieldDescription,\n FieldLabel,\n FieldSet,\n Label,\n RadioGroup,\n RadioGroupItem\n} from '@gmcode/react-ui'\nimport type { ComponentProps, FC, SVGProps } from 'react'\nimport { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport type { FieldValues } from 'react-hook-form'\nimport { ErrorMonitor } from '@/components/error-monitor'\nimport type { Option } from '@/types'\n\nexport function FancyRadioField<\n TFieldValues extends FieldValues = FieldValues\n>({\n control,\n defaultValue,\n description,\n disabled,\n groupId,\n inputName,\n label,\n options,\n ...props\n}: ComponentProps<typeof FieldSet> & {\n control: Control<TFieldValues>\n defaultValue: string\n description?: string\n disabled?: boolean\n groupId?: string\n inputName: FieldPath<TFieldValues>\n label?: string\n options: Array<Option & { Icon?: FC<SVGProps<SVGSVGElement>> }>\n}) {\n return (\n <Controller\n control={control}\n disabled={disabled}\n name={inputName}\n render={({ field, fieldState }) => (\n <FieldSet\n data-invalid={fieldState.invalid}\n {...props}\n >\n {label && (\n <FieldLabel htmlFor={groupId ?? inputName}>{label}</FieldLabel>\n )}\n\n {description && <FieldDescription>{description}</FieldDescription>}\n\n <ErrorMonitor error={fieldState.error} />\n\n <RadioGroup\n defaultValue={defaultValue}\n disabled={field.disabled}\n id={groupId ?? (label ? inputName : undefined)}\n name={field.name}\n onBlur={field.onBlur}\n onValueChange={field.onChange}\n ref={field.ref}\n >\n {options.map((option) => (\n <Label\n className=\"rounded-md border ring-ring/50 transition-all hover:bg-accent/50 has-focus-visible:ring-[3px]\"\n data-slot=\"field-label\"\n key={option.key ?? option.id ?? option.value}\n >\n <div className=\"flex w-full items-center gap-3 rounded-md p-3 transition-all has-aria-checked:border-l-8 has-aria-checked:border-ring\">\n <RadioGroupItem\n className=\"sr-only\"\n id={option.id}\n value={option.value}\n />\n {option.Icon && <option.Icon />}\n {option.label}\n </div>\n </Label>\n ))}\n </RadioGroup>\n </FieldSet>\n )}\n />\n )\n}\n","import { cn, flash } from '@gmcode/react-ui'\nimport { type InferSchema, useTsvResolver } from '@gmcode/tsv-hookform'\nimport type { Ruleset } from '@gmcode/tsv-input'\nimport type {\n CancelTokenCallback,\n Errors,\n FormDataErrors,\n GlobalEventCallback,\n Page,\n RequestPayload,\n SharedPageProps\n} from '@inertiajs/core'\nimport { useForm as useInertiaForm } from '@inertiajs/react'\nimport { type ComponentProps, type ReactNode, useEffect, useState } from 'react'\nimport type {\n DefaultValues,\n FieldValues,\n Path,\n UseFormReturn\n} from 'react-hook-form'\nimport { useForm as userReactForm } from 'react-hook-form'\nimport { ErrorMonitor } from '@/components/error-monitor'\nimport type { Schema } from '@/index'\nimport type { ErrorData, Method, RouteDefinition } from '@/types'\n\ntype RenderFN<TValues extends FieldValues> = ({\n errors,\n form,\n loading\n}: {\n errors: FormDataErrors<object>\n form: UseFormReturn<TValues>\n loading: boolean\n}) => ReactNode\n\nexport function Form<\n TRuleset extends Ruleset,\n TSchema extends Schema<TRuleset>,\n TValues extends InferSchema<TSchema>\n>({\n children,\n className,\n defaults = {},\n onBefore,\n onBeforeUpdate,\n onCancel,\n onCancelToken,\n onError,\n onFinish,\n onFlash,\n onPrefetched,\n onPrefetching,\n onProgress,\n onStart,\n onSuccess,\n preserveScroll = true,\n resetOnSuccess = true,\n rootError: displayRootError = 'flash',\n route,\n schema,\n setDefaultsOnSuccess = false,\n ...props\n}: Omit<\n ComponentProps<'form'>,\n 'action' | 'children' | 'method' | 'onSubmit'\n> & {\n children: RenderFN<TValues>\n defaults?: Partial<DefaultValues<TValues>>\n onBefore?: GlobalEventCallback<'before', RequestPayload>\n onBeforeUpdate?: GlobalEventCallback<'beforeUpdate', RequestPayload>\n onCancel?: GlobalEventCallback<'cancel', RequestPayload>\n onCancelToken?: CancelTokenCallback\n onError?: GlobalEventCallback<'error', RequestPayload>\n onFinish?: GlobalEventCallback<'finish', RequestPayload>\n onFlash?: GlobalEventCallback<'flash', RequestPayload>\n onPrefetched?: GlobalEventCallback<'prefetched', RequestPayload>\n onPrefetching?: GlobalEventCallback<'prefetching', RequestPayload>\n onProgress?: GlobalEventCallback<'progress', RequestPayload>\n onStart?: GlobalEventCallback<'start', RequestPayload>\n onSuccess?: GlobalEventCallback<'success', RequestPayload>\n preserveScroll?: boolean\n /**\n * Reset input values to their defaults on success.\n *\n * @defaultValue `true`\n */\n resetOnSuccess?: boolean\n /**\n * How to display the root error from inertia.\n *\n * - `\"flash\"` - use the Toaster component\n * - `\"monitor\"` - use the ErrorMonitor component\n * - `\"none\"` - don't display the root error\n *\n * @defaultValue `\"flash\"`\n */\n rootError?: 'flash' | 'monitor' | 'none'\n route: RouteDefinition<Method>\n schema: Schema<TRuleset>\n /**\n * Set the submitted values as default values on success.\n *\n * @defaultValue `false`\n */\n setDefaultsOnSuccess?: boolean\n}) {\n const [rootError, setRootError] = useState<ErrorData>()\n\n const defaultValues = Object.fromEntries(\n Object.keys(schema.ruleset).map((field) => [field, defaults[field] ?? ''])\n ) as DefaultValues<TValues>\n\n // React Hook Form\n const reactForm = userReactForm<TValues>({\n defaultValues,\n resolver: useTsvResolver(schema)\n })\n\n // Inertia\n const inertiaForm = useInertiaForm<object>(defaultValues)\n\n function onErrorWithToast(errors: Errors) {\n if (errors.root) {\n if (displayRootError === 'flash') {\n flash({ level: 'error', title: errors.root })\n } else if (displayRootError === 'monitor') {\n setRootError({ message: errors.root })\n }\n }\n\n if (onError) {\n onError(errors)\n }\n }\n\n function onSuccessWithReset(page: Page<SharedPageProps>) {\n if (setDefaultsOnSuccess) {\n inertiaForm.setDefaults()\n reactForm.reset(reactForm.getValues())\n }\n\n if (resetOnSuccess) {\n inertiaForm.reset()\n reactForm.reset()\n }\n\n if (onSuccess) {\n onSuccess(page)\n }\n }\n\n // Submit handler\n function onSubmit(values: TValues) {\n inertiaForm.transform(() => values)\n inertiaForm[route.method](route.url, {\n onBefore,\n onBeforeUpdate,\n onCancel,\n onCancelToken,\n onError: onErrorWithToast,\n onFinish,\n onFlash,\n onPrefetched,\n onPrefetching,\n onProgress,\n onStart,\n onSuccess: onSuccessWithReset,\n preserveScroll\n })\n }\n\n // Add inertia (server) errors to react form.\n useEffect(() => {\n for (const [key, error] of Object.entries(inertiaForm.errors)) {\n if (error) {\n reactForm.setError(key as Path<TValues>, {\n message: error as string,\n type: 'inertia'\n })\n }\n }\n }, [inertiaForm.errors, reactForm])\n\n return (\n <form\n action={route.url}\n className={cn('grid gap-6', className)}\n method={route.method}\n onSubmit={reactForm.handleSubmit(onSubmit)}\n {...props}\n >\n <>\n {children({\n errors: inertiaForm.errors,\n form: reactForm,\n loading: inertiaForm.processing\n })}\n </>\n\n {displayRootError === 'monitor' && <ErrorMonitor error={rootError} />}\n </form>\n )\n}\n","import { cn } from '@gmcode/react-ui'\nimport type { ComponentProps } from 'react'\nimport type { FieldValues } from 'react-hook-form'\nimport { InputField } from '@/components/input-field'\n\nexport function HiddenField<TFieldValues extends FieldValues = FieldValues>({\n autoComplete = 'off',\n className,\n type = 'hidden',\n ...props\n}: ComponentProps<typeof InputField<TFieldValues>>) {\n return (\n <InputField\n autoComplete={autoComplete}\n className={cn('hidden', className)}\n type={type}\n {...props}\n />\n )\n}\n","import { Checkbox, Field, Label, cn } from '@gmcode/react-ui'\nimport type { Checkbox as CheckboxPrimitive } from 'radix-ui'\nimport type { ComponentProps } from 'react'\nimport { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport type { ControllerRenderProps, FieldValues } from 'react-hook-form'\nimport { ErrorMonitor } from '@/components/error-monitor'\n\nexport function InfoCheckboxField<\n TFieldValues extends FieldValues = FieldValues\n>({\n children,\n className,\n control,\n disabled,\n inputId,\n inputName,\n label,\n onCheckedChange,\n orientation = 'horizontal',\n readOnly,\n text,\n uncheckedValue = '',\n value = 'true',\n ...props\n}: ComponentProps<typeof Field> & {\n control: Control<TFieldValues>\n disabled?: boolean\n inputId?: string\n inputName: FieldPath<TFieldValues>\n label?: string\n onCheckedChange?: (\n checked: CheckboxPrimitive.CheckedState,\n field: ControllerRenderProps<TFieldValues, FieldPath<TFieldValues>>\n ) => void\n readOnly?: boolean\n text?: string\n uncheckedValue?: string\n value?: string\n}) {\n return (\n <Controller\n control={control}\n disabled={disabled}\n name={inputName}\n render={({ field, fieldState }) => (\n <Field\n className={cn('block', className)}\n data-invalid={fieldState.invalid}\n orientation={orientation}\n {...props}\n >\n <Label\n className=\"flex items-start gap-3 rounded-lg border p-3 hover:bg-accent/50 has-aria-checked:border-info-foreground has-aria-checked:bg-info\"\n data-slot=\"field-label\"\n >\n <Checkbox\n aria-invalid={fieldState.invalid}\n aria-readonly={readOnly}\n checked={field.value === value}\n className=\"aria-readonly:opacity-50 data-[state=checked]:border-info-foreground data-[state=checked]:bg-info-foreground data-[state=checked]:text-white dark:data-[state=checked]:border-info-foreground dark:data-[state=checked]:bg-info-foreground\"\n disabled={field.disabled}\n id={inputId}\n name={field.name}\n onBlur={field.onBlur}\n onCheckedChange={(checked) => {\n if (!readOnly) {\n field.onChange(checked === true ? value : uncheckedValue)\n if (onCheckedChange) onCheckedChange(checked, field)\n }\n }}\n ref={field.ref}\n value={value}\n />\n\n <div className=\"grid gap-1.5 font-normal\">\n <p className=\"text-sm leading-none font-medium\">{label}</p>\n {text ? (\n <p className=\"text-sm text-muted-foreground\">{text}</p>\n ) : (\n children\n )}\n <ErrorMonitor error={fieldState.error} />\n </div>\n </Label>\n </Field>\n )}\n />\n )\n}\n","import {\n Button,\n Field,\n FieldDescription,\n FieldLabel,\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue\n} from '@gmcode/react-ui'\nimport { X } from 'lucide-react'\nimport type {\n ComponentProps,\n HTMLInputAutoCompleteAttribute,\n HTMLInputTypeAttribute\n} from 'react'\nimport { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport type {\n FieldPathValue,\n FieldValues,\n UseFormSetValue\n} from 'react-hook-form'\nimport { useTranslation } from 'react-i18next'\nimport { ErrorMonitor } from '@/components/error-monitor'\nimport type { Option } from '@/types'\n\nexport function NullableSelectField<\n TFieldValues extends FieldValues = FieldValues\n>({\n autoComplete,\n control,\n description,\n disabled,\n inputId,\n inputName,\n label,\n options,\n placeholder,\n setValue,\n ...props\n}: ComponentProps<typeof Field> & {\n autoComplete?: HTMLInputAutoCompleteAttribute\n control: Control<TFieldValues>\n description?: string\n disabled?: boolean\n inputId?: string\n inputName: FieldPath<TFieldValues>\n label?: string\n options: Option[]\n placeholder?: string\n setValue: UseFormSetValue<TFieldValues>\n type?: HTMLInputTypeAttribute\n}) {\n // i18n\n const { t } = useTranslation('forms')\n\n return (\n <Controller\n control={control}\n disabled={disabled}\n name={inputName}\n render={({ field, fieldState }) => (\n <Field\n data-invalid={fieldState.invalid}\n {...props}\n >\n {label && (\n <FieldLabel htmlFor={inputId ?? inputName}>{label}</FieldLabel>\n )}\n\n <div className=\"flex items-end gap-4\">\n <Select\n autoComplete={autoComplete}\n disabled={field.disabled}\n name={field.name}\n onValueChange={field.onChange}\n value={field.value}\n >\n <SelectTrigger\n aria-invalid={fieldState.invalid}\n className=\"flex-1 overflow-hidden\"\n id={inputId ?? (label ? inputName : undefined)}\n >\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n <SelectContent>\n {options.map((option) => (\n <SelectItem\n id={option.id}\n key={option.key ?? option.id ?? option.value}\n value={option.value}\n >\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n\n <Button\n aria-label={t(($) => $.reset)}\n className=\"flex-none\"\n onClick={() =>\n setValue(\n inputName,\n '' as FieldPathValue<TFieldValues, FieldPath<TFieldValues>>\n )\n }\n type=\"button\"\n variant=\"outline\"\n >\n <X />\n </Button>\n </div>\n\n {description && <FieldDescription>{description}</FieldDescription>}\n\n <ErrorMonitor error={fieldState.error} />\n </Field>\n )}\n />\n )\n}\n","import {\n Field,\n FieldLabel,\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupInput\n} from '@gmcode/react-ui'\nimport { Minus, Plus } from 'lucide-react'\nimport type {\n ComponentProps,\n HTMLInputAutoCompleteAttribute,\n HTMLInputTypeAttribute\n} from 'react'\nimport { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport type {\n FieldPathValue,\n FieldValues,\n UseFormSetValue\n} from 'react-hook-form'\nimport { useTranslation } from 'react-i18next'\nimport { ErrorMonitor } from '@/components/error-monitor'\n\nfunction stepInput(\n original: string,\n add: boolean,\n step?: number,\n min?: number,\n max?: number\n) {\n let parsed = Number(original)\n\n if (isNaN(parsed)) {\n return ''\n }\n\n if (add) {\n parsed += step === undefined ? 1 : step\n } else {\n parsed -= step === undefined ? 1 : step\n }\n\n if (min !== undefined) {\n parsed = Math.max(parsed, min)\n }\n\n if (max !== undefined) {\n parsed = Math.min(parsed, max)\n }\n\n return parsed.toString()\n}\n\nexport function NumericField<TFieldValues extends FieldValues = FieldValues>({\n autoComplete,\n control,\n disabled,\n inputId,\n inputMode = 'numeric',\n inputName,\n label,\n placeholder,\n type,\n ui,\n ...props\n}: ComponentProps<typeof Field> & {\n autoComplete?: HTMLInputAutoCompleteAttribute\n control: Control<TFieldValues>\n disabled?: boolean\n inputId?: string\n inputMode?: 'decimal' | 'numeric'\n inputName: FieldPath<TFieldValues>\n label?: string\n placeholder?: string\n type?: HTMLInputTypeAttribute\n ui?: {\n max?: number\n min?: number\n setValue: UseFormSetValue<TFieldValues>\n step?: number\n }\n}) {\n // i18n\n const { t } = useTranslation('forms')\n\n function stepValue(value: string, add: boolean) {\n if (ui?.setValue) {\n ui.setValue(\n inputName,\n stepInput(value, add, ui.step, ui.min, ui.max) as FieldPathValue<\n TFieldValues,\n FieldPath<TFieldValues>\n >,\n { shouldValidate: true }\n )\n }\n }\n\n return (\n <Controller\n control={control}\n disabled={disabled}\n name={inputName}\n render={({ field, fieldState }) => (\n <Field\n data-invalid={fieldState.invalid}\n {...props}\n >\n {label && (\n <FieldLabel htmlFor={inputId ?? inputName}>{label}</FieldLabel>\n )}\n\n <InputGroup>\n <InputGroupInput\n aria-invalid={fieldState.invalid}\n autoComplete={autoComplete}\n id={inputId ?? (label ? inputName : undefined)}\n inputMode={inputMode}\n placeholder={placeholder}\n type={type}\n {...field}\n />\n\n {ui && (\n <InputGroupAddon align=\"inline-end\">\n <InputGroupButton\n aria-label={t(($) => $.decrease)}\n disabled={disabled}\n onClick={() => stepValue(field.value, false)}\n size=\"icon-xs\"\n >\n <Minus />\n </InputGroupButton>\n\n <InputGroupButton\n aria-label={t(($) => $.increase)}\n disabled={disabled}\n onClick={() => stepValue(field.value, true)}\n size=\"icon-xs\"\n >\n <Plus />\n </InputGroupButton>\n </InputGroupAddon>\n )}\n </InputGroup>\n\n <ErrorMonitor error={fieldState.error} />\n </Field>\n )}\n />\n )\n}\n","import type { ComponentProps } from 'react'\nimport type { FieldValues } from 'react-hook-form'\nimport { InputField } from '@/components/input-field'\n\nexport function PasswordField<TFieldValues extends FieldValues = FieldValues>({\n autoComplete = 'off',\n type = 'password',\n ...props\n}: ComponentProps<typeof InputField<TFieldValues>>) {\n return (\n <InputField\n autoComplete={autoComplete}\n type={type}\n {...props}\n />\n )\n}\n","import {\n Field,\n FieldDescription,\n FieldLabel,\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue\n} from '@gmcode/react-ui'\nimport type {\n ComponentProps,\n HTMLInputAutoCompleteAttribute,\n HTMLInputTypeAttribute\n} from 'react'\nimport { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport type { FieldValues } from 'react-hook-form'\nimport { ErrorMonitor } from '@/components/error-monitor'\nimport type { Option } from '@/types'\n\nexport function SelectField<TFieldValues extends FieldValues = FieldValues>({\n autoComplete,\n control,\n description,\n disabled,\n inputId,\n inputName,\n label,\n options,\n placeholder,\n ...props\n}: ComponentProps<typeof Field> & {\n autoComplete?: HTMLInputAutoCompleteAttribute\n control: Control<TFieldValues>\n description?: string\n disabled?: boolean\n inputId?: string\n inputName: FieldPath<TFieldValues>\n label?: string\n options: Option[]\n placeholder?: string\n type?: HTMLInputTypeAttribute\n}) {\n return (\n <Controller\n control={control}\n disabled={disabled}\n name={inputName}\n render={({ field, fieldState }) => (\n <Field\n data-invalid={fieldState.invalid}\n {...props}\n >\n {label && (\n <FieldLabel htmlFor={inputId ?? inputName}>{label}</FieldLabel>\n )}\n\n <Select\n autoComplete={autoComplete}\n disabled={field.disabled}\n name={field.name}\n onValueChange={field.onChange}\n value={field.value}\n >\n <SelectTrigger\n aria-invalid={fieldState.invalid}\n id={inputId ?? (label ? inputName : undefined)}\n >\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n <SelectContent>\n {options.map((option) => (\n <SelectItem\n id={option.id}\n key={option.key ?? option.id ?? option.value}\n value={option.value}\n >\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n\n {description && <FieldDescription>{description}</FieldDescription>}\n\n <ErrorMonitor error={fieldState.error} />\n </Field>\n )}\n />\n )\n}\n","import { Button, Spinner, cn } from '@gmcode/react-ui'\nimport type { ComponentProps } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nexport function Submit({\n label,\n loading = false,\n type = 'submit',\n ...props\n}: ComponentProps<typeof Button> & {\n label?: string\n loading?: boolean\n}) {\n // i18n\n const { t } = useTranslation('forms')\n\n return (\n <Button\n disabled={loading}\n type={type}\n {...props}\n >\n <div className=\"relative\">\n <span className={cn({ invisible: loading })}>\n {label ?? t(($) => $.submit)}\n </span>\n <Spinner\n className={cn(\n 'trans absolute top-1/2 left-1/2 hidden -translate-x-1/2 -translate-y-1/2',\n { block: loading }\n )}\n />\n </div>\n </Button>\n )\n}\n","import { Field, FieldLabel, Switch } from '@gmcode/react-ui'\nimport type { Checkbox as CheckboxPrimitive } from 'radix-ui'\nimport type { ComponentProps } from 'react'\nimport { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport type { ControllerRenderProps, FieldValues } from 'react-hook-form'\nimport { ErrorMonitor } from '@/components/error-monitor'\n\nexport function SwitchField<TFieldValues extends FieldValues = FieldValues>({\n control,\n disabled,\n inputId,\n inputName,\n label,\n onCheckedChange,\n orientation = 'horizontal',\n readOnly,\n uncheckedValue = '',\n value = 'true',\n ...props\n}: ComponentProps<typeof Field> & {\n control: Control<TFieldValues>\n disabled?: boolean\n inputId?: string\n inputName: FieldPath<TFieldValues>\n label?: string\n onCheckedChange?: (\n checked: CheckboxPrimitive.CheckedState,\n field: ControllerRenderProps<TFieldValues, FieldPath<TFieldValues>>\n ) => void\n readOnly?: boolean\n uncheckedValue?: string\n value?: string\n}) {\n return (\n <Controller\n control={control}\n disabled={disabled}\n name={inputName}\n render={({ field, fieldState }) => (\n <Field\n data-invalid={fieldState.invalid}\n orientation={orientation}\n {...props}\n >\n <Switch\n aria-invalid={fieldState.invalid}\n aria-readonly={readOnly}\n checked={field.value === value}\n className=\"aria-readonly:opacity-50\"\n disabled={field.disabled}\n id={inputId ?? (label ? inputName : undefined)}\n name={field.name}\n onBlur={field.onBlur}\n onCheckedChange={(checked) => {\n if (!readOnly) {\n field.onChange(checked === true ? value : uncheckedValue)\n if (onCheckedChange) onCheckedChange(checked, field)\n }\n }}\n ref={field.ref}\n value={value}\n />\n\n {label && (\n <FieldLabel htmlFor={inputId ?? inputName}>{label}</FieldLabel>\n )}\n\n <ErrorMonitor error={fieldState.error} />\n </Field>\n )}\n />\n )\n}\n","import type { ComponentProps } from 'react'\nimport type { FieldValues } from 'react-hook-form'\nimport { InputField } from '@/components/input-field'\n\nexport function TextField<TFieldValues extends FieldValues = FieldValues>({\n autoComplete = 'on',\n type = 'text',\n ...props\n}: ComponentProps<typeof InputField<TFieldValues>>) {\n return (\n <InputField\n autoComplete={autoComplete}\n type={type}\n {...props}\n />\n )\n}\n","import { Field, FieldLabel, TextareaAutosize, cn } from '@gmcode/react-ui'\nimport type { ComponentProps } from 'react'\nimport { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport type { FieldValues } from 'react-hook-form'\nimport type { TextareaHeightChangeMeta } from 'react-textarea-autosize'\nimport { ErrorMonitor } from '@/components/error-monitor'\n\nexport function TextareaField<TFieldValues extends FieldValues = FieldValues>({\n cacheMeasurements,\n control,\n inputId,\n inputName,\n label,\n maxRows,\n minRows,\n onHeightChange,\n placeholder,\n resize = 'none',\n ...props\n}: ComponentProps<typeof Field> & {\n cacheMeasurements?: boolean\n control: Control<TFieldValues>\n inputId?: string\n inputName: FieldPath<TFieldValues>\n label?: string\n maxRows?: number\n minRows?: number\n onHeightChange?: (height: number, meta: TextareaHeightChangeMeta) => void\n placeholder?: string\n resize?: 'both' | 'none' | 'x' | 'y'\n}) {\n return (\n <Controller\n control={control}\n name={inputName}\n render={({ field, fieldState }) => (\n <Field\n data-invalid={fieldState.invalid}\n {...props}\n >\n {label && (\n <FieldLabel htmlFor={inputId ?? inputName}>{label}</FieldLabel>\n )}\n\n <TextareaAutosize\n aria-invalid={fieldState.invalid}\n autoComplete=\"off\"\n cacheMeasurements={cacheMeasurements}\n className={cn({\n resize: resize === 'both',\n 'resize-none': resize === 'none',\n 'resize-x': resize === 'x',\n 'resize-y': resize === 'y'\n })}\n id={inputId ?? (label ? inputName : undefined)}\n maxRows={maxRows}\n minRows={minRows}\n onHeightChange={onHeightChange}\n placeholder={placeholder}\n {...field}\n />\n\n <ErrorMonitor error={fieldState.error} />\n </Field>\n )}\n />\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":["error","labelClassName","label","autoComplete","inputClassName","placeholder","readOnly","type","control","disabled","inputName","label","description","defaultValue","control","disabled","inputName","label","autoComplete","placeholder","description","control","disabled","inputName","$","label","autoComplete","placeholder","description","control","disabled","inputName"],"sources":["../src/i18n.ts","../src/components/error-monitor.tsx","../src/lib/utils.ts","../src/components/calendar-field.tsx","../src/components/checkbox-field.tsx","../src/components/input-field.tsx","../src/components/email-field.tsx","../src/components/fancy-radio-field.tsx","../src/components/form.tsx","../src/components/hidden-field.tsx","../src/components/info-checkbox-field.tsx","../src/components/nullable-select-field.tsx","../src/components/numeric-field.tsx","../src/components/password-field.tsx","../src/components/select-field.tsx","../src/components/submit.tsx","../src/components/switch-field.tsx","../src/components/text-field.tsx","../src/components/textarea-field.tsx"],"sourcesContent":["import { type i18n as Ti18n, createInstance } from 'i18next'\nimport en from '@/locales/en'\n\n/**\n * @deprecated Use the `forms` namespace instead.\n */\nconst i18n: Ti18n = createInstance({\n fallbackLng: 'en',\n interpolation: { escapeValue: false },\n resources: { en }\n})\n\nvoid i18n.init()\n\nexport default i18n\n","import { FieldError } from '@gmcode/react-ui'\nimport { useTranslation } from 'react-i18next'\nimport type { ErrorData } from '@/types'\n\nexport function ErrorMonitor({ error }: { error?: ErrorData }) {\n // i18n\n const { t } = useTranslation('forms')\n\n if (!error?.message) {\n return null\n }\n\n if (t.name === 'notReadyT') {\n return <FieldError errors={error} />\n }\n\n // @ts-expect-error: assert error.message to be a translation key\n return <FieldError errors={{ message: t(error.message, error.params) }} />\n}\n","/**\n * Convert a javascript `Date` object to a string with the format `aaaa-mm-dd`.\n */\nexport function dateToString(date: Date): string {\n return `${date.getFullYear()}-${(date.getMonth() + 1 + '').padStart(2, '0')}-${(date.getDate() + '').padStart(2, '0')}`\n}\n\n/**\n * Convert a string to a javascript `Date` object or undefined if the string is\n * not a valid date.\n */\nexport function stringToDate(string: string | undefined): Date | undefined {\n if (!string) {\n return undefined\n }\n\n const date = new Date(string)\n\n if (isNaN(date.getFullYear())) {\n return undefined\n }\n\n return date\n}\n","import { Calendar, Field, FieldLabel } from '@gmcode/react-ui'\nimport type { ComponentProps } from 'react'\nimport type { DayPickerLocale, Matcher } from 'react-day-picker'\nimport { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport type { FieldValues } from 'react-hook-form'\nimport { ErrorMonitor } from '@/components/error-monitor'\nimport {\n dateToString as defaultDateToString,\n stringToDate as defaultStringToDate\n} from '@/lib/utils'\n\nexport function CalendarField<TFieldValues extends FieldValues = FieldValues>({\n control,\n dateToString = defaultDateToString,\n disabled,\n inputId,\n inputName,\n label,\n locale,\n stringToDate = defaultStringToDate,\n ...props\n}: ComponentProps<typeof Field> & {\n control: Control<TFieldValues>\n dateToString?: (date: Date) => string\n disabled?: Matcher | Matcher[]\n inputId?: string\n inputName: FieldPath<TFieldValues>\n label?: string\n locale?: Partial<DayPickerLocale>\n stringToDate?: (string: string | undefined) => Date | undefined\n}) {\n return (\n <Controller\n control={control}\n name={inputName}\n render={({ field, fieldState }) => (\n <Field\n data-invalid={fieldState.invalid}\n {...props}\n >\n {label && (\n <FieldLabel htmlFor={inputId ?? inputName}>{label}</FieldLabel>\n )}\n\n <Calendar\n aria-invalid={fieldState.invalid}\n className=\"w-full rounded-md border\"\n disabled={disabled}\n fixedWeeks={true}\n id={inputId ?? (label ? inputName : undefined)}\n locale={locale}\n mode=\"single\"\n onSelect={(date) => field.onChange(date ? dateToString(date) : '')}\n selected={stringToDate(field.value)}\n />\n\n <ErrorMonitor error={fieldState.error} />\n </Field>\n )}\n />\n )\n}\n","import { Checkbox, Field, FieldLabel } from '@gmcode/react-ui'\nimport type { Checkbox as CheckboxPrimitive } from 'radix-ui'\nimport type { ComponentProps } from 'react'\nimport { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport type { ControllerRenderProps, FieldValues } from 'react-hook-form'\nimport { ErrorMonitor } from '@/components/error-monitor'\n\nexport function CheckboxField<TFieldValues extends FieldValues = FieldValues>({\n control,\n disabled,\n inputId,\n inputName,\n label,\n onCheckedChange,\n orientation = 'horizontal',\n readOnly,\n uncheckedValue = '',\n value = 'true',\n ...props\n}: ComponentProps<typeof Field> & {\n control: Control<TFieldValues>\n disabled?: boolean\n inputId?: string\n inputName: FieldPath<TFieldValues>\n label?: string\n onCheckedChange?: (\n checked: CheckboxPrimitive.CheckedState,\n field: ControllerRenderProps<TFieldValues, FieldPath<TFieldValues>>\n ) => void\n readOnly?: boolean\n uncheckedValue?: string\n value?: string\n}) {\n return (\n <Controller\n control={control}\n disabled={disabled}\n name={inputName}\n render={({ field, fieldState }) => (\n <Field\n data-invalid={fieldState.invalid}\n orientation={orientation}\n {...props}\n >\n <Checkbox\n aria-invalid={fieldState.invalid}\n aria-readonly={readOnly}\n checked={field.value === value}\n className=\"aria-readonly:opacity-50\"\n disabled={field.disabled}\n id={inputId ?? (label ? inputName : undefined)}\n name={field.name}\n onBlur={field.onBlur}\n onCheckedChange={(checked) => {\n if (!readOnly) {\n field.onChange(checked === true ? value : uncheckedValue)\n if (onCheckedChange) onCheckedChange(checked, field)\n }\n }}\n ref={field.ref}\n value={value}\n />\n\n {label && (\n <FieldLabel htmlFor={inputId ?? inputName}>{label}</FieldLabel>\n )}\n\n <ErrorMonitor error={fieldState.error} />\n </Field>\n )}\n />\n )\n}\n","import { Field, FieldLabel, Input } from '@gmcode/react-ui'\nimport type {\n ChangeEventHandler,\n ComponentProps,\n HTMLInputAutoCompleteAttribute,\n HTMLInputTypeAttribute\n} from 'react'\nimport { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport type { FieldValues } from 'react-hook-form'\nimport { ErrorMonitor } from '@/components/error-monitor'\n\nexport function InputField<TFieldValues extends FieldValues = FieldValues>({\n autoComplete,\n control,\n disabled,\n inputClassName,\n inputId,\n inputName,\n label,\n labelClassName,\n placeholder,\n readOnly,\n type,\n ...props\n}: Omit<ComponentProps<typeof Field>, 'onChange'> & {\n autoComplete?: HTMLInputAutoCompleteAttribute\n control: Control<TFieldValues>\n disabled?: boolean\n inputClassName?: string\n inputId?: string\n inputName: FieldPath<TFieldValues>\n label?: string\n labelClassName?: string\n onChange?: ChangeEventHandler<HTMLDivElement, HTMLInputElement>\n placeholder?: string\n readOnly?: boolean\n type?: HTMLInputTypeAttribute\n}) {\n return (\n <Controller\n control={control}\n disabled={disabled}\n name={inputName}\n render={({ field, fieldState }) => (\n <Field\n data-invalid={fieldState.invalid}\n {...props}\n >\n {label && (\n <FieldLabel\n className={labelClassName}\n htmlFor={inputId ?? inputName}\n >\n {label}\n </FieldLabel>\n )}\n\n <Input\n aria-invalid={fieldState.invalid}\n autoComplete={autoComplete}\n className={inputClassName}\n id={inputId ?? (label ? inputName : undefined)}\n placeholder={placeholder}\n readOnly={readOnly}\n type={type}\n {...field}\n />\n\n <ErrorMonitor error={fieldState.error} />\n </Field>\n )}\n />\n )\n}\n","import type { ComponentProps } from 'react'\nimport type { FieldValues } from 'react-hook-form'\nimport { InputField } from '@/components/input-field'\n\nexport function EmailField<TFieldValues extends FieldValues = FieldValues>({\n autoComplete = 'on',\n type = 'email',\n ...props\n}: ComponentProps<typeof InputField<TFieldValues>>) {\n return (\n <InputField\n autoComplete={autoComplete}\n type={type}\n {...props}\n />\n )\n}\n","import {\n FieldDescription,\n FieldLabel,\n FieldSet,\n Label,\n RadioGroup,\n RadioGroupItem\n} from '@gmcode/react-ui'\nimport type { ComponentProps, FC, SVGProps } from 'react'\nimport { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport type { FieldValues } from 'react-hook-form'\nimport { ErrorMonitor } from '@/components/error-monitor'\nimport type { Option } from '@/types'\n\nexport function FancyRadioField<\n TFieldValues extends FieldValues = FieldValues\n>({\n control,\n defaultValue,\n description,\n disabled,\n groupId,\n inputName,\n label,\n options,\n ...props\n}: ComponentProps<typeof FieldSet> & {\n control: Control<TFieldValues>\n defaultValue: string\n description?: string\n disabled?: boolean\n groupId?: string\n inputName: FieldPath<TFieldValues>\n label?: string\n options: Array<Option & { Icon?: FC<SVGProps<SVGSVGElement>> }>\n}) {\n return (\n <Controller\n control={control}\n disabled={disabled}\n name={inputName}\n render={({ field, fieldState }) => (\n <FieldSet\n data-invalid={fieldState.invalid}\n {...props}\n >\n {label && (\n <FieldLabel htmlFor={groupId ?? inputName}>{label}</FieldLabel>\n )}\n\n {description && <FieldDescription>{description}</FieldDescription>}\n\n <ErrorMonitor error={fieldState.error} />\n\n <RadioGroup\n defaultValue={defaultValue}\n disabled={field.disabled}\n id={groupId ?? (label ? inputName : undefined)}\n name={field.name}\n onBlur={field.onBlur}\n onValueChange={field.onChange}\n ref={field.ref}\n >\n {options.map((option) => (\n <Label\n className=\"rounded-md border ring-ring/50 transition-all hover:bg-accent/50 has-focus-visible:ring-[3px]\"\n data-slot=\"field-label\"\n key={option.key ?? option.id ?? option.value}\n >\n <div className=\"flex w-full items-center gap-3 rounded-md p-3 transition-all has-aria-checked:border-l-8 has-aria-checked:border-ring\">\n <RadioGroupItem\n className=\"sr-only\"\n id={option.id}\n value={option.value}\n />\n {option.Icon && <option.Icon />}\n {option.label}\n </div>\n </Label>\n ))}\n </RadioGroup>\n </FieldSet>\n )}\n />\n )\n}\n","import { cn, flash } from '@gmcode/react-ui'\nimport { type InferSchema, useTsvResolver } from '@gmcode/tsv-hookform'\nimport type { Ruleset } from '@gmcode/tsv-input'\nimport type {\n CancelTokenCallback,\n Errors,\n FormDataErrors,\n GlobalEventCallback,\n Page,\n RequestPayload,\n SharedPageProps\n} from '@inertiajs/core'\nimport { useForm as useInertiaForm } from '@inertiajs/react'\nimport { type ComponentProps, type ReactNode, useEffect, useState } from 'react'\nimport type {\n DefaultValues,\n FieldValues,\n Path,\n UseFormReturn\n} from 'react-hook-form'\nimport { useForm as userReactForm } from 'react-hook-form'\nimport { ErrorMonitor } from '@/components/error-monitor'\nimport type { Schema } from '@/index'\nimport type { ErrorData, Method, RouteDefinition } from '@/types'\n\ntype RenderFN<TValues extends FieldValues> = ({\n errors,\n form,\n loading\n}: {\n errors: FormDataErrors<object>\n form: UseFormReturn<TValues>\n loading: boolean\n}) => ReactNode\n\nexport function Form<\n TRuleset extends Ruleset,\n TSchema extends Schema<TRuleset>,\n TValues extends InferSchema<TSchema>\n>({\n children,\n className,\n defaults = {},\n onBefore,\n onBeforeUpdate,\n onCancel,\n onCancelToken,\n onError,\n onFinish,\n onFlash,\n onPrefetched,\n onPrefetching,\n onProgress,\n onStart,\n onSuccess,\n preserveScroll = true,\n resetOnSuccess = true,\n rootError: displayRootError = 'flash',\n route,\n schema,\n setDefaultsOnSuccess = false,\n ...props\n}: Omit<\n ComponentProps<'form'>,\n 'action' | 'children' | 'method' | 'onSubmit'\n> & {\n children: RenderFN<TValues>\n defaults?: Partial<DefaultValues<TValues>>\n onBefore?: GlobalEventCallback<'before', RequestPayload>\n onBeforeUpdate?: GlobalEventCallback<'beforeUpdate', RequestPayload>\n onCancel?: GlobalEventCallback<'cancel', RequestPayload>\n onCancelToken?: CancelTokenCallback\n onError?: GlobalEventCallback<'error', RequestPayload>\n onFinish?: GlobalEventCallback<'finish', RequestPayload>\n onFlash?: GlobalEventCallback<'flash', RequestPayload>\n onPrefetched?: GlobalEventCallback<'prefetched', RequestPayload>\n onPrefetching?: GlobalEventCallback<'prefetching', RequestPayload>\n onProgress?: GlobalEventCallback<'progress', RequestPayload>\n onStart?: GlobalEventCallback<'start', RequestPayload>\n onSuccess?: GlobalEventCallback<'success', RequestPayload>\n preserveScroll?: boolean\n /**\n * Reset input values to their defaults on success.\n *\n * @defaultValue `true`\n */\n resetOnSuccess?: boolean\n /**\n * How to display the root error from inertia.\n *\n * - `\"flash\"` - use the Toaster component\n * - `\"monitor\"` - use the ErrorMonitor component\n * - `\"none\"` - don't display the root error\n *\n * @defaultValue `\"flash\"`\n */\n rootError?: 'flash' | 'monitor' | 'none'\n route: RouteDefinition<Method>\n schema: Schema<TRuleset>\n /**\n * Set the submitted values as default values on success.\n *\n * @defaultValue `false`\n */\n setDefaultsOnSuccess?: boolean\n}) {\n const [rootError, setRootError] = useState<ErrorData>()\n\n const defaultValues = Object.fromEntries(\n Object.keys(schema.ruleset).map((field) => [field, defaults[field] ?? ''])\n ) as DefaultValues<TValues>\n\n // React Hook Form\n const reactForm = userReactForm<TValues>({\n defaultValues,\n resolver: useTsvResolver(schema)\n })\n\n // Inertia\n const inertiaForm = useInertiaForm<object>(defaultValues)\n\n function onErrorWithToast(errors: Errors) {\n if (errors.root) {\n if (displayRootError === 'flash') {\n flash({ level: 'error', title: errors.root })\n } else if (displayRootError === 'monitor') {\n setRootError({ message: errors.root })\n }\n }\n\n if (onError) {\n onError(errors)\n }\n }\n\n function onSuccessWithReset(page: Page<SharedPageProps>) {\n if (setDefaultsOnSuccess) {\n inertiaForm.setDefaults()\n reactForm.reset(reactForm.getValues())\n }\n\n if (resetOnSuccess) {\n inertiaForm.reset()\n reactForm.reset()\n }\n\n if (onSuccess) {\n onSuccess(page)\n }\n }\n\n // Submit handler\n function onSubmit(values: TValues) {\n inertiaForm.transform(() => values)\n inertiaForm[route.method](route.url, {\n onBefore,\n onBeforeUpdate,\n onCancel,\n onCancelToken,\n onError: onErrorWithToast,\n onFinish,\n onFlash,\n onPrefetched,\n onPrefetching,\n onProgress,\n onStart,\n onSuccess: onSuccessWithReset,\n preserveScroll\n })\n }\n\n // Add inertia (server) errors to react form.\n useEffect(() => {\n for (const [key, error] of Object.entries(inertiaForm.errors)) {\n if (error) {\n reactForm.setError(key as Path<TValues>, {\n message: error as string,\n type: 'inertia'\n })\n }\n }\n }, [inertiaForm.errors, reactForm])\n\n return (\n <form\n action={route.url}\n className={cn('grid gap-6', className)}\n method={route.method}\n onSubmit={reactForm.handleSubmit(onSubmit)}\n {...props}\n >\n <>\n {children({\n errors: inertiaForm.errors,\n form: reactForm,\n loading: inertiaForm.processing\n })}\n </>\n\n {displayRootError === 'monitor' && <ErrorMonitor error={rootError} />}\n </form>\n )\n}\n","import { cn } from '@gmcode/react-ui'\nimport type { ComponentProps } from 'react'\nimport type { FieldValues } from 'react-hook-form'\nimport { InputField } from '@/components/input-field'\n\nexport function HiddenField<TFieldValues extends FieldValues = FieldValues>({\n autoComplete = 'off',\n className,\n type = 'hidden',\n ...props\n}: ComponentProps<typeof InputField<TFieldValues>>) {\n return (\n <InputField\n autoComplete={autoComplete}\n className={cn('hidden', className)}\n type={type}\n {...props}\n />\n )\n}\n","import { Checkbox, Field, Label, cn } from '@gmcode/react-ui'\nimport type { Checkbox as CheckboxPrimitive } from 'radix-ui'\nimport type { ComponentProps } from 'react'\nimport { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport type { ControllerRenderProps, FieldValues } from 'react-hook-form'\nimport { ErrorMonitor } from '@/components/error-monitor'\n\nexport function InfoCheckboxField<\n TFieldValues extends FieldValues = FieldValues\n>({\n children,\n className,\n control,\n disabled,\n inputId,\n inputName,\n label,\n onCheckedChange,\n orientation = 'horizontal',\n readOnly,\n text,\n uncheckedValue = '',\n value = 'true',\n ...props\n}: ComponentProps<typeof Field> & {\n control: Control<TFieldValues>\n disabled?: boolean\n inputId?: string\n inputName: FieldPath<TFieldValues>\n label?: string\n onCheckedChange?: (\n checked: CheckboxPrimitive.CheckedState,\n field: ControllerRenderProps<TFieldValues, FieldPath<TFieldValues>>\n ) => void\n readOnly?: boolean\n text?: string\n uncheckedValue?: string\n value?: string\n}) {\n return (\n <Controller\n control={control}\n disabled={disabled}\n name={inputName}\n render={({ field, fieldState }) => (\n <Field\n className={cn('block', className)}\n data-invalid={fieldState.invalid}\n orientation={orientation}\n {...props}\n >\n <Label\n className=\"flex items-start gap-3 rounded-lg border p-3 hover:bg-accent/50 has-aria-checked:border-info-foreground has-aria-checked:bg-info\"\n data-slot=\"field-label\"\n >\n <Checkbox\n aria-invalid={fieldState.invalid}\n aria-readonly={readOnly}\n checked={field.value === value}\n className=\"aria-readonly:opacity-50 data-[state=checked]:border-info-foreground data-[state=checked]:bg-info-foreground data-[state=checked]:text-white dark:data-[state=checked]:border-info-foreground dark:data-[state=checked]:bg-info-foreground\"\n disabled={field.disabled}\n id={inputId}\n name={field.name}\n onBlur={field.onBlur}\n onCheckedChange={(checked) => {\n if (!readOnly) {\n field.onChange(checked === true ? value : uncheckedValue)\n if (onCheckedChange) onCheckedChange(checked, field)\n }\n }}\n ref={field.ref}\n value={value}\n />\n\n <div className=\"grid gap-1.5 font-normal\">\n <p className=\"text-sm leading-none font-medium\">{label}</p>\n {text ? (\n <p className=\"text-sm text-muted-foreground\">{text}</p>\n ) : (\n children\n )}\n <ErrorMonitor error={fieldState.error} />\n </div>\n </Label>\n </Field>\n )}\n />\n )\n}\n","import {\n Button,\n Field,\n FieldDescription,\n FieldLabel,\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue\n} from '@gmcode/react-ui'\nimport { X } from 'lucide-react'\nimport type {\n ComponentProps,\n HTMLInputAutoCompleteAttribute,\n HTMLInputTypeAttribute\n} from 'react'\nimport { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport type {\n FieldPathValue,\n FieldValues,\n UseFormSetValue\n} from 'react-hook-form'\nimport { useTranslation } from 'react-i18next'\nimport { ErrorMonitor } from '@/components/error-monitor'\nimport type { Option } from '@/types'\n\nexport function NullableSelectField<\n TFieldValues extends FieldValues = FieldValues\n>({\n autoComplete,\n control,\n description,\n disabled,\n inputId,\n inputName,\n label,\n options,\n placeholder,\n setValue,\n ...props\n}: ComponentProps<typeof Field> & {\n autoComplete?: HTMLInputAutoCompleteAttribute\n control: Control<TFieldValues>\n description?: string\n disabled?: boolean\n inputId?: string\n inputName: FieldPath<TFieldValues>\n label?: string\n options: Option[]\n placeholder?: string\n setValue: UseFormSetValue<TFieldValues>\n type?: HTMLInputTypeAttribute\n}) {\n // i18n\n const { t } = useTranslation('forms')\n\n return (\n <Controller\n control={control}\n disabled={disabled}\n name={inputName}\n render={({ field, fieldState }) => (\n <Field\n data-invalid={fieldState.invalid}\n {...props}\n >\n {label && (\n <FieldLabel htmlFor={inputId ?? inputName}>{label}</FieldLabel>\n )}\n\n <div className=\"flex items-end gap-4\">\n <Select\n autoComplete={autoComplete}\n disabled={field.disabled}\n name={field.name}\n onValueChange={field.onChange}\n value={field.value}\n >\n <SelectTrigger\n aria-invalid={fieldState.invalid}\n className=\"flex-1 overflow-hidden\"\n id={inputId ?? (label ? inputName : undefined)}\n >\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n <SelectContent>\n {options.map((option) => (\n <SelectItem\n id={option.id}\n key={option.key ?? option.id ?? option.value}\n value={option.value}\n >\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n\n <Button\n aria-label={t(($) => $.reset)}\n className=\"flex-none\"\n onClick={() =>\n setValue(\n inputName,\n '' as FieldPathValue<TFieldValues, FieldPath<TFieldValues>>\n )\n }\n type=\"button\"\n variant=\"outline\"\n >\n <X />\n </Button>\n </div>\n\n {description && <FieldDescription>{description}</FieldDescription>}\n\n <ErrorMonitor error={fieldState.error} />\n </Field>\n )}\n />\n )\n}\n","import {\n Field,\n FieldLabel,\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupInput\n} from '@gmcode/react-ui'\nimport { Minus, Plus } from 'lucide-react'\nimport type {\n ComponentProps,\n HTMLInputAutoCompleteAttribute,\n HTMLInputTypeAttribute\n} from 'react'\nimport { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport type {\n FieldPathValue,\n FieldValues,\n UseFormSetValue\n} from 'react-hook-form'\nimport { useTranslation } from 'react-i18next'\nimport { ErrorMonitor } from '@/components/error-monitor'\n\nfunction stepInput(\n original: string,\n add: boolean,\n step?: number,\n min?: number,\n max?: number\n) {\n let parsed = Number(original)\n\n if (isNaN(parsed)) {\n return ''\n }\n\n if (add) {\n parsed += step === undefined ? 1 : step\n } else {\n parsed -= step === undefined ? 1 : step\n }\n\n if (min !== undefined) {\n parsed = Math.max(parsed, min)\n }\n\n if (max !== undefined) {\n parsed = Math.min(parsed, max)\n }\n\n return parsed.toString()\n}\n\nexport function NumericField<TFieldValues extends FieldValues = FieldValues>({\n autoComplete,\n control,\n disabled,\n inputId,\n inputMode = 'numeric',\n inputName,\n label,\n placeholder,\n type,\n ui,\n ...props\n}: ComponentProps<typeof Field> & {\n autoComplete?: HTMLInputAutoCompleteAttribute\n control: Control<TFieldValues>\n disabled?: boolean\n inputId?: string\n inputMode?: 'decimal' | 'numeric'\n inputName: FieldPath<TFieldValues>\n label?: string\n placeholder?: string\n type?: HTMLInputTypeAttribute\n ui?: {\n max?: number\n min?: number\n setValue: UseFormSetValue<TFieldValues>\n step?: number\n }\n}) {\n // i18n\n const { t } = useTranslation('forms')\n\n function stepValue(value: string, add: boolean) {\n if (ui?.setValue) {\n ui.setValue(\n inputName,\n stepInput(value, add, ui.step, ui.min, ui.max) as FieldPathValue<\n TFieldValues,\n FieldPath<TFieldValues>\n >,\n { shouldValidate: true }\n )\n }\n }\n\n return (\n <Controller\n control={control}\n disabled={disabled}\n name={inputName}\n render={({ field, fieldState }) => (\n <Field\n data-invalid={fieldState.invalid}\n {...props}\n >\n {label && (\n <FieldLabel htmlFor={inputId ?? inputName}>{label}</FieldLabel>\n )}\n\n <InputGroup>\n <InputGroupInput\n aria-invalid={fieldState.invalid}\n autoComplete={autoComplete}\n id={inputId ?? (label ? inputName : undefined)}\n inputMode={inputMode}\n placeholder={placeholder}\n type={type}\n {...field}\n />\n\n {ui && (\n <InputGroupAddon align=\"inline-end\">\n <InputGroupButton\n aria-label={t(($) => $.decrease)}\n disabled={disabled}\n onClick={() => stepValue(field.value, false)}\n size=\"icon-xs\"\n >\n <Minus />\n </InputGroupButton>\n\n <InputGroupButton\n aria-label={t(($) => $.increase)}\n disabled={disabled}\n onClick={() => stepValue(field.value, true)}\n size=\"icon-xs\"\n >\n <Plus />\n </InputGroupButton>\n </InputGroupAddon>\n )}\n </InputGroup>\n\n <ErrorMonitor error={fieldState.error} />\n </Field>\n )}\n />\n )\n}\n","import type { ComponentProps } from 'react'\nimport type { FieldValues } from 'react-hook-form'\nimport { InputField } from '@/components/input-field'\n\nexport function PasswordField<TFieldValues extends FieldValues = FieldValues>({\n autoComplete = 'off',\n type = 'password',\n ...props\n}: ComponentProps<typeof InputField<TFieldValues>>) {\n return (\n <InputField\n autoComplete={autoComplete}\n type={type}\n {...props}\n />\n )\n}\n","import {\n Field,\n FieldDescription,\n FieldLabel,\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue\n} from '@gmcode/react-ui'\nimport type {\n ComponentProps,\n HTMLInputAutoCompleteAttribute,\n HTMLInputTypeAttribute\n} from 'react'\nimport { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport type { FieldValues } from 'react-hook-form'\nimport { ErrorMonitor } from '@/components/error-monitor'\nimport type { Option } from '@/types'\n\nexport function SelectField<TFieldValues extends FieldValues = FieldValues>({\n autoComplete,\n control,\n description,\n disabled,\n inputId,\n inputName,\n label,\n options,\n placeholder,\n ...props\n}: ComponentProps<typeof Field> & {\n autoComplete?: HTMLInputAutoCompleteAttribute\n control: Control<TFieldValues>\n description?: string\n disabled?: boolean\n inputId?: string\n inputName: FieldPath<TFieldValues>\n label?: string\n options: Option[]\n placeholder?: string\n type?: HTMLInputTypeAttribute\n}) {\n return (\n <Controller\n control={control}\n disabled={disabled}\n name={inputName}\n render={({ field, fieldState }) => (\n <Field\n data-invalid={fieldState.invalid}\n {...props}\n >\n {label && (\n <FieldLabel htmlFor={inputId ?? inputName}>{label}</FieldLabel>\n )}\n\n <Select\n autoComplete={autoComplete}\n disabled={field.disabled}\n name={field.name}\n onValueChange={field.onChange}\n value={field.value}\n >\n <SelectTrigger\n aria-invalid={fieldState.invalid}\n id={inputId ?? (label ? inputName : undefined)}\n >\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n <SelectContent>\n {options.map((option) => (\n <SelectItem\n id={option.id}\n key={option.key ?? option.id ?? option.value}\n value={option.value}\n >\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n\n {description && <FieldDescription>{description}</FieldDescription>}\n\n <ErrorMonitor error={fieldState.error} />\n </Field>\n )}\n />\n )\n}\n","import { Button, Spinner, cn } from '@gmcode/react-ui'\nimport type { ComponentProps } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nexport function Submit({\n label,\n loading = false,\n type = 'submit',\n ...props\n}: ComponentProps<typeof Button> & {\n label?: string\n loading?: boolean\n}) {\n // i18n\n const { t } = useTranslation('forms')\n\n return (\n <Button\n disabled={loading}\n type={type}\n {...props}\n >\n <div className=\"relative\">\n <span className={cn({ invisible: loading })}>\n {label ?? t(($) => $.submit)}\n </span>\n <Spinner\n className={cn(\n 'trans absolute top-1/2 left-1/2 hidden -translate-x-1/2 -translate-y-1/2',\n { block: loading }\n )}\n />\n </div>\n </Button>\n )\n}\n","import { Field, FieldLabel, Switch } from '@gmcode/react-ui'\nimport type { Checkbox as CheckboxPrimitive } from 'radix-ui'\nimport type { ComponentProps } from 'react'\nimport { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport type { ControllerRenderProps, FieldValues } from 'react-hook-form'\nimport { ErrorMonitor } from '@/components/error-monitor'\n\nexport function SwitchField<TFieldValues extends FieldValues = FieldValues>({\n control,\n disabled,\n inputId,\n inputName,\n label,\n onCheckedChange,\n orientation = 'horizontal',\n readOnly,\n uncheckedValue = '',\n value = 'true',\n ...props\n}: ComponentProps<typeof Field> & {\n control: Control<TFieldValues>\n disabled?: boolean\n inputId?: string\n inputName: FieldPath<TFieldValues>\n label?: string\n onCheckedChange?: (\n checked: CheckboxPrimitive.CheckedState,\n field: ControllerRenderProps<TFieldValues, FieldPath<TFieldValues>>\n ) => void\n readOnly?: boolean\n uncheckedValue?: string\n value?: string\n}) {\n return (\n <Controller\n control={control}\n disabled={disabled}\n name={inputName}\n render={({ field, fieldState }) => (\n <Field\n data-invalid={fieldState.invalid}\n orientation={orientation}\n {...props}\n >\n <Switch\n aria-invalid={fieldState.invalid}\n aria-readonly={readOnly}\n checked={field.value === value}\n className=\"aria-readonly:opacity-50\"\n disabled={field.disabled}\n id={inputId ?? (label ? inputName : undefined)}\n name={field.name}\n onBlur={field.onBlur}\n onCheckedChange={(checked) => {\n if (!readOnly) {\n field.onChange(checked === true ? value : uncheckedValue)\n if (onCheckedChange) onCheckedChange(checked, field)\n }\n }}\n ref={field.ref}\n value={value}\n />\n\n {label && (\n <FieldLabel htmlFor={inputId ?? inputName}>{label}</FieldLabel>\n )}\n\n <ErrorMonitor error={fieldState.error} />\n </Field>\n )}\n />\n )\n}\n","import type { ComponentProps } from 'react'\nimport type { FieldValues } from 'react-hook-form'\nimport { InputField } from '@/components/input-field'\n\nexport function TextField<TFieldValues extends FieldValues = FieldValues>({\n autoComplete = 'on',\n type = 'text',\n ...props\n}: ComponentProps<typeof InputField<TFieldValues>>) {\n return (\n <InputField\n autoComplete={autoComplete}\n type={type}\n {...props}\n />\n )\n}\n","import { Field, FieldLabel, TextareaAutosize, cn } from '@gmcode/react-ui'\nimport type { ComponentProps } from 'react'\nimport { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport type { FieldValues } from 'react-hook-form'\nimport type { TextareaHeightChangeMeta } from 'react-textarea-autosize'\nimport { ErrorMonitor } from '@/components/error-monitor'\n\nexport function TextareaField<TFieldValues extends FieldValues = FieldValues>({\n cacheMeasurements,\n control,\n inputId,\n inputName,\n label,\n maxRows,\n minRows,\n onHeightChange,\n placeholder,\n resize = 'none',\n ...props\n}: ComponentProps<typeof Field> & {\n cacheMeasurements?: boolean\n control: Control<TFieldValues>\n inputId?: string\n inputName: FieldPath<TFieldValues>\n label?: string\n maxRows?: number\n minRows?: number\n onHeightChange?: (height: number, meta: TextareaHeightChangeMeta) => void\n placeholder?: string\n resize?: 'both' | 'none' | 'x' | 'y'\n}) {\n return (\n <Controller\n control={control}\n name={inputName}\n render={({ field, fieldState }) => (\n <Field\n data-invalid={fieldState.invalid}\n {...props}\n >\n {label && (\n <FieldLabel htmlFor={inputId ?? inputName}>{label}</FieldLabel>\n )}\n\n <TextareaAutosize\n aria-invalid={fieldState.invalid}\n autoComplete=\"off\"\n cacheMeasurements={cacheMeasurements}\n className={cn({\n resize: resize === 'both',\n 'resize-none': resize === 'none',\n 'resize-x': resize === 'x',\n 'resize-y': resize === 'y'\n })}\n id={inputId ?? (label ? inputName : undefined)}\n maxRows={maxRows}\n minRows={minRows}\n onHeightChange={onHeightChange}\n placeholder={placeholder}\n {...field}\n />\n\n <ErrorMonitor error={fieldState.error} />\n </Field>\n )}\n />\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAMA,MAAM,OAAc,eAAe;CACjC,aAAa;CACb,eAAe,EAAE,aAAa,MAAM;CACpC,WAAW,EAAE,eAAG;AAClB,CAAC;AAEI,KAAK,KAAK;;;;ACRf,SAAO,aAAA,IAAA;CAAA,MAAA,IAAA,EAAA,CAAA;CAAA,IAAA,EAAA,OAAA,oEAAA;EAAA,KAAA,IAAA,KAAA,GAAA,KAAA,GAAA,MAAA,GAAA,EAAA,MAAA,OAAA,IAAA,2BAAA;EAAA,EAAA,KAAA;CAAA;CAAsB,MAAA,EAAA,UAAA;CAE3B,MAAA,EAAA,MAAc,eAAe,OAAO;CAEpC,IAAI,CAAC,OAAK,SAAS,OACV;CAGT,IAAI,EAAC,SAAU,aAAW;EAAA,IAAA;EAAA,IAAA,EAAA,OAAA,OAAA;GACjB,KAAA,oBAAC,YAAD,EAAoBA,QAAA,MAAK;GAAI,EAAA,KAAA;GAAA,EAAA,KAAA;EAAA,OAAA,KAAA,EAAA;EAAA,OAA7B;CAA6B;CACrC,IAAA;CAAA,IAAA,EAAA,OAAA,MAAA,WAAA,EAAA,OAAA,MAAA,UAAA,EAAA,OAAA,GAAA;EAGqC,KAAA,EAAE,MAAK,SAAU,MAAK,MAAO;EAAC,EAAA,KAAA,MAAA;EAAA,EAAA,KAAA,MAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;CAAA,OAAA,KAAA,EAAA;CAAA,IAAA;CAAA,IAAA,EAAA,OAAA,IAAA;EAA7D,KAAA,oBAAC,YAAD,EAAoB,QAAA,EAAA,SAAW,GAA+B,EAAC;EAAI,EAAA,KAAA;EAAA,EAAA,KAAA;CAAA,OAAA,KAAA,EAAA;CAAA,OAAnE;AAAmE;;;;;;;ACd5E,SAAgB,aAAa,MAAoB;CAC/C,OAAO,GAAG,KAAK,YAAY,EAAC,IAAK,KAAK,SAAS,IAAI,IAAI,GAAE,CAAE,SAAS,GAAG,GAAG,EAAC,IAAK,KAAK,QAAQ,IAAI,GAAE,CAAE,SAAS,GAAG,GAAG;AACtH;;;;;AAMA,SAAgB,aAAa,QAA8C;CACzE,IAAI,CAAC,QACH;CAGF,MAAM,OAAO,IAAI,KAAK,MAAM;CAE5B,IAAI,MAAM,KAAK,YAAY,CAAC,GAC1B;CAGF,OAAO;AACT;;;;ACZA,SAAgB,cAA8D,EAC5E,SACA,+BAAe,cACf,UACA,SACA,WACA,OACA,QACA,+BAAe,cACf,GAAG,SAUF;CACD,OACE,oBAAC,YAAD;EACW;EACT,MAAM;EACN,SAAS,EAAE,OAAO,iBAChB,qBAAC,OAAD;GACE,gBAAc,WAAW;GACzB,GAAI;aAFN;IAIG,SACC,oBAAC,YAAD;KAAY,SAAS,WAAW;eAAY;IAAkB;IAGhE,oBAAC,UAAD;KACE,gBAAc,WAAW;KACzB,WAAU;KACA;KACV,YAAY;KACZ,IAAI,YAAY,QAAQ,YAAY;KAC5B;KACR,MAAK;KACL,WAAW,SAAS,MAAM,SAAS,OAAO,eAAa,IAAI,IAAI,EAAE;KACjE,UAAU,eAAa,MAAM,KAAK;IAAE;IAGtC,oBAAC,cAAD,EAAc,OAAO,WAAW,MAAM;GACjC;;CACP;AAGR;;;;ACtDA,SAAgB,cAA8D,EAC5E,SACA,UACA,SACA,WACA,OACA,iBACA,cAAc,cACd,UACA,iBAAiB,IACjB,QAAQ,QACR,GAAG,SAcF;CACD,OACE,oBAAC,YAAD;EACW;EACC;EACV,MAAM;EACN,SAAS,EAAE,OAAO,iBAChB,qBAAC,OAAD;GACE,gBAAc,WAAW;GACZ;GACb,GAAI;aAHN;IAKE,oBAAC,UAAD;KACE,gBAAc,WAAW;KACzB,iBAAe;KACf,SAAS,MAAM,UAAU;KACzB,WAAU;KACV,UAAU,MAAM;KAChB,IAAI,YAAY,QAAQ,YAAY;KACpC,MAAM,MAAM;KACZ,QAAQ,MAAM;KACd,kBAAkB,YAAY;MAC5B,IAAI,CAAC,UAAU;OACb,MAAM,SAAS,YAAY,OAAO,QAAQ,cAAc;OACxD,IAAI,iBAAiB,gBAAgB,SAAS,KAAK;MACrD;KACF;KACA,KAAK,MAAM;KACJ;IAAM;IAGd,SACC,oBAAC,YAAD;KAAY,SAAS,WAAW;eAAY;IAAkB;IAGhE,oBAAC,cAAD,EAAc,OAAO,WAAW,MAAM;GACjC;;CACP;AAGR;;;;AC7DA,SAAO,WAAA,IAAA;CAAA,MAAA,IAAA,EAAA,EAAA;CAAA,IAAA,EAAA,OAAA,oEAAA;EAAA,KAAA,IAAA,KAAA,GAAA,KAAA,IAAA,MAAA,GAAA,EAAA,MAAA,OAAA,IAAA,2BAAA;EAAA,EAAA,KAAA;CAAA;CAAA,IAAA;CAAA,IAAA;CAAA,IAAA;CAAA,IAAA;CAAA,IAAA;CAAA,IAAA;CAAA,IAAA;CAAA,IAAA;CAAA,IAAA;CAAA,IAAA;CAAA,IAAA;CAAA,IAAA;CAAA,IAAA,EAAA,OAAA,IAAA;EAAoE,CAAA,CAAA,cAAA,SAAA,UAAA,gBAAA,SAAA,WAAA,OAAA,gBAAA,aAAA,UAAA,MAAA,GAAA,SAAA;EA0B1E,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;CAAA,OAAA;EAAA,eAAA,EAAA;EAAA,UAAA,EAAA;EAAA,WAAA,EAAA;EAAA,iBAAA,EAAA;EAAA,UAAA,EAAA;EAAA,YAAA,EAAA;EAAA,QAAA,EAAA;EAAA,iBAAA,EAAA;EAAA,cAAA,EAAA;EAAA,QAAA,EAAA;EAAA,WAAA,EAAA;EAAA,OAAA,EAAA;CAAA;CAAA,IAAA;CAAA,IAAA,EAAA,QAAA,gBAAA,EAAA,QAAA,kBAAA,EAAA,QAAA,WAAA,EAAA,QAAA,aAAA,EAAA,QAAA,SAAA,EAAA,QAAA,kBAAA,EAAA,QAAA,eAAA,EAAA,QAAA,SAAA,EAAA,QAAA,YAAA,EAAA,QAAA,MAAA;EAMa,MAAA,OAAA;GAAC,MAAA,EAAA,OAAA,eAAA;GAAqB,OAC5B,qBAAC,OAAD;IACgB,gBAAA,WAAU;IAAQ,GAC5B;cAFN;KAIG,SACC,oBAAC,YAAD;MACaC,WAAA;MACF,SAAA,WAAA;gBAER;KAJQ;KAQb,oBAAC,OAAD;MACgB,gBAAA,WAAU;MACV;MACHG,WAAA;MACP,IAAA,YAAY,QAAA,YAAA;MACH;MACH;MACJ;MAAI,GACN;KAAK;KAGX,oBAAC,cAAD,EAAqB,OAAA,WAAU,MAAM;IAxBjC;;EAyBE;EACT,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;CAAA,OAAA,KAAA,EAAA;CAAA,IAAA;CAAA,IAAA,EAAA,QAAA,WAAA,EAAA,QAAA,YAAA,EAAA,QAAA,aAAA,EAAA,QAAA,IAAA;EA/BH,KAAA,oBAAC,YAAD;GACW;GACC;GACJM,MAAA;GACE,QAAA;EA2BP;EACD,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;CAAA,OAAA,KAAA,EAAA;CAAA,OAhCF;AAgCE;;;;ACnEN,SAAgB,WAA2D,EACzE,eAAe,MACf,OAAO,SACP,GAAG,SAC+C;CAClD,OACE,oBAAC,YAAD;EACgB;EACR;EACN,GAAI;CAAM;AAGhB;;;;ACFA,SAAO,gBAAA,IAAA;CAAA,MAAA,IAAA,EAAA,EAAA;CAAA,IAAA,EAAA,OAAA,oEAAA;EAAA,KAAA,IAAA,KAAA,GAAA,KAAA,IAAA,MAAA,GAAA,EAAA,MAAA,OAAA,IAAA,2BAAA;EAAA,EAAA,KAAA;CAAA;CAAA,IAAA;CAAA,IAAA;CAAA,IAAA;CAAA,IAAA;CAAA,IAAA;CAAA,IAAA;CAAA,IAAA;CAAA,IAAA;CAAA,IAAA;CAAA,IAAA,EAAA,OAAA,IAAA;EAEL,CAAA,CAAA,SAAA,cAAA,aAAA,UAAA,SAAA,WAAA,OAAA,SAAA,GAAA,SAAA;EAmBD,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,MAAA;CAAA,OAAA;EAAA,UAAA,EAAA;EAAA,eAAA,EAAA;EAAA,cAAA,EAAA;EAAA,WAAA,EAAA;EAAA,UAAA,EAAA;EAAA,YAAA,EAAA;EAAA,QAAA,EAAA;EAAA,UAAA,EAAA;EAAA,QAAA,EAAA;CAAA;CAAA,IAAA;CAAA,IAAA,EAAA,QAAA,gBAAA,EAAA,QAAA,eAAA,EAAA,QAAA,WAAA,EAAA,QAAA,aAAA,EAAA,QAAA,SAAA,EAAA,QAAA,WAAA,EAAA,QAAA,OAAA;EAMa,MAAA,OAAA;GAAC,MAAA,EAAA,OAAA,eAAA;GAAqB,OAC5B,qBAAC,UAAD;IACgB,gBAAA,WAAU;IAAQ,GAC5B;cAFN;KAIG,SACC,oBAAC,YAAD;MAAqB,SAAA,WAAA;gBAAuB;KAAjC;KAGZ,eAAe,oBAAC,kBAAD,YAAmB,YAAF;KAEjC,oBAAC,cAAD,EAAqB,OAAA,WAAU,MAAM;KAErC,oBAAC,YAAD;MACgB;MACJ,UAAA,MAAK;MACX,IAAA,YAAY,QAAA,YAAA;MACV,MAAA,MAAK;MACH,QAAA,MAAK;MACE,eAAA,MAAK;MACf,KAAA,MAAK;gBAET,QAAO,IAAK,OAgBZ;KAzBQ;IAZJ;;EAuCE;EACZ,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;CAAA,OAAA,KAAA,EAAA;CAAA,IAAA;CAAA,IAAA,EAAA,QAAA,WAAA,EAAA,QAAA,YAAA,EAAA,QAAA,aAAA,EAAA,QAAA,IAAA;EA7CH,KAAA,oBAAC,YAAD;GACW;GACC;GACJM,MAAA;GACE,QAAA;EAyCP;EACD,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;CAAA,OAAA,KAAA,EAAA;CAAA,OA9CF;AA8CE;AArEC,SAAA,QAAA,QAAA;CAAA,OAkDO,oBAAC,OAAD;EACY,WAAA;EACA,aAAA;YAGV,qBAAA,OAAA;GAAe,WAAA;aAAf;IACE,oBAAC,gBAAD;KACY,WAAA;KACN,IAAA,OAAM;KACH,OAAA,OAAM;IAAM;IAEpB,OAAM,QAAS,oBAAA,OAAA,MAAA,CAAA;IACf,OAAM;GACH;;CAbF,GAGC,OAAM,OAAQ,OAAM,MAAO,OAAM,KAHlC;AAcE;;;;AC3CtB,SAAgB,KAId,EACA,UACA,WACA,WAAW,CAAC,GACZ,UACA,gBACA,UACA,eACA,SACA,UACA,SACA,cACA,eACA,YACA,SACA,WACA,iBAAiB,MACjB,iBAAiB,MACjB,WAAW,mBAAmB,SAC9B,OACA,QACA,uBAAuB,OACvB,GAAG,SA4CF;CACD,MAAM,CAAC,WAAW,gBAAgB,SAAoB;CAEtD,MAAM,gBAAgB,OAAO,YAC3B,OAAO,KAAK,OAAO,OAAO,CAAC,CAAC,KAAK,UAAU,CAAC,OAAO,SAAS,UAAU,EAAE,CAAC,CAC3E;CAGA,MAAM,YAAY,QAAuB;EACvC;EACA,UAAU,iBAAe,MAAM;CACjC,CAAC;CAGD,MAAM,cAAc,UAAuB,aAAa;CAExD,SAAS,iBAAiB,QAAgB;EACxC,IAAI,OAAO,MAAM;GACf,IAAI,qBAAqB,SACvB,MAAM;IAAE,OAAO;IAAS,OAAO,OAAO;GAAK,CAAC;QACvC,IAAI,qBAAqB,WAC9B,aAAa,EAAE,SAAS,OAAO,KAAK,CAAC;EAEzC;EAEA,IAAI,SACF,QAAQ,MAAM;CAElB;CAEA,SAAS,mBAAmB,MAA6B;EACvD,IAAI,sBAAsB;GACxB,YAAY,YAAY;GACxB,UAAU,MAAM,UAAU,UAAU,CAAC;EACvC;EAEA,IAAI,gBAAgB;GAClB,YAAY,MAAM;GAClB,UAAU,MAAM;EAClB;EAEA,IAAI,WACF,UAAU,IAAI;CAElB;CAGA,SAAS,SAAS,QAAiB;EACjC,YAAY,gBAAgB,MAAM;EAClC,YAAY,MAAM,OAAO,CAAC,MAAM,KAAK;GACnC;GACA;GACA;GACA;GACA,SAAS;GACT;GACA;GACA;GACA;GACA;GACA;GACA,WAAW;GACX;EACF,CAAC;CACH;CAGA,gBAAgB;EACd,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,YAAY,MAAM,GAC1D,IAAI,OACF,UAAU,SAAS,KAAsB;GACvC,SAAS;GACT,MAAM;EACR,CAAC;CAGP,GAAG,CAAC,YAAY,QAAQ,SAAS,CAAC;CAElC,OACE,qBAAC,QAAD;EACE,QAAQ,MAAM;EACd,WAAW,GAAG,cAAc,SAAS;EACrC,QAAQ,MAAM;EACd,UAAU,UAAU,aAAa,QAAQ;EACzC,GAAI;YALN,CAOE,0CACG,SAAS;GACR,QAAQ,YAAY;GACpB,MAAM;GACN,SAAS,YAAY;EACvB,CAAC,EACH,IAEC,qBAAqB,aAAa,oBAAC,cAAD,EAAc,OAAO,UAAU,EAC9D;;AAEV;;;;ACrMA,SAAgB,YAA4D,EAC1E,eAAe,OACf,WACA,OAAO,UACP,GAAG,SAC+C;CAClD,OACE,oBAAC,YAAD;EACgB;EACd,WAAW,GAAG,UAAU,SAAS;EAC3B;EACN,GAAI;CAAM;AAGhB;;;;ACZA,SAAgB,kBAEd,EACA,UACA,WACA,SACA,UACA,SACA,WACA,OACA,iBACA,cAAc,cACd,UACA,MACA,iBAAiB,IACjB,QAAQ,QACR,GAAG,SAeF;CACD,OACE,oBAAC,YAAD;EACW;EACC;EACV,MAAM;EACN,SAAS,EAAE,OAAO,iBAChB,oBAAC,OAAD;GACE,WAAW,GAAG,SAAS,SAAS;GAChC,gBAAc,WAAW;GACZ;GACb,GAAI;aAEJ,qBAAC,OAAD;IACE,WAAU;IACV,aAAU;cAFZ,CAIE,oBAAC,UAAD;KACE,gBAAc,WAAW;KACzB,iBAAe;KACf,SAAS,MAAM,UAAU;KACzB,WAAU;KACV,UAAU,MAAM;KAChB,IAAI;KACJ,MAAM,MAAM;KACZ,QAAQ,MAAM;KACd,kBAAkB,YAAY;MAC5B,IAAI,CAAC,UAAU;OACb,MAAM,SAAS,YAAY,OAAO,QAAQ,cAAc;OACxD,IAAI,iBAAiB,gBAAgB,SAAS,KAAK;MACrD;KACF;KACA,KAAK,MAAM;KACJ;IAAM,IAGf,qBAAC,OAAD;KAAK,WAAU;eAAf;MACE,oBAAC,KAAD;OAAG,WAAU;iBAAoC;MAAS;MACzD,OACC,oBAAC,KAAD;OAAG,WAAU;iBAAiC;MAAQ,KAEtD;MAEF,oBAAC,cAAD,EAAc,OAAO,WAAW,MAAM;KACnC;MACA;;EACF;CACP;AAGR;;;;AC7DA,SAAO,oBAAA,IAAA;CAAA,MAAA,IAAA,EAAA,EAAA;CAAA,IAAA,EAAA,OAAA,oEAAA;EAAA,KAAA,IAAA,KAAA,GAAA,KAAA,IAAA,MAAA,GAAA,EAAA,MAAA,OAAA,IAAA,2BAAA;EAAA,EAAA,KAAA;CAAA;CAAA,IAAA;CAAA,IAAA;CAAA,IAAA;CAAA,IAAA;CAAA,IAAA;CAAA,IAAA;CAAA,IAAA;CAAA,IAAA;CAAA,IAAA;CAAA,IAAA;CAAA,IAAA;CAAA,IAAA,EAAA,OAAA,IAAA;EAEL,CAAA,CAAA,cAAA,SAAA,aAAA,UAAA,SAAA,WAAA,OAAA,SAAA,aAAA,UAAA,GAAA,SAAA;EAwBD,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;CAAA,OAAA;EAAA,eAAA,EAAA;EAAA,UAAA,EAAA;EAAA,cAAA,EAAA;EAAA,WAAA,EAAA;EAAA,UAAA,EAAA;EAAA,YAAA,EAAA;EAAA,QAAA,EAAA;EAAA,UAAA,EAAA;EAAA,cAAA,EAAA;EAAA,QAAA,EAAA;EAAA,WAAA,EAAA;CAAA;CAEC,MAAA,EAAA,MAAc,eAAe,OAAO;CAAC,IAAA;CAAA,IAAA,EAAA,QAAA,gBAAA,EAAA,QAAA,eAAA,EAAA,QAAA,WAAA,EAAA,QAAA,aAAA,EAAA,QAAA,SAAA,EAAA,QAAA,WAAA,EAAA,QAAA,eAAA,EAAA,QAAA,SAAA,EAAA,QAAA,YAAA,EAAA,QAAA,GAAA;EAOzB,MAAA,OAAA;GAAC,MAAA,EAAA,OAAA,eAAA;GAAqB,OAC5B,qBAAC,OAAD;IACgB,gBAAA,WAAU;IAAQ,GAC5B;cAFN;KAIG,SACC,oBAAC,YAAD;MAAqB,SAAA,WAAA;gBAAuB;KAAjC;KAGb,qBAAA,OAAA;MAAe,WAAA;gBAAf,CACE,qBAAC,QAAD;OACgB;OACJ,UAAA,MAAK;OACT,MAAA,MAAK;OACI,eAAA,MAAK;OACb,OAAA,MAAK;iBALd,CAOE,oBAAC,eAAD;QACgB,gBAAA,WAAU;QACd,WAAA;QACN,IAAA,YAAY,QAAA,YAAA;kBAEhB,oBAAC,aAAD,EAA0B,YAAW;OALzB,IAOd,oBAAC,eAAD,YACG,QAAO,IAAK,OAQZ,EATW,EAdT;UA2BP,oBAAC,QAAD;OACc,cAAA,EAAE,MAAc;OAClB,WAAA;OACD,eACP,SACE,WACA,EACF;OAEG,MAAA;OACG,SAAA;iBAER,oBAAC,GAAD,CAAE;MAZG,EAcH;;KAEL,eAAe,oBAAC,kBAAD,YAAmB,YAAF;KAEjC,oBAAC,cAAD,EAAqB,OAAA,WAAU,MAAM;IAtDjC;;EAuDE;EACT,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;CAAA,OAAA,KAAA,EAAA;CAAA,IAAA;CAAA,IAAA,EAAA,QAAA,WAAA,EAAA,QAAA,YAAA,EAAA,QAAA,aAAA,EAAA,QAAA,IAAA;EA7DH,KAAA,oBAAC,YAAD;GACW;GACC;GACJO,MAAA;GACE,QAAA;EAyDP;EACD,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;CAAA,OAAA,KAAA,EAAA;CAAA,OA9DF;AA8DE;AA7FC,SAAA,OAAA,GAAA;CAAA,OAyE4B,EAAC;AAAM;AAzEnC,SAAA,QAAA,QAAA;CAAA,OA6DW,oBAAC,YAAD;EACM,IAAA,OAAM;EAEH,OAAA,OAAM;YAEZ,OAAM;CALE,GAEJ,OAAM,OAAQ,OAAM,MAAO,OAAM,KAF7B;AAME;;;;ACvE/B,SAAS,UACP,UACA,KACA,MACA,KACA,KACA;CACA,IAAI,SAAS,OAAO,QAAQ;CAE5B,IAAI,MAAM,MAAM,GACd,OAAO;CAGT,IAAI,KACF,UAAU,SAAS,SAAY,IAAI;MAEnC,UAAU,SAAS,SAAY,IAAI;CAGrC,IAAI,QAAQ,QACV,SAAS,KAAK,IAAI,QAAQ,GAAG;CAG/B,IAAI,QAAQ,QACV,SAAS,KAAK,IAAI,QAAQ,GAAG;CAG/B,OAAO,OAAO,SAAS;AACzB;AAEA,SAAgB,aAA6D,EAC3E,cACA,SACA,UACA,SACA,YAAY,WACZ,WACA,OACA,aACA,MACA,IACA,GAAG,SAiBF;CAED,MAAM,EAAE,MAAM,eAAe,OAAO;CAEpC,SAAS,UAAU,OAAe,KAAc;EAC9C,IAAI,IAAI,UACN,GAAG,SACD,WACA,UAAU,OAAO,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,GAAG,GAI7C,EAAE,gBAAgB,KAAK,CACzB;CAEJ;CAEA,OACE,oBAAC,YAAD;EACW;EACC;EACV,MAAM;EACN,SAAS,EAAE,OAAO,iBAChB,qBAAC,OAAD;GACE,gBAAc,WAAW;GACzB,GAAI;aAFN;IAIG,SACC,oBAAC,YAAD;KAAY,SAAS,WAAW;eAAY;IAAkB;IAGhE,qBAAC,YAAD,aACE,oBAAC,iBAAD;KACE,gBAAc,WAAW;KACX;KACd,IAAI,YAAY,QAAQ,YAAY;KACzB;KACE;KACP;KACN,GAAI;IAAM,IAGX,MACC,qBAAC,iBAAD;KAAiB,OAAM;eAAvB,CACE,oBAAC,kBAAD;MACE,cAAY,GAAG,MAAM,EAAE,QAAQ;MACrB;MACV,eAAe,UAAU,MAAM,OAAO,KAAK;MAC3C,MAAK;gBAEL,oBAAC,OAAD,CAAM;KACU,IAElB,oBAAC,kBAAD;MACE,cAAY,GAAGC,QAAMA,IAAE,QAAQ;MACrB;MACV,eAAe,UAAU,MAAM,OAAO,IAAI;MAC1C,MAAK;gBAEL,oBAAC,MAAD,CAAK;KACW,EACH;MAET;IAEZ,oBAAC,cAAD,EAAc,OAAO,WAAW,MAAM;GACjC;;CACP;AAGR;;;;ACnJA,SAAgB,cAA8D,EAC5E,eAAe,OACf,OAAO,YACP,GAAG,SAC+C;CAClD,OACE,oBAAC,YAAD;EACgB;EACR;EACN,GAAI;CAAM;AAGhB;;;;ACIA,SAAO,YAAA,IAAA;CAAA,MAAA,IAAA,EAAA,EAAA;CAAA,IAAA,EAAA,OAAA,oEAAA;EAAA,KAAA,IAAA,KAAA,GAAA,KAAA,IAAA,MAAA,GAAA,EAAA,MAAA,OAAA,IAAA,2BAAA;EAAA,EAAA,KAAA;CAAA;CAAA,IAAA;CAAA,IAAA;CAAA,IAAA;CAAA,IAAA;CAAA,IAAA;CAAA,IAAA;CAAA,IAAA;CAAA,IAAA;CAAA,IAAA;CAAA,IAAA;CAAA,IAAA,EAAA,OAAA,IAAA;EAAqE,CAAA,CAAA,cAAA,SAAA,aAAA,UAAA,SAAA,WAAA,OAAA,SAAA,aAAA,GAAA,SAAA;EAsB3E,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;CAAA,OAAA;EAAA,eAAA,EAAA;EAAA,UAAA,EAAA;EAAA,cAAA,EAAA;EAAA,WAAA,EAAA;EAAA,UAAA,EAAA;EAAA,YAAA,EAAA;EAAA,QAAA,EAAA;EAAA,UAAA,EAAA;EAAA,cAAA,EAAA;EAAA,QAAA,EAAA;CAAA;CAAA,IAAA;CAAA,IAAA,EAAA,QAAA,gBAAA,EAAA,QAAA,eAAA,EAAA,QAAA,WAAA,EAAA,QAAA,aAAA,EAAA,QAAA,SAAA,EAAA,QAAA,WAAA,EAAA,QAAA,eAAA,EAAA,QAAA,OAAA;EAMa,MAAA,OAAA;GAAC,MAAA,EAAA,OAAA,eAAA;GAAqB,OAC5B,qBAAC,OAAD;IACgB,gBAAA,WAAU;IAAQ,GAC5B;cAFN;KAIG,SACC,oBAAC,YAAD;MAAqB,SAAA,WAAA;gBAAuB;KAAjC;KAGb,qBAAC,QAAD;MACgB;MACJ,UAAA,MAAK;MACT,MAAA,MAAK;MACI,eAAA,MAAK;MACb,OAAA,MAAK;gBALd,CAOE,oBAAC,eAAD;OACgB,gBAAA,WAAU;OACpB,IAAA,YAAY,QAAA,YAAA;iBAEhB,oBAAC,aAAD,EAA0B,YAAW;MAJzB,IAMd,oBAAC,eAAD,YACG,QAAO,IAAK,KAQZ,EATW,EAbT;;KA0BN,eAAe,oBAAC,kBAAD,YAAmB,YAAF;KAEjC,oBAAC,cAAD,EAAqB,OAAA,WAAU,MAAM;IApCjC;;EAqCE;EACT,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;CAAA,OAAA,KAAA,EAAA;CAAA,IAAA;CAAA,IAAA,EAAA,QAAA,WAAA,EAAA,QAAA,YAAA,EAAA,QAAA,aAAA,EAAA,QAAA,IAAA;EA3CH,KAAA,oBAAC,YAAD;GACW;GACC;GACJO,MAAA;GACE,QAAA;EAuCP;EACD,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;CAAA,OAAA,KAAA,EAAA;CAAA,OA5CF;AA4CE;AApEC,SAAA,MAAA,QAAA;CAAA,OAoDS,oBAAC,YAAD;EACM,IAAA,OAAM;EAEH,OAAA,OAAM;YAEZ,OAAM;CALE,GAEJ,OAAM,OAAQ,OAAM,MAAO,OAAM,KAF7B;AAME;;;;AC1E7B,SAAgB,OAAO,EACrB,OACA,UAAU,OACV,OAAO,UACP,GAAG,SAIF;CAED,MAAM,EAAE,MAAM,eAAe,OAAO;CAEpC,OACE,oBAAC,QAAD;EACE,UAAU;EACJ;EACN,GAAI;YAEJ,qBAAC,OAAD;GAAK,WAAU;aAAf,CACE,oBAAC,QAAD;IAAM,WAAW,GAAG,EAAE,WAAW,QAAQ,CAAC;cACvC,SAAS,GAAG,MAAM,EAAE,MAAM;GACvB,IACN,oBAAC,SAAD,EACE,WAAW,GACT,4EACA,EAAE,OAAO,QAAQ,CACnB,EAAE,EAED;;CACC;AAEZ;;;;AC5BA,SAAgB,YAA4D,EAC1E,SACA,UACA,SACA,WACA,OACA,iBACA,cAAc,cACd,UACA,iBAAiB,IACjB,QAAQ,QACR,GAAG,SAcF;CACD,OACE,oBAAC,YAAD;EACW;EACC;EACV,MAAM;EACN,SAAS,EAAE,OAAO,iBAChB,qBAAC,OAAD;GACE,gBAAc,WAAW;GACZ;GACb,GAAI;aAHN;IAKE,oBAAC,QAAD;KACE,gBAAc,WAAW;KACzB,iBAAe;KACf,SAAS,MAAM,UAAU;KACzB,WAAU;KACV,UAAU,MAAM;KAChB,IAAI,YAAY,QAAQ,YAAY;KACpC,MAAM,MAAM;KACZ,QAAQ,MAAM;KACd,kBAAkB,YAAY;MAC5B,IAAI,CAAC,UAAU;OACb,MAAM,SAAS,YAAY,OAAO,QAAQ,cAAc;OACxD,IAAI,iBAAiB,gBAAgB,SAAS,KAAK;MACrD;KACF;KACA,KAAK,MAAM;KACJ;IAAM;IAGd,SACC,oBAAC,YAAD;KAAY,SAAS,WAAW;eAAY;IAAkB;IAGhE,oBAAC,cAAD,EAAc,OAAO,WAAW,MAAM;GACjC;;CACP;AAGR;;;;ACpEA,SAAgB,UAA0D,EACxE,eAAe,MACf,OAAO,QACP,GAAG,SAC+C;CAClD,OACE,oBAAC,YAAD;EACgB;EACR;EACN,GAAI;CAAM;AAGhB;;;;ACTA,SAAgB,cAA8D,EAC5E,mBACA,SACA,SACA,WACA,OACA,SACA,SACA,gBACA,aACA,SAAS,QACT,GAAG,SAYF;CACD,OACE,oBAAC,YAAD;EACW;EACT,MAAM;EACN,SAAS,EAAE,OAAO,iBAChB,qBAAC,OAAD;GACE,gBAAc,WAAW;GACzB,GAAI;aAFN;IAIG,SACC,oBAAC,YAAD;KAAY,SAAS,WAAW;eAAY;IAAkB;IAGhE,oBAAC,kBAAD;KACE,gBAAc,WAAW;KACzB,cAAa;KACM;KACnB,WAAW,GAAG;MACZ,QAAQ,WAAW;MACnB,eAAe,WAAW;MAC1B,YAAY,WAAW;MACvB,YAAY,WAAW;KACzB,CAAC;KACD,IAAI,YAAY,QAAQ,YAAY;KAC3B;KACA;KACO;KACH;KACb,GAAI;IAAM;IAGZ,oBAAC,cAAD,EAAc,OAAO,WAAW,MAAM;GACjC;;CACP;AAGR"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gmcode/forms",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "description": "Fully functional inertia react forms with client side validations.",
5
5
  "keywords": [
6
6
  "i18next",
@@ -32,7 +32,7 @@
32
32
  "./package.json": "./package.json"
33
33
  },
34
34
  "dependencies": {
35
- "@gmcode/react-ui": "0.3.8",
35
+ "@gmcode/react-ui": "0.4.0",
36
36
  "@gmcode/tsv-hookform": "0.1.8",
37
37
  "@gmcode/tsv-input": "0.3.3",
38
38
  "i18next": "^26.3.4",