@gmcode/forms 0.0.6 → 0.0.7
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/README.md +1 -1
- package/dist/index.d.mts +19 -19
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +11 -19
package/README.md
CHANGED
package/dist/index.d.mts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { i18n as i18n$1 } from "i18next";
|
|
2
2
|
import { Button, Field, FieldSet } from "@gmcode/react-ui";
|
|
3
|
-
import { Control, ControllerRenderProps, DefaultValues, FieldPath, FieldValues, UseFormReturn, UseFormSetValue } from "react-hook-form";
|
|
4
|
-
import { InferSchema } from "@gmcode/tsv-hookform";
|
|
3
|
+
import { Control, ControllerRenderProps, DefaultValues, FieldPath, FieldValues, FieldValues as FieldValues$1, UseFormReturn, UseFormSetValue } from "react-hook-form";
|
|
4
|
+
import { InferSchema, InferSchema as InferSchema$1, useTsvResolver } from "@gmcode/tsv-hookform";
|
|
5
5
|
import { ComponentProps, FC, HTMLInputAutoCompleteAttribute, HTMLInputTypeAttribute, ReactNode, SVGProps } from "react";
|
|
6
6
|
import { InputCheckboxRule, InputColorRule, InputEmailRule, InputNumberRule, InputRule, InputSelectRule, InputTextRule, Message, MessageParams, MessageParams as MessageParams$1, Ruleset, Ruleset as Ruleset$1, Sanitized, SanitizedValues, Schema, SchemaOptions, SchemaRule, SchemaValues } from "@gmcode/tsv-input";
|
|
7
7
|
import { DayPickerLocale, Matcher } from "react-day-picker";
|
|
@@ -33,7 +33,7 @@ interface ErrorData {
|
|
|
33
33
|
}
|
|
34
34
|
//#endregion
|
|
35
35
|
//#region src/components/calendar-field.d.ts
|
|
36
|
-
declare function CalendarField<TFieldValues extends FieldValues = FieldValues>({
|
|
36
|
+
declare function CalendarField<TFieldValues extends FieldValues$1 = FieldValues$1>({
|
|
37
37
|
control,
|
|
38
38
|
dateToString,
|
|
39
39
|
disabled,
|
|
@@ -55,7 +55,7 @@ declare function CalendarField<TFieldValues extends FieldValues = FieldValues>({
|
|
|
55
55
|
}): import("react").JSX.Element;
|
|
56
56
|
//#endregion
|
|
57
57
|
//#region src/components/checkbox-field.d.ts
|
|
58
|
-
declare function CheckboxField<TFieldValues extends FieldValues = FieldValues>({
|
|
58
|
+
declare function CheckboxField<TFieldValues extends FieldValues$1 = FieldValues$1>({
|
|
59
59
|
control,
|
|
60
60
|
disabled,
|
|
61
61
|
inputId,
|
|
@@ -80,7 +80,7 @@ declare function CheckboxField<TFieldValues extends FieldValues = FieldValues>({
|
|
|
80
80
|
}): import("react").JSX.Element;
|
|
81
81
|
//#endregion
|
|
82
82
|
//#region src/components/input-field.d.ts
|
|
83
|
-
declare function InputField<TFieldValues extends FieldValues = FieldValues>({
|
|
83
|
+
declare function InputField<TFieldValues extends FieldValues$1 = FieldValues$1>({
|
|
84
84
|
autoComplete,
|
|
85
85
|
control,
|
|
86
86
|
disabled,
|
|
@@ -104,7 +104,7 @@ declare function InputField<TFieldValues extends FieldValues = FieldValues>({
|
|
|
104
104
|
}): import("react").JSX.Element;
|
|
105
105
|
//#endregion
|
|
106
106
|
//#region src/components/email-field.d.ts
|
|
107
|
-
declare function EmailField<TFieldValues extends FieldValues = FieldValues>({
|
|
107
|
+
declare function EmailField<TFieldValues extends FieldValues$1 = FieldValues$1>({
|
|
108
108
|
autoComplete,
|
|
109
109
|
type,
|
|
110
110
|
...props
|
|
@@ -118,7 +118,7 @@ declare function ErrorMonitor({
|
|
|
118
118
|
}): import("react").JSX.Element | null;
|
|
119
119
|
//#endregion
|
|
120
120
|
//#region src/components/fancy-radio-field.d.ts
|
|
121
|
-
declare function FancyRadioField<TFieldValues extends FieldValues = FieldValues>({
|
|
121
|
+
declare function FancyRadioField<TFieldValues extends FieldValues$1 = FieldValues$1>({
|
|
122
122
|
control,
|
|
123
123
|
defaultValue,
|
|
124
124
|
description,
|
|
@@ -142,7 +142,7 @@ declare function FancyRadioField<TFieldValues extends FieldValues = FieldValues>
|
|
|
142
142
|
}): import("react").JSX.Element;
|
|
143
143
|
//#endregion
|
|
144
144
|
//#region src/components/form.d.ts
|
|
145
|
-
type RenderFN<TValues extends FieldValues> = ({
|
|
145
|
+
type RenderFN<TValues extends FieldValues$1> = ({
|
|
146
146
|
errors,
|
|
147
147
|
form,
|
|
148
148
|
loading
|
|
@@ -151,7 +151,7 @@ type RenderFN<TValues extends FieldValues> = ({
|
|
|
151
151
|
form: UseFormReturn<TValues>;
|
|
152
152
|
loading: boolean;
|
|
153
153
|
}) => ReactNode;
|
|
154
|
-
declare function Form<TRuleset extends Ruleset$1, TSchema extends Schema<TRuleset>, TValues extends InferSchema<TSchema>>({
|
|
154
|
+
declare function Form<TRuleset extends Ruleset$1, TSchema extends Schema<TRuleset>, TValues extends InferSchema$1<TSchema>>({
|
|
155
155
|
children,
|
|
156
156
|
className,
|
|
157
157
|
defaults,
|
|
@@ -207,7 +207,7 @@ declare function Form<TRuleset extends Ruleset$1, TSchema extends Schema<TRulese
|
|
|
207
207
|
}): import("react").JSX.Element;
|
|
208
208
|
//#endregion
|
|
209
209
|
//#region src/components/hidden-field.d.ts
|
|
210
|
-
declare function HiddenField<TFieldValues extends FieldValues = FieldValues>({
|
|
210
|
+
declare function HiddenField<TFieldValues extends FieldValues$1 = FieldValues$1>({
|
|
211
211
|
autoComplete,
|
|
212
212
|
className,
|
|
213
213
|
type,
|
|
@@ -215,7 +215,7 @@ declare function HiddenField<TFieldValues extends FieldValues = FieldValues>({
|
|
|
215
215
|
}: ComponentProps<typeof InputField<TFieldValues>>): import("react").JSX.Element;
|
|
216
216
|
//#endregion
|
|
217
217
|
//#region src/components/info-checkbox-field.d.ts
|
|
218
|
-
declare function InfoCheckboxField<TFieldValues extends FieldValues = FieldValues>({
|
|
218
|
+
declare function InfoCheckboxField<TFieldValues extends FieldValues$1 = FieldValues$1>({
|
|
219
219
|
children,
|
|
220
220
|
className,
|
|
221
221
|
control,
|
|
@@ -244,7 +244,7 @@ declare function InfoCheckboxField<TFieldValues extends FieldValues = FieldValue
|
|
|
244
244
|
}): import("react").JSX.Element;
|
|
245
245
|
//#endregion
|
|
246
246
|
//#region src/components/nullable-select-field.d.ts
|
|
247
|
-
declare function NullableSelectField<TFieldValues extends FieldValues = FieldValues>({
|
|
247
|
+
declare function NullableSelectField<TFieldValues extends FieldValues$1 = FieldValues$1>({
|
|
248
248
|
autoComplete,
|
|
249
249
|
control,
|
|
250
250
|
description,
|
|
@@ -271,7 +271,7 @@ declare function NullableSelectField<TFieldValues extends FieldValues = FieldVal
|
|
|
271
271
|
}): import("react").JSX.Element;
|
|
272
272
|
//#endregion
|
|
273
273
|
//#region src/components/numeric-field.d.ts
|
|
274
|
-
declare function NumericField<TFieldValues extends FieldValues = FieldValues>({
|
|
274
|
+
declare function NumericField<TFieldValues extends FieldValues$1 = FieldValues$1>({
|
|
275
275
|
autoComplete,
|
|
276
276
|
control,
|
|
277
277
|
disabled,
|
|
@@ -302,14 +302,14 @@ declare function NumericField<TFieldValues extends FieldValues = FieldValues>({
|
|
|
302
302
|
}): import("react").JSX.Element;
|
|
303
303
|
//#endregion
|
|
304
304
|
//#region src/components/password-field.d.ts
|
|
305
|
-
declare function PasswordField<TFieldValues extends FieldValues = FieldValues>({
|
|
305
|
+
declare function PasswordField<TFieldValues extends FieldValues$1 = FieldValues$1>({
|
|
306
306
|
autoComplete,
|
|
307
307
|
type,
|
|
308
308
|
...props
|
|
309
309
|
}: ComponentProps<typeof InputField<TFieldValues>>): import("react").JSX.Element;
|
|
310
310
|
//#endregion
|
|
311
311
|
//#region src/components/select-field.d.ts
|
|
312
|
-
declare function SelectField<TFieldValues extends FieldValues = FieldValues>({
|
|
312
|
+
declare function SelectField<TFieldValues extends FieldValues$1 = FieldValues$1>({
|
|
313
313
|
autoComplete,
|
|
314
314
|
control,
|
|
315
315
|
description,
|
|
@@ -345,7 +345,7 @@ declare function Submit({
|
|
|
345
345
|
}): import("react").JSX.Element;
|
|
346
346
|
//#endregion
|
|
347
347
|
//#region src/components/switch-field.d.ts
|
|
348
|
-
declare function SwitchField<TFieldValues extends FieldValues = FieldValues>({
|
|
348
|
+
declare function SwitchField<TFieldValues extends FieldValues$1 = FieldValues$1>({
|
|
349
349
|
control,
|
|
350
350
|
disabled,
|
|
351
351
|
inputId,
|
|
@@ -370,14 +370,14 @@ declare function SwitchField<TFieldValues extends FieldValues = FieldValues>({
|
|
|
370
370
|
}): import("react").JSX.Element;
|
|
371
371
|
//#endregion
|
|
372
372
|
//#region src/components/text-field.d.ts
|
|
373
|
-
declare function TextField<TFieldValues extends FieldValues = FieldValues>({
|
|
373
|
+
declare function TextField<TFieldValues extends FieldValues$1 = FieldValues$1>({
|
|
374
374
|
autoComplete,
|
|
375
375
|
type,
|
|
376
376
|
...props
|
|
377
377
|
}: ComponentProps<typeof InputField<TFieldValues>>): import("react").JSX.Element;
|
|
378
378
|
//#endregion
|
|
379
379
|
//#region src/components/textarea-field.d.ts
|
|
380
|
-
declare function TextareaField<TFieldValues extends FieldValues = FieldValues>({
|
|
380
|
+
declare function TextareaField<TFieldValues extends FieldValues$1 = FieldValues$1>({
|
|
381
381
|
cacheMeasurements,
|
|
382
382
|
control,
|
|
383
383
|
inputId,
|
|
@@ -402,5 +402,5 @@ declare function TextareaField<TFieldValues extends FieldValues = FieldValues>({
|
|
|
402
402
|
resize?: 'both' | 'none' | 'x' | 'y';
|
|
403
403
|
}): import("react").JSX.Element;
|
|
404
404
|
//#endregion
|
|
405
|
-
export { CalendarField, CheckboxField, EmailField, type ErrorData, ErrorMonitor, FancyRadioField, Form, HiddenField, InfoCheckboxField, InputCheckboxRule, InputColorRule, InputEmailRule, InputField, InputNumberRule, InputRule, InputSelectRule, InputTextRule, Message, type MessageParams, type Method, NullableSelectField, NumericField, type Option, PasswordField, type RouteDefinition, type Ruleset, type Sanitized, type SanitizedValues, Schema, type SchemaOptions, type SchemaRule, type SchemaValues, SelectField, Submit, SwitchField, TextField, TextareaField, i18n };
|
|
405
|
+
export { CalendarField, CheckboxField, EmailField, type ErrorData, ErrorMonitor, FancyRadioField, type FieldValues, Form, HiddenField, type InferSchema, InfoCheckboxField, InputCheckboxRule, InputColorRule, InputEmailRule, InputField, InputNumberRule, InputRule, InputSelectRule, InputTextRule, Message, type MessageParams, type Method, NullableSelectField, NumericField, type Option, PasswordField, type RouteDefinition, type Ruleset, type Sanitized, type SanitizedValues, Schema, type SchemaOptions, type SchemaRule, type SchemaValues, SelectField, Submit, SwitchField, TextField, TextareaField, i18n, useTsvResolver };
|
|
406
406
|
//# sourceMappingURL=index.d.mts.map
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":["TMethod","Method","url","methods","method","id","key","label","ReactNode","value","message","params","MessageParams"],"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":";;;;;;;;;;;;cAGM,IAAA,EAAM,MAIV;;;KCJU,MAAA;AAAA,KAEA,eAAA,iBAAgC,MAAA,GAAS,MAAA;EACnDE,GAAAA;AAAAA,KACG,OAAA,SAAgB,MAAA;EAAaC,OAAAA,EAAS,OAAA;AAAA;EAAcC,MAAAA,EAAQ,OAAA;AAAA;AAAA,UAEhD,MAAA;EACfC,EAAAA;EACAC,GAAAA;EACAC,KAAAA,EAAO,SAAS;EAChBE,KAAAA;AAAAA;AAAAA,UAGe,SAAA;EACfC,OAAAA;EACAC,MAAAA,GAAS,eAAa;AAAA;;;iBCPR,aAAA,sBAAmC,
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":["TMethod","Method","url","methods","method","id","key","label","ReactNode","value","message","params","MessageParams"],"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
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{t as e}from"./en-CnkPOj-4.mjs";import{createInstance as t}from"i18next";import{Button as n,Calendar as r,Checkbox as i,Field as a,FieldDescription as o,FieldError as s,FieldLabel as c,FieldSet as l,Input as u,InputGroup as d,InputGroupAddon as f,InputGroupButton as p,InputGroupInput as m,Label as h,RadioGroup as g,RadioGroupItem as _,Select as v,SelectContent as y,SelectItem as b,SelectTrigger as x,SelectValue as S,Spinner as C,Switch as w,TextareaAutosize as T,cn as E,flash as ee}from"@gmcode/react-ui";import{Controller as D,useForm as O}from"react-hook-form";import{c as k}from"react/compiler-runtime";import{I18nextProvider as te,useTranslation as A}from"react-i18next";import{Fragment as ne,jsx as j,jsxs as M}from"react/jsx-runtime";import{useTsvResolver as re}from"@gmcode/tsv-hookform";import{useEffect as N,useState as P}from"react";import{useForm as F}from"@inertiajs/react";import{Minus as I,Plus as L,X as R}from"lucide-react";import{InputCheckboxRule as z,InputColorRule as B,InputEmailRule as V,InputNumberRule as H,InputRule as U,InputSelectRule as W,InputTextRule as G,Message as K,Schema as q}from"@gmcode/tsv-input";const J=t({fallbackLng:`en`,interpolation:{escapeValue:!1},resources:{en:e}});J.init();function Y(e){return`${e.getFullYear()}-${(e.getMonth()+1+``).padStart(2,`0`)}-${(e.getDate()+``).padStart(2,`0`)}`}function X(e){if(!e)return;let t=new Date(e);if(!isNaN(t.getFullYear()))return t}function Z(e){let t=k(9);if(t[0]!==`e1e2461c713ca647286d0fc423569ef83087dbc1e837bfd11a46d13a4019c79a`){for(let e=0;e<9;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`e1e2461c713ca647286d0fc423569ef83087dbc1e837bfd11a46d13a4019c79a`}let{error:n}=e,{t:r}=A();if(!n?.message)return null;if(r){let e;t[1]!==n.message||t[2]!==n.params||t[3]!==r?(e=r(n.message,n.params),t[1]=n.message,t[2]=n.params,t[3]=r,t[4]=e):e=t[4];let i;return t[5]===e?i=t[6]:(i=j(s,{errors:{message:e}}),t[5]=e,t[6]=i),i}let i;return t[7]===n?i=t[8]:(i=j(s,{errors:n}),t[7]=n,t[8]=i),i}function ie({control:e,dateToString:t=Y,disabled:n,inputId:i,inputName:o,label:s,locale:l,stringToDate:u=X,...d}){return j(D,{name:o,control:e,render:({field:e,fieldState:f})=>M(a,{"data-invalid":f.invalid,...d,children:[s&&j(c,{htmlFor:i??o,children:s}),j(r,{"aria-invalid":f.invalid,className:`w-full rounded-md border`,disabled:n,fixedWeeks:!0,id:i??(s?o:void 0),locale:l,mode:`single`,onSelect:n=>e.onChange(n?t(n):``),selected:u(e.value)}),j(Z,{error:f.error})]})})}function ae({control:e,disabled:t,inputId:n,inputName:r,label:o,onCheckedChange:s,orientation:l=`horizontal`,readOnly:u,uncheckedValue:d=``,value:f=`true`,...p}){return j(D,{control:e,disabled:t,name:r,render:({field:e,fieldState:t})=>M(a,{"data-invalid":t.invalid,orientation:l,...p,children:[j(i,{"aria-invalid":t.invalid,"aria-readonly":u,checked:e.value===f,className:`aria-readonly:opacity-50`,disabled:e.disabled,id:n??(o?r:void 0),name:e.name,onBlur:e.onBlur,onCheckedChange:t=>{u||(e.onChange(t===!0?f:d),s&&s(t,e))},ref:e.ref,value:f}),o&&j(c,{htmlFor:n??r,children:o}),j(Z,{error:t.error})]})})}function Q(e){let t=k(26);if(t[0]!==`7501af4e40fae6de51379fcd69a5dbf630a70539ba636a47e077920376e26910`){for(let e=0;e<26;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`7501af4e40fae6de51379fcd69a5dbf630a70539ba636a47e077920376e26910`}let n,r,i,o,s,l,d,f,p,m;t[1]===e?(n=t[2],r=t[3],i=t[4],o=t[5],s=t[6],l=t[7],d=t[8],f=t[9],p=t[10],m=t[11]):({autoComplete:n,control:r,disabled:i,inputId:o,inputName:s,label:l,placeholder:d,readOnly:p,type:m,...f}=e,t[1]=e,t[2]=n,t[3]=r,t[4]=i,t[5]=o,t[6]=s,t[7]=l,t[8]=d,t[9]=f,t[10]=p,t[11]=m);let h;t[12]!==n||t[13]!==o||t[14]!==s||t[15]!==l||t[16]!==d||t[17]!==f||t[18]!==p||t[19]!==m?(h=e=>{let{field:t,fieldState:r}=e;return M(a,{"data-invalid":r.invalid,...f,children:[l&&j(c,{htmlFor:o??s,children:l}),j(u,{"aria-invalid":r.invalid,autoComplete:n,id:o??(l?s:void 0),placeholder:d,readOnly:p,type:m,...t}),j(Z,{error:r.error})]})},t[12]=n,t[13]=o,t[14]=s,t[15]=l,t[16]=d,t[17]=f,t[18]=p,t[19]=m,t[20]=h):h=t[20];let g;return t[21]!==r||t[22]!==i||t[23]!==s||t[24]!==h?(g=j(D,{control:r,disabled:i,name:s,render:h}),t[21]=r,t[22]=i,t[23]=s,t[24]=h,t[25]=g):g=t[25],g}function oe({autoComplete:e=`on`,type:t=`email`,...n}){return j(Q,{autoComplete:e,type:t,...n})}function se(e){let t=k(24);if(t[0]!==`f049c21be78fb6540f3470521dce48b055b196c1dc09159c5c6b5f5d2dcbc0b9`){for(let e=0;e<24;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`f049c21be78fb6540f3470521dce48b055b196c1dc09159c5c6b5f5d2dcbc0b9`}let n,r,i,a,s,u,d,f,p;t[1]===e?(n=t[2],r=t[3],i=t[4],a=t[5],s=t[6],u=t[7],d=t[8],f=t[9],p=t[10]):({control:n,defaultValue:r,description:i,disabled:a,groupId:s,inputName:u,label:d,options:f,...p}=e,t[1]=e,t[2]=n,t[3]=r,t[4]=i,t[5]=a,t[6]=s,t[7]=u,t[8]=d,t[9]=f,t[10]=p);let m;t[11]!==r||t[12]!==i||t[13]!==s||t[14]!==u||t[15]!==d||t[16]!==f||t[17]!==p?(m=e=>{let{field:t,fieldState:n}=e;return M(l,{"data-invalid":n.invalid,...p,children:[d&&j(c,{htmlFor:s??u,children:d}),i&&j(o,{children:i}),j(Z,{error:n.error}),j(g,{defaultValue:r,disabled:t.disabled,id:s??(d?u:void 0),name:t.name,onBlur:t.onBlur,onValueChange:t.onChange,ref:t.ref,children:f.map(ce)})]})},t[11]=r,t[12]=i,t[13]=s,t[14]=u,t[15]=d,t[16]=f,t[17]=p,t[18]=m):m=t[18];let h;return t[19]!==n||t[20]!==a||t[21]!==u||t[22]!==m?(h=j(D,{control:n,disabled:a,name:u,render:m}),t[19]=n,t[20]=a,t[21]=u,t[22]=m,t[23]=h):h=t[23],h}function ce(e){return j(h,{className:`rounded-md border ring-ring/50 transition-all hover:bg-accent/50 has-focus-visible:ring-[3px]`,"data-slot":`field-label`,children:M(`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`,children:[j(_,{className:`sr-only`,id:e.id,value:e.value}),e.Icon&&j(e.Icon,{}),e.label]})},e.key??e.id??e.value)}function le({children:e,className:t,defaults:n={},rootError:r=`flash`,onBefore:i,onBeforeUpdate:a,onCancel:o,onCancelToken:s,onError:c,onFinish:l,onFlash:u,onPrefetched:d,onPrefetching:f,onProgress:p,onStart:m,onSuccess:h,preserveScroll:g=!0,resetOnSuccess:_=!0,route:v,schema:y,setDefaultsOnSuccess:b=!1}){let[x,S]=P(),C=Object.fromEntries(Object.keys(y.ruleset).map(e=>[e,n[e]??``])),w=O({defaultValues:C,resolver:re(y)}),T=F(C);function D(e){e.root&&(r===`flash`?ee({level:`error`,title:e.root}):r===`monitor`&&S({message:e.root})),c&&c(e)}function k(e){b&&(T.setDefaults(),w.reset(w.getValues())),_&&(T.reset(),w.reset()),h&&h(e)}function A(e){T.transform(()=>e),T[v.method](v.url,{onBefore:i,onBeforeUpdate:a,onCancel:o,onCancelToken:s,onError:D,onFinish:l,onFlash:u,onPrefetched:d,onPrefetching:f,onProgress:p,onStart:m,onSuccess:k,preserveScroll:g})}return N(()=>{for(let[e,t]of Object.entries(T.errors))t&&w.setError(e,{message:t,type:`inertia`})},[T.errors,w]),j(te,{i18n:J,children:M(`form`,{action:v.url,className:E(`grid gap-6`,t),method:v.method,onSubmit:w.handleSubmit(A),children:[j(ne,{children:e({errors:T.errors,form:w,loading:T.processing})}),r===`monitor`&&j(Z,{error:x})]})})}function ue({autoComplete:e=`off`,className:t,type:n=`hidden`,...r}){return j(Q,{autoComplete:e,className:E(`hidden`,t),type:n,...r})}function de({children:e,className:t,control:n,disabled:r,inputId:o,inputName:s,label:c,onCheckedChange:l,orientation:u=`horizontal`,readOnly:d,text:f,uncheckedValue:p=``,value:m=`true`,...g}){return j(D,{control:n,disabled:r,name:s,render:({field:n,fieldState:r})=>j(a,{className:E(`block`,t),"data-invalid":r.invalid,orientation:u,...g,children:M(h,{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`,"data-slot":`field-label`,children:[j(i,{"aria-invalid":r.invalid,"aria-readonly":d,checked:n.value===m,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`,disabled:n.disabled,id:o,name:n.name,onBlur:n.onBlur,onCheckedChange:e=>{d||(n.onChange(e===!0?m:p),l&&l(e,n))},ref:n.ref,value:m}),M(`div`,{className:`grid gap-1.5 font-normal`,children:[j(`p`,{className:`text-sm leading-none font-medium`,children:c}),f?j(`p`,{className:`text-sm text-muted-foreground`,children:f}):e,j(Z,{error:r.error})]})]})})})}function fe(e){let t=k(29);if(t[0]!==`aef79d6bb8014bb7e50376596fc0ae9e5294086f70390531e20fce8a0095eeca`){for(let e=0;e<29;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`aef79d6bb8014bb7e50376596fc0ae9e5294086f70390531e20fce8a0095eeca`}let r,i,s,l,u,d,f,p,m,h,g;t[1]===e?(r=t[2],i=t[3],s=t[4],l=t[5],u=t[6],d=t[7],f=t[8],p=t[9],m=t[10],h=t[11],g=t[12]):({autoComplete:r,control:i,description:s,disabled:l,inputId:u,inputName:d,label:f,options:p,placeholder:m,setValue:g,...h}=e,t[1]=e,t[2]=r,t[3]=i,t[4]=s,t[5]=l,t[6]=u,t[7]=d,t[8]=f,t[9]=p,t[10]=m,t[11]=h,t[12]=g);let{t:_}=A(),b;t[13]!==r||t[14]!==s||t[15]!==u||t[16]!==d||t[17]!==f||t[18]!==p||t[19]!==m||t[20]!==h||t[21]!==g||t[22]!==_?(b=e=>{let{field:t,fieldState:i}=e;return M(a,{"data-invalid":i.invalid,...h,children:[f&&j(c,{htmlFor:u??d,children:f}),M(`div`,{className:`flex items-end gap-4`,children:[M(v,{autoComplete:r,disabled:t.disabled,name:t.name,onValueChange:t.onChange,value:t.value,children:[j(x,{"aria-invalid":i.invalid,className:`flex-1 overflow-hidden`,id:u??(f?d:void 0),children:j(S,{placeholder:m})}),j(y,{children:p.map($)})]}),j(n,{"aria-label":_(pe),className:`flex-none`,onClick:()=>g(d,``),type:`button`,variant:`outline`,children:j(R,{})})]}),s&&j(o,{children:s}),j(Z,{error:i.error})]})},t[13]=r,t[14]=s,t[15]=u,t[16]=d,t[17]=f,t[18]=p,t[19]=m,t[20]=h,t[21]=g,t[22]=_,t[23]=b):b=t[23];let C;return t[24]!==i||t[25]!==l||t[26]!==d||t[27]!==b?(C=j(D,{control:i,disabled:l,name:d,render:b}),t[24]=i,t[25]=l,t[26]=d,t[27]=b,t[28]=C):C=t[28],C}function pe(e){return e.reset}function $(e){return j(b,{id:e.id,value:e.value,children:e.label},e.key??e.id??e.value)}function me(e,t,n,r,i){let a=Number(e);return isNaN(a)?``:(t?a+=n===void 0?1:n:a-=n===void 0?1:n,r!==void 0&&(a=Math.max(a,r)),i!==void 0&&(a=Math.min(a,i)),a.toString())}function he({autoComplete:e,control:t,disabled:n,inputId:r,inputMode:i=`numeric`,inputName:o,label:s,placeholder:l,type:u,ui:h,...g}){let{t:_}=A();function v(e,t){h?.setValue&&h.setValue(o,me(e,t,h.step,h.min,h.max),{shouldValidate:!0})}return j(D,{control:t,disabled:n,name:o,render:({field:t,fieldState:y})=>M(a,{"data-invalid":y.invalid,...g,children:[s&&j(c,{htmlFor:r??o,children:s}),M(d,{children:[j(m,{"aria-invalid":y.invalid,autoComplete:e,id:r??(s?o:void 0),inputMode:i,placeholder:l,type:u,...t}),h&&M(f,{align:`inline-end`,children:[j(p,{"aria-label":_(e=>e.decrease),disabled:n,onClick:()=>v(t.value,!1),size:`icon-xs`,children:j(I,{})}),j(p,{"aria-label":_(e=>e.increase),disabled:n,onClick:()=>v(t.value,!0),size:`icon-xs`,children:j(L,{})})]})]}),j(Z,{error:y.error})]})})}function ge({autoComplete:e=`off`,type:t=`password`,...n}){return j(Q,{autoComplete:e,type:t,...n})}function _e(e){let t=k(26);if(t[0]!==`17d768ca562ec97c16bcafe5b5f4a7680b17a9911e26839427dd0f20be4d3e30`){for(let e=0;e<26;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`17d768ca562ec97c16bcafe5b5f4a7680b17a9911e26839427dd0f20be4d3e30`}let n,r,i,s,l,u,d,f,p,m;t[1]===e?(n=t[2],r=t[3],i=t[4],s=t[5],l=t[6],u=t[7],d=t[8],f=t[9],p=t[10],m=t[11]):({autoComplete:n,control:r,description:i,disabled:s,inputId:l,inputName:u,label:d,options:f,placeholder:p,...m}=e,t[1]=e,t[2]=n,t[3]=r,t[4]=i,t[5]=s,t[6]=l,t[7]=u,t[8]=d,t[9]=f,t[10]=p,t[11]=m);let h;t[12]!==n||t[13]!==i||t[14]!==l||t[15]!==u||t[16]!==d||t[17]!==f||t[18]!==p||t[19]!==m?(h=e=>{let{field:t,fieldState:r}=e;return M(a,{"data-invalid":r.invalid,...m,children:[d&&j(c,{htmlFor:l??u,children:d}),M(v,{autoComplete:n,disabled:t.disabled,name:t.name,onValueChange:t.onChange,value:t.value,children:[j(x,{"aria-invalid":r.invalid,id:l??(d?u:void 0),children:j(S,{placeholder:p})}),j(y,{children:f.map(ve)})]}),i&&j(o,{children:i}),j(Z,{error:r.error})]})},t[12]=n,t[13]=i,t[14]=l,t[15]=u,t[16]=d,t[17]=f,t[18]=p,t[19]=m,t[20]=h):h=t[20];let g;return t[21]!==r||t[22]!==s||t[23]!==u||t[24]!==h?(g=j(D,{control:r,disabled:s,name:u,render:h}),t[21]=r,t[22]=s,t[23]=u,t[24]=h,t[25]=g):g=t[25],g}function ve(e){return j(b,{id:e.id,value:e.value,children:e.label},e.key??e.id??e.value)}function ye({label:e,loading:t=!1,type:r=`submit`,...i}){let{t:a}=A();return j(n,{disabled:t,type:r,...i,children:M(`div`,{className:`relative`,children:[j(`span`,{className:E({invisible:t}),children:e??a(e=>e.submit)}),j(C,{className:E(`trans absolute top-1/2 left-1/2 hidden -translate-x-1/2 -translate-y-1/2`,{block:t})})]})})}function be({control:e,disabled:t,inputId:n,inputName:r,label:i,onCheckedChange:o,orientation:s=`horizontal`,readOnly:l,uncheckedValue:u=``,value:d=`true`,...f}){return j(D,{control:e,disabled:t,name:r,render:({field:e,fieldState:t})=>M(a,{"data-invalid":t.invalid,orientation:s,...f,children:[j(w,{"aria-invalid":t.invalid,"aria-readonly":l,checked:e.value===d,className:`aria-readonly:opacity-50`,disabled:e.disabled,id:n??(i?r:void 0),name:e.name,onBlur:e.onBlur,onCheckedChange:t=>{l||(e.onChange(t===!0?d:u),o&&o(t,e))},ref:e.ref,value:d}),i&&j(c,{htmlFor:n??r,children:i}),j(Z,{error:t.error})]})})}function xe({autoComplete:e=`on`,type:t=`text`,...n}){return j(Q,{autoComplete:e,type:t,...n})}function Se({cacheMeasurements:e,control:t,inputId:n,inputName:r,label:i,maxRows:o,minRows:s,onHeightChange:l,placeholder:u,resize:d=`none`,...f}){return j(D,{name:r,control:t,render:({field:t,fieldState:p})=>M(a,{"data-invalid":p.invalid,...f,children:[i&&j(c,{htmlFor:n??r,children:i}),j(T,{"aria-invalid":p.invalid,autoComplete:`off`,cacheMeasurements:e,className:E({resize:d===`both`,"resize-none":d===`none`,"resize-x":d===`x`,"resize-y":d===`y`}),id:n??(i?r:void 0),maxRows:o,minRows:s,onHeightChange:l,placeholder:u,...t}),j(Z,{error:p.error})]})})}export{ie as CalendarField,ae as CheckboxField,oe as EmailField,Z as ErrorMonitor,se as FancyRadioField,le as Form,ue as HiddenField,de as InfoCheckboxField,z as InputCheckboxRule,B as InputColorRule,V as InputEmailRule,Q as InputField,H as InputNumberRule,U as InputRule,W as InputSelectRule,G as InputTextRule,K as Message,fe as NullableSelectField,he as NumericField,ge as PasswordField,q as Schema,_e as SelectField,ye as Submit,be as SwitchField,xe as TextField,Se as TextareaField,J as i18n};
|
|
1
|
+
import{t as e}from"./en-CnkPOj-4.mjs";import{createInstance as t}from"i18next";import{Button as n,Calendar as r,Checkbox as i,Field as a,FieldDescription as o,FieldError as s,FieldLabel as c,FieldSet as l,Input as u,InputGroup as d,InputGroupAddon as f,InputGroupButton as p,InputGroupInput as m,Label as h,RadioGroup as g,RadioGroupItem as _,Select as v,SelectContent as y,SelectItem as b,SelectTrigger as x,SelectValue as S,Spinner as C,Switch as w,TextareaAutosize as T,cn as E,flash as ee}from"@gmcode/react-ui";import{Controller as D,useForm as O}from"react-hook-form";import{c as k}from"react/compiler-runtime";import{I18nextProvider as te,useTranslation as A}from"react-i18next";import{Fragment as ne,jsx as j,jsxs as M}from"react/jsx-runtime";import{useTsvResolver as re,useTsvResolver as N}from"@gmcode/tsv-hookform";import{useEffect as P,useState as F}from"react";import{useForm as I}from"@inertiajs/react";import{Minus as L,Plus as R,X as z}from"lucide-react";import{InputCheckboxRule as B,InputColorRule as V,InputEmailRule as H,InputNumberRule as U,InputRule as W,InputSelectRule as G,InputTextRule as K,Message as q,Schema as J}from"@gmcode/tsv-input";const Y=t({fallbackLng:`en`,interpolation:{escapeValue:!1},resources:{en:e}});Y.init();function X(e){return`${e.getFullYear()}-${(e.getMonth()+1+``).padStart(2,`0`)}-${(e.getDate()+``).padStart(2,`0`)}`}function ie(e){if(!e)return;let t=new Date(e);if(!isNaN(t.getFullYear()))return t}function Z(e){let t=k(9);if(t[0]!==`e1e2461c713ca647286d0fc423569ef83087dbc1e837bfd11a46d13a4019c79a`){for(let e=0;e<9;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`e1e2461c713ca647286d0fc423569ef83087dbc1e837bfd11a46d13a4019c79a`}let{error:n}=e,{t:r}=A();if(!n?.message)return null;if(r){let e;t[1]!==n.message||t[2]!==n.params||t[3]!==r?(e=r(n.message,n.params),t[1]=n.message,t[2]=n.params,t[3]=r,t[4]=e):e=t[4];let i;return t[5]===e?i=t[6]:(i=j(s,{errors:{message:e}}),t[5]=e,t[6]=i),i}let i;return t[7]===n?i=t[8]:(i=j(s,{errors:n}),t[7]=n,t[8]=i),i}function ae({control:e,dateToString:t=X,disabled:n,inputId:i,inputName:o,label:s,locale:l,stringToDate:u=ie,...d}){return j(D,{name:o,control:e,render:({field:e,fieldState:f})=>M(a,{"data-invalid":f.invalid,...d,children:[s&&j(c,{htmlFor:i??o,children:s}),j(r,{"aria-invalid":f.invalid,className:`w-full rounded-md border`,disabled:n,fixedWeeks:!0,id:i??(s?o:void 0),locale:l,mode:`single`,onSelect:n=>e.onChange(n?t(n):``),selected:u(e.value)}),j(Z,{error:f.error})]})})}function oe({control:e,disabled:t,inputId:n,inputName:r,label:o,onCheckedChange:s,orientation:l=`horizontal`,readOnly:u,uncheckedValue:d=``,value:f=`true`,...p}){return j(D,{control:e,disabled:t,name:r,render:({field:e,fieldState:t})=>M(a,{"data-invalid":t.invalid,orientation:l,...p,children:[j(i,{"aria-invalid":t.invalid,"aria-readonly":u,checked:e.value===f,className:`aria-readonly:opacity-50`,disabled:e.disabled,id:n??(o?r:void 0),name:e.name,onBlur:e.onBlur,onCheckedChange:t=>{u||(e.onChange(t===!0?f:d),s&&s(t,e))},ref:e.ref,value:f}),o&&j(c,{htmlFor:n??r,children:o}),j(Z,{error:t.error})]})})}function Q(e){let t=k(26);if(t[0]!==`7501af4e40fae6de51379fcd69a5dbf630a70539ba636a47e077920376e26910`){for(let e=0;e<26;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`7501af4e40fae6de51379fcd69a5dbf630a70539ba636a47e077920376e26910`}let n,r,i,o,s,l,d,f,p,m;t[1]===e?(n=t[2],r=t[3],i=t[4],o=t[5],s=t[6],l=t[7],d=t[8],f=t[9],p=t[10],m=t[11]):({autoComplete:n,control:r,disabled:i,inputId:o,inputName:s,label:l,placeholder:d,readOnly:p,type:m,...f}=e,t[1]=e,t[2]=n,t[3]=r,t[4]=i,t[5]=o,t[6]=s,t[7]=l,t[8]=d,t[9]=f,t[10]=p,t[11]=m);let h;t[12]!==n||t[13]!==o||t[14]!==s||t[15]!==l||t[16]!==d||t[17]!==f||t[18]!==p||t[19]!==m?(h=e=>{let{field:t,fieldState:r}=e;return M(a,{"data-invalid":r.invalid,...f,children:[l&&j(c,{htmlFor:o??s,children:l}),j(u,{"aria-invalid":r.invalid,autoComplete:n,id:o??(l?s:void 0),placeholder:d,readOnly:p,type:m,...t}),j(Z,{error:r.error})]})},t[12]=n,t[13]=o,t[14]=s,t[15]=l,t[16]=d,t[17]=f,t[18]=p,t[19]=m,t[20]=h):h=t[20];let g;return t[21]!==r||t[22]!==i||t[23]!==s||t[24]!==h?(g=j(D,{control:r,disabled:i,name:s,render:h}),t[21]=r,t[22]=i,t[23]=s,t[24]=h,t[25]=g):g=t[25],g}function se({autoComplete:e=`on`,type:t=`email`,...n}){return j(Q,{autoComplete:e,type:t,...n})}function ce(e){let t=k(24);if(t[0]!==`f049c21be78fb6540f3470521dce48b055b196c1dc09159c5c6b5f5d2dcbc0b9`){for(let e=0;e<24;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`f049c21be78fb6540f3470521dce48b055b196c1dc09159c5c6b5f5d2dcbc0b9`}let n,r,i,a,s,u,d,f,p;t[1]===e?(n=t[2],r=t[3],i=t[4],a=t[5],s=t[6],u=t[7],d=t[8],f=t[9],p=t[10]):({control:n,defaultValue:r,description:i,disabled:a,groupId:s,inputName:u,label:d,options:f,...p}=e,t[1]=e,t[2]=n,t[3]=r,t[4]=i,t[5]=a,t[6]=s,t[7]=u,t[8]=d,t[9]=f,t[10]=p);let m;t[11]!==r||t[12]!==i||t[13]!==s||t[14]!==u||t[15]!==d||t[16]!==f||t[17]!==p?(m=e=>{let{field:t,fieldState:n}=e;return M(l,{"data-invalid":n.invalid,...p,children:[d&&j(c,{htmlFor:s??u,children:d}),i&&j(o,{children:i}),j(Z,{error:n.error}),j(g,{defaultValue:r,disabled:t.disabled,id:s??(d?u:void 0),name:t.name,onBlur:t.onBlur,onValueChange:t.onChange,ref:t.ref,children:f.map(le)})]})},t[11]=r,t[12]=i,t[13]=s,t[14]=u,t[15]=d,t[16]=f,t[17]=p,t[18]=m):m=t[18];let h;return t[19]!==n||t[20]!==a||t[21]!==u||t[22]!==m?(h=j(D,{control:n,disabled:a,name:u,render:m}),t[19]=n,t[20]=a,t[21]=u,t[22]=m,t[23]=h):h=t[23],h}function le(e){return j(h,{className:`rounded-md border ring-ring/50 transition-all hover:bg-accent/50 has-focus-visible:ring-[3px]`,"data-slot":`field-label`,children:M(`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`,children:[j(_,{className:`sr-only`,id:e.id,value:e.value}),e.Icon&&j(e.Icon,{}),e.label]})},e.key??e.id??e.value)}function ue({children:e,className:t,defaults:n={},rootError:r=`flash`,onBefore:i,onBeforeUpdate:a,onCancel:o,onCancelToken:s,onError:c,onFinish:l,onFlash:u,onPrefetched:d,onPrefetching:f,onProgress:p,onStart:m,onSuccess:h,preserveScroll:g=!0,resetOnSuccess:_=!0,route:v,schema:y,setDefaultsOnSuccess:b=!1}){let[x,S]=F(),C=Object.fromEntries(Object.keys(y.ruleset).map(e=>[e,n[e]??``])),w=O({defaultValues:C,resolver:N(y)}),T=I(C);function D(e){e.root&&(r===`flash`?ee({level:`error`,title:e.root}):r===`monitor`&&S({message:e.root})),c&&c(e)}function k(e){b&&(T.setDefaults(),w.reset(w.getValues())),_&&(T.reset(),w.reset()),h&&h(e)}function A(e){T.transform(()=>e),T[v.method](v.url,{onBefore:i,onBeforeUpdate:a,onCancel:o,onCancelToken:s,onError:D,onFinish:l,onFlash:u,onPrefetched:d,onPrefetching:f,onProgress:p,onStart:m,onSuccess:k,preserveScroll:g})}return P(()=>{for(let[e,t]of Object.entries(T.errors))t&&w.setError(e,{message:t,type:`inertia`})},[T.errors,w]),j(te,{i18n:Y,children:M(`form`,{action:v.url,className:E(`grid gap-6`,t),method:v.method,onSubmit:w.handleSubmit(A),children:[j(ne,{children:e({errors:T.errors,form:w,loading:T.processing})}),r===`monitor`&&j(Z,{error:x})]})})}function de({autoComplete:e=`off`,className:t,type:n=`hidden`,...r}){return j(Q,{autoComplete:e,className:E(`hidden`,t),type:n,...r})}function fe({children:e,className:t,control:n,disabled:r,inputId:o,inputName:s,label:c,onCheckedChange:l,orientation:u=`horizontal`,readOnly:d,text:f,uncheckedValue:p=``,value:m=`true`,...g}){return j(D,{control:n,disabled:r,name:s,render:({field:n,fieldState:r})=>j(a,{className:E(`block`,t),"data-invalid":r.invalid,orientation:u,...g,children:M(h,{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`,"data-slot":`field-label`,children:[j(i,{"aria-invalid":r.invalid,"aria-readonly":d,checked:n.value===m,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`,disabled:n.disabled,id:o,name:n.name,onBlur:n.onBlur,onCheckedChange:e=>{d||(n.onChange(e===!0?m:p),l&&l(e,n))},ref:n.ref,value:m}),M(`div`,{className:`grid gap-1.5 font-normal`,children:[j(`p`,{className:`text-sm leading-none font-medium`,children:c}),f?j(`p`,{className:`text-sm text-muted-foreground`,children:f}):e,j(Z,{error:r.error})]})]})})})}function pe(e){let t=k(29);if(t[0]!==`aef79d6bb8014bb7e50376596fc0ae9e5294086f70390531e20fce8a0095eeca`){for(let e=0;e<29;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`aef79d6bb8014bb7e50376596fc0ae9e5294086f70390531e20fce8a0095eeca`}let r,i,s,l,u,d,f,p,m,h,g;t[1]===e?(r=t[2],i=t[3],s=t[4],l=t[5],u=t[6],d=t[7],f=t[8],p=t[9],m=t[10],h=t[11],g=t[12]):({autoComplete:r,control:i,description:s,disabled:l,inputId:u,inputName:d,label:f,options:p,placeholder:m,setValue:g,...h}=e,t[1]=e,t[2]=r,t[3]=i,t[4]=s,t[5]=l,t[6]=u,t[7]=d,t[8]=f,t[9]=p,t[10]=m,t[11]=h,t[12]=g);let{t:_}=A(),b;t[13]!==r||t[14]!==s||t[15]!==u||t[16]!==d||t[17]!==f||t[18]!==p||t[19]!==m||t[20]!==h||t[21]!==g||t[22]!==_?(b=e=>{let{field:t,fieldState:i}=e;return M(a,{"data-invalid":i.invalid,...h,children:[f&&j(c,{htmlFor:u??d,children:f}),M(`div`,{className:`flex items-end gap-4`,children:[M(v,{autoComplete:r,disabled:t.disabled,name:t.name,onValueChange:t.onChange,value:t.value,children:[j(x,{"aria-invalid":i.invalid,className:`flex-1 overflow-hidden`,id:u??(f?d:void 0),children:j(S,{placeholder:m})}),j(y,{children:p.map(me)})]}),j(n,{"aria-label":_($),className:`flex-none`,onClick:()=>g(d,``),type:`button`,variant:`outline`,children:j(z,{})})]}),s&&j(o,{children:s}),j(Z,{error:i.error})]})},t[13]=r,t[14]=s,t[15]=u,t[16]=d,t[17]=f,t[18]=p,t[19]=m,t[20]=h,t[21]=g,t[22]=_,t[23]=b):b=t[23];let C;return t[24]!==i||t[25]!==l||t[26]!==d||t[27]!==b?(C=j(D,{control:i,disabled:l,name:d,render:b}),t[24]=i,t[25]=l,t[26]=d,t[27]=b,t[28]=C):C=t[28],C}function $(e){return e.reset}function me(e){return j(b,{id:e.id,value:e.value,children:e.label},e.key??e.id??e.value)}function he(e,t,n,r,i){let a=Number(e);return isNaN(a)?``:(t?a+=n===void 0?1:n:a-=n===void 0?1:n,r!==void 0&&(a=Math.max(a,r)),i!==void 0&&(a=Math.min(a,i)),a.toString())}function ge({autoComplete:e,control:t,disabled:n,inputId:r,inputMode:i=`numeric`,inputName:o,label:s,placeholder:l,type:u,ui:h,...g}){let{t:_}=A();function v(e,t){h?.setValue&&h.setValue(o,he(e,t,h.step,h.min,h.max),{shouldValidate:!0})}return j(D,{control:t,disabled:n,name:o,render:({field:t,fieldState:y})=>M(a,{"data-invalid":y.invalid,...g,children:[s&&j(c,{htmlFor:r??o,children:s}),M(d,{children:[j(m,{"aria-invalid":y.invalid,autoComplete:e,id:r??(s?o:void 0),inputMode:i,placeholder:l,type:u,...t}),h&&M(f,{align:`inline-end`,children:[j(p,{"aria-label":_(e=>e.decrease),disabled:n,onClick:()=>v(t.value,!1),size:`icon-xs`,children:j(L,{})}),j(p,{"aria-label":_(e=>e.increase),disabled:n,onClick:()=>v(t.value,!0),size:`icon-xs`,children:j(R,{})})]})]}),j(Z,{error:y.error})]})})}function _e({autoComplete:e=`off`,type:t=`password`,...n}){return j(Q,{autoComplete:e,type:t,...n})}function ve(e){let t=k(26);if(t[0]!==`17d768ca562ec97c16bcafe5b5f4a7680b17a9911e26839427dd0f20be4d3e30`){for(let e=0;e<26;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`17d768ca562ec97c16bcafe5b5f4a7680b17a9911e26839427dd0f20be4d3e30`}let n,r,i,s,l,u,d,f,p,m;t[1]===e?(n=t[2],r=t[3],i=t[4],s=t[5],l=t[6],u=t[7],d=t[8],f=t[9],p=t[10],m=t[11]):({autoComplete:n,control:r,description:i,disabled:s,inputId:l,inputName:u,label:d,options:f,placeholder:p,...m}=e,t[1]=e,t[2]=n,t[3]=r,t[4]=i,t[5]=s,t[6]=l,t[7]=u,t[8]=d,t[9]=f,t[10]=p,t[11]=m);let h;t[12]!==n||t[13]!==i||t[14]!==l||t[15]!==u||t[16]!==d||t[17]!==f||t[18]!==p||t[19]!==m?(h=e=>{let{field:t,fieldState:r}=e;return M(a,{"data-invalid":r.invalid,...m,children:[d&&j(c,{htmlFor:l??u,children:d}),M(v,{autoComplete:n,disabled:t.disabled,name:t.name,onValueChange:t.onChange,value:t.value,children:[j(x,{"aria-invalid":r.invalid,id:l??(d?u:void 0),children:j(S,{placeholder:p})}),j(y,{children:f.map(ye)})]}),i&&j(o,{children:i}),j(Z,{error:r.error})]})},t[12]=n,t[13]=i,t[14]=l,t[15]=u,t[16]=d,t[17]=f,t[18]=p,t[19]=m,t[20]=h):h=t[20];let g;return t[21]!==r||t[22]!==s||t[23]!==u||t[24]!==h?(g=j(D,{control:r,disabled:s,name:u,render:h}),t[21]=r,t[22]=s,t[23]=u,t[24]=h,t[25]=g):g=t[25],g}function ye(e){return j(b,{id:e.id,value:e.value,children:e.label},e.key??e.id??e.value)}function be({label:e,loading:t=!1,type:r=`submit`,...i}){let{t:a}=A();return j(n,{disabled:t,type:r,...i,children:M(`div`,{className:`relative`,children:[j(`span`,{className:E({invisible:t}),children:e??a(e=>e.submit)}),j(C,{className:E(`trans absolute top-1/2 left-1/2 hidden -translate-x-1/2 -translate-y-1/2`,{block:t})})]})})}function xe({control:e,disabled:t,inputId:n,inputName:r,label:i,onCheckedChange:o,orientation:s=`horizontal`,readOnly:l,uncheckedValue:u=``,value:d=`true`,...f}){return j(D,{control:e,disabled:t,name:r,render:({field:e,fieldState:t})=>M(a,{"data-invalid":t.invalid,orientation:s,...f,children:[j(w,{"aria-invalid":t.invalid,"aria-readonly":l,checked:e.value===d,className:`aria-readonly:opacity-50`,disabled:e.disabled,id:n??(i?r:void 0),name:e.name,onBlur:e.onBlur,onCheckedChange:t=>{l||(e.onChange(t===!0?d:u),o&&o(t,e))},ref:e.ref,value:d}),i&&j(c,{htmlFor:n??r,children:i}),j(Z,{error:t.error})]})})}function Se({autoComplete:e=`on`,type:t=`text`,...n}){return j(Q,{autoComplete:e,type:t,...n})}function Ce({cacheMeasurements:e,control:t,inputId:n,inputName:r,label:i,maxRows:o,minRows:s,onHeightChange:l,placeholder:u,resize:d=`none`,...f}){return j(D,{name:r,control:t,render:({field:t,fieldState:p})=>M(a,{"data-invalid":p.invalid,...f,children:[i&&j(c,{htmlFor:n??r,children:i}),j(T,{"aria-invalid":p.invalid,autoComplete:`off`,cacheMeasurements:e,className:E({resize:d===`both`,"resize-none":d===`none`,"resize-x":d===`x`,"resize-y":d===`y`}),id:n??(i?r:void 0),maxRows:o,minRows:s,onHeightChange:l,placeholder:u,...t}),j(Z,{error:p.error})]})})}export{ae as CalendarField,oe as CheckboxField,se as EmailField,Z as ErrorMonitor,ce as FancyRadioField,ue as Form,de as HiddenField,fe as InfoCheckboxField,B as InputCheckboxRule,V as InputColorRule,H as InputEmailRule,Q as InputField,U as InputNumberRule,W as InputRule,G as InputSelectRule,K as InputTextRule,q as Message,pe as NullableSelectField,ge as NumericField,_e as PasswordField,J as Schema,ve as SelectField,be as Submit,xe as SwitchField,Se as TextField,Ce as TextareaField,Y as i18n,re as useTsvResolver};
|
|
2
2
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -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/lib/utils.ts","../src/components/error-monitor.tsx","../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\nconst i18n: Ti18n = createInstance({\n fallbackLng: 'en',\n interpolation: { escapeValue: false },\n resources: { en }\n})\n\nvoid i18n.init()\n\nexport default i18n\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 type { ErrorData } from '@/types'\nimport { FieldError } from '@gmcode/react-ui'\nimport { useTranslation } from 'react-i18next'\n\nexport function ErrorMonitor({ error }: { error?: ErrorData }) {\n // i18n\n const { t } = useTranslation()\n\n if (!error?.message) {\n return null\n }\n\n if (t) {\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 return <FieldError errors={error} />\n}\n","import { Calendar, Field, FieldLabel } from '@gmcode/react-ui'\nimport { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport type { DayPickerLocale, Matcher } from 'react-day-picker'\nimport {\n dateToString as defaultDateToString,\n stringToDate as defaultStringToDate\n} from '@/lib/utils'\nimport type { ComponentProps } from 'react'\nimport { ErrorMonitor } from '@/components/error-monitor'\nimport type { FieldValues } from 'react-hook-form'\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 name={inputName}\n control={control}\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 Control, Controller, type FieldPath } from 'react-hook-form'\nimport type { ControllerRenderProps, FieldValues } from 'react-hook-form'\nimport type { Checkbox as CheckboxPrimitive } from 'radix-ui'\nimport type { ComponentProps } from 'react'\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 type {\n ComponentProps,\n HTMLInputAutoCompleteAttribute,\n HTMLInputTypeAttribute\n} from 'react'\nimport { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport { Field, FieldLabel, Input } from '@gmcode/react-ui'\nimport { ErrorMonitor } from '@/components/error-monitor'\nimport type { FieldValues } from 'react-hook-form'\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}: ComponentProps<typeof Field> & {\n autoComplete?: HTMLInputAutoCompleteAttribute\n control: Control<TFieldValues>\n disabled?: boolean\n inputId?: string\n inputName: FieldPath<TFieldValues>\n label?: string\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 type { ComponentProps, FC, SVGProps } from 'react'\nimport { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport {\n FieldDescription,\n FieldLabel,\n FieldSet,\n Label,\n RadioGroup,\n RadioGroupItem\n} from '@gmcode/react-ui'\nimport { ErrorMonitor } from '@/components/error-monitor'\nimport type { FieldValues } from 'react-hook-form'\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 type {\n CancelTokenCallback,\n Errors,\n FormDataErrors,\n GlobalEventCallback,\n Page,\n RequestPayload,\n SharedPageProps\n} from '@inertiajs/core'\nimport type {\n DefaultValues,\n FieldValues,\n Path,\n UseFormReturn\n} from 'react-hook-form'\nimport type { ErrorData, Method, RouteDefinition } from '@/types'\nimport { type InferSchema, useTsvResolver } from '@gmcode/tsv-hookform'\nimport { type ReactNode, useEffect, useState } from 'react'\nimport { cn, flash } from '@gmcode/react-ui'\nimport { ErrorMonitor } from '@/components/error-monitor'\nimport { I18nextProvider } from 'react-i18next'\nimport type { Ruleset } from '@gmcode/tsv-input'\nimport type { Schema } from '@/index'\nimport i18n from '@/i18n'\nimport { useForm as useInertiaForm } from '@inertiajs/react'\nimport { useForm as userReactForm } from 'react-hook-form'\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 rootError: displayRootError = 'flash',\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 route,\n schema,\n setDefaultsOnSuccess = false\n}: {\n children: RenderFN<TValues>\n className?: string\n defaults?: Partial<DefaultValues<TValues>>\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 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 resetOnSuccess?: boolean\n route: RouteDefinition<Method>\n schema: Schema<TRuleset>\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 <I18nextProvider i18n={i18n}>\n <form\n action={route.url}\n className={cn('grid gap-6', className)}\n method={route.method}\n onSubmit={reactForm.handleSubmit(onSubmit)}\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 </I18nextProvider>\n )\n}\n","import type { ComponentProps } from 'react'\nimport type { FieldValues } from 'react-hook-form'\nimport { InputField } from '@/components/input-field'\nimport { cn } from '@gmcode/react-ui'\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 Control, Controller, type FieldPath } from 'react-hook-form'\nimport type { ControllerRenderProps, FieldValues } from 'react-hook-form'\nimport type { Checkbox as CheckboxPrimitive } from 'radix-ui'\nimport type { ComponentProps } from 'react'\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 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 { ErrorMonitor } from '@/components/error-monitor'\nimport type { Option } from '@/types'\nimport { X } from 'lucide-react'\nimport { useTranslation } from 'react-i18next'\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()\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 type {\n ComponentProps,\n HTMLInputAutoCompleteAttribute,\n HTMLInputTypeAttribute\n} from 'react'\nimport { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport {\n Field,\n FieldLabel,\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupInput\n} from '@gmcode/react-ui'\nimport type {\n FieldPathValue,\n FieldValues,\n UseFormSetValue\n} from 'react-hook-form'\nimport { Minus, Plus } from 'lucide-react'\nimport { ErrorMonitor } from '@/components/error-monitor'\nimport { useTranslation } from 'react-i18next'\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()\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 type {\n ComponentProps,\n HTMLInputAutoCompleteAttribute,\n HTMLInputTypeAttribute\n} from 'react'\nimport { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport {\n Field,\n FieldDescription,\n FieldLabel,\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue\n} from '@gmcode/react-ui'\nimport { ErrorMonitor } from '@/components/error-monitor'\nimport type { FieldValues } from 'react-hook-form'\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()\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 { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport type { ControllerRenderProps, FieldValues } from 'react-hook-form'\nimport { Field, FieldLabel, Switch } from '@gmcode/react-ui'\nimport type { Checkbox as CheckboxPrimitive } from 'radix-ui'\nimport type { ComponentProps } from 'react'\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 { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport { Field, FieldLabel, TextareaAutosize, cn } from '@gmcode/react-ui'\nimport type { ComponentProps } from 'react'\nimport { ErrorMonitor } from '@/components/error-monitor'\nimport type { FieldValues } from 'react-hook-form'\nimport type { TextareaHeightChangeMeta } from 'react-textarea-autosize'\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 name={inputName}\n control={control}\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","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/lib/utils.ts","../src/components/error-monitor.tsx","../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\nconst i18n: Ti18n = createInstance({\n fallbackLng: 'en',\n interpolation: { escapeValue: false },\n resources: { en }\n})\n\nvoid i18n.init()\n\nexport default i18n\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 type { ErrorData } from '@/types'\nimport { FieldError } from '@gmcode/react-ui'\nimport { useTranslation } from 'react-i18next'\n\nexport function ErrorMonitor({ error }: { error?: ErrorData }) {\n // i18n\n const { t } = useTranslation()\n\n if (!error?.message) {\n return null\n }\n\n if (t) {\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 return <FieldError errors={error} />\n}\n","import { Calendar, Field, FieldLabel } from '@gmcode/react-ui'\nimport { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport type { DayPickerLocale, Matcher } from 'react-day-picker'\nimport {\n dateToString as defaultDateToString,\n stringToDate as defaultStringToDate\n} from '@/lib/utils'\nimport type { ComponentProps } from 'react'\nimport { ErrorMonitor } from '@/components/error-monitor'\nimport type { FieldValues } from 'react-hook-form'\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 name={inputName}\n control={control}\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 Control, Controller, type FieldPath } from 'react-hook-form'\nimport type { ControllerRenderProps, FieldValues } from 'react-hook-form'\nimport type { Checkbox as CheckboxPrimitive } from 'radix-ui'\nimport type { ComponentProps } from 'react'\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 type {\n ComponentProps,\n HTMLInputAutoCompleteAttribute,\n HTMLInputTypeAttribute\n} from 'react'\nimport { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport { Field, FieldLabel, Input } from '@gmcode/react-ui'\nimport { ErrorMonitor } from '@/components/error-monitor'\nimport type { FieldValues } from 'react-hook-form'\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}: ComponentProps<typeof Field> & {\n autoComplete?: HTMLInputAutoCompleteAttribute\n control: Control<TFieldValues>\n disabled?: boolean\n inputId?: string\n inputName: FieldPath<TFieldValues>\n label?: string\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 type { ComponentProps, FC, SVGProps } from 'react'\nimport { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport {\n FieldDescription,\n FieldLabel,\n FieldSet,\n Label,\n RadioGroup,\n RadioGroupItem\n} from '@gmcode/react-ui'\nimport { ErrorMonitor } from '@/components/error-monitor'\nimport type { FieldValues } from 'react-hook-form'\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 type {\n CancelTokenCallback,\n Errors,\n FormDataErrors,\n GlobalEventCallback,\n Page,\n RequestPayload,\n SharedPageProps\n} from '@inertiajs/core'\nimport type {\n DefaultValues,\n FieldValues,\n Path,\n UseFormReturn\n} from 'react-hook-form'\nimport type { ErrorData, Method, RouteDefinition } from '@/types'\nimport { type InferSchema, useTsvResolver } from '@gmcode/tsv-hookform'\nimport { type ReactNode, useEffect, useState } from 'react'\nimport { cn, flash } from '@gmcode/react-ui'\nimport { ErrorMonitor } from '@/components/error-monitor'\nimport { I18nextProvider } from 'react-i18next'\nimport type { Ruleset } from '@gmcode/tsv-input'\nimport type { Schema } from '@/index'\nimport i18n from '@/i18n'\nimport { useForm as useInertiaForm } from '@inertiajs/react'\nimport { useForm as userReactForm } from 'react-hook-form'\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 rootError: displayRootError = 'flash',\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 route,\n schema,\n setDefaultsOnSuccess = false\n}: {\n children: RenderFN<TValues>\n className?: string\n defaults?: Partial<DefaultValues<TValues>>\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 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 resetOnSuccess?: boolean\n route: RouteDefinition<Method>\n schema: Schema<TRuleset>\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 <I18nextProvider i18n={i18n}>\n <form\n action={route.url}\n className={cn('grid gap-6', className)}\n method={route.method}\n onSubmit={reactForm.handleSubmit(onSubmit)}\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 </I18nextProvider>\n )\n}\n","import type { ComponentProps } from 'react'\nimport type { FieldValues } from 'react-hook-form'\nimport { InputField } from '@/components/input-field'\nimport { cn } from '@gmcode/react-ui'\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 Control, Controller, type FieldPath } from 'react-hook-form'\nimport type { ControllerRenderProps, FieldValues } from 'react-hook-form'\nimport type { Checkbox as CheckboxPrimitive } from 'radix-ui'\nimport type { ComponentProps } from 'react'\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 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 { ErrorMonitor } from '@/components/error-monitor'\nimport type { Option } from '@/types'\nimport { X } from 'lucide-react'\nimport { useTranslation } from 'react-i18next'\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()\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 type {\n ComponentProps,\n HTMLInputAutoCompleteAttribute,\n HTMLInputTypeAttribute\n} from 'react'\nimport { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport {\n Field,\n FieldLabel,\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupInput\n} from '@gmcode/react-ui'\nimport type {\n FieldPathValue,\n FieldValues,\n UseFormSetValue\n} from 'react-hook-form'\nimport { Minus, Plus } from 'lucide-react'\nimport { ErrorMonitor } from '@/components/error-monitor'\nimport { useTranslation } from 'react-i18next'\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()\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 type {\n ComponentProps,\n HTMLInputAutoCompleteAttribute,\n HTMLInputTypeAttribute\n} from 'react'\nimport { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport {\n Field,\n FieldDescription,\n FieldLabel,\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue\n} from '@gmcode/react-ui'\nimport { ErrorMonitor } from '@/components/error-monitor'\nimport type { FieldValues } from 'react-hook-form'\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()\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 { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport type { ControllerRenderProps, FieldValues } from 'react-hook-form'\nimport { Field, FieldLabel, Switch } from '@gmcode/react-ui'\nimport type { Checkbox as CheckboxPrimitive } from 'radix-ui'\nimport type { ComponentProps } from 'react'\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 { type Control, Controller, type FieldPath } from 'react-hook-form'\nimport { Field, FieldLabel, TextareaAutosize, cn } from '@gmcode/react-ui'\nimport type { ComponentProps } from 'react'\nimport { ErrorMonitor } from '@/components/error-monitor'\nimport type { FieldValues } from 'react-hook-form'\nimport type { TextareaHeightChangeMeta } from 'react-textarea-autosize'\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 name={inputName}\n control={control}\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":"8oCAGA,MAAM,EAAc,EAAe,CACjC,YAAa,KACb,cAAe,CAAE,YAAa,EAAM,EACpC,UAAW,CAAE,GAAA,CAAG,CAClB,CAAC,EAEI,EAAK,KAAK,ECNf,SAAgB,EAAa,EAAoB,CAC/C,MAAO,GAAG,EAAK,YAAY,EAAC,IAAK,EAAK,SAAS,EAAI,EAAI,GAAA,CAAI,SAAS,EAAG,GAAG,EAAC,IAAK,EAAK,QAAQ,EAAI,GAAA,CAAI,SAAS,EAAG,GAAG,GACtH,CAMA,SAAgB,GAAa,EAA8C,CACzE,GAAI,CAAC,EACH,OAGF,IAAM,EAAO,IAAI,KAAK,CAAM,EAExB,UAAM,EAAK,YAAY,CAAC,EAI5B,OAAO,CACT,CCnBA,SAAO,EAAA,EAAA,CAAA,IAAA,EAAA,EAAA,CAAA,EAAA,GAAA,EAAA,KAAA,mEAAA,CAAA,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,OAAA,IAAA,2BAAA,EAAA,EAAA,GAAA,kEAAA,CAAsB,GAAA,CAAA,SAAA,EAE3B,CAAA,KAAc,EAAe,EAE7B,GAAI,CAAC,GAAK,QAAS,OACV,KAGT,GAAI,EAAC,CAAA,IAAA,EAAA,EAAA,KAAA,EAAA,SAAA,EAAA,KAAA,EAAA,QAAA,EAAA,KAAA,GAEmC,EAAA,EAAE,EAAK,QAAU,EAAK,MAAO,EAAC,EAAA,GAAA,EAAA,QAAA,EAAA,GAAA,EAAA,OAAA,EAAA,GAAA,EAAA,EAAA,GAAA,GAAA,EAAA,EAAA,GAAA,IAAA,EAAM,OAAN,EAAA,KAAA,EAAM,EAAA,EAAA,IAAnE,EAAA,EAAC,EAAD,CAAoB,OAAA,CAAA,QAAW,CAA+B,CAAC,CAAA,EAAI,EAAA,GAAA,EAAA,EAAA,GAAA,GAAnE,CAAmE,CAC3E,IAAA,EAEmC,OAFnC,EAAA,KAAA,EAEmC,EAAA,EAAA,IAA7B,EAAA,EAAC,EAAD,CAAoBA,OAAA,CAAK,CAAA,EAAI,EAAA,GAAA,EAAA,EAAA,GAAA,GAA7B,CAA6B,CCNtC,SAAgB,GAA8D,CAC5E,UACA,aAAA,EAAe,EACf,WACA,UACA,YACA,QACA,SACA,aAAA,EAAe,GACf,GAAG,GAUF,CACD,OACE,EAAC,EAAD,CACE,KAAM,EACG,UACT,QAAS,CAAE,QAAO,gBAChB,EAAC,EAAD,CACE,eAAc,EAAW,QACzB,GAAI,WAFN,CAIG,GACC,EAAC,EAAD,CAAY,QAAS,GAAW,WAAY,CAAkB,CAAA,EAGhE,EAAC,EAAD,CACE,eAAc,EAAW,QACzB,UAAU,2BACA,WACV,WAAY,GACZ,GAAI,IAAY,EAAQ,EAAY,IAAA,IAC5B,SACR,KAAK,SACL,SAAW,GAAS,EAAM,SAAS,EAAO,EAAa,CAAI,EAAI,EAAE,EACjE,SAAU,EAAa,EAAM,KAAK,CAAE,CAAA,EAGtC,EAAC,EAAD,CAAc,MAAO,EAAW,KAAM,CAAA,CACjC,GACP,CAAA,CAGR,CCtDA,SAAgB,GAA8D,CAC5E,UACA,WACA,UACA,YACA,QACA,kBACA,cAAc,aACd,WACA,iBAAiB,GACjB,QAAQ,OACR,GAAG,GAcF,CACD,OACE,EAAC,EAAD,CACW,UACC,WACV,KAAM,EACN,QAAS,CAAE,QAAO,gBAChB,EAAC,EAAD,CACE,eAAc,EAAW,QACZ,cACb,GAAI,WAHN,CAKE,EAAC,EAAD,CACE,eAAc,EAAW,QACzB,gBAAe,EACf,QAAS,EAAM,QAAU,EACzB,UAAU,2BACV,SAAU,EAAM,SAChB,GAAI,IAAY,EAAQ,EAAY,IAAA,IACpC,KAAM,EAAM,KACZ,OAAQ,EAAM,OACd,gBAAkB,GAAY,CACvB,IACH,EAAM,SAAS,IAAY,GAAO,EAAQ,CAAc,EACpD,GAAiB,EAAgB,EAAS,CAAK,EAEvD,EACA,IAAK,EAAM,IACJ,OAAM,CAAA,EAGd,GACC,EAAC,EAAD,CAAY,QAAS,GAAW,WAAY,CAAkB,CAAA,EAGhE,EAAC,EAAD,CAAc,MAAO,EAAW,KAAM,CAAA,CACjC,GACP,CAAA,CAGR,CC9DA,SAAO,EAAA,EAAA,CAAA,IAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,KAAA,mEAAA,CAAA,IAAA,IAAA,EAAA,EAAA,EAAA,GAAA,GAAA,EAAA,EAAA,GAAA,OAAA,IAAA,2BAAA,EAAA,EAAA,GAAA,kEAAA,CAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,KAAA,GAqBN,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,EAAA,MArB0E,sGAAA,GAAA,EAqB1E,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,GAAA,IAAA,EAAA,EAAA,MAAA,GAAA,EAAA,MAAA,GAAA,EAAA,MAAA,GAAA,EAAA,MAAA,GAAA,EAAA,MAAA,GAAA,EAAA,MAAA,GAAA,EAAA,MAAA,GAAA,EAAA,MAAA,GAMa,EAAA,GAAA,CAAC,GAAA,CAAA,QAAA,cAAA,EAAqB,OAC5B,EAAC,EAAD,CACgB,eAAA,EAAU,QAAQ,GAC5B,WAFN,CAIG,GACC,EAAC,EAAD,CAAqB,QAAA,GAAA,WAAuB,CAAjC,CAAA,EAGb,EAAC,EAAD,CACgB,eAAA,EAAU,QACV,eACV,GAAA,IAAY,EAAA,EAAA,IAAA,IACH,cACH,WACJ,OAAI,GACN,CAAK,CAAA,EAGX,EAAC,EAAD,CAAqB,MAAA,EAAU,KAAM,CAAA,CAlBjC,GAmBE,EACT,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,IAAA,EACD,OADC,EAAA,MAAA,GAAA,EAAA,MAAA,GAAA,EAAA,MAAA,GAAA,EAAA,MAAA,GAzBH,EAAA,EAAC,EAAD,CACW,UACC,WACJQ,KAAA,EACE,OAAA,CAqBP,CAAA,EACD,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IA1BF,CA0BE,CCvDN,SAAgB,GAA2D,CACzE,eAAe,KACf,OAAO,QACP,GAAG,GAC+C,CAClD,OACE,EAAC,EAAD,CACgB,eACR,OACN,GAAI,CAAM,CAAA,CAGhB,CCFA,SAAO,GAAA,EAAA,CAAA,IAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,KAAA,mEAAA,CAAA,IAAA,IAAA,EAAA,EAAA,EAAA,GAAA,GAAA,EAAA,EAAA,GAAA,OAAA,IAAA,2BAAA,EAAA,EAAA,GAAA,kEAAA,CAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,KAAA,GAqBN,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,MAnBC,8FAAA,GAAA,EAmBD,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,GAAA,IAAA,EAAA,EAAA,MAAA,GAAA,EAAA,MAAA,GAAA,EAAA,MAAA,GAAA,EAAA,MAAA,GAAA,EAAA,MAAA,GAAA,EAAA,MAAA,GAAA,EAAA,MAAA,GAMa,EAAA,GAAA,CAAC,GAAA,CAAA,QAAA,cAAA,EAAqB,OAC5B,EAAC,EAAD,CACgB,eAAA,EAAU,QAAQ,GAC5B,WAFN,CAIG,GACC,EAAC,EAAD,CAAqB,QAAA,GAAA,WAAuB,CAAjC,CAAA,EAGZ,GAAe,EAAC,EAAD,CAAA,SAAmB,CAAF,CAAA,EAEjC,EAAC,EAAD,CAAqB,MAAA,EAAU,KAAM,CAAA,EAErC,EAAC,EAAD,CACgB,eACJ,SAAA,EAAK,SACX,GAAA,IAAY,EAAA,EAAA,IAAA,IACV,KAAA,EAAK,KACH,OAAA,EAAK,OACE,cAAA,EAAK,SACf,IAAA,EAAK,aAET,EAAO,IAAK,EAgBZ,CAzBQ,CAAA,CAZJ,GAuCE,EACZ,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,IAAA,EACD,OADC,EAAA,MAAA,GAAA,EAAA,MAAA,GAAA,EAAA,MAAA,GAAA,EAAA,MAAA,GA7CH,EAAA,EAAC,EAAD,CACW,UACC,WACJM,KAAA,EACE,OAAA,CAyCP,CAAA,EACD,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IA9CF,CA8CE,CArEC,SAAA,GAAA,EAAA,CAAA,OAkDO,EAAC,EAAD,CACY,UAAA,gGACA,YAAA,uBAGV,EAAA,MAAA,CAAe,UAAA,iIAAf,CACE,EAAC,EAAD,CACY,UAAA,UACN,GAAA,EAAM,GACH,MAAA,EAAM,KAAM,CAAA,EAEpB,EAAM,MAAS,EAAA,EAAA,KAAA,CAAA,CAAA,EACf,EAAM,KACH,GAbF,EAGC,EAAM,KAAQ,EAAM,IAAO,EAAM,KAHlC,CAcE,CCzCtB,SAAgB,GAId,CACA,WACA,YACA,WAAW,CAAC,EACZ,UAAW,EAAmB,QAC9B,WACA,iBACA,WACA,gBACA,UACA,WACA,UACA,eACA,gBACA,aACA,UACA,YACA,iBAAiB,GACjB,iBAAiB,GACjB,QACA,SACA,uBAAuB,IAgCtB,CACD,GAAM,CAAC,EAAW,GAAgB,EAAoB,EAEhD,EAAgB,OAAO,YAC3B,OAAO,KAAK,EAAO,OAAO,CAAC,CAAC,IAAK,GAAU,CAAC,EAAO,EAAS,IAAU,EAAE,CAAC,CAC3E,EAGM,EAAY,EAAuB,CACvC,gBACA,SAAU,EAAe,CAAM,CACjC,CAAC,EAGK,EAAc,EAAuB,CAAa,EAExD,SAAS,EAAiB,EAAgB,CACpC,EAAO,OACL,IAAqB,QACvB,GAAM,CAAE,MAAO,QAAS,MAAO,EAAO,IAAK,CAAC,EACnC,IAAqB,WAC9B,EAAa,CAAE,QAAS,EAAO,IAAK,CAAC,GAIrC,GACF,EAAQ,CAAM,CAElB,CAEA,SAAS,EAAmB,EAA6B,CACnD,IACF,EAAY,YAAY,EACxB,EAAU,MAAM,EAAU,UAAU,CAAC,GAGnC,IACF,EAAY,MAAM,EAClB,EAAU,MAAM,GAGd,GACF,EAAU,CAAI,CAElB,CAGA,SAAS,EAAS,EAAiB,CACjC,EAAY,cAAgB,CAAM,EAClC,EAAY,EAAM,OAAO,CAAC,EAAM,IAAK,CACnC,WACA,iBACA,WACA,gBACA,QAAS,EACT,WACA,UACA,eACA,gBACA,aACA,UACA,UAAW,EACX,gBACF,CAAC,CACH,CAcA,OAXA,MAAgB,CACd,IAAK,GAAM,CAAC,EAAK,KAAU,OAAO,QAAQ,EAAY,MAAM,EACtD,GACF,EAAU,SAAS,EAAsB,CACvC,QAAS,EACT,KAAM,SACR,CAAC,CAGP,EAAG,CAAC,EAAY,OAAQ,CAAS,CAAC,EAGhC,EAAC,GAAD,CAAuB,gBACrB,EAAC,OAAD,CACE,OAAQ,EAAM,IACd,UAAW,EAAG,aAAc,CAAS,EACrC,OAAQ,EAAM,OACd,SAAU,EAAU,aAAa,CAAQ,WAJ3C,CAME,EAAA,GAAA,CAAA,SACG,EAAS,CACR,OAAQ,EAAY,OACpB,KAAM,EACN,QAAS,EAAY,UACvB,CAAC,CACH,CAAA,EAEC,IAAqB,WAAa,EAAC,EAAD,CAAc,MAAO,CAAU,CAAA,CAC9D,GACS,CAAA,CAErB,CC3LA,SAAgB,GAA4D,CAC1E,eAAe,MACf,YACA,OAAO,SACP,GAAG,GAC+C,CAClD,OACE,EAAC,EAAD,CACgB,eACd,UAAW,EAAG,SAAU,CAAS,EAC3B,OACN,GAAI,CAAM,CAAA,CAGhB,CCZA,SAAgB,GAEd,CACA,WACA,YACA,UACA,WACA,UACA,YACA,QACA,kBACA,cAAc,aACd,WACA,OACA,iBAAiB,GACjB,QAAQ,OACR,GAAG,GAeF,CACD,OACE,EAAC,EAAD,CACW,UACC,WACV,KAAM,EACN,QAAS,CAAE,QAAO,gBAChB,EAAC,EAAD,CACE,UAAW,EAAG,QAAS,CAAS,EAChC,eAAc,EAAW,QACZ,cACb,GAAI,WAEJ,EAAC,EAAD,CACE,UAAU,mIACV,YAAU,uBAFZ,CAIE,EAAC,EAAD,CACE,eAAc,EAAW,QACzB,gBAAe,EACf,QAAS,EAAM,QAAU,EACzB,UAAU,6OACV,SAAU,EAAM,SAChB,GAAI,EACJ,KAAM,EAAM,KACZ,OAAQ,EAAM,OACd,gBAAkB,GAAY,CACvB,IACH,EAAM,SAAS,IAAY,GAAO,EAAQ,CAAc,EACpD,GAAiB,EAAgB,EAAS,CAAK,EAEvD,EACA,IAAK,EAAM,IACJ,OAAM,CAAA,EAGf,EAAC,MAAD,CAAK,UAAU,oCAAf,CACE,EAAC,IAAD,CAAG,UAAU,4CAAoC,CAAS,CAAA,EACzD,EACC,EAAC,IAAD,CAAG,UAAU,yCAAiC,CAAQ,CAAA,EAEtD,EAEF,EAAC,EAAD,CAAc,MAAO,EAAW,KAAM,CAAA,CACnC,GACA,GACF,CAAA,CACP,CAAA,CAGR,CC7DA,SAAO,GAAA,EAAA,CAAA,IAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,KAAA,mEAAA,CAAA,IAAA,IAAA,EAAA,EAAA,EAAA,GAAA,GAAA,EAAA,EAAA,GAAA,OAAA,IAAA,2BAAA,EAAA,EAAA,GAAA,kEAAA,CAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,KAAA,GA0BN,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,MAxBC,uHAAA,GAAA,EAwBD,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,GAEC,GAAA,CAAA,KAAc,EAAe,EAAC,EAAA,EAAA,MAAA,GAAA,EAAA,MAAA,GAAA,EAAA,MAAA,GAAA,EAAA,MAAA,GAAA,EAAA,MAAA,GAAA,EAAA,MAAA,GAAA,EAAA,MAAA,GAAA,EAAA,MAAA,GAAA,EAAA,MAAA,GAAA,EAAA,MAAA,GAOlB,EAAA,GAAA,CAAC,GAAA,CAAA,QAAA,cAAA,EAAqB,OAC5B,EAAC,EAAD,CACgB,eAAA,EAAU,QAAQ,GAC5B,WAFN,CAIG,GACC,EAAC,EAAD,CAAqB,QAAA,GAAA,WAAuB,CAAjC,CAAA,EAGb,EAAA,MAAA,CAAe,UAAA,gCAAf,CACE,EAAC,EAAD,CACgB,eACJ,SAAA,EAAK,SACT,KAAA,EAAK,KACI,cAAA,EAAK,SACb,MAAA,EAAK,eALd,CAOE,EAAC,EAAD,CACgB,eAAA,EAAU,QACd,UAAA,yBACN,GAAA,IAAY,EAAA,EAAA,IAAA,aAEhB,EAAC,EAAD,CAA0B,aAAW,CAAA,CALzB,CAAA,EAOd,EAAC,EAAD,CAAA,SACG,EAAO,IAAK,EAQZ,CATW,CAAA,CAdT,IA2BP,EAAC,EAAD,CACc,aAAA,EAAE,CAAc,EAClB,UAAA,YACD,YACP,EACE,EACA,EACF,EAEG,KAAA,SACG,QAAA,mBAER,EAAC,EAAD,CAAE,CAAA,CAZG,CAAA,CAcH,IAEL,GAAe,EAAC,EAAD,CAAA,SAAmB,CAAF,CAAA,EAEjC,EAAC,EAAD,CAAqB,MAAA,EAAU,KAAM,CAAA,CAtDjC,GAuDE,EACT,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,IAAA,EACD,OADC,EAAA,MAAA,GAAA,EAAA,MAAA,GAAA,EAAA,MAAA,GAAA,EAAA,MAAA,GA7DH,EAAA,EAAC,EAAD,CACW,UACC,WACJO,KAAA,EACE,OAAA,CAyDP,CAAA,EACD,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IA9DF,CA8DE,CA7FC,SAAA,EAAA,EAAA,CAAA,OAyE4B,EAAC,KAAM,CAzEnC,SAAA,GAAA,EAAA,CAAA,OA6DW,EAAC,EAAD,CACM,GAAA,EAAM,GAEH,MAAA,EAAM,eAEZ,EAAM,KALE,EAEJ,EAAM,KAAQ,EAAM,IAAO,EAAM,KAF7B,CAME,CCvE/B,SAAS,GACP,EACA,EACA,EACA,EACA,EACA,CACA,IAAI,EAAS,OAAO,CAAQ,EAoB5B,OAlBI,MAAM,CAAM,EACP,IAGL,EACF,GAAU,IAAS,IAAA,GAAY,EAAI,EAEnC,GAAU,IAAS,IAAA,GAAY,EAAI,EAGjC,IAAQ,IAAA,KACV,EAAS,KAAK,IAAI,EAAQ,CAAG,GAG3B,IAAQ,IAAA,KACV,EAAS,KAAK,IAAI,EAAQ,CAAG,GAGxB,EAAO,SAAS,EACzB,CAEA,SAAgB,GAA6D,CAC3E,eACA,UACA,WACA,UACA,YAAY,UACZ,YACA,QACA,cACA,OACA,KACA,GAAG,GAiBF,CAED,GAAM,CAAE,KAAM,EAAe,EAE7B,SAAS,EAAU,EAAe,EAAc,CAC1C,GAAI,UACN,EAAG,SACD,EACA,GAAU,EAAO,EAAK,EAAG,KAAM,EAAG,IAAK,EAAG,GAAG,EAI7C,CAAE,eAAgB,EAAK,CACzB,CAEJ,CAEA,OACE,EAAC,EAAD,CACW,UACC,WACV,KAAM,EACN,QAAS,CAAE,QAAO,gBAChB,EAAC,EAAD,CACE,eAAc,EAAW,QACzB,GAAI,WAFN,CAIG,GACC,EAAC,EAAD,CAAY,QAAS,GAAW,WAAY,CAAkB,CAAA,EAGhE,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,EAAD,CACE,eAAc,EAAW,QACX,eACd,GAAI,IAAY,EAAQ,EAAY,IAAA,IACzB,YACE,cACP,OACN,GAAI,CAAM,CAAA,EAGX,GACC,EAAC,EAAD,CAAiB,MAAM,sBAAvB,CACE,EAAC,EAAD,CACE,aAAY,EAAG,GAAM,EAAE,QAAQ,EACrB,WACV,YAAe,EAAU,EAAM,MAAO,EAAK,EAC3C,KAAK,mBAEL,EAAC,EAAD,CAAM,CAAA,CACU,CAAA,EAElB,EAAC,EAAD,CACE,aAAY,EAAGC,GAAMA,EAAE,QAAQ,EACrB,WACV,YAAe,EAAU,EAAM,MAAO,EAAI,EAC1C,KAAK,mBAEL,EAAC,EAAD,CAAK,CAAA,CACW,CAAA,CACH,GAET,CAAA,CAAA,EAEZ,EAAC,EAAD,CAAc,MAAO,EAAW,KAAM,CAAA,CACjC,GACP,CAAA,CAGR,CCnJA,SAAgB,GAA8D,CAC5E,eAAe,MACf,OAAO,WACP,GAAG,GAC+C,CAClD,OACE,EAAC,EAAD,CACgB,eACR,OACN,GAAI,CAAM,CAAA,CAGhB,CCIA,SAAO,GAAA,EAAA,CAAA,IAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,KAAA,mEAAA,CAAA,IAAA,IAAA,EAAA,EAAA,EAAA,GAAA,GAAA,EAAA,EAAA,GAAA,OAAA,IAAA,2BAAA,EAAA,EAAA,GAAA,kEAAA,CAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,KAAA,GAsBN,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,EAAA,MAtB2E,4GAAA,GAAA,EAsB3E,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,GAAA,IAAA,EAAA,EAAA,MAAA,GAAA,EAAA,MAAA,GAAA,EAAA,MAAA,GAAA,EAAA,MAAA,GAAA,EAAA,MAAA,GAAA,EAAA,MAAA,GAAA,EAAA,MAAA,GAAA,EAAA,MAAA,GAMa,EAAA,GAAA,CAAC,GAAA,CAAA,QAAA,cAAA,EAAqB,OAC5B,EAAC,EAAD,CACgB,eAAA,EAAU,QAAQ,GAC5B,WAFN,CAIG,GACC,EAAC,EAAD,CAAqB,QAAA,GAAA,WAAuB,CAAjC,CAAA,EAGb,EAAC,EAAD,CACgB,eACJ,SAAA,EAAK,SACT,KAAA,EAAK,KACI,cAAA,EAAK,SACb,MAAA,EAAK,eALd,CAOE,EAAC,EAAD,CACgB,eAAA,EAAU,QACpB,GAAA,IAAY,EAAA,EAAA,IAAA,aAEhB,EAAC,EAAD,CAA0B,aAAW,CAAA,CAJzB,CAAA,EAMd,EAAC,EAAD,CAAA,SACG,EAAO,IAAK,EAQZ,CATW,CAAA,CAbT,IA0BN,GAAe,EAAC,EAAD,CAAA,SAAmB,CAAF,CAAA,EAEjC,EAAC,EAAD,CAAqB,MAAA,EAAU,KAAM,CAAA,CApCjC,GAqCE,EACT,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IAAA,IAAA,EACD,OADC,EAAA,MAAA,GAAA,EAAA,MAAA,GAAA,EAAA,MAAA,GAAA,EAAA,MAAA,GA3CH,EAAA,EAAC,EAAD,CACW,UACC,WACJO,KAAA,EACE,OAAA,CAuCP,CAAA,EACD,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,GAAA,EAAA,EAAA,IA5CF,CA4CE,CApEC,SAAA,GAAA,EAAA,CAAA,OAoDS,EAAC,EAAD,CACM,GAAA,EAAM,GAEH,MAAA,EAAM,eAEZ,EAAM,KALE,EAEJ,EAAM,KAAQ,EAAM,IAAO,EAAM,KAF7B,CAME,CC1E7B,SAAgB,GAAO,CACrB,QACA,UAAU,GACV,OAAO,SACP,GAAG,GAIF,CAED,GAAM,CAAE,KAAM,EAAe,EAE7B,OACE,EAAC,EAAD,CACE,SAAU,EACJ,OACN,GAAI,WAEJ,EAAC,MAAD,CAAK,UAAU,oBAAf,CACE,EAAC,OAAD,CAAM,UAAW,EAAG,CAAE,UAAW,CAAQ,CAAC,WACvC,GAAS,EAAG,GAAM,EAAE,MAAM,CACvB,CAAA,EACN,EAAC,EAAD,CACE,UAAW,EACT,2EACA,CAAE,MAAO,CAAQ,CACnB,CAAE,CAAA,CAED,GACC,CAAA,CAEZ,CC5BA,SAAgB,GAA4D,CAC1E,UACA,WACA,UACA,YACA,QACA,kBACA,cAAc,aACd,WACA,iBAAiB,GACjB,QAAQ,OACR,GAAG,GAcF,CACD,OACE,EAAC,EAAD,CACW,UACC,WACV,KAAM,EACN,QAAS,CAAE,QAAO,gBAChB,EAAC,EAAD,CACE,eAAc,EAAW,QACZ,cACb,GAAI,WAHN,CAKE,EAAC,EAAD,CACE,eAAc,EAAW,QACzB,gBAAe,EACf,QAAS,EAAM,QAAU,EACzB,UAAU,2BACV,SAAU,EAAM,SAChB,GAAI,IAAY,EAAQ,EAAY,IAAA,IACpC,KAAM,EAAM,KACZ,OAAQ,EAAM,OACd,gBAAkB,GAAY,CACvB,IACH,EAAM,SAAS,IAAY,GAAO,EAAQ,CAAc,EACpD,GAAiB,EAAgB,EAAS,CAAK,EAEvD,EACA,IAAK,EAAM,IACJ,OAAM,CAAA,EAGd,GACC,EAAC,EAAD,CAAY,QAAS,GAAW,WAAY,CAAkB,CAAA,EAGhE,EAAC,EAAD,CAAc,MAAO,EAAW,KAAM,CAAA,CACjC,GACP,CAAA,CAGR,CCpEA,SAAgB,GAA0D,CACxE,eAAe,KACf,OAAO,OACP,GAAG,GAC+C,CAClD,OACE,EAAC,EAAD,CACgB,eACR,OACN,GAAI,CAAM,CAAA,CAGhB,CCTA,SAAgB,GAA8D,CAC5E,oBACA,UACA,UACA,YACA,QACA,UACA,UACA,iBACA,cACA,SAAS,OACT,GAAG,GAYF,CACD,OACE,EAAC,EAAD,CACE,KAAM,EACG,UACT,QAAS,CAAE,QAAO,gBAChB,EAAC,EAAD,CACE,eAAc,EAAW,QACzB,GAAI,WAFN,CAIG,GACC,EAAC,EAAD,CAAY,QAAS,GAAW,WAAY,CAAkB,CAAA,EAGhE,EAAC,EAAD,CACE,eAAc,EAAW,QACzB,aAAa,MACM,oBACnB,UAAW,EAAG,CACZ,OAAQ,IAAW,OACnB,cAAe,IAAW,OAC1B,WAAY,IAAW,IACvB,WAAY,IAAW,GACzB,CAAC,EACD,GAAI,IAAY,EAAQ,EAAY,IAAA,IAC3B,UACA,UACO,iBACH,cACb,GAAI,CAAM,CAAA,EAGZ,EAAC,EAAD,CAAc,MAAO,EAAW,KAAM,CAAA,CACjC,GACP,CAAA,CAGR"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gmcode/forms",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.7",
|
|
4
4
|
"description": "Fully functional inertia react forms with client side validations.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"i18next",
|
|
@@ -32,36 +32,28 @@
|
|
|
32
32
|
"./package.json": "./package.json"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@gmcode/react-ui": "^0.3.
|
|
36
|
-
"@gmcode/tsv-hookform": "^0.1.
|
|
37
|
-
"@gmcode/tsv-input": "^0.2.
|
|
35
|
+
"@gmcode/react-ui": "^0.3.4",
|
|
36
|
+
"@gmcode/tsv-hookform": "^0.1.3",
|
|
37
|
+
"@gmcode/tsv-input": "^0.2.3",
|
|
38
38
|
"i18next": "^26.3.4",
|
|
39
39
|
"lucide-react": "^1.16.0",
|
|
40
40
|
"radix-ui": "^1.4.3",
|
|
41
41
|
"react-day-picker": "^10.0.1",
|
|
42
42
|
"react-hook-form": "^7.71.2",
|
|
43
43
|
"react-i18next": "^17.0.8",
|
|
44
|
-
"react-textarea-autosize": "^8.5.9"
|
|
45
|
-
"tailwindcss": "^4.3.0"
|
|
44
|
+
"react-textarea-autosize": "^8.5.9"
|
|
46
45
|
},
|
|
47
46
|
"devDependencies": {
|
|
48
|
-
"@babel/core": "^8.0.1",
|
|
49
|
-
"@rolldown/plugin-babel": "^0.2.3",
|
|
50
|
-
"@tailwindcss/vite": "^4.3.1",
|
|
51
|
-
"@types/babel__core": "^7.20.5",
|
|
52
47
|
"@types/react": "^19.2.17",
|
|
53
48
|
"@types/react-dom": "^19.2.3",
|
|
54
|
-
"@vitejs/plugin-react": "^6.0.2",
|
|
55
|
-
"@vitest/coverage-istanbul": "^4.1.10",
|
|
56
|
-
"babel-plugin-react-compiler": "^1.0.0",
|
|
57
49
|
"msw": "^2.15.0",
|
|
58
|
-
"playwright": "^1.60.0",
|
|
59
|
-
"tw-animate-css": "^1.4.0",
|
|
60
50
|
"typescript": "^6.0.3",
|
|
61
|
-
"vite": "^8.1.4",
|
|
62
51
|
"vite-plus": "^0.2.4",
|
|
63
|
-
"vitest": "^
|
|
64
|
-
"
|
|
52
|
+
"vitest-browser-react": "^2.2.0",
|
|
53
|
+
"@repo/badge": "0.0.1",
|
|
54
|
+
"@repo/typescript": "0.0.1",
|
|
55
|
+
"@repo/mock-inertia": "3.5.0",
|
|
56
|
+
"@repo/themes": "0.0.1"
|
|
65
57
|
},
|
|
66
58
|
"peerDependencies": {
|
|
67
59
|
"@inertiajs/core": "^3.5.0",
|
|
@@ -76,6 +68,6 @@
|
|
|
76
68
|
},
|
|
77
69
|
"scripts": {
|
|
78
70
|
"build": "vp pack",
|
|
79
|
-
"test": "vp test run --coverage &&
|
|
71
|
+
"test": "vp test run --coverage && badge"
|
|
80
72
|
}
|
|
81
73
|
}
|