@teach-in/react 1.5.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/dist/{chunk-2UHA3DYG.mjs → chunk-6BWSC6ZH.mjs} +3 -10
  2. package/dist/chunk-7WIZONLU.mjs +81 -0
  3. package/dist/chunk-ALGSVEUS.mjs +1 -0
  4. package/dist/chunk-BHOCYKBI.mjs +81 -0
  5. package/dist/{chunk-VXYV37IM.mjs → chunk-C5FQB2UN.mjs} +16 -8
  6. package/dist/{chunk-CKJ5U5Q4.mjs → chunk-DEKPRZIQ.mjs} +1 -1
  7. package/dist/chunk-GEPCSZCU.mjs +71 -0
  8. package/dist/chunk-VDPROXMN.mjs +57 -0
  9. package/dist/{chunk-R46SWVWL.mjs → chunk-ZK6VZMUJ.mjs} +1 -1
  10. package/dist/index.js +487 -248
  11. package/dist/index.mjs +189 -181
  12. package/dist/ui/data/index.js +56 -7
  13. package/dist/ui/data/index.mjs +10 -8
  14. package/dist/ui/data/user/index.js +51 -2
  15. package/dist/ui/data/user/index.mjs +3 -1
  16. package/dist/ui/data/user/user.d.ts +24 -2
  17. package/dist/ui/data/user/user.js +52 -2
  18. package/dist/ui/data/user/user.mjs +4 -1
  19. package/dist/ui/feedback/index.mjs +12 -12
  20. package/dist/ui/feedback/progress/index.mjs +3 -3
  21. package/dist/ui/form/index.js +76 -18
  22. package/dist/ui/form/index.mjs +24 -19
  23. package/dist/ui/form/rhf/fields/autocomplete-field.mjs +19 -14
  24. package/dist/ui/form/rhf/fields/checkbox-field.mjs +19 -14
  25. package/dist/ui/form/rhf/fields/date-picker-field.mjs +19 -14
  26. package/dist/ui/form/rhf/fields/email-field.js +58 -3
  27. package/dist/ui/form/rhf/fields/email-field.mjs +20 -15
  28. package/dist/ui/form/rhf/fields/index.js +76 -18
  29. package/dist/ui/form/rhf/fields/index.mjs +21 -16
  30. package/dist/ui/form/rhf/fields/input-field.mjs +19 -14
  31. package/dist/ui/form/rhf/fields/radio-field.mjs +19 -14
  32. package/dist/ui/form/rhf/fields/search-field.mjs +19 -14
  33. package/dist/ui/form/rhf/fields/select-field.js +18 -15
  34. package/dist/ui/form/rhf/fields/select-field.mjs +20 -15
  35. package/dist/ui/form/rhf/fields/switch-field.mjs +19 -14
  36. package/dist/ui/form/rhf/fields/text-field.mjs +19 -14
  37. package/dist/ui/form/rhf/fields/textarea-field.mjs +19 -14
  38. package/dist/ui/form/rhf/index.js +76 -18
  39. package/dist/ui/form/rhf/index.mjs +21 -16
  40. package/dist/ui/format/index.mjs +6 -6
  41. package/dist/ui/index.js +487 -248
  42. package/dist/ui/index.mjs +189 -181
  43. package/dist/ui/inputs/checkbox/index.mjs +3 -3
  44. package/dist/ui/inputs/email/email.js +58 -3
  45. package/dist/ui/inputs/email/email.mjs +1 -1
  46. package/dist/ui/inputs/email/index.js +58 -3
  47. package/dist/ui/inputs/email/index.mjs +1 -1
  48. package/dist/ui/inputs/index.d.ts +1 -0
  49. package/dist/ui/inputs/index.js +273 -67
  50. package/dist/ui/inputs/index.mjs +36 -26
  51. package/dist/ui/inputs/number/index.d.ts +1 -0
  52. package/dist/ui/inputs/number/index.js +218 -0
  53. package/dist/ui/inputs/number/index.mjs +12 -0
  54. package/dist/ui/inputs/number/number.d.ts +12 -0
  55. package/dist/ui/inputs/number/number.js +219 -0
  56. package/dist/ui/inputs/number/number.mjs +13 -0
  57. package/dist/ui/inputs/number/use-number.d.ts +20 -0
  58. package/dist/ui/inputs/number/use-number.js +104 -0
  59. package/dist/ui/inputs/number/use-number.mjs +7 -0
  60. package/dist/ui/inputs/radio/index.mjs +3 -3
  61. package/dist/ui/inputs/select/index.d.ts +1 -1
  62. package/dist/ui/inputs/select/index.js +23 -17
  63. package/dist/ui/inputs/select/index.mjs +8 -4
  64. package/dist/ui/inputs/select/select.d.ts +11 -22
  65. package/dist/ui/inputs/select/select.js +23 -17
  66. package/dist/ui/inputs/select/select.mjs +8 -4
  67. package/dist/ui/inputs/select/use-select.d.ts +0 -1
  68. package/dist/ui/inputs/select/use-select.js +2 -9
  69. package/dist/ui/inputs/select/use-select.mjs +1 -1
  70. package/dist/ui/inputs/switch/index.mjs +3 -3
  71. package/dist/ui/layout/container/container.mjs +88 -85
  72. package/dist/ui/layout/container/index.mjs +88 -85
  73. package/dist/ui/layout/index.js +7 -7
  74. package/dist/ui/layout/index.mjs +95 -92
  75. package/dist/ui/layout/page/index.mjs +6 -6
  76. package/dist/ui/layout/page/page-loading.mjs +5 -5
  77. package/dist/ui/layout/page/section-loading.mjs +5 -5
  78. package/dist/ui/navigation/index.mjs +5 -5
  79. package/dist/ui/overlays/index.mjs +4 -4
  80. package/dist/ui/provider/index.mjs +5 -5
  81. package/dist/ui/provider/ui-provider.mjs +5 -5
  82. package/dist/ui/surface/index.mjs +1 -1
  83. package/dist/ui/theme/colors/index.mjs +1 -1
  84. package/dist/ui/theme/colors.mjs +1 -1
  85. package/dist/ui/theme/index.mjs +1 -1
  86. package/dist/ui/theme/theme.d.ts +2 -1
  87. package/dist/ui/theme/theme.mjs +1 -1
  88. package/package.json +13 -9
  89. package/LICENSE +0 -21
  90. package/dist/chunk-46SKVFMZ.mjs +0 -16
  91. package/dist/chunk-XHCXM5MU.mjs +0 -14
  92. /package/dist/{chunk-UQAG7TKJ.mjs → chunk-37MCHF7U.mjs} +0 -0
@@ -1,6 +1,28 @@
1
- import type { UserProps as HeroUIUserProps } from "@heroui/user";
1
+ import type { AvatarProps as HeroUIAvatarProps } from "@heroui/avatar";
2
+ import type { VariantProps } from "tailwind-variants";
2
3
  import React from "react";
3
- export interface UserProps extends HeroUIUserProps {
4
+ import { User as HeroUIUser } from "@heroui/user";
5
+ declare const userVariants: import("tailwind-variants").TVReturnType<{
6
+ direction: {
7
+ row: string;
8
+ column: string;
9
+ };
10
+ }, undefined, "flex items-start gap-2 hyphens-auto", {
11
+ direction: {
12
+ row: string;
13
+ column: string;
14
+ };
15
+ }, undefined, import("tailwind-variants").TVReturnType<{
16
+ direction: {
17
+ row: string;
18
+ column: string;
19
+ };
20
+ }, undefined, "flex items-start gap-2 hyphens-auto", unknown, unknown, undefined>>;
21
+ type HeroUIUserProps = React.ComponentProps<typeof HeroUIUser>;
22
+ interface UserProps extends Omit<HeroUIUserProps, "avatarProps" | "className" | "name">, VariantProps<typeof userVariants> {
23
+ name: string;
24
+ avatarProps?: Partial<HeroUIAvatarProps>;
25
+ className?: string;
4
26
  }
5
27
  declare const User: React.ForwardRefExoticComponent<Omit<UserProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
6
28
  export { User };
@@ -1,5 +1,6 @@
1
1
  "use client";
2
2
  "use strict";
3
+ "use client";
3
4
  var __create = Object.create;
4
5
  var __defProp = Object.defineProperty;
5
6
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -36,10 +37,59 @@ __export(user_exports, {
36
37
  module.exports = __toCommonJS(user_exports);
37
38
  var import_react = __toESM(require("react"));
38
39
  var import_user = require("@heroui/user");
40
+ var import_image = require("@heroui/image");
41
+ var import_tailwind_variants = require("tailwind-variants");
42
+
43
+ // src/ui/style/css.ts
44
+ var import_clsx = require("clsx");
45
+ var import_tailwind_merge = require("tailwind-merge");
46
+ function cn(...inputs) {
47
+ return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
48
+ }
49
+
50
+ // src/ui/data/user/user.tsx
39
51
  var import_jsx_runtime = require("react/jsx-runtime");
40
- var User = import_react.default.forwardRef((props, ref) => {
41
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_user.User, { ref, ...props });
52
+ function getNameInitials(fullName) {
53
+ const normalizedFullName = fullName.trim();
54
+ const parts = normalizedFullName.split(" ").filter((part) => part.length > 0);
55
+ if (parts.length >= 2) {
56
+ return parts[0][0].toUpperCase() + parts[1][0].toUpperCase();
57
+ }
58
+ return normalizedFullName.slice(0, 2).toUpperCase();
59
+ }
60
+ var userVariants = (0, import_tailwind_variants.tv)({
61
+ base: "flex items-start gap-2 hyphens-auto",
62
+ variants: {
63
+ direction: {
64
+ row: "flex-row",
65
+ column: "flex-col items-center"
66
+ }
67
+ },
68
+ defaultVariants: {
69
+ direction: "row"
70
+ }
42
71
  });
72
+ var User = import_react.default.forwardRef(
73
+ ({ name, avatarProps, className, direction = "row", ...props }, ref) => {
74
+ var _a, _b;
75
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
76
+ import_user.User,
77
+ {
78
+ ref,
79
+ avatarProps: {
80
+ ...avatarProps,
81
+ className: cn("shrink-0", avatarProps == null ? void 0 : avatarProps.className),
82
+ name: (_a = avatarProps == null ? void 0 : avatarProps.name) != null ? _a : getNameInitials(name),
83
+ ImgComponent: import_image.Image,
84
+ showFallback: (_b = avatarProps == null ? void 0 : avatarProps.showFallback) != null ? _b : true
85
+ },
86
+ className: userVariants({ direction, className }),
87
+ name,
88
+ ...props
89
+ }
90
+ );
91
+ }
92
+ );
43
93
  User.displayName = "TeachInUI.User";
44
94
  // Annotate the CommonJS export names for ESM import in node:
45
95
  0 && (module.exports = {
@@ -1,7 +1,10 @@
1
1
  "use client";
2
+ "use client";
2
3
  import {
3
4
  User
4
- } from "../../../chunk-XHCXM5MU.mjs";
5
+ } from "../../../chunk-VDPROXMN.mjs";
6
+ import "../../../chunk-Q6XJI7Q2.mjs";
7
+ import "../../../chunk-LOMRTWX5.mjs";
5
8
  export {
6
9
  User
7
10
  };
@@ -1,9 +1,16 @@
1
1
  "use client";
2
2
  import "../../chunk-AR4IYKG5.mjs";
3
3
  import "../../chunk-U4FAPNVK.mjs";
4
+ import {
5
+ CircularProgress
6
+ } from "../../chunk-L6XIUULU.mjs";
4
7
  import {
5
8
  Progress
6
9
  } from "../../chunk-JTPBZJ4S.mjs";
10
+ import "../../chunk-WZDFBWUL.mjs";
11
+ import {
12
+ Spinner
13
+ } from "../../chunk-ZXCQ73RT.mjs";
7
14
  import {
8
15
  Toast,
9
16
  ToastProvider,
@@ -14,25 +21,18 @@ import {
14
21
  isToastClosing,
15
22
  useToast
16
23
  } from "../../chunk-CA2EAK5M.mjs";
17
- import "../../chunk-V77JZXH7.mjs";
18
- import "../../chunk-K3WTHFIG.mjs";
19
- import {
20
- Chip
21
- } from "../../chunk-EEGPGLDC.mjs";
22
- import "../../chunk-WZDFBWUL.mjs";
23
- import {
24
- Spinner
25
- } from "../../chunk-ZXCQ73RT.mjs";
26
24
  import "../../chunk-3BST3PYD.mjs";
27
25
  import {
28
26
  Tooltip
29
27
  } from "../../chunk-TJBXXTYS.mjs";
30
- import {
31
- CircularProgress
32
- } from "../../chunk-L6XIUULU.mjs";
28
+ import "../../chunk-V77JZXH7.mjs";
33
29
  import {
34
30
  Alert
35
31
  } from "../../chunk-TIFF5WZA.mjs";
32
+ import "../../chunk-K3WTHFIG.mjs";
33
+ import {
34
+ Chip
35
+ } from "../../chunk-EEGPGLDC.mjs";
36
36
  import "../../chunk-Q2ILWL7L.mjs";
37
37
  import "../../chunk-7BTEKEON.mjs";
38
38
  export {
@@ -1,11 +1,11 @@
1
1
  "use client";
2
2
  import "../../../chunk-U4FAPNVK.mjs";
3
- import {
4
- Progress
5
- } from "../../../chunk-JTPBZJ4S.mjs";
6
3
  import {
7
4
  CircularProgress
8
5
  } from "../../../chunk-L6XIUULU.mjs";
6
+ import {
7
+ Progress
8
+ } from "../../../chunk-JTPBZJ4S.mjs";
9
9
  export {
10
10
  CircularProgress,
11
11
  Progress
@@ -234,11 +234,73 @@ Input.displayName = "TeachInUI.Input";
234
234
 
235
235
  // src/ui/inputs/email/email.tsx
236
236
  var import_jsx_runtime6 = require("react/jsx-runtime");
237
- var Email = import_react7.default.forwardRef(({ ...props }, ref) => {
238
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Input, { ref, autoComplete: "email", type: "email", ...props });
239
- });
237
+ var EMAIL_REGEX = /^(?!\.)(?!.*\.\.)[A-Za-zА-Яа-яЁё0-9._+%-]+(?<!\.)@(?:(?:[A-Za-zА-Яа-яЁё0-9](?:[A-Za-zА-Яа-яЁё0-9-]*[A-Za-zА-Яа-яЁё0-9])?)\.)+[A-Za-zА-Яа-яЁё]{2,}$/u;
238
+ var DEFAULT_ERROR_MESSAGE = "\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0444\u043E\u0440\u043C\u0430\u0442 email";
239
+ var defaultValidateEmail = (value) => {
240
+ if (!value) {
241
+ return;
242
+ }
243
+ return EMAIL_REGEX.test(value) ? true : DEFAULT_ERROR_MESSAGE;
244
+ };
245
+ function getValidationMessage(result) {
246
+ if (typeof result === "string") {
247
+ return result;
248
+ }
249
+ if (Array.isArray(result)) {
250
+ return result.join(" ");
251
+ }
252
+ return;
253
+ }
254
+ var Email = import_react7.default.forwardRef(
255
+ ({
256
+ defaultValue,
257
+ errorMessage,
258
+ isInvalid,
259
+ onValueChange,
260
+ validate = defaultValidateEmail,
261
+ value,
262
+ ...props
263
+ }, ref) => {
264
+ const [internalValue, setInternalValue] = import_react7.default.useState(defaultValue != null ? defaultValue : "");
265
+ const isControlled = value !== void 0;
266
+ const currentValue = isControlled ? value : internalValue;
267
+ const handleValueChange = import_react7.default.useCallback(
268
+ (nextValue) => {
269
+ if (!isControlled) {
270
+ setInternalValue(nextValue);
271
+ }
272
+ onValueChange == null ? void 0 : onValueChange(nextValue);
273
+ },
274
+ [isControlled, onValueChange]
275
+ );
276
+ const validationMessage = getValidationMessage(validate(currentValue != null ? currentValue : ""));
277
+ const resolvedErrorMessage = errorMessage != null ? errorMessage : validationMessage;
278
+ const resolvedIsInvalid = isInvalid != null ? isInvalid : Boolean(validationMessage);
279
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
280
+ Input,
281
+ {
282
+ ref,
283
+ autoComplete: "email",
284
+ errorMessage: resolvedErrorMessage,
285
+ isInvalid: resolvedIsInvalid,
286
+ type: "email",
287
+ validate,
288
+ value: currentValue,
289
+ onValueChange: handleValueChange,
290
+ ...props
291
+ }
292
+ );
293
+ }
294
+ );
240
295
  Email.displayName = "TeachInUI.Email";
241
296
 
297
+ // src/ui/style/css.ts
298
+ var import_clsx = require("clsx");
299
+ var import_tailwind_merge = require("tailwind-merge");
300
+ function cn(...inputs) {
301
+ return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
302
+ }
303
+
242
304
  // src/ui/inputs/search/search.tsx
243
305
  var import_react9 = __toESM(require("react"));
244
306
  var import_lucide_react2 = require("lucide-react");
@@ -338,24 +400,17 @@ function useSelect({
338
400
  isClearable = true
339
401
  }) {
340
402
  const isMultiple = selectionMode === "multiple";
341
- const [internalValue, setInternalValue] = (0, import_react10.useState)(
342
- isMultiple ? [] : null
343
- );
344
- const isControlled = value !== void 0;
345
- const currentValue = isControlled ? value : internalValue;
403
+ const currentValue = value != null ? value : isMultiple ? [] : null;
346
404
  const hasValue = currentValue != null && (Array.isArray(currentValue) ? currentValue.length > 0 : currentValue !== "");
347
405
  const handleChange = (0, import_react10.useCallback)(
348
406
  (newValue) => {
349
- if (!isControlled) {
350
- setInternalValue(newValue);
351
- }
352
407
  if (isMultiple) {
353
408
  onChange == null ? void 0 : onChange(newValue);
354
409
  } else {
355
410
  onChange == null ? void 0 : onChange(newValue);
356
411
  }
357
412
  },
358
- [isControlled, onChange, isMultiple]
413
+ [onChange, isMultiple]
359
414
  );
360
415
  const handleClear = (0, import_react10.useCallback)(() => {
361
416
  onClear == null ? void 0 : onClear();
@@ -400,9 +455,11 @@ var selectWrapperVariants = (0, import_tailwind_variants3.tv)({
400
455
  var Select = import_react11.default.forwardRef(
401
456
  ({
402
457
  value,
403
- defaultSelectedKeys,
404
458
  items,
459
+ children,
460
+ selectedKeys: selectedKeysProp,
405
461
  onChange,
462
+ onSelectionChange,
406
463
  selectionMode,
407
464
  onClear,
408
465
  variant,
@@ -411,6 +468,8 @@ var Select = import_react11.default.forwardRef(
411
468
  isClearable,
412
469
  ...props
413
470
  }, ref) => {
471
+ const usesExternalSelectionControl = selectedKeysProp !== void 0 || onSelectionChange !== void 0;
472
+ const selectChildren = children != null ? children : (item) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_select.SelectItem, { children: item.label }, item.key);
414
473
  const { selectedKeys, handleSelectionChange, handleClear, showClearButton } = useSelect({
415
474
  value,
416
475
  onChange,
@@ -424,21 +483,20 @@ var Select = import_react11.default.forwardRef(
424
483
  ref,
425
484
  classNames: {
426
485
  ...classNames,
427
- trigger: selectWrapperVariants({ variant }),
486
+ trigger: cn(selectWrapperVariants({ variant }), classNames == null ? void 0 : classNames.trigger),
428
487
  innerWrapper: "group"
429
488
  },
430
- defaultSelectedKeys,
431
489
  endContent: (endContent || showClearButton) && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "flex items-center gap-1", children: [
432
490
  endContent,
433
491
  showClearButton && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(ClearButton, { onClear: handleClear })
434
492
  ] }),
435
493
  items,
436
- selectedKeys,
494
+ selectedKeys: usesExternalSelectionControl ? selectedKeysProp : selectedKeys,
437
495
  selectionMode,
438
496
  variant,
439
- onSelectionChange: handleSelectionChange,
497
+ onSelectionChange: usesExternalSelectionControl ? onSelectionChange : handleSelectionChange,
440
498
  ...props,
441
- children: (item) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_select.SelectItem, { children: item.label }, item.key)
499
+ children: selectChildren
442
500
  }
443
501
  );
444
502
  }
@@ -13,7 +13,7 @@ import {
13
13
  } from "../../chunk-CUEG2BFV.mjs";
14
14
  import {
15
15
  SelectField
16
- } from "../../chunk-CKJ5U5Q4.mjs";
16
+ } from "../../chunk-DEKPRZIQ.mjs";
17
17
  import {
18
18
  SwitchField
19
19
  } from "../../chunk-EC3NSPHR.mjs";
@@ -34,40 +34,45 @@ import {
34
34
  } from "../../chunk-7GHK5XYK.mjs";
35
35
  import {
36
36
  EmailField
37
- } from "../../chunk-R46SWVWL.mjs";
38
- import "../../chunk-UQAG7TKJ.mjs";
37
+ } from "../../chunk-ZK6VZMUJ.mjs";
38
+ import {
39
+ Form
40
+ } from "../../chunk-A3AAC7PF.mjs";
41
+ import "../../chunk-37MCHF7U.mjs";
39
42
  import "../../chunk-DUQFM3QS.mjs";
40
43
  import "../../chunk-KTWHCUYV.mjs";
41
- import "../../chunk-5HK7HRTR.mjs";
42
- import "../../chunk-HJUZTISD.mjs";
43
44
  import "../../chunk-LLP2PTPK.mjs";
44
- import "../../chunk-N3EAW6UO.mjs";
45
45
  import "../../chunk-GTE5VEBV.mjs";
46
+ import "../../chunk-N3EAW6UO.mjs";
47
+ import "../../chunk-5HK7HRTR.mjs";
48
+ import "../../chunk-HJUZTISD.mjs";
46
49
  import "../../chunk-5RNCFTW5.mjs";
47
50
  import "../../chunk-SEJXJZSK.mjs";
48
51
  import "../../chunk-C2VWADF5.mjs";
52
+ import "../../chunk-RRA7GWP2.mjs";
53
+ import "../../chunk-NOXFF2KJ.mjs";
54
+ import "../../chunk-2SNKT7I4.mjs";
49
55
  import "../../chunk-AQ3ISJKU.mjs";
50
- import "../../chunk-VXYV37IM.mjs";
51
- import "../../chunk-2UHA3DYG.mjs";
52
- import "../../chunk-UUKS7JYX.mjs";
53
- import "../../chunk-N3QOXWJI.mjs";
56
+ import "../../chunk-C5FQB2UN.mjs";
57
+ import "../../chunk-6BWSC6ZH.mjs";
54
58
  import "../../chunk-V2HNFTTX.mjs";
55
- import "../../chunk-IAJ6G633.mjs";
56
59
  import "../../chunk-V3KKDSQP.mjs";
57
- import "../../chunk-46SKVFMZ.mjs";
60
+ import "../../chunk-GEPCSZCU.mjs";
58
61
  import "../../chunk-ZRHEFEFS.mjs";
59
62
  import "../../chunk-MCQGBAUS.mjs";
60
63
  import "../../chunk-NSU66J5E.mjs";
61
- import "../../chunk-RRA7GWP2.mjs";
62
- import "../../chunk-2SNKT7I4.mjs";
63
- import "../../chunk-NOXFF2KJ.mjs";
64
+ import "../../chunk-UUKS7JYX.mjs";
65
+ import "../../chunk-C4PCTOGM.mjs";
66
+ import "../../chunk-N3QOXWJI.mjs";
67
+ import "../../chunk-ALGSVEUS.mjs";
68
+ import "../../chunk-BHOCYKBI.mjs";
69
+ import "../../chunk-7WIZONLU.mjs";
70
+ import "../../chunk-IAJ6G633.mjs";
64
71
  import "../../chunk-WYJW5NNA.mjs";
65
72
  import "../../chunk-C3MURCMZ.mjs";
66
- import "../../chunk-C4PCTOGM.mjs";
67
73
  import "../../chunk-TUIN5YJW.mjs";
68
- import {
69
- Form
70
- } from "../../chunk-A3AAC7PF.mjs";
74
+ import "../../chunk-Q6XJI7Q2.mjs";
75
+ import "../../chunk-LOMRTWX5.mjs";
71
76
  export {
72
77
  AutocompleteField,
73
78
  CheckboxField,
@@ -2,36 +2,41 @@
2
2
  import {
3
3
  AutocompleteField
4
4
  } from "../../../../chunk-S3ET5HKP.mjs";
5
- import "../../../../chunk-UQAG7TKJ.mjs";
5
+ import "../../../../chunk-37MCHF7U.mjs";
6
6
  import "../../../../chunk-DUQFM3QS.mjs";
7
7
  import "../../../../chunk-KTWHCUYV.mjs";
8
- import "../../../../chunk-5HK7HRTR.mjs";
9
- import "../../../../chunk-HJUZTISD.mjs";
10
8
  import "../../../../chunk-LLP2PTPK.mjs";
11
- import "../../../../chunk-N3EAW6UO.mjs";
12
9
  import "../../../../chunk-GTE5VEBV.mjs";
10
+ import "../../../../chunk-N3EAW6UO.mjs";
11
+ import "../../../../chunk-5HK7HRTR.mjs";
12
+ import "../../../../chunk-HJUZTISD.mjs";
13
13
  import "../../../../chunk-5RNCFTW5.mjs";
14
14
  import "../../../../chunk-SEJXJZSK.mjs";
15
15
  import "../../../../chunk-C2VWADF5.mjs";
16
+ import "../../../../chunk-RRA7GWP2.mjs";
17
+ import "../../../../chunk-NOXFF2KJ.mjs";
18
+ import "../../../../chunk-2SNKT7I4.mjs";
16
19
  import "../../../../chunk-AQ3ISJKU.mjs";
17
- import "../../../../chunk-VXYV37IM.mjs";
18
- import "../../../../chunk-2UHA3DYG.mjs";
19
- import "../../../../chunk-UUKS7JYX.mjs";
20
- import "../../../../chunk-N3QOXWJI.mjs";
20
+ import "../../../../chunk-C5FQB2UN.mjs";
21
+ import "../../../../chunk-6BWSC6ZH.mjs";
21
22
  import "../../../../chunk-V2HNFTTX.mjs";
22
- import "../../../../chunk-IAJ6G633.mjs";
23
23
  import "../../../../chunk-V3KKDSQP.mjs";
24
- import "../../../../chunk-46SKVFMZ.mjs";
24
+ import "../../../../chunk-GEPCSZCU.mjs";
25
25
  import "../../../../chunk-ZRHEFEFS.mjs";
26
26
  import "../../../../chunk-MCQGBAUS.mjs";
27
27
  import "../../../../chunk-NSU66J5E.mjs";
28
- import "../../../../chunk-RRA7GWP2.mjs";
29
- import "../../../../chunk-2SNKT7I4.mjs";
30
- import "../../../../chunk-NOXFF2KJ.mjs";
28
+ import "../../../../chunk-UUKS7JYX.mjs";
29
+ import "../../../../chunk-C4PCTOGM.mjs";
30
+ import "../../../../chunk-N3QOXWJI.mjs";
31
+ import "../../../../chunk-ALGSVEUS.mjs";
32
+ import "../../../../chunk-BHOCYKBI.mjs";
33
+ import "../../../../chunk-7WIZONLU.mjs";
34
+ import "../../../../chunk-IAJ6G633.mjs";
31
35
  import "../../../../chunk-WYJW5NNA.mjs";
32
36
  import "../../../../chunk-C3MURCMZ.mjs";
33
- import "../../../../chunk-C4PCTOGM.mjs";
34
37
  import "../../../../chunk-TUIN5YJW.mjs";
38
+ import "../../../../chunk-Q6XJI7Q2.mjs";
39
+ import "../../../../chunk-LOMRTWX5.mjs";
35
40
  export {
36
41
  AutocompleteField
37
42
  };
@@ -2,36 +2,41 @@
2
2
  import {
3
3
  CheckboxField
4
4
  } from "../../../../chunk-MCZBJUTN.mjs";
5
- import "../../../../chunk-UQAG7TKJ.mjs";
5
+ import "../../../../chunk-37MCHF7U.mjs";
6
6
  import "../../../../chunk-DUQFM3QS.mjs";
7
7
  import "../../../../chunk-KTWHCUYV.mjs";
8
- import "../../../../chunk-5HK7HRTR.mjs";
9
- import "../../../../chunk-HJUZTISD.mjs";
10
8
  import "../../../../chunk-LLP2PTPK.mjs";
11
- import "../../../../chunk-N3EAW6UO.mjs";
12
9
  import "../../../../chunk-GTE5VEBV.mjs";
10
+ import "../../../../chunk-N3EAW6UO.mjs";
11
+ import "../../../../chunk-5HK7HRTR.mjs";
12
+ import "../../../../chunk-HJUZTISD.mjs";
13
13
  import "../../../../chunk-5RNCFTW5.mjs";
14
14
  import "../../../../chunk-SEJXJZSK.mjs";
15
15
  import "../../../../chunk-C2VWADF5.mjs";
16
+ import "../../../../chunk-RRA7GWP2.mjs";
17
+ import "../../../../chunk-NOXFF2KJ.mjs";
18
+ import "../../../../chunk-2SNKT7I4.mjs";
16
19
  import "../../../../chunk-AQ3ISJKU.mjs";
17
- import "../../../../chunk-VXYV37IM.mjs";
18
- import "../../../../chunk-2UHA3DYG.mjs";
19
- import "../../../../chunk-UUKS7JYX.mjs";
20
- import "../../../../chunk-N3QOXWJI.mjs";
20
+ import "../../../../chunk-C5FQB2UN.mjs";
21
+ import "../../../../chunk-6BWSC6ZH.mjs";
21
22
  import "../../../../chunk-V2HNFTTX.mjs";
22
- import "../../../../chunk-IAJ6G633.mjs";
23
23
  import "../../../../chunk-V3KKDSQP.mjs";
24
- import "../../../../chunk-46SKVFMZ.mjs";
24
+ import "../../../../chunk-GEPCSZCU.mjs";
25
25
  import "../../../../chunk-ZRHEFEFS.mjs";
26
26
  import "../../../../chunk-MCQGBAUS.mjs";
27
27
  import "../../../../chunk-NSU66J5E.mjs";
28
- import "../../../../chunk-RRA7GWP2.mjs";
29
- import "../../../../chunk-2SNKT7I4.mjs";
30
- import "../../../../chunk-NOXFF2KJ.mjs";
28
+ import "../../../../chunk-UUKS7JYX.mjs";
29
+ import "../../../../chunk-C4PCTOGM.mjs";
30
+ import "../../../../chunk-N3QOXWJI.mjs";
31
+ import "../../../../chunk-ALGSVEUS.mjs";
32
+ import "../../../../chunk-BHOCYKBI.mjs";
33
+ import "../../../../chunk-7WIZONLU.mjs";
34
+ import "../../../../chunk-IAJ6G633.mjs";
31
35
  import "../../../../chunk-WYJW5NNA.mjs";
32
36
  import "../../../../chunk-C3MURCMZ.mjs";
33
- import "../../../../chunk-C4PCTOGM.mjs";
34
37
  import "../../../../chunk-TUIN5YJW.mjs";
38
+ import "../../../../chunk-Q6XJI7Q2.mjs";
39
+ import "../../../../chunk-LOMRTWX5.mjs";
35
40
  export {
36
41
  CheckboxField
37
42
  };
@@ -2,36 +2,41 @@
2
2
  import {
3
3
  DatePickerField
4
4
  } from "../../../../chunk-7GHK5XYK.mjs";
5
- import "../../../../chunk-UQAG7TKJ.mjs";
5
+ import "../../../../chunk-37MCHF7U.mjs";
6
6
  import "../../../../chunk-DUQFM3QS.mjs";
7
7
  import "../../../../chunk-KTWHCUYV.mjs";
8
- import "../../../../chunk-5HK7HRTR.mjs";
9
- import "../../../../chunk-HJUZTISD.mjs";
10
8
  import "../../../../chunk-LLP2PTPK.mjs";
11
- import "../../../../chunk-N3EAW6UO.mjs";
12
9
  import "../../../../chunk-GTE5VEBV.mjs";
10
+ import "../../../../chunk-N3EAW6UO.mjs";
11
+ import "../../../../chunk-5HK7HRTR.mjs";
12
+ import "../../../../chunk-HJUZTISD.mjs";
13
13
  import "../../../../chunk-5RNCFTW5.mjs";
14
14
  import "../../../../chunk-SEJXJZSK.mjs";
15
15
  import "../../../../chunk-C2VWADF5.mjs";
16
+ import "../../../../chunk-RRA7GWP2.mjs";
17
+ import "../../../../chunk-NOXFF2KJ.mjs";
18
+ import "../../../../chunk-2SNKT7I4.mjs";
16
19
  import "../../../../chunk-AQ3ISJKU.mjs";
17
- import "../../../../chunk-VXYV37IM.mjs";
18
- import "../../../../chunk-2UHA3DYG.mjs";
19
- import "../../../../chunk-UUKS7JYX.mjs";
20
- import "../../../../chunk-N3QOXWJI.mjs";
20
+ import "../../../../chunk-C5FQB2UN.mjs";
21
+ import "../../../../chunk-6BWSC6ZH.mjs";
21
22
  import "../../../../chunk-V2HNFTTX.mjs";
22
- import "../../../../chunk-IAJ6G633.mjs";
23
23
  import "../../../../chunk-V3KKDSQP.mjs";
24
- import "../../../../chunk-46SKVFMZ.mjs";
24
+ import "../../../../chunk-GEPCSZCU.mjs";
25
25
  import "../../../../chunk-ZRHEFEFS.mjs";
26
26
  import "../../../../chunk-MCQGBAUS.mjs";
27
27
  import "../../../../chunk-NSU66J5E.mjs";
28
- import "../../../../chunk-RRA7GWP2.mjs";
29
- import "../../../../chunk-2SNKT7I4.mjs";
30
- import "../../../../chunk-NOXFF2KJ.mjs";
28
+ import "../../../../chunk-UUKS7JYX.mjs";
29
+ import "../../../../chunk-C4PCTOGM.mjs";
30
+ import "../../../../chunk-N3QOXWJI.mjs";
31
+ import "../../../../chunk-ALGSVEUS.mjs";
32
+ import "../../../../chunk-BHOCYKBI.mjs";
33
+ import "../../../../chunk-7WIZONLU.mjs";
34
+ import "../../../../chunk-IAJ6G633.mjs";
31
35
  import "../../../../chunk-WYJW5NNA.mjs";
32
36
  import "../../../../chunk-C3MURCMZ.mjs";
33
- import "../../../../chunk-C4PCTOGM.mjs";
34
37
  import "../../../../chunk-TUIN5YJW.mjs";
38
+ import "../../../../chunk-Q6XJI7Q2.mjs";
39
+ import "../../../../chunk-LOMRTWX5.mjs";
35
40
  export {
36
41
  DatePickerField
37
42
  };
@@ -187,9 +187,64 @@ Input.displayName = "TeachInUI.Input";
187
187
 
188
188
  // src/ui/inputs/email/email.tsx
189
189
  var import_jsx_runtime3 = require("react/jsx-runtime");
190
- var Email = import_react4.default.forwardRef(({ ...props }, ref) => {
191
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Input, { ref, autoComplete: "email", type: "email", ...props });
192
- });
190
+ var EMAIL_REGEX = /^(?!\.)(?!.*\.\.)[A-Za-zА-Яа-яЁё0-9._+%-]+(?<!\.)@(?:(?:[A-Za-zА-Яа-яЁё0-9](?:[A-Za-zА-Яа-яЁё0-9-]*[A-Za-zА-Яа-яЁё0-9])?)\.)+[A-Za-zА-Яа-яЁё]{2,}$/u;
191
+ var DEFAULT_ERROR_MESSAGE = "\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0444\u043E\u0440\u043C\u0430\u0442 email";
192
+ var defaultValidateEmail = (value) => {
193
+ if (!value) {
194
+ return;
195
+ }
196
+ return EMAIL_REGEX.test(value) ? true : DEFAULT_ERROR_MESSAGE;
197
+ };
198
+ function getValidationMessage(result) {
199
+ if (typeof result === "string") {
200
+ return result;
201
+ }
202
+ if (Array.isArray(result)) {
203
+ return result.join(" ");
204
+ }
205
+ return;
206
+ }
207
+ var Email = import_react4.default.forwardRef(
208
+ ({
209
+ defaultValue,
210
+ errorMessage,
211
+ isInvalid,
212
+ onValueChange,
213
+ validate = defaultValidateEmail,
214
+ value,
215
+ ...props
216
+ }, ref) => {
217
+ const [internalValue, setInternalValue] = import_react4.default.useState(defaultValue != null ? defaultValue : "");
218
+ const isControlled = value !== void 0;
219
+ const currentValue = isControlled ? value : internalValue;
220
+ const handleValueChange = import_react4.default.useCallback(
221
+ (nextValue) => {
222
+ if (!isControlled) {
223
+ setInternalValue(nextValue);
224
+ }
225
+ onValueChange == null ? void 0 : onValueChange(nextValue);
226
+ },
227
+ [isControlled, onValueChange]
228
+ );
229
+ const validationMessage = getValidationMessage(validate(currentValue != null ? currentValue : ""));
230
+ const resolvedErrorMessage = errorMessage != null ? errorMessage : validationMessage;
231
+ const resolvedIsInvalid = isInvalid != null ? isInvalid : Boolean(validationMessage);
232
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
233
+ Input,
234
+ {
235
+ ref,
236
+ autoComplete: "email",
237
+ errorMessage: resolvedErrorMessage,
238
+ isInvalid: resolvedIsInvalid,
239
+ type: "email",
240
+ validate,
241
+ value: currentValue,
242
+ onValueChange: handleValueChange,
243
+ ...props
244
+ }
245
+ );
246
+ }
247
+ );
193
248
  Email.displayName = "TeachInUI.Email";
194
249
 
195
250
  // src/ui/form/rhf/fields/email-field.tsx