@gmcode/forms 0.0.6 → 0.0.8

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 CHANGED
@@ -82,7 +82,7 @@ function Page() {
82
82
 
83
83
  ## CSS themes
84
84
 
85
- - [Default](https://github.com/GiromettaMarco/forms/blob/master/tooling/themes/default.css)
85
+ - [Default](https://github.com/GiromettaMarco/forms/blob/master/internal/themes/default.css)
86
86
 
87
87
  ## Code Snippet
88
88
 
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,
@@ -180,11 +180,11 @@ declare function Form<TRuleset extends Ruleset$1, TSchema extends Schema<TRulese
180
180
  /**
181
181
  * How to display the root error from inertia.
182
182
  *
183
- * - `flash` - use the Toaster component
184
- * - `monitor` - use the ErrorMonitor component
185
- * - `none` - don't display the root error
183
+ * - `"flash"` - use the Toaster component
184
+ * - `"monitor"` - use the ErrorMonitor component
185
+ * - `"none"` - don't display the root error
186
186
  *
187
- * @defaultValue `flash`
187
+ * @defaultValue `"flash"`
188
188
  */
189
189
  rootError?: 'flash' | 'monitor' | 'none';
190
190
  onBefore?: GlobalEventCallback<'before', RequestPayload>;
@@ -200,14 +200,24 @@ declare function Form<TRuleset extends Ruleset$1, TSchema extends Schema<TRulese
200
200
  onStart?: GlobalEventCallback<'start', RequestPayload>;
201
201
  onSuccess?: GlobalEventCallback<'success', RequestPayload>;
202
202
  preserveScroll?: boolean;
203
+ /**
204
+ * Reset input values to their defaults on success.
205
+ *
206
+ * @defaultValue `true`
207
+ */
203
208
  resetOnSuccess?: boolean;
204
209
  route: RouteDefinition<Method>;
205
210
  schema: Schema<TRuleset>;
211
+ /**
212
+ * Set the submitted values as default values on success.
213
+ *
214
+ * @defaultValue `false`
215
+ */
206
216
  setDefaultsOnSuccess?: boolean;
207
217
  }): import("react").JSX.Element;
208
218
  //#endregion
209
219
  //#region src/components/hidden-field.d.ts
210
- declare function HiddenField<TFieldValues extends FieldValues = FieldValues>({
220
+ declare function HiddenField<TFieldValues extends FieldValues$1 = FieldValues$1>({
211
221
  autoComplete,
212
222
  className,
213
223
  type,
@@ -215,7 +225,7 @@ declare function HiddenField<TFieldValues extends FieldValues = FieldValues>({
215
225
  }: ComponentProps<typeof InputField<TFieldValues>>): import("react").JSX.Element;
216
226
  //#endregion
217
227
  //#region src/components/info-checkbox-field.d.ts
218
- declare function InfoCheckboxField<TFieldValues extends FieldValues = FieldValues>({
228
+ declare function InfoCheckboxField<TFieldValues extends FieldValues$1 = FieldValues$1>({
219
229
  children,
220
230
  className,
221
231
  control,
@@ -244,7 +254,7 @@ declare function InfoCheckboxField<TFieldValues extends FieldValues = FieldValue
244
254
  }): import("react").JSX.Element;
245
255
  //#endregion
246
256
  //#region src/components/nullable-select-field.d.ts
247
- declare function NullableSelectField<TFieldValues extends FieldValues = FieldValues>({
257
+ declare function NullableSelectField<TFieldValues extends FieldValues$1 = FieldValues$1>({
248
258
  autoComplete,
249
259
  control,
250
260
  description,
@@ -271,7 +281,7 @@ declare function NullableSelectField<TFieldValues extends FieldValues = FieldVal
271
281
  }): import("react").JSX.Element;
272
282
  //#endregion
273
283
  //#region src/components/numeric-field.d.ts
274
- declare function NumericField<TFieldValues extends FieldValues = FieldValues>({
284
+ declare function NumericField<TFieldValues extends FieldValues$1 = FieldValues$1>({
275
285
  autoComplete,
276
286
  control,
277
287
  disabled,
@@ -302,14 +312,14 @@ declare function NumericField<TFieldValues extends FieldValues = FieldValues>({
302
312
  }): import("react").JSX.Element;
303
313
  //#endregion
304
314
  //#region src/components/password-field.d.ts
305
- declare function PasswordField<TFieldValues extends FieldValues = FieldValues>({
315
+ declare function PasswordField<TFieldValues extends FieldValues$1 = FieldValues$1>({
306
316
  autoComplete,
307
317
  type,
308
318
  ...props
309
319
  }: ComponentProps<typeof InputField<TFieldValues>>): import("react").JSX.Element;
310
320
  //#endregion
311
321
  //#region src/components/select-field.d.ts
312
- declare function SelectField<TFieldValues extends FieldValues = FieldValues>({
322
+ declare function SelectField<TFieldValues extends FieldValues$1 = FieldValues$1>({
313
323
  autoComplete,
314
324
  control,
315
325
  description,
@@ -345,7 +355,7 @@ declare function Submit({
345
355
  }): import("react").JSX.Element;
346
356
  //#endregion
347
357
  //#region src/components/switch-field.d.ts
348
- declare function SwitchField<TFieldValues extends FieldValues = FieldValues>({
358
+ declare function SwitchField<TFieldValues extends FieldValues$1 = FieldValues$1>({
349
359
  control,
350
360
  disabled,
351
361
  inputId,
@@ -370,14 +380,14 @@ declare function SwitchField<TFieldValues extends FieldValues = FieldValues>({
370
380
  }): import("react").JSX.Element;
371
381
  //#endregion
372
382
  //#region src/components/text-field.d.ts
373
- declare function TextField<TFieldValues extends FieldValues = FieldValues>({
383
+ declare function TextField<TFieldValues extends FieldValues$1 = FieldValues$1>({
374
384
  autoComplete,
375
385
  type,
376
386
  ...props
377
387
  }: ComponentProps<typeof InputField<TFieldValues>>): import("react").JSX.Element;
378
388
  //#endregion
379
389
  //#region src/components/textarea-field.d.ts
380
- declare function TextareaField<TFieldValues extends FieldValues = FieldValues>({
390
+ declare function TextareaField<TFieldValues extends FieldValues$1 = FieldValues$1>({
381
391
  cacheMeasurements,
382
392
  control,
383
393
  inputId,
@@ -402,5 +412,5 @@ declare function TextareaField<TFieldValues extends FieldValues = FieldValues>({
402
412
  resize?: 'both' | 'none' | 'x' | 'y';
403
413
  }): import("react").JSX.Element;
404
414
  //#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 };
415
+ 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
416
  //# sourceMappingURL=index.d.mts.map
@@ -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":"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"}
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,aAAA,GAAc,aAAA;EAC/D,OAAA;EACA,YAAA;EACA,QAAA;EACA,OAAA;EACA,SAAA;EACA,KAAA;EACA,MAAA;EACA,YAAA;EAAA,GACG;AAAA,GACF,cAAA,QAAsB,KAAA;EACvB,OAAA,EAAS,OAAA,CAAQ,YAAA;EACjB,YAAA,IAAgB,IAAA,EAAM,IAAA;EACtB,QAAA,GAAW,OAAA,GAAU,OAAA;EACrB,OAAA;EACA,SAAA,EAAW,SAAA,CAAU,YAAA;EACrB,KAAA;EACA,MAAA,GAAS,OAAA,CAAQ,eAAA;EACjB,YAAA,IAAgB,MAAA,yBAA+B,IAAA;AAAA,oBAChD,GAAA,CAAA,OAAA;;;iBCvBe,aAAA,sBAAmC,aAAA,GAAc,aAAA;EAC/D,OAAA;EACA,QAAA;EACA,OAAA;EACA,SAAA;EACA,KAAA;EACA,eAAA;EACA,WAAA;EACA,QAAA;EACA,cAAA;EACA,KAAA;EAAA,GACG;AAAA,GACF,cAAA,QAAsB,KAAA;EACvB,OAAA,EAAS,OAAA,CAAQ,YAAA;EACjB,QAAA;EACA,OAAA;EACA,SAAA,EAAW,SAAA,CAAU,YAAA;EACrB,KAAA;EACA,eAAA,IACE,OAAA,EAAS,UAAA,CAAkB,YAAA,EAC3B,KAAA,EAAO,qBAAA,CAAsB,YAAA,EAAc,SAAA,CAAU,YAAA;EAEvD,QAAA;EACA,cAAA;EACA,KAAA;AAAA,oBACD,GAAA,CAAA,OAAA;;;iBCtBe,UAAA,sBAAgC,aAAA,GAAc,aAAA;EAC5D,YAAA;EACA,OAAA;EACA,QAAA;EACA,OAAA;EACA,SAAA;EACA,KAAA;EACA,WAAA;EACA,QAAA;EACA,IAAA;EAAA,GACG;AAAA,GACF,cAAA,QAAsB,KAAA;EACvB,YAAA,GAAe,8BAAA;EACf,OAAA,EAAS,OAAA,CAAQ,YAAA;EACjB,QAAA;EACA,OAAA;EACA,SAAA,EAAW,SAAA,CAAU,YAAA;EACrB,KAAA;EACA,WAAA;EACA,QAAA;EACA,IAAA,GAAO,sBAAA;AAAA,oBACR,GAAA,CAAA,OAAA;;;iBC3Be,UAAA,sBAAgC,aAAA,GAAc,aAAA;EAC5D,YAAA;EACA,IAAA;EAAA,GACG;AAAA,GACF,cAAA,QAAsB,UAAA,CAAW,YAAA,qBAAc,GAAA,CAAA,OAAA;;;iBCJlC,YAAA;EAAe;AAAA;EAAW,KAAA,GAAQ,SAAS;AAAA,oBAAE,GAAA,CAAA,OAAA;;;iBCU7C,eAAA,sBACO,aAAA,GAAc,aAAA;EAEnC,OAAA;EACA,YAAA;EACA,WAAA;EACA,QAAA;EACA,OAAA;EACA,SAAA;EACA,KAAA;EACA,OAAA;EAAA,GACG;AAAA,GACF,cAAA,QAAsB,QAAA;EACvB,OAAA,EAAS,OAAA,CAAQ,YAAA;EACjB,YAAA;EACA,WAAA;EACA,QAAA;EACA,OAAA;EACA,SAAA,EAAW,SAAA,CAAU,YAAA;EACrB,KAAA;EACA,OAAA,EAAS,KAAA,CAAM,MAAA;IAAW,IAAA,GAAO,EAAA,CAAG,QAAA,CAAS,aAAA;EAAA;AAAA,oBAC9C,GAAA,CAAA,OAAA;;;KCRI,QAAA,iBAAyB,aAAA;EAC5B,MAAA;EACA,IAAA;EACA;AAAA;EAEA,MAAA,EAAQ,cAAA;EACR,IAAA,EAAM,aAAA,CAAc,OAAA;EACpB,OAAA;AAAA,MACI,SAAA;AAAA,iBAEU,IAAA,kBACG,SAAA,kBACD,MAAA,CAAO,QAAA,mBACP,aAAA,CAAY,OAAA;EAE5B,QAAA;EACA,SAAA;EACA,QAAA;EACA,SAAA,EAAW,gBAAA;EACX,QAAA;EACA,cAAA;EACA,QAAA;EACA,aAAA;EACA,OAAA;EACA,QAAA;EACA,OAAA;EACA,YAAA;EACA,aAAA;EACA,UAAA;EACA,OAAA;EACA,SAAA;EACA,cAAA;EACA,cAAA;EACA,KAAA;EACA,MAAA;EACA;AAAA;EAEA,QAAA,EAAU,QAAA,CAAS,OAAA;EACnB,SAAA;EACA,QAAA,GAAW,OAAA,CAAQ,aAAA,CAAc,OAAA;ER3DjC;;;;ACJF;;;;AAAkB;EOyEhB,SAAA;EACA,QAAA,GAAW,mBAAA,WAA8B,cAAA;EACzC,cAAA,GAAiB,mBAAA,iBAAoC,cAAA;EACrD,QAAA,GAAW,mBAAA,WAA8B,cAAA;EACzC,aAAA,GAAgB,mBAAA;EAChB,OAAA,GAAU,mBAAA,UAA6B,cAAA;EACvC,QAAA,GAAW,mBAAA,WAA8B,cAAA;EACzC,OAAA,GAAU,mBAAA,UAA6B,cAAA;EACvC,YAAA,GAAe,mBAAA,eAAkC,cAAA;EACjD,aAAA,GAAgB,mBAAA,gBAAmC,cAAA;EACnD,UAAA,GAAa,mBAAA,aAAgC,cAAA;EAC7C,OAAA,GAAU,mBAAA,UAA6B,cAAA;EACvC,SAAA,GAAY,mBAAA,YAA+B,cAAA;EAC3C,cAAA;EPnFAT;;;;;EOyFA,cAAA;EACA,KAAA,EAAO,eAAA,CAAgB,MAAA;EACvB,MAAA,EAAQ,MAAA,CAAO,QAAA;EP1FuD;AAExE;;;;EO8FE,oBAAA;AAAA,oBACD,GAAA,CAAA,OAAA;;;iBCnGe,WAAA,sBAAiC,aAAA,GAAc,aAAA;EAC7D,YAAA;EACA,SAAA;EACA,IAAA;EAAA,GACG;AAAA,GACF,cAAA,QAAsB,UAAA,CAAW,YAAA,qBAAc,GAAA,CAAA,OAAA;;;iBCHlC,iBAAA,sBACO,aAAA,GAAc,aAAA;EAEnC,QAAA;EACA,SAAA;EACA,OAAA;EACA,QAAA;EACA,OAAA;EACA,SAAA;EACA,KAAA;EACA,eAAA;EACA,WAAA;EACA,QAAA;EACA,IAAA;EACA,cAAA;EACA,KAAA;EAAA,GACG;AAAA,GACF,cAAA,QAAsB,KAAA;EACvB,OAAA,EAAS,OAAA,CAAQ,YAAA;EACjB,QAAA;EACA,OAAA;EACA,SAAA,EAAW,SAAA,CAAU,YAAA;EACrB,KAAA;EACA,eAAA,IACE,OAAA,EAAS,UAAA,CAAkB,YAAA,EAC3B,KAAA,EAAO,qBAAA,CAAsB,YAAA,EAAc,SAAA,CAAU,YAAA;EAEvD,QAAA;EACA,IAAA;EACA,cAAA;EACA,KAAA;AAAA,oBACD,GAAA,CAAA,OAAA;;;iBCXe,mBAAA,sBACO,aAAA,GAAc,aAAA;EAEnC,YAAA;EACA,OAAA;EACA,WAAA;EACA,QAAA;EACA,OAAA;EACA,SAAA;EACA,KAAA;EACA,OAAA;EACA,WAAA;EACA,QAAA;EAAA,GACG;AAAA,GACF,cAAA,QAAsB,KAAA;EACvB,YAAA,GAAe,8BAAA;EACf,OAAA,EAAS,OAAA,CAAQ,YAAA;EACjB,WAAA;EACA,QAAA;EACA,OAAA;EACA,SAAA,EAAW,SAAA,CAAU,YAAA;EACrB,KAAA;EACA,OAAA,EAAS,MAAA;EACT,WAAA;EACA,QAAA,EAAU,eAAA,CAAgB,YAAA;EAC1B,IAAA,GAAO,sBAAA;AAAA,oBACR,GAAA,CAAA,OAAA;;;iBCAe,YAAA,sBAAkC,aAAA,GAAc,aAAA;EAC9D,YAAA;EACA,OAAA;EACA,QAAA;EACA,OAAA;EACA,SAAA;EACA,SAAA;EACA,KAAA;EACA,WAAA;EACA,IAAA;EACA,EAAA;EAAA,GACG;AAAA,GACF,cAAA,QAAsB,KAAA;EACvB,YAAA,GAAe,8BAAA;EACf,OAAA,EAAS,OAAA,CAAQ,YAAA;EACjB,QAAA;EACA,OAAA;EACA,SAAA;EACA,SAAA,EAAW,SAAA,CAAU,YAAA;EACrB,KAAA;EACA,WAAA;EACA,IAAA,GAAO,sBAAA;EACP,EAAA;IACE,GAAA;IACA,GAAA;IACA,QAAA,EAAU,eAAA,CAAgB,YAAA;IAC1B,IAAA;EAAA;AAAA,oBAEH,GAAA,CAAA,OAAA;;;iBC7Ee,aAAA,sBAAmC,aAAA,GAAc,aAAA;EAC/D,YAAA;EACA,IAAA;EAAA,GACG;AAAA,GACF,cAAA,QAAsB,UAAA,CAAW,YAAA,qBAAc,GAAA,CAAA,OAAA;;;iBCYlC,WAAA,sBAAiC,aAAA,GAAc,aAAA;EAC7D,YAAA;EACA,OAAA;EACA,WAAA;EACA,QAAA;EACA,OAAA;EACA,SAAA;EACA,KAAA;EACA,OAAA;EACA,WAAA;EAAA,GACG;AAAA,GACF,cAAA,QAAsB,KAAA;EACvB,YAAA,GAAe,8BAAA;EACf,OAAA,EAAS,OAAA,CAAQ,YAAA;EACjB,WAAA;EACA,QAAA;EACA,OAAA;EACA,SAAA,EAAW,SAAA,CAAU,YAAA;EACrB,KAAA;EACA,OAAA,EAAS,MAAA;EACT,WAAA;EACA,IAAA,GAAO,sBAAA;AAAA,oBACR,GAAA,CAAA,OAAA;;;iBCtCe,MAAA;EACd,KAAA;EACA,OAAA;EACA,IAAA;EAAA,GACG;AAAA,GACF,cAAA,QAAsB,MAAA;EACvB,KAAA;EACA,OAAA;AAAA,oBACD,GAAA,CAAA,OAAA;;;iBCLe,WAAA,sBAAiC,aAAA,GAAc,aAAA;EAC7D,OAAA;EACA,QAAA;EACA,OAAA;EACA,SAAA;EACA,KAAA;EACA,eAAA;EACA,WAAA;EACA,QAAA;EACA,cAAA;EACA,KAAA;EAAA,GACG;AAAA,GACF,cAAA,QAAsB,KAAA;EACvB,OAAA,EAAS,OAAA,CAAQ,YAAA;EACjB,QAAA;EACA,OAAA;EACA,SAAA,EAAW,SAAA,CAAU,YAAA;EACrB,KAAA;EACA,eAAA,IACE,OAAA,EAAS,UAAA,CAAkB,YAAA,EAC3B,KAAA,EAAO,qBAAA,CAAsB,YAAA,EAAc,SAAA,CAAU,YAAA;EAEvD,QAAA;EACA,cAAA;EACA,KAAA;AAAA,oBACD,GAAA,CAAA,OAAA;;;iBC5Be,SAAA,sBAA+B,aAAA,GAAc,aAAA;EAC3D,YAAA;EACA,IAAA;EAAA,GACG;AAAA,GACF,cAAA,QAAsB,UAAA,CAAW,YAAA,qBAAc,GAAA,CAAA,OAAA;;;iBCDlC,aAAA,sBAAmC,aAAA,GAAc,aAAA;EAC/D,iBAAA;EACA,OAAA;EACA,OAAA;EACA,SAAA;EACA,KAAA;EACA,OAAA;EACA,OAAA;EACA,cAAA;EACA,WAAA;EACA,MAAA;EAAA,GACG;AAAA,GACF,cAAA,QAAsB,KAAA;EACvB,iBAAA;EACA,OAAA,EAAS,OAAA,CAAQ,YAAA;EACjB,OAAA;EACA,SAAA,EAAW,SAAA,CAAU,YAAA;EACrB,KAAA;EACA,OAAA;EACA,OAAA;EACA,cAAA,IAAkB,MAAA,UAAgB,IAAA,EAAM,wBAAA;EACxC,WAAA;EACA,MAAA;AAAA,oBACD,GAAA,CAAA,OAAA"}
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]!==`a56eacc08ebde73bd0415650037f76238ce2a27cc1a498f3d4b1e0b95e21f7e9`){for(let e=0;e<9;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`a56eacc08ebde73bd0415650037f76238ce2a27cc1a498f3d4b1e0b95e21f7e9`}let{error:n}=e,{t:r}=A();if(!n?.message)return null;if(r.name===`notReadyT`){let e;return t[1]===n?e=t[2]:(e=j(s,{errors:n}),t[1]=n,t[2]=e),e}let i;t[3]!==n.message||t[4]!==n.params||t[5]!==r?(i=r(n.message,n.params),t[3]=n.message,t[4]=n.params,t[5]=r,t[6]=i):i=t[6];let a;return t[7]===i?a=t[8]:(a=j(s,{errors:{message:i}}),t[7]=i,t[8]=a),a}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
@@ -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":"0nCAGA,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,EAAa,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,EACf,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,GAAe,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,CAQZ,CATW,CAAA,CAdT,IA2BP,EAAC,EAAD,CACc,aAAA,EAAE,EAAc,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,GAAA,EAAA,CAAA,OAyE4B,EAAC,KAAM,CAzEnC,SAAA,EAAA,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"}
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.name === 'notReadyT') {\n return <FieldError errors={error} />\n }\n\n // @ts-expect-error: assert error.message to be a translation key\n return <FieldError errors={{ message: t(error.message, error.params) }} />\n}\n","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 /**\n * Reset input values to their defaults on success.\n *\n * @defaultValue `true`\n */\n resetOnSuccess?: boolean\n route: RouteDefinition<Method>\n schema: Schema<TRuleset>\n /**\n * Set the submitted values as default values on success.\n *\n * @defaultValue `false`\n */\n setDefaultsOnSuccess?: boolean\n}) {\n const [rootError, setRootError] = useState<ErrorData>()\n\n const defaultValues = Object.fromEntries(\n Object.keys(schema.ruleset).map((field) => [field, defaults[field] ?? ''])\n ) as DefaultValues<TValues>\n\n // React Hook Form\n const reactForm = userReactForm<TValues>({\n defaultValues,\n resolver: useTsvResolver(schema)\n })\n\n // Inertia\n const inertiaForm = useInertiaForm<object>(defaultValues)\n\n function onErrorWithToast(errors: Errors) {\n if (errors.root) {\n if (displayRootError === 'flash') {\n flash({ level: 'error', title: errors.root })\n } else if (displayRootError === 'monitor') {\n setRootError({ message: errors.root })\n }\n }\n\n if (onError) {\n onError(errors)\n }\n }\n\n function onSuccessWithReset(page: Page<SharedPageProps>) {\n if (setDefaultsOnSuccess) {\n inertiaForm.setDefaults()\n reactForm.reset(reactForm.getValues())\n }\n\n if (resetOnSuccess) {\n inertiaForm.reset()\n reactForm.reset()\n }\n\n if (onSuccess) {\n onSuccess(page)\n }\n }\n\n // Submit handler\n function onSubmit(values: TValues) {\n inertiaForm.transform(() => values)\n inertiaForm[route.method](route.url, {\n onBefore,\n onBeforeUpdate,\n onCancel,\n onCancelToken,\n onError: onErrorWithToast,\n onFinish,\n onFlash,\n onPrefetched,\n onPrefetching,\n onProgress,\n onStart,\n onSuccess: onSuccessWithReset,\n preserveScroll\n })\n }\n\n // Add inertia (server) errors to react form.\n useEffect(() => {\n for (const [key, error] of Object.entries(inertiaForm.errors)) {\n if (error) {\n reactForm.setError(key as Path<TValues>, {\n message: error as string,\n type: 'inertia'\n })\n }\n }\n }, [inertiaForm.errors, reactForm])\n\n return (\n <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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gmcode/forms",
3
- "version": "0.0.6",
3
+ "version": "0.0.8",
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.3",
36
- "@gmcode/tsv-hookform": "^0.1.2",
37
- "@gmcode/tsv-input": "^0.2.2",
35
+ "@gmcode/react-ui": "^0.3.4",
36
+ "@gmcode/tsv-hookform": "^0.1.3",
37
+ "@gmcode/tsv-input": "^0.2.4",
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": "^4.1.10",
64
- "vitest-browser-react": "^2.2.0"
52
+ "vitest-browser-react": "^2.2.0",
53
+ "@repo/badge": "0.0.1",
54
+ "@repo/typescript": "0.0.1",
55
+ "@repo/themes": "0.0.1",
56
+ "@repo/mock-inertia": "3.5.0"
65
57
  },
66
58
  "peerDependencies": {
67
59
  "@inertiajs/core": "^3.5.0",
@@ -76,6 +68,7 @@
76
68
  },
77
69
  "scripts": {
78
70
  "build": "vp pack",
79
- "test": "vp test run --coverage && node ../../tooling/scripts/badge.ts"
71
+ "test": "vp test run --coverage && badge",
72
+ "test:ui": "vp test watch --browser.headless=false"
80
73
  }
81
74
  }