wcz-test 6.7.6 → 6.7.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/hooks.cjs ADDED
@@ -0,0 +1,534 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // src/hooks.ts
31
+ var hooks_exports = {};
32
+ __export(hooks_exports, {
33
+ useDialogs: () => useDialogs,
34
+ useFieldContext: () => useFieldContext,
35
+ useFormContext: () => useFormContext,
36
+ useInView: () => import_react_intersection_observer.useInView,
37
+ useLayoutForm: () => useLayoutForm,
38
+ withLayoutForm: () => withLayoutForm
39
+ });
40
+ module.exports = __toCommonJS(hooks_exports);
41
+
42
+ // src/hooks/FormHooks.ts
43
+ var import_react_form = require("@tanstack/react-form");
44
+
45
+ // src/components/form/FormAutocomplete.tsx
46
+ var import_material = require("@mui/material");
47
+
48
+ // src/lib/utils.ts
49
+ var import_axios = __toESM(require("axios"), 1);
50
+
51
+ // src/env.ts
52
+ var import_env_core = require("@t3-oss/env-core");
53
+ var import_zod = require("zod");
54
+ var import_meta = {};
55
+ var clientEnv = (0, import_env_core.createEnv)({
56
+ clientPrefix: "VITE_",
57
+ client: {
58
+ VITE_APP_TITLE: import_zod.z.string(),
59
+ VITE_MUI_LICENSE_KEY: import_zod.z.string(),
60
+ VITE_API_URL: import_zod.z.url()
61
+ },
62
+ runtimeEnv: import_meta.env,
63
+ emptyStringAsUndefined: true
64
+ });
65
+ var serverEnv = (0, import_env_core.createEnv)({
66
+ server: {
67
+ DATABASE_URL: import_zod.z.string(),
68
+ MICROSOFT_CLIENT_ID: import_zod.z.string(),
69
+ MICROSOFT_CLIENT_SECRET: import_zod.z.string()
70
+ },
71
+ runtimeEnv: process.env,
72
+ emptyStringAsUndefined: true
73
+ });
74
+
75
+ // src/lib/utils.ts
76
+ var httpClient = import_axios.default.create({
77
+ baseURL: clientEnv.VITE_API_URL
78
+ // TODO: Not working in children projects
79
+ });
80
+ var getFieldStatus = (field) => {
81
+ const { meta } = field.state;
82
+ const isTouched = meta.isTouched;
83
+ const hasError = !!meta.errors.length;
84
+ const helperText = meta.errors[0]?.message;
85
+ return { isTouched, hasError, helperText };
86
+ };
87
+
88
+ // src/components/form/FormAutocomplete.tsx
89
+ var import_jsx_runtime = require("react/jsx-runtime");
90
+ var FormAutocomplete = ({ textFieldProps, ...autocompleteProps }) => {
91
+ const field = useFieldContext();
92
+ const { isTouched, hasError, helperText } = getFieldStatus(field);
93
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
94
+ import_material.Autocomplete,
95
+ {
96
+ value: field.state.value,
97
+ onChange: (_, value) => !autocompleteProps.freeSolo && field.handleChange(value),
98
+ onInputChange: (_, value, reason) => reason !== "reset" && autocompleteProps.freeSolo && field.handleChange(value),
99
+ onBlur: field.handleBlur,
100
+ "aria-label": field.name,
101
+ ...autocompleteProps,
102
+ renderInput: (parameters) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
103
+ import_material.TextField,
104
+ {
105
+ ...parameters,
106
+ name: field.name,
107
+ error: isTouched && hasError,
108
+ helperText: isTouched && helperText,
109
+ ...textFieldProps
110
+ }
111
+ )
112
+ }
113
+ );
114
+ };
115
+
116
+ // src/components/form/FormCheckbox.tsx
117
+ var import_material2 = require("@mui/material");
118
+ var import_jsx_runtime2 = require("react/jsx-runtime");
119
+ var FormCheckbox = (props) => {
120
+ const field = useFieldContext();
121
+ const { isTouched, hasError, helperText } = getFieldStatus(field);
122
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(import_material2.FormControl, { component: "fieldset", children: [
123
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
124
+ import_material2.FormControlLabel,
125
+ {
126
+ control: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
127
+ import_material2.Checkbox,
128
+ {
129
+ name: field.name,
130
+ checked: Boolean(field.state.value),
131
+ onChange: (event) => field.handleChange(event.target.checked),
132
+ onBlur: field.handleBlur,
133
+ "aria-label": field.name,
134
+ ...props
135
+ }
136
+ ),
137
+ label: props.label ?? ""
138
+ }
139
+ ),
140
+ isTouched && hasError && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_material2.FormHelperText, { error: hasError, children: helperText })
141
+ ] });
142
+ };
143
+
144
+ // src/components/form/FormDatePicker.tsx
145
+ var import_x_date_pickers_pro = require("@mui/x-date-pickers-pro");
146
+ var import_jsx_runtime3 = require("react/jsx-runtime");
147
+ var FormDatePicker = (props) => {
148
+ const field = useFieldContext();
149
+ const { isTouched, hasError, helperText } = getFieldStatus(field);
150
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
151
+ import_x_date_pickers_pro.DatePicker,
152
+ {
153
+ name: field.name,
154
+ value: field.state.value,
155
+ onChange: (value) => field.handleChange(value),
156
+ slotProps: {
157
+ textField: {
158
+ onBlur: field.handleBlur,
159
+ error: isTouched && hasError,
160
+ helperText: isTouched && helperText,
161
+ ...props.textFieldProps
162
+ },
163
+ ...props.slotProps
164
+ },
165
+ "aria-label": field.name,
166
+ ...props
167
+ }
168
+ );
169
+ };
170
+
171
+ // src/components/form/FormDateRangePicker.tsx
172
+ var import_x_date_pickers_pro2 = require("@mui/x-date-pickers-pro");
173
+ var import_jsx_runtime4 = require("react/jsx-runtime");
174
+ var FormDateRangePicker = (props) => {
175
+ const field = useFieldContext();
176
+ const { isTouched, hasError, helperText } = getFieldStatus(field);
177
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
178
+ import_x_date_pickers_pro2.DateRangePicker,
179
+ {
180
+ name: field.name,
181
+ value: field.state.value,
182
+ onChange: (value) => field.handleChange(value),
183
+ slotProps: {
184
+ textField: {
185
+ onBlur: field.handleBlur,
186
+ error: isTouched && hasError,
187
+ helperText: isTouched && helperText,
188
+ ...props.textFieldProps
189
+ },
190
+ ...props.slotProps
191
+ },
192
+ "aria-label": field.name,
193
+ ...props
194
+ }
195
+ );
196
+ };
197
+
198
+ // src/components/form/FormTimePicker.tsx
199
+ var import_x_date_pickers_pro3 = require("@mui/x-date-pickers-pro");
200
+ var import_jsx_runtime5 = require("react/jsx-runtime");
201
+ var FormTimePicker = (props) => {
202
+ const field = useFieldContext();
203
+ const { isTouched, hasError, helperText } = getFieldStatus(field);
204
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
205
+ import_x_date_pickers_pro3.TimePicker,
206
+ {
207
+ name: field.name,
208
+ value: field.state.value,
209
+ onChange: (value) => field.handleChange(value),
210
+ slotProps: {
211
+ textField: {
212
+ onBlur: field.handleBlur,
213
+ error: isTouched && hasError,
214
+ helperText: isTouched && helperText,
215
+ ...props.textFieldProps
216
+ },
217
+ ...props.slotProps
218
+ },
219
+ "aria-label": field.name,
220
+ ...props
221
+ }
222
+ );
223
+ };
224
+
225
+ // src/components/form/FormTimeRangePicker.tsx
226
+ var import_x_date_pickers_pro4 = require("@mui/x-date-pickers-pro");
227
+ var import_jsx_runtime6 = require("react/jsx-runtime");
228
+ var FormTimeRangePicker = (props) => {
229
+ const field = useFieldContext();
230
+ const { isTouched, hasError, helperText } = getFieldStatus(field);
231
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
232
+ import_x_date_pickers_pro4.TimeRangePicker,
233
+ {
234
+ name: field.name,
235
+ value: field.state.value,
236
+ onChange: (value) => field.handleChange(value),
237
+ slotProps: {
238
+ textField: {
239
+ onBlur: field.handleBlur,
240
+ error: isTouched && hasError,
241
+ helperText: isTouched && helperText,
242
+ ...props.textFieldProps
243
+ },
244
+ ...props.slotProps
245
+ },
246
+ "aria-label": field.name,
247
+ ...props
248
+ }
249
+ );
250
+ };
251
+
252
+ // src/components/form/FormDateTimePicker.tsx
253
+ var import_x_date_pickers_pro5 = require("@mui/x-date-pickers-pro");
254
+ var import_jsx_runtime7 = require("react/jsx-runtime");
255
+ var FormDateTimePicker = (props) => {
256
+ const field = useFieldContext();
257
+ const { isTouched, hasError, helperText } = getFieldStatus(field);
258
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
259
+ import_x_date_pickers_pro5.DateTimePicker,
260
+ {
261
+ name: field.name,
262
+ value: field.state.value,
263
+ onChange: (value) => field.handleChange(value),
264
+ slotProps: {
265
+ textField: {
266
+ onBlur: field.handleBlur,
267
+ error: isTouched && hasError,
268
+ helperText: isTouched && helperText,
269
+ ...props.textFieldProps
270
+ },
271
+ ...props.slotProps
272
+ },
273
+ "aria-label": field.name,
274
+ ...props
275
+ }
276
+ );
277
+ };
278
+
279
+ // src/components/form/FormDateTimeRangePicker.tsx
280
+ var import_x_date_pickers_pro6 = require("@mui/x-date-pickers-pro");
281
+ var import_jsx_runtime8 = require("react/jsx-runtime");
282
+ var FormDateTimeRangePicker = (props) => {
283
+ const field = useFieldContext();
284
+ const { isTouched, hasError, helperText } = getFieldStatus(field);
285
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
286
+ import_x_date_pickers_pro6.DateTimeRangePicker,
287
+ {
288
+ name: field.name,
289
+ value: field.state.value,
290
+ onChange: (value) => field.handleChange(value),
291
+ slotProps: {
292
+ textField: {
293
+ onBlur: field.handleBlur,
294
+ error: isTouched && hasError,
295
+ helperText: isTouched && helperText,
296
+ ...props.textFieldProps
297
+ },
298
+ ...props.slotProps
299
+ },
300
+ "aria-label": field.name,
301
+ ...props
302
+ }
303
+ );
304
+ };
305
+
306
+ // src/components/form/FormNumberField.tsx
307
+ var import_material3 = require("@mui/material");
308
+ var import_react_number_format = require("react-number-format");
309
+ var import_jsx_runtime9 = require("react/jsx-runtime");
310
+ var FormNumberField = ({ options, ...props }) => {
311
+ const field = useFieldContext();
312
+ const { isTouched, hasError, helperText } = getFieldStatus(field);
313
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
314
+ import_react_number_format.NumericFormat,
315
+ {
316
+ customInput: import_material3.TextField,
317
+ name: field.name,
318
+ value: field.state.value ?? "",
319
+ onValueChange: ({ floatValue }) => field.handleChange(floatValue),
320
+ onBlur: field.handleBlur,
321
+ error: isTouched && hasError,
322
+ helperText: isTouched && helperText,
323
+ "aria-label": field.name,
324
+ ...props,
325
+ ...options
326
+ }
327
+ );
328
+ };
329
+
330
+ // src/components/form/FormRadioGroup.tsx
331
+ var import_material4 = require("@mui/material");
332
+ var import_jsx_runtime10 = require("react/jsx-runtime");
333
+ var FormRadioGroup = ({ label, options, ...props }) => {
334
+ const field = useFieldContext();
335
+ const { isTouched, hasError, helperText } = getFieldStatus(field);
336
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(import_material4.FormControl, { component: "fieldset", children: [
337
+ label && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_material4.FormLabel, { component: "legend", children: label }),
338
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
339
+ import_material4.RadioGroup,
340
+ {
341
+ name: field.name,
342
+ value: field.state.value ?? "",
343
+ onChange: (event) => field.handleChange(event.target.value),
344
+ onBlur: field.handleBlur,
345
+ "aria-label": field.name,
346
+ ...props,
347
+ children: options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
348
+ import_material4.FormControlLabel,
349
+ {
350
+ value: option.value,
351
+ control: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_material4.Radio, {}),
352
+ label: option.label
353
+ },
354
+ option.value
355
+ ))
356
+ }
357
+ ),
358
+ isTouched && hasError && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_material4.FormHelperText, { error: hasError, children: helperText })
359
+ ] });
360
+ };
361
+
362
+ // src/components/form/FormSlider.tsx
363
+ var import_material5 = require("@mui/material");
364
+ var import_jsx_runtime11 = require("react/jsx-runtime");
365
+ var FormSlider = ({ label, ...props }) => {
366
+ const field = useFieldContext();
367
+ const { isTouched, hasError, helperText } = getFieldStatus(field);
368
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_material5.FormControl, { component: "fieldset", children: [
369
+ label && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_material5.FormLabel, { children: label }),
370
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
371
+ import_material5.Slider,
372
+ {
373
+ name: field.name,
374
+ value: field.state.value ?? 0,
375
+ onChange: (_, value) => field.handleChange(Array.isArray(value) ? value[0] : value),
376
+ onBlur: field.handleBlur,
377
+ "aria-label": field.name,
378
+ ...props
379
+ }
380
+ ),
381
+ isTouched && hasError && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_material5.FormHelperText, { error: hasError, children: helperText })
382
+ ] });
383
+ };
384
+
385
+ // src/components/form/FormSubmitButton.tsx
386
+ var import_material6 = require("@mui/material");
387
+ var import_jsx_runtime12 = require("react/jsx-runtime");
388
+ var FormSubmitButton = (props) => {
389
+ const form = useFormContext();
390
+ const handleClick = (event) => {
391
+ event.preventDefault();
392
+ event.stopPropagation();
393
+ form.handleSubmit();
394
+ };
395
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(form.Subscribe, { selector: (state) => [state.canSubmit, state.isSubmitting], children: ([canSubmit, isSubmitting]) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
396
+ import_material6.Button,
397
+ {
398
+ loading: isSubmitting,
399
+ disabled: !canSubmit,
400
+ onClick: handleClick,
401
+ type: "submit",
402
+ "aria-label": "submit",
403
+ ...props
404
+ }
405
+ ) });
406
+ };
407
+
408
+ // src/components/form/FormSwitch.tsx
409
+ var import_material7 = require("@mui/material");
410
+ var import_jsx_runtime13 = require("react/jsx-runtime");
411
+ var FormSwitch = (props) => {
412
+ const field = useFieldContext();
413
+ const { isTouched, hasError, helperText } = getFieldStatus(field);
414
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_material7.FormControl, { component: "fieldset", children: [
415
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
416
+ import_material7.FormControlLabel,
417
+ {
418
+ control: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
419
+ import_material7.Switch,
420
+ {
421
+ name: field.name,
422
+ checked: Boolean(field.state.value),
423
+ onChange: (event) => field.handleChange(event.target.checked),
424
+ onBlur: field.handleBlur,
425
+ "aria-label": field.name,
426
+ ...props
427
+ }
428
+ ),
429
+ label: props.label ?? ""
430
+ }
431
+ ),
432
+ isTouched && hasError && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_material7.FormHelperText, { error: hasError, children: helperText })
433
+ ] });
434
+ };
435
+
436
+ // src/components/form/FormTextField.tsx
437
+ var import_material8 = require("@mui/material");
438
+ var import_jsx_runtime14 = require("react/jsx-runtime");
439
+ var FormTextField = (props) => {
440
+ const field = useFieldContext();
441
+ const { isTouched, hasError, helperText } = getFieldStatus(field);
442
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
443
+ import_material8.TextField,
444
+ {
445
+ name: field.name,
446
+ value: field.state.value ?? "",
447
+ onChange: (event) => field.handleChange(event.target.value),
448
+ onBlur: field.handleBlur,
449
+ error: isTouched && hasError,
450
+ helperText: isTouched && helperText,
451
+ "aria-label": field.name,
452
+ ...props
453
+ }
454
+ );
455
+ };
456
+
457
+ // src/hooks/FormHooks.ts
458
+ var { fieldContext, useFieldContext, formContext, useFormContext } = (0, import_react_form.createFormHookContexts)();
459
+ var { useAppForm: useLayoutForm, withForm: withLayoutForm } = (0, import_react_form.createFormHook)({
460
+ fieldComponents: {
461
+ TextField: FormTextField,
462
+ NumberField: FormNumberField,
463
+ Autocomplete: FormAutocomplete,
464
+ Checkbox: FormCheckbox,
465
+ Switch: FormSwitch,
466
+ RadioGroup: FormRadioGroup,
467
+ Slider: FormSlider,
468
+ DatePicker: FormDatePicker,
469
+ DateRangePicker: FormDateRangePicker,
470
+ TimePicker: FormTimePicker,
471
+ TimeRangePicker: FormTimeRangePicker,
472
+ DateTimePicker: FormDateTimePicker,
473
+ DateTimeRangePicker: FormDateTimeRangePicker
474
+ },
475
+ formComponents: {
476
+ SubmitButton: FormSubmitButton
477
+ },
478
+ fieldContext,
479
+ formContext
480
+ });
481
+
482
+ // src/hooks/DialogsHooks.tsx
483
+ var import_material9 = require("@mui/material");
484
+ var import_react2 = require("react");
485
+ var import_react_i18next = require("react-i18next");
486
+
487
+ // src/contexts/DialogsContext.ts
488
+ var import_react = require("react");
489
+ var DialogsContext = (0, import_react.createContext)({});
490
+
491
+ // src/hooks/DialogsHooks.tsx
492
+ var import_jsx_runtime15 = require("react/jsx-runtime");
493
+ function AlertDialog({ open, payload, onClose }) {
494
+ const { t } = (0, import_react_i18next.useTranslation)();
495
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_material9.Dialog, { maxWidth: "xs", fullWidth: true, open, onClose: () => onClose(), disableRestoreFocus: true, children: [
496
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_material9.DialogTitle, { children: payload.title ?? t("Layout.Dialog.Alert") }),
497
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_material9.DialogContent, { children: payload.message }),
498
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_material9.DialogActions, { children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_material9.Button, { onClick: () => onClose(), autoFocus: true, children: t("Layout.Dialog.Confirm") }) })
499
+ ] });
500
+ }
501
+ function ConfirmDialog({ open, payload, onClose }) {
502
+ const { t } = (0, import_react_i18next.useTranslation)();
503
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_material9.Dialog, { maxWidth: "xs", fullWidth: true, open, onClose: () => onClose(false), disableRestoreFocus: true, children: [
504
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_material9.DialogTitle, { children: payload.title ?? t("Layout.Dialog.Confirm") }),
505
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_material9.DialogContent, { children: payload.message }),
506
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_material9.DialogActions, { children: [
507
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_material9.Button, { onClick: () => onClose(false), children: payload.cancelText ?? t("Layout.Dialog.Cancel") }),
508
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_material9.Button, { onClick: () => onClose(true), autoFocus: true, children: t("Layout.Dialog.Confirm") })
509
+ ] })
510
+ ] });
511
+ }
512
+ function useDialogs() {
513
+ const { open, close } = (0, import_react2.useContext)(DialogsContext);
514
+ const alert = (0, import_material9.useEventCallback)(
515
+ (message, { ...options } = {}) => open(AlertDialog, { ...options, message })
516
+ );
517
+ const confirm = (0, import_material9.useEventCallback)(
518
+ (message, { ...options } = {}) => open(ConfirmDialog, { ...options, message })
519
+ );
520
+ return { alert, confirm, open, close };
521
+ }
522
+
523
+ // src/hooks.ts
524
+ var import_react_intersection_observer = require("react-intersection-observer");
525
+ // Annotate the CommonJS export names for ESM import in node:
526
+ 0 && (module.exports = {
527
+ useDialogs,
528
+ useFieldContext,
529
+ useFormContext,
530
+ useInView,
531
+ useLayoutForm,
532
+ withLayoutForm
533
+ });
534
+ //# sourceMappingURL=hooks.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/hooks.ts","../src/hooks/FormHooks.ts","../src/components/form/FormAutocomplete.tsx","../src/lib/utils.ts","../src/env.ts","../src/components/form/FormCheckbox.tsx","../src/components/form/FormDatePicker.tsx","../src/components/form/FormDateRangePicker.tsx","../src/components/form/FormTimePicker.tsx","../src/components/form/FormTimeRangePicker.tsx","../src/components/form/FormDateTimePicker.tsx","../src/components/form/FormDateTimeRangePicker.tsx","../src/components/form/FormNumberField.tsx","../src/components/form/FormRadioGroup.tsx","../src/components/form/FormSlider.tsx","../src/components/form/FormSubmitButton.tsx","../src/components/form/FormSwitch.tsx","../src/components/form/FormTextField.tsx","../src/hooks/DialogsHooks.tsx","../src/contexts/DialogsContext.ts"],"sourcesContent":["export { useFieldContext, useFormContext, useLayoutForm, withLayoutForm } from \"./hooks/FormHooks\";\r\nexport { useDialogs } from \"./hooks/DialogsHooks\";\r\nexport type { DialogProps } from \"./hooks/DialogsHooks\";\r\nexport { useInView } from \"react-intersection-observer\";\r\n","import { createFormHook, createFormHookContexts } from \"@tanstack/react-form\";\r\nimport { FormAutocomplete as Autocomplete } from \"~/components/form/FormAutocomplete\";\r\nimport { FormCheckbox as Checkbox } from \"~/components/form/FormCheckbox\";\r\nimport { FormDatePicker as DatePicker } from \"~/components/form/FormDatePicker\";\r\nimport { FormDateRangePicker as DateRangePicker } from \"~/components/form/FormDateRangePicker\";\r\nimport { FormTimePicker as TimePicker } from \"~/components/form/FormTimePicker\";\r\nimport { FormTimeRangePicker as TimeRangePicker } from \"~/components/form/FormTimeRangePicker\";\r\nimport { FormDateTimePicker as DateTimePicker } from \"~/components/form/FormDateTimePicker\";\r\nimport { FormDateTimeRangePicker as DateTimeRangePicker } from \"~/components/form/FormDateTimeRangePicker\";\r\nimport { FormNumberField as NumberField } from \"~/components/form/FormNumberField\";\r\nimport { FormRadioGroup as RadioGroup } from \"~/components/form/FormRadioGroup\";\r\nimport { FormSlider as Slider } from \"~/components/form/FormSlider\";\r\nimport { FormSubmitButton as SubmitButton } from \"~/components/form/FormSubmitButton\";\r\nimport { FormSwitch as Switch } from \"~/components/form/FormSwitch\";\r\nimport { FormTextField as TextField } from \"~/components/form/FormTextField\";\r\n\r\nexport const { fieldContext, useFieldContext, formContext, useFormContext } = createFormHookContexts();\r\n\r\nexport const { useAppForm: useLayoutForm, withForm: withLayoutForm } =\r\n createFormHook({\r\n fieldComponents: {\r\n TextField,\r\n NumberField,\r\n Autocomplete,\r\n Checkbox,\r\n Switch,\r\n RadioGroup,\r\n Slider,\r\n DatePicker,\r\n DateRangePicker,\r\n TimePicker,\r\n TimeRangePicker,\r\n DateTimePicker,\r\n DateTimeRangePicker,\r\n },\r\n formComponents: {\r\n SubmitButton,\r\n },\r\n fieldContext,\r\n formContext,\r\n });\r\n","import { Autocomplete, TextField } from \"@mui/material\";\r\nimport type { AutocompleteProps, TextFieldProps } from \"@mui/material\";\r\nimport type { FC } from \"react\";\r\nimport type { FormOmittedProps } from \"~/lib/utils\";\r\nimport { useFieldContext } from \"~/hooks/FormHooks\";\r\nimport { getFieldStatus } from \"~/lib/utils\";\r\n\r\nexport interface FormAutocompleteProps extends Omit<AutocompleteProps<any, boolean, boolean, boolean>, FormOmittedProps> {\r\n textFieldProps?: Omit<TextFieldProps, FormOmittedProps>;\r\n}\r\n\r\nexport const FormAutocomplete: FC<FormAutocompleteProps> = ({ textFieldProps, ...autocompleteProps }) => {\r\n const field = useFieldContext();\r\n const { isTouched, hasError, helperText } = getFieldStatus(field);\r\n\r\n return (\r\n <Autocomplete\r\n value={field.state.value}\r\n onChange={(_, value) => !autocompleteProps.freeSolo && field.handleChange(value)}\r\n onInputChange={(_, value, reason) => reason !== \"reset\" && autocompleteProps.freeSolo && field.handleChange(value)}\r\n onBlur={field.handleBlur}\r\n aria-label={field.name}\r\n {...autocompleteProps}\r\n renderInput={(parameters) =>\r\n <TextField\r\n {...parameters}\r\n name={field.name}\r\n error={isTouched && hasError}\r\n helperText={isTouched && helperText}\r\n {...textFieldProps}\r\n />\r\n }\r\n />\r\n );\r\n};","import axios from \"axios\";\r\nimport type { AnyFieldApi } from \"@tanstack/react-form\";\r\nimport { clientEnv } from \"~/env\";\r\n\r\nexport class Platform {\r\n static get isAndroid() { return /android/i.test(this.userAgent); }\r\n static get isIOS() { return /iPad|iPhone|iPod/.test(this.userAgent); }\r\n static get isWindows() { return /windows/i.test(this.userAgent); }\r\n static get isMacOS() { return /Macintosh|MacIntel|MacPPC|Mac68K/.test(this.userAgent); }\r\n\r\n private static get userAgent() { return typeof navigator === \"undefined\" ? \"\" : navigator.userAgent; }\r\n}\r\n\r\nexport const rootRouteHead = () => ({\r\n meta: [\r\n { charSet: \"utf-8\" },\r\n { name: \"viewport\", content: \"width=device-width, initial-scale=1\" },\r\n { title: clientEnv.VITE_APP_TITLE },\r\n { name: \"og:type\", content: \"website\" },\r\n { name: \"og:title\", content: clientEnv.VITE_APP_TITLE },\r\n { name: \"og:image\", content: \"/favicon-32x32.png\" }\r\n ],\r\n links: [\r\n { rel: \"apple-touch-icon\", sizes: \"180x180\", href: \"/apple-touch-icon.png\", },\r\n { rel: \"icon\", type: \"image/png\", sizes: \"32x32\", href: \"/favicon-32x32.png\", },\r\n { rel: \"icon\", type: \"image/png\", sizes: \"16x16\", href: \"/favicon-16x16.png\", },\r\n { rel: \"manifest\", href: \"/manifest.webmanifest\" },\r\n { rel: \"icon\", href: \"/favicon.ico\" },\r\n ],\r\n});\r\n\r\nexport const httpClient = axios.create({\r\n baseURL: clientEnv.VITE_API_URL // TODO: Not working in children projects\r\n});\r\n\r\n/* Internal Utils */\r\nexport type FormOmittedProps =\r\n \"name\" |\r\n \"value\" |\r\n \"onChange\" |\r\n \"onBlur\" |\r\n \"error\" |\r\n \"helperText\" |\r\n \"renderInput\" |\r\n \"type\" |\r\n \"aria-label\";\r\n\r\nexport const getFieldStatus = (field: AnyFieldApi) => {\r\n const { meta } = field.state;\r\n\r\n const isTouched = meta.isTouched;\r\n const hasError = !!meta.errors.length;\r\n const helperText = meta.errors[0]?.message;\r\n\r\n return { isTouched, hasError, helperText };\r\n};\r\n\r\nexport const toKebabCase = (str: string): string => {\r\n return str\r\n .replaceAll(/([a-z])([A-Z])/g, \"$1-$2\")\r\n .replaceAll(/[\\s_]+/g, \"-\")\r\n .replaceAll(/[^a-zA-Z0-9-]/g, \"\")\r\n .toLowerCase()\r\n .replaceAll(/-+/g, \"-\")\r\n .replaceAll(/(^-|-$)/g, \"\");\r\n};\r\n","import { createEnv } from \"@t3-oss/env-core\";\r\nimport { z } from \"zod\";\r\n\r\nexport const clientEnv = createEnv({\r\n clientPrefix: \"VITE_\",\r\n client: {\r\n VITE_APP_TITLE: z.string(),\r\n VITE_MUI_LICENSE_KEY: z.string(),\r\n VITE_API_URL: z.url(),\r\n },\r\n runtimeEnv: import.meta.env,\r\n emptyStringAsUndefined: true,\r\n});\r\n\r\nexport const serverEnv = createEnv({\r\n server: {\r\n DATABASE_URL: z.string(),\r\n MICROSOFT_CLIENT_ID: z.string(),\r\n MICROSOFT_CLIENT_SECRET: z.string(),\r\n },\r\n runtimeEnv: process.env,\r\n emptyStringAsUndefined: true,\r\n});\r\n","import { Checkbox, FormControl, FormControlLabel, FormHelperText } from \"@mui/material\";\r\nimport type { CheckboxProps } from \"@mui/material\";\r\nimport type { FC } from \"react\";\r\nimport type { FormOmittedProps } from \"~/lib/utils\";\r\nimport { useFieldContext } from \"~/hooks/FormHooks\";\r\nimport { getFieldStatus } from \"~/lib/utils\";\r\n\r\nexport interface FormCheckboxProps extends Omit<CheckboxProps, FormOmittedProps> {\r\n label?: string;\r\n}\r\n\r\nexport const FormCheckbox: FC<FormCheckboxProps> = (props) => {\r\n const field = useFieldContext<boolean | null | undefined>();\r\n const { isTouched, hasError, helperText } = getFieldStatus(field);\r\n\r\n return (\r\n <FormControl component=\"fieldset\">\r\n <FormControlLabel\r\n control={\r\n <Checkbox\r\n name={field.name}\r\n checked={Boolean(field.state.value)}\r\n onChange={(event) => field.handleChange(event.target.checked)}\r\n onBlur={field.handleBlur}\r\n aria-label={field.name}\r\n {...props}\r\n />\r\n }\r\n label={props.label ?? \"\"}\r\n />\r\n {isTouched && hasError && <FormHelperText error={hasError}>{helperText}</FormHelperText>}\r\n </FormControl>\r\n );\r\n};","import { DatePicker } from \"@mui/x-date-pickers-pro\";\r\nimport type { Dayjs } from \"dayjs\";\r\nimport type { TextFieldProps } from \"@mui/material\";\r\nimport type { DatePickerProps } from \"@mui/x-date-pickers-pro\";\r\nimport type { FC } from \"react\";\r\nimport type { FormOmittedProps } from \"~/lib/utils\";\r\nimport { useFieldContext } from \"~/hooks/FormHooks\";\r\nimport { getFieldStatus } from \"~/lib/utils\";\r\n\r\nexport interface FormDatePickerProps extends Omit<DatePickerProps, FormOmittedProps> {\r\n textFieldProps?: TextFieldProps;\r\n}\r\n\r\nexport const FormDatePicker: FC<FormDatePickerProps> = (props) => {\r\n const field = useFieldContext<Dayjs | null | undefined>();\r\n const { isTouched, hasError, helperText } = getFieldStatus(field);\r\n\r\n return (\r\n <DatePicker\r\n name={field.name}\r\n value={field.state.value}\r\n onChange={(value) => field.handleChange(value)}\r\n slotProps={{\r\n textField: {\r\n onBlur: field.handleBlur,\r\n error: isTouched && hasError,\r\n helperText: isTouched && helperText,\r\n ...props.textFieldProps\r\n },\r\n ...props.slotProps\r\n }}\r\n aria-label={field.name}\r\n {...props}\r\n />\r\n );\r\n};\r\n","import { DateRangePicker } from \"@mui/x-date-pickers-pro\";\r\nimport type { TextFieldProps } from \"@mui/material\";\r\nimport type { DateRangePickerProps } from \"@mui/x-date-pickers-pro\";\r\nimport type { Dayjs } from \"dayjs\";\r\nimport type { FC } from \"react\";\r\nimport type { FormOmittedProps } from \"~/lib/utils\";\r\nimport { useFieldContext } from \"~/hooks/FormHooks\";\r\nimport { getFieldStatus } from \"~/lib/utils\";\r\n\r\nexport interface FormDateRangePickerProps extends Omit<DateRangePickerProps, FormOmittedProps> {\r\n textFieldProps?: TextFieldProps;\r\n}\r\n\r\nexport const FormDateRangePicker: FC<FormDateRangePickerProps> = (props) => {\r\n const field = useFieldContext<[Dayjs | null, Dayjs | null] | undefined>();\r\n const { isTouched, hasError, helperText } = getFieldStatus(field);\r\n\r\n return (\r\n <DateRangePicker\r\n name={field.name}\r\n value={field.state.value}\r\n onChange={(value) => field.handleChange(value)}\r\n slotProps={{\r\n textField: {\r\n onBlur: field.handleBlur,\r\n error: isTouched && hasError,\r\n helperText: isTouched && helperText,\r\n ...props.textFieldProps\r\n },\r\n ...props.slotProps\r\n }}\r\n aria-label={field.name}\r\n {...props}\r\n />\r\n );\r\n};\r\n","import { TimePicker } from \"@mui/x-date-pickers-pro\";\r\nimport type { TextFieldProps } from \"@mui/material\";\r\nimport type { TimePickerProps } from \"@mui/x-date-pickers-pro\";\r\nimport type { Dayjs } from \"dayjs\";\r\nimport type { FC } from \"react\";\r\nimport type { FormOmittedProps } from \"~/lib/utils\";\r\nimport { useFieldContext } from \"~/hooks/FormHooks\";\r\nimport { getFieldStatus } from \"~/lib/utils\";\r\n\r\nexport interface FormTimePickerProps extends Omit<TimePickerProps, FormOmittedProps> {\r\n textFieldProps?: TextFieldProps;\r\n}\r\n\r\nexport const FormTimePicker: FC<FormTimePickerProps> = (props) => {\r\n const field = useFieldContext<Dayjs | null | undefined>();\r\n const { isTouched, hasError, helperText } = getFieldStatus(field);\r\n\r\n return (\r\n <TimePicker\r\n name={field.name}\r\n value={field.state.value}\r\n onChange={(value) => field.handleChange(value)}\r\n slotProps={{\r\n textField: {\r\n onBlur: field.handleBlur,\r\n error: isTouched && hasError,\r\n helperText: isTouched && helperText,\r\n ...props.textFieldProps\r\n },\r\n ...props.slotProps\r\n }}\r\n aria-label={field.name}\r\n {...props}\r\n />\r\n );\r\n};\r\n","import { TimeRangePicker } from \"@mui/x-date-pickers-pro\";\r\nimport type { TextFieldProps } from \"@mui/material\";\r\nimport type { TimeRangePickerProps } from \"@mui/x-date-pickers-pro\";\r\nimport type { Dayjs } from \"dayjs\";\r\nimport type { FC } from \"react\";\r\nimport type { FormOmittedProps } from \"~/lib/utils\";\r\nimport { useFieldContext } from \"~/hooks/FormHooks\";\r\nimport { getFieldStatus } from \"~/lib/utils\";\r\n\r\nexport interface FormTimeRangePickerProps extends Omit<TimeRangePickerProps, FormOmittedProps> {\r\n textFieldProps?: TextFieldProps;\r\n}\r\n\r\nexport const FormTimeRangePicker: FC<FormTimeRangePickerProps> = (props) => {\r\n const field = useFieldContext<[Dayjs | null, Dayjs | null] | undefined>();\r\n const { isTouched, hasError, helperText } = getFieldStatus(field);\r\n\r\n return (\r\n <TimeRangePicker\r\n name={field.name}\r\n value={field.state.value}\r\n onChange={(value) => field.handleChange(value)}\r\n slotProps={{\r\n textField: {\r\n onBlur: field.handleBlur,\r\n error: isTouched && hasError,\r\n helperText: isTouched && helperText,\r\n ...props.textFieldProps\r\n },\r\n ...props.slotProps\r\n }}\r\n aria-label={field.name}\r\n {...props}\r\n />\r\n );\r\n};\r\n","import { DateTimePicker } from \"@mui/x-date-pickers-pro\";\r\nimport type { Dayjs } from \"dayjs\";\r\nimport type { TextFieldProps } from \"@mui/material\";\r\nimport type { DateTimePickerProps } from \"@mui/x-date-pickers-pro\";\r\nimport type { FC } from \"react\";\r\nimport type { FormOmittedProps } from \"~/lib/utils\";\r\nimport { useFieldContext } from \"~/hooks/FormHooks\";\r\nimport { getFieldStatus } from \"~/lib/utils\";\r\n\r\nexport interface FormDateTimePickerProps extends Omit<DateTimePickerProps, FormOmittedProps> {\r\n textFieldProps?: TextFieldProps;\r\n}\r\n\r\nexport const FormDateTimePicker: FC<FormDateTimePickerProps> = (props) => {\r\n const field = useFieldContext<Dayjs | null | undefined>();\r\n const { isTouched, hasError, helperText } = getFieldStatus(field);\r\n\r\n return (\r\n <DateTimePicker\r\n name={field.name}\r\n value={field.state.value}\r\n onChange={(value) => field.handleChange(value)}\r\n slotProps={{\r\n textField: {\r\n onBlur: field.handleBlur,\r\n error: isTouched && hasError,\r\n helperText: isTouched && helperText,\r\n ...props.textFieldProps,\r\n },\r\n ...props.slotProps\r\n }}\r\n aria-label={field.name}\r\n {...props}\r\n />\r\n );\r\n};\r\n","import { DateTimeRangePicker } from \"@mui/x-date-pickers-pro\";\r\nimport type { TextFieldProps } from \"@mui/material\";\r\nimport type { DateTimeRangePickerProps } from \"@mui/x-date-pickers-pro\";\r\nimport type { Dayjs } from \"dayjs\";\r\nimport type { FC } from \"react\";\r\nimport type { FormOmittedProps } from \"~/lib/utils\";\r\nimport { useFieldContext } from \"~/hooks/FormHooks\";\r\nimport { getFieldStatus } from \"~/lib/utils\";\r\n\r\nexport interface FormDateTimeRangePickerProps extends Omit<DateTimeRangePickerProps, FormOmittedProps> {\r\n textFieldProps?: TextFieldProps;\r\n}\r\n\r\nexport const FormDateTimeRangePicker: FC<FormDateTimeRangePickerProps> = (props) => {\r\n const field = useFieldContext<[Dayjs | null, Dayjs | null] | undefined>();\r\n const { isTouched, hasError, helperText } = getFieldStatus(field);\r\n\r\n return (\r\n <DateTimeRangePicker\r\n name={field.name}\r\n value={field.state.value}\r\n onChange={(value) => field.handleChange(value)}\r\n slotProps={{\r\n textField: {\r\n onBlur: field.handleBlur,\r\n error: isTouched && hasError,\r\n helperText: isTouched && helperText,\r\n ...props.textFieldProps\r\n },\r\n ...props.slotProps\r\n }}\r\n aria-label={field.name}\r\n {...props}\r\n />\r\n );\r\n};\r\n","import { TextField } from \"@mui/material\";\r\nimport { NumericFormat } from \"react-number-format\";\r\nimport type { InputAttributes, NumericFormatProps } from \"react-number-format/types/types\";\r\nimport type { FC } from \"react\";\r\nimport type { TextFieldProps } from \"@mui/material\";\r\nimport type { FormOmittedProps } from \"~/lib/utils\";\r\nimport { useFieldContext } from \"~/hooks/FormHooks\";\r\nimport { getFieldStatus } from \"~/lib/utils\";\r\n\r\nexport interface FormNumberFieldProps extends Omit<TextFieldProps, FormOmittedProps> {\r\n\tdefaultValue?: number | null;\r\n\toptions?: Omit<NumericFormatProps<InputAttributes>, \"customInput\" | \"onValueChange\" | keyof InputAttributes>;\r\n}\r\n\r\nexport const FormNumberField: FC<FormNumberFieldProps> = ({ options, ...props }) => {\r\n\tconst field = useFieldContext<number | null | undefined>();\r\n\tconst { isTouched, hasError, helperText } = getFieldStatus(field);\r\n\r\n\treturn (\r\n\t\t<NumericFormat\r\n\t\t\tcustomInput={TextField}\r\n\t\t\tname={field.name}\r\n\t\t\tvalue={field.state.value ?? \"\"}\r\n\t\t\tonValueChange={({ floatValue }) => field.handleChange(floatValue)}\r\n\t\t\tonBlur={field.handleBlur}\r\n\t\t\terror={isTouched && hasError}\r\n\t\t\thelperText={isTouched && helperText}\r\n\t\t\taria-label={field.name}\r\n\t\t\t{...props}\r\n\t\t\t{...options}\r\n\t\t/>\r\n\t);\r\n};\r\n","import { FormControl, FormControlLabel, FormHelperText, FormLabel, Radio, RadioGroup } from \"@mui/material\";\r\nimport type { RadioGroupProps } from \"@mui/material\";\r\nimport type { FC } from \"react\";\r\nimport type { FormOmittedProps } from \"~/lib/utils\";\r\nimport { useFieldContext } from \"~/hooks/FormHooks\";\r\nimport { getFieldStatus } from \"~/lib/utils\";\r\n\r\ninterface Option {\r\n label: string;\r\n value: string | number;\r\n}\r\n\r\nexport interface FormRadioGroupProps extends Omit<RadioGroupProps, FormOmittedProps> {\r\n label?: string;\r\n options: Array<Option>;\r\n}\r\n\r\nexport const FormRadioGroup: FC<FormRadioGroupProps> = ({ label, options, ...props }) => {\r\n const field = useFieldContext<string | number | null | undefined>();\r\n const { isTouched, hasError, helperText } = getFieldStatus(field);\r\n\r\n return (\r\n <FormControl component=\"fieldset\">\r\n {label && <FormLabel component=\"legend\">{label}</FormLabel>}\r\n <RadioGroup\r\n name={field.name}\r\n value={field.state.value ?? \"\"}\r\n onChange={(event) => field.handleChange(event.target.value)}\r\n onBlur={field.handleBlur}\r\n aria-label={field.name}\r\n {...props}\r\n >\r\n {options.map((option) => (\r\n <FormControlLabel\r\n key={option.value}\r\n value={option.value}\r\n control={<Radio />}\r\n label={option.label}\r\n />\r\n ))}\r\n </RadioGroup>\r\n {isTouched && hasError && <FormHelperText error={hasError}>{helperText}</FormHelperText>}\r\n </FormControl>\r\n );\r\n};\r\n","import { FormControl, FormHelperText, FormLabel, Slider } from \"@mui/material\";\r\nimport type { SliderProps } from \"@mui/material\";\r\nimport type { FC } from \"react\";\r\nimport type { FormOmittedProps } from \"~/lib/utils\";\r\nimport { useFieldContext } from \"~/hooks/FormHooks\";\r\nimport { getFieldStatus } from \"~/lib/utils\";\r\n\r\nexport interface FormSliderProps extends Omit<SliderProps, FormOmittedProps> {\r\n label?: string;\r\n}\r\n\r\nexport const FormSlider: FC<FormSliderProps> = ({ label, ...props }) => {\r\n const field = useFieldContext<number | null | undefined>();\r\n const { isTouched, hasError, helperText } = getFieldStatus(field);\r\n\r\n return (\r\n <FormControl component=\"fieldset\">\r\n {label && <FormLabel>{label}</FormLabel>}\r\n <Slider\r\n name={field.name}\r\n value={field.state.value ?? 0}\r\n onChange={(_, value) => field.handleChange(Array.isArray(value) ? value[0] : value)}\r\n onBlur={field.handleBlur}\r\n aria-label={field.name}\r\n {...props}\r\n />\r\n {isTouched && hasError && <FormHelperText error={hasError}>{helperText}</FormHelperText>}\r\n </FormControl>\r\n );\r\n};\r\n","import { Button } from \"@mui/material\";\r\nimport type { ButtonProps } from \"@mui/material\";\r\nimport type { FC } from \"react\";\r\nimport { useFormContext } from \"~/hooks/FormHooks\";\r\n\r\nexport type FormSubmitButtonProps = Omit<ButtonProps, \"loading\" | \"disabled\" | \"onClick\" | \"type\">;\r\n\r\nexport const FormSubmitButton: FC<FormSubmitButtonProps> = (props) => {\r\n const form = useFormContext();\r\n\r\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n form.handleSubmit();\r\n };\r\n\r\n return (\r\n <form.Subscribe selector={(state) => [state.canSubmit, state.isSubmitting]}>\r\n {([canSubmit, isSubmitting]) => (\r\n <Button\r\n loading={isSubmitting}\r\n disabled={!canSubmit}\r\n onClick={handleClick}\r\n type=\"submit\"\r\n aria-label=\"submit\"\r\n {...props}\r\n />\r\n )}\r\n </form.Subscribe>\r\n );\r\n};","import { FormControl, FormControlLabel, FormHelperText, Switch } from \"@mui/material\";\r\nimport type { SwitchProps } from \"@mui/material\";\r\nimport type { FC } from \"react\";\r\nimport type { FormOmittedProps } from \"~/lib/utils\";\r\nimport { useFieldContext } from \"~/hooks/FormHooks\";\r\nimport { getFieldStatus } from \"~/lib/utils\";\r\n\r\nexport interface FormSwitchProps extends Omit<SwitchProps, FormOmittedProps> {\r\n label?: string;\r\n}\r\n\r\nexport const FormSwitch: FC<FormSwitchProps> = (props) => {\r\n const field = useFieldContext<boolean | null | undefined>();\r\n const { isTouched, hasError, helperText } = getFieldStatus(field);\r\n\r\n return (\r\n <FormControl component=\"fieldset\">\r\n <FormControlLabel\r\n control={\r\n <Switch\r\n name={field.name}\r\n checked={Boolean(field.state.value)}\r\n onChange={(event) => field.handleChange(event.target.checked)}\r\n onBlur={field.handleBlur}\r\n aria-label={field.name}\r\n {...props}\r\n />\r\n }\r\n label={props.label ?? \"\"}\r\n />\r\n {isTouched && hasError && <FormHelperText error={hasError}>{helperText}</FormHelperText>}\r\n </FormControl>\r\n );\r\n};\r\n","import { TextField } from \"@mui/material\";\r\nimport type { TextFieldProps } from \"@mui/material\";\r\nimport type { FC } from \"react\";\r\nimport type { FormOmittedProps } from \"~/lib/utils\";\r\nimport { useFieldContext } from \"~/hooks/FormHooks\";\r\nimport { getFieldStatus } from \"~/lib/utils\";\r\n\r\nexport interface FormTextFieldProps extends Omit<TextFieldProps, FormOmittedProps> {\r\n type?: \"color\" | \"email\" | \"password\" | \"search\" | \"tel\" | \"text\" | \"url\"\r\n}\r\n\r\nexport const FormTextField: FC<FormTextFieldProps> = (props) => {\r\n const field = useFieldContext<string | number | null | undefined>();\r\n const { isTouched, hasError, helperText } = getFieldStatus(field);\r\n\r\n return (\r\n <TextField\r\n name={field.name}\r\n value={field.state.value ?? \"\"}\r\n onChange={event => field.handleChange(event.target.value)}\r\n onBlur={field.handleBlur}\r\n error={isTouched && hasError}\r\n helperText={isTouched && helperText}\r\n aria-label={field.name}\r\n {...props}\r\n />\r\n );\r\n};","import { Button, Dialog, DialogActions, DialogContent, DialogTitle, useEventCallback } from \"@mui/material\";\r\nimport { useContext } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { DialogsContext } from \"../contexts/DialogsContext\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface OpenDialogOptions<TResult> {\r\n onClose?: (result: TResult) => Promise<void>;\r\n}\r\n\r\nexport interface AlertOptions {\r\n title?: ReactNode;\r\n}\r\n\r\nexport interface ConfirmOptions {\r\n title?: ReactNode;\r\n cancelText?: ReactNode;\r\n}\r\n\r\nexport interface DialogProps<TPayload = undefined, TResult = void> {\r\n payload: TPayload;\r\n open: boolean;\r\n onClose: (result: TResult) => Promise<void>;\r\n}\r\n\r\nexport type OpenAlertDialog = (message: ReactNode, options?: AlertOptions) => Promise<void>;\r\n\r\nexport type OpenConfirmDialog = (message: ReactNode, options?: ConfirmOptions) => Promise<boolean>;\r\n\r\nexport type DialogComponent<TPayload, TResult> = React.ComponentType<DialogProps<TPayload, TResult>>;\r\n\r\nexport interface OpenDialog {\r\n <TPayload extends undefined, TResult>(Component: DialogComponent<TPayload, TResult>, payload?: TPayload, options?: OpenDialogOptions<TResult>): Promise<TResult>;\r\n <TPayload, TResult>(Component: DialogComponent<TPayload, TResult>, payload: TPayload, options?: OpenDialogOptions<TResult>): Promise<TResult>;\r\n}\r\n\r\nexport type CloseDialog = <TResult>(dialog: Promise<TResult>, result: TResult) => Promise<TResult>;\r\n\r\nexport interface AlertDialogPayload extends AlertOptions {\r\n message: ReactNode;\r\n}\r\n\r\nexport type AlertDialogProps = DialogProps<AlertDialogPayload, void>\r\n\r\nexport function AlertDialog({ open, payload, onClose }: Readonly<AlertDialogProps>) {\r\n const { t } = useTranslation();\r\n\r\n return (\r\n <Dialog maxWidth=\"xs\" fullWidth open={open} onClose={() => onClose()} disableRestoreFocus>\r\n <DialogTitle>{payload.title ?? t(\"Layout.Dialog.Alert\")}</DialogTitle>\r\n <DialogContent>{payload.message}</DialogContent>\r\n <DialogActions>\r\n <Button onClick={() => onClose()} autoFocus>\r\n {t(\"Layout.Dialog.Confirm\")}\r\n </Button>\r\n </DialogActions>\r\n </Dialog>\r\n );\r\n}\r\n\r\nexport interface ConfirmDialogPayload extends ConfirmOptions {\r\n message: ReactNode;\r\n}\r\n\r\nexport type ConfirmDialogProps = DialogProps<ConfirmDialogPayload, boolean>\r\n\r\nexport function ConfirmDialog({ open, payload, onClose }: Readonly<ConfirmDialogProps>) {\r\n const { t } = useTranslation();\r\n\r\n return (\r\n <Dialog maxWidth=\"xs\" fullWidth open={open} onClose={() => onClose(false)} disableRestoreFocus>\r\n <DialogTitle>{payload.title ?? t(\"Layout.Dialog.Confirm\")}</DialogTitle>\r\n <DialogContent>{payload.message}</DialogContent>\r\n <DialogActions>\r\n <Button onClick={() => onClose(false)}>\r\n {payload.cancelText ?? t(\"Layout.Dialog.Cancel\")}\r\n </Button>\r\n <Button onClick={() => onClose(true)} autoFocus>\r\n {t(\"Layout.Dialog.Confirm\")}\r\n </Button>\r\n </DialogActions>\r\n </Dialog>\r\n );\r\n}\r\n\r\ninterface DialogHook {\r\n alert: OpenAlertDialog;\r\n confirm: OpenConfirmDialog;\r\n open: OpenDialog;\r\n close: CloseDialog;\r\n}\r\n\r\nexport function useDialogs(): DialogHook {\r\n const { open, close } = useContext(DialogsContext);\r\n\r\n const alert = useEventCallback<OpenAlertDialog>((message, { ...options } = {}) =>\r\n open(AlertDialog, { ...options, message }),\r\n );\r\n\r\n const confirm = useEventCallback<OpenConfirmDialog>((message, { ...options } = {}) =>\r\n open(ConfirmDialog, { ...options, message }),\r\n );\r\n\r\n return { alert, confirm, open, close };\r\n}\r\n","import { createContext } from \"react\";\r\nimport type { CloseDialog, OpenDialog } from \"../hooks/DialogsHooks\";\r\n\r\nexport interface DialogsContextValue {\r\n open: OpenDialog;\r\n close: CloseDialog;\r\n}\r\n\r\nexport const DialogsContext = createContext<DialogsContextValue>({} as DialogsContextValue);"],"mappings":"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","names":["axios","import_material","import_jsx_runtime","import_jsx_runtime","import_x_date_pickers_pro","import_jsx_runtime","import_x_date_pickers_pro","import_jsx_runtime","import_x_date_pickers_pro","import_jsx_runtime","import_x_date_pickers_pro","import_jsx_runtime","import_x_date_pickers_pro","import_jsx_runtime","import_material","import_jsx_runtime","import_material","import_jsx_runtime","import_material","import_jsx_runtime","import_material","import_jsx_runtime","import_material","import_jsx_runtime","import_material","import_jsx_runtime","import_material","import_react","import_jsx_runtime"]}