@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
package/dist/index.js CHANGED
@@ -64,19 +64,19 @@ __export(index_exports, {
64
64
  FavoriteSwitch: () => FavoriteSwitch,
65
65
  Flex: () => Flex,
66
66
  Form: () => Form,
67
- FormatBoolean: () => Boolean,
67
+ FormatBoolean: () => Boolean2,
68
68
  FormatCurrency: () => Currency,
69
69
  FormatDate: () => DateFormat,
70
70
  FormatDatetime: () => Datetime,
71
71
  FormatDuration: () => Duration,
72
- FormatNumber: () => Number2,
72
+ FormatNumber: () => Number3,
73
73
  FormatPercent: () => Percent,
74
74
  FormatPlural: () => Plural,
75
75
  FormatTime: () => Time,
76
76
  FormatUUID: () => Uuid,
77
77
  Grid: () => Grid,
78
78
  Header: () => Header2,
79
- Image: () => Image,
79
+ Image: () => Image2,
80
80
  Input: () => Input,
81
81
  InputField: () => InputField,
82
82
  Link: () => Link,
@@ -88,6 +88,7 @@ __export(index_exports, {
88
88
  NavbarMenu: () => NavbarMenu,
89
89
  NavbarMenuItem: () => NavbarMenuItem,
90
90
  NavbarMenuToggle: () => NavbarMenuToggle,
91
+ Number: () => Number2,
91
92
  PageContent: () => PageContent,
92
93
  PageLoading: () => PageLoading,
93
94
  Pagination: () => Pagination,
@@ -107,6 +108,7 @@ __export(index_exports, {
107
108
  SectionTitle: () => SectionTitle,
108
109
  Select: () => Select,
109
110
  SelectField: () => SelectField,
111
+ SelectItem: () => SelectItem,
110
112
  Spinner: () => Spinner,
111
113
  Switch: () => Switch,
112
114
  SwitchField: () => SwitchField,
@@ -202,20 +204,69 @@ var getKeyValue = import_table.getKeyValue;
202
204
  // src/ui/data/user/user.tsx
203
205
  var import_react4 = __toESM(require("react"));
204
206
  var import_user = require("@heroui/user");
207
+ var import_image = require("@heroui/image");
208
+ var import_tailwind_variants = require("tailwind-variants");
209
+
210
+ // src/ui/style/css.ts
211
+ var import_clsx = require("clsx");
212
+ var import_tailwind_merge = require("tailwind-merge");
213
+ function cn(...inputs) {
214
+ return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
215
+ }
216
+
217
+ // src/ui/data/user/user.tsx
205
218
  var import_jsx_runtime4 = require("react/jsx-runtime");
206
- var User = import_react4.default.forwardRef((props, ref) => {
207
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_user.User, { ref, ...props });
219
+ function getNameInitials(fullName) {
220
+ const normalizedFullName = fullName.trim();
221
+ const parts = normalizedFullName.split(" ").filter((part) => part.length > 0);
222
+ if (parts.length >= 2) {
223
+ return parts[0][0].toUpperCase() + parts[1][0].toUpperCase();
224
+ }
225
+ return normalizedFullName.slice(0, 2).toUpperCase();
226
+ }
227
+ var userVariants = (0, import_tailwind_variants.tv)({
228
+ base: "flex items-start gap-2 hyphens-auto",
229
+ variants: {
230
+ direction: {
231
+ row: "flex-row",
232
+ column: "flex-col items-center"
233
+ }
234
+ },
235
+ defaultVariants: {
236
+ direction: "row"
237
+ }
208
238
  });
239
+ var User = import_react4.default.forwardRef(
240
+ ({ name, avatarProps, className, direction = "row", ...props }, ref) => {
241
+ var _a, _b;
242
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
243
+ import_user.User,
244
+ {
245
+ ref,
246
+ avatarProps: {
247
+ ...avatarProps,
248
+ className: cn("shrink-0", avatarProps == null ? void 0 : avatarProps.className),
249
+ name: (_a = avatarProps == null ? void 0 : avatarProps.name) != null ? _a : getNameInitials(name),
250
+ ImgComponent: import_image.Image,
251
+ showFallback: (_b = avatarProps == null ? void 0 : avatarProps.showFallback) != null ? _b : true
252
+ },
253
+ className: userVariants({ direction, className }),
254
+ name,
255
+ ...props
256
+ }
257
+ );
258
+ }
259
+ );
209
260
  User.displayName = "TeachInUI.User";
210
261
 
211
262
  // src/ui/data/image/image.tsx
212
263
  var import_react5 = __toESM(require("react"));
213
- var import_image = require("@heroui/image");
264
+ var import_image2 = require("@heroui/image");
214
265
  var import_jsx_runtime5 = require("react/jsx-runtime");
215
- var Image = import_react5.default.forwardRef(({ ...props }, ref) => {
216
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_image.Image, { ref, ...props });
266
+ var Image2 = import_react5.default.forwardRef(({ ...props }, ref) => {
267
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_image2.Image, { ref, ...props });
217
268
  });
218
- Image.displayName = "TeachInUI.Image";
269
+ Image2.displayName = "TeachInUI.Image";
219
270
 
220
271
  // src/ui/feedback/alert/alert.tsx
221
272
  var import_react6 = __toESM(require("react"));
@@ -359,7 +410,7 @@ var import_react20 = __toESM(require("react"));
359
410
  // src/ui/inputs/input/input.tsx
360
411
  var import_react19 = __toESM(require("react"));
361
412
  var import_input = require("@heroui/input");
362
- var import_tailwind_variants = require("tailwind-variants");
413
+ var import_tailwind_variants2 = require("tailwind-variants");
363
414
 
364
415
  // src/ui/inputs/clear-button.tsx
365
416
  var import_react17 = __toESM(require("react"));
@@ -445,7 +496,7 @@ function useInput({
445
496
 
446
497
  // src/ui/inputs/input/input.tsx
447
498
  var import_jsx_runtime18 = require("react/jsx-runtime");
448
- var inputWrapperVariants = (0, import_tailwind_variants.tv)({
499
+ var inputWrapperVariants = (0, import_tailwind_variants2.tv)({
449
500
  variants: {
450
501
  variant: {
451
502
  flat: "",
@@ -504,21 +555,219 @@ Input.displayName = "TeachInUI.Input";
504
555
 
505
556
  // src/ui/inputs/email/email.tsx
506
557
  var import_jsx_runtime19 = require("react/jsx-runtime");
507
- var Email = import_react20.default.forwardRef(({ ...props }, ref) => {
508
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Input, { ref, autoComplete: "email", type: "email", ...props });
509
- });
558
+ 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;
559
+ var DEFAULT_ERROR_MESSAGE = "\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0444\u043E\u0440\u043C\u0430\u0442 email";
560
+ var defaultValidateEmail = (value) => {
561
+ if (!value) {
562
+ return;
563
+ }
564
+ return EMAIL_REGEX.test(value) ? true : DEFAULT_ERROR_MESSAGE;
565
+ };
566
+ function getValidationMessage(result) {
567
+ if (typeof result === "string") {
568
+ return result;
569
+ }
570
+ if (Array.isArray(result)) {
571
+ return result.join(" ");
572
+ }
573
+ return;
574
+ }
575
+ var Email = import_react20.default.forwardRef(
576
+ ({
577
+ defaultValue,
578
+ errorMessage,
579
+ isInvalid,
580
+ onValueChange,
581
+ validate = defaultValidateEmail,
582
+ value,
583
+ ...props
584
+ }, ref) => {
585
+ const [internalValue, setInternalValue] = import_react20.default.useState(defaultValue != null ? defaultValue : "");
586
+ const isControlled = value !== void 0;
587
+ const currentValue = isControlled ? value : internalValue;
588
+ const handleValueChange = import_react20.default.useCallback(
589
+ (nextValue) => {
590
+ if (!isControlled) {
591
+ setInternalValue(nextValue);
592
+ }
593
+ onValueChange == null ? void 0 : onValueChange(nextValue);
594
+ },
595
+ [isControlled, onValueChange]
596
+ );
597
+ const validationMessage = getValidationMessage(validate(currentValue != null ? currentValue : ""));
598
+ const resolvedErrorMessage = errorMessage != null ? errorMessage : validationMessage;
599
+ const resolvedIsInvalid = isInvalid != null ? isInvalid : Boolean(validationMessage);
600
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
601
+ Input,
602
+ {
603
+ ref,
604
+ autoComplete: "email",
605
+ errorMessage: resolvedErrorMessage,
606
+ isInvalid: resolvedIsInvalid,
607
+ type: "email",
608
+ validate,
609
+ value: currentValue,
610
+ onValueChange: handleValueChange,
611
+ ...props
612
+ }
613
+ );
614
+ }
615
+ );
510
616
  Email.displayName = "TeachInUI.Email";
511
617
 
512
- // src/ui/inputs/search/search.tsx
618
+ // src/ui/inputs/number/number.tsx
513
619
  var import_react22 = __toESM(require("react"));
620
+ var import_number_input = require("@heroui/number-input");
621
+ var import_tailwind_variants3 = require("tailwind-variants");
622
+
623
+ // src/ui/inputs/number/use-number.ts
624
+ var import_number = require("@internationalized/number");
625
+ var import_react21 = require("react");
626
+ function normalizeNumberValue(value) {
627
+ if (value == null || Number.isNaN(value)) {
628
+ return null;
629
+ }
630
+ return value;
631
+ }
632
+ function useNumber({
633
+ locale,
634
+ value,
635
+ onChange,
636
+ onValueChange,
637
+ onClear,
638
+ isReadOnly,
639
+ isClearable = true,
640
+ ref
641
+ }) {
642
+ const inputRef = (0, import_react21.useRef)(null);
643
+ const currentValue = normalizeNumberValue(value);
644
+ const hasValue = currentValue !== null;
645
+ const currentLocale = locale != null ? locale : Intl.NumberFormat().resolvedOptions().locale;
646
+ const numberParser = (0, import_react21.useMemo)(() => new import_number.NumberParser(currentLocale), [currentLocale]);
647
+ const emitValueChange = (0, import_react21.useCallback)(
648
+ (newValue) => {
649
+ onValueChange == null ? void 0 : onValueChange(newValue);
650
+ onChange == null ? void 0 : onChange(newValue);
651
+ },
652
+ [onChange, onValueChange]
653
+ );
654
+ const handleValueChange = (0, import_react21.useCallback)(
655
+ (incomingValue) => {
656
+ let newValue = null;
657
+ if (incomingValue === null) {
658
+ newValue = null;
659
+ } else if (typeof incomingValue === "number") {
660
+ newValue = Number.isNaN(incomingValue) ? null : incomingValue;
661
+ } else {
662
+ const rawValue = incomingValue.target.value;
663
+ newValue = rawValue === "" ? null : numberParser.parse(rawValue);
664
+ newValue = Number.isNaN(newValue) ? null : newValue;
665
+ }
666
+ emitValueChange(newValue);
667
+ },
668
+ [emitValueChange, numberParser]
669
+ );
670
+ const handleClear = (0, import_react21.useCallback)(() => {
671
+ var _a;
672
+ onClear == null ? void 0 : onClear();
673
+ emitValueChange(null);
674
+ (_a = inputRef.current) == null ? void 0 : _a.focus();
675
+ }, [emitValueChange, onClear]);
676
+ const mergedRef = (0, import_react21.useCallback)(
677
+ (node) => {
678
+ inputRef.current = node;
679
+ if (typeof ref === "function") {
680
+ ref(node);
681
+ } else if (ref) {
682
+ ref.current = node;
683
+ }
684
+ },
685
+ [ref]
686
+ );
687
+ const showClearButton = hasValue && !isReadOnly && isClearable;
688
+ return {
689
+ inputRef,
690
+ currentValue,
691
+ hasValue,
692
+ handleValueChange,
693
+ handleClear,
694
+ mergedRef,
695
+ showClearButton
696
+ };
697
+ }
698
+
699
+ // src/ui/inputs/number/number.tsx
700
+ var import_jsx_runtime20 = require("react/jsx-runtime");
701
+ var inputWrapperVariants2 = (0, import_tailwind_variants3.tv)({
702
+ variants: {
703
+ variant: {
704
+ flat: "",
705
+ underlined: "",
706
+ bordered: "border-1",
707
+ faded: "border-1"
708
+ }
709
+ }
710
+ });
711
+ var Number2 = import_react22.default.forwardRef(
712
+ ({
713
+ locale,
714
+ value,
715
+ onChange,
716
+ onValueChange,
717
+ onClear,
718
+ variant,
719
+ classNames,
720
+ endContent,
721
+ isReadOnly,
722
+ isClearable,
723
+ ...props
724
+ }, ref) => {
725
+ const { currentValue, handleValueChange, handleClear, mergedRef, showClearButton } = useNumber({
726
+ locale,
727
+ value,
728
+ onChange,
729
+ onValueChange,
730
+ onClear,
731
+ isReadOnly,
732
+ isClearable,
733
+ ref
734
+ });
735
+ const normalizedValue = currentValue === null ? globalThis.Number.NaN : currentValue;
736
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
737
+ import_number_input.NumberInput,
738
+ {
739
+ ref: mergedRef,
740
+ classNames: {
741
+ ...classNames,
742
+ inputWrapper: cn(inputWrapperVariants2({ variant }), classNames == null ? void 0 : classNames.inputWrapper),
743
+ innerWrapper: cn("group", classNames == null ? void 0 : classNames.innerWrapper)
744
+ },
745
+ endContent: (endContent || showClearButton) && /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "flex items-center gap-1", children: [
746
+ endContent,
747
+ showClearButton && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(ClearButton, { onClear: handleClear })
748
+ ] }),
749
+ inputMode: "decimal",
750
+ isReadOnly,
751
+ value: normalizedValue,
752
+ variant,
753
+ onChange: handleValueChange,
754
+ ...props
755
+ }
756
+ );
757
+ }
758
+ );
759
+ Number2.displayName = "TeachInUI.Number";
760
+
761
+ // src/ui/inputs/search/search.tsx
762
+ var import_react24 = __toESM(require("react"));
514
763
  var import_lucide_react2 = require("lucide-react");
515
764
  var import_button4 = require("@heroui/button");
516
- var import_tailwind_variants2 = require("tailwind-variants");
765
+ var import_tailwind_variants4 = require("tailwind-variants");
517
766
 
518
767
  // src/ui/inputs/search/use-search.ts
519
- var import_react21 = require("react");
768
+ var import_react23 = require("react");
520
769
  function useSearch({ value, onSearch, onCancel, onKeyDown }) {
521
- const handleKeyDown = (0, import_react21.useCallback)(
770
+ const handleKeyDown = (0, import_react23.useCallback)(
522
771
  (event) => {
523
772
  if (event.key === "Enter") {
524
773
  event.preventDefault();
@@ -532,7 +781,7 @@ function useSearch({ value, onSearch, onCancel, onKeyDown }) {
532
781
  [onSearch, onCancel, onKeyDown]
533
782
  );
534
783
  const hasValue = value !== void 0 && String(value).length > 0;
535
- const handleSearchClick = (0, import_react21.useCallback)(() => {
784
+ const handleSearchClick = (0, import_react23.useCallback)(() => {
536
785
  if (hasValue) {
537
786
  onSearch == null ? void 0 : onSearch(value);
538
787
  }
@@ -545,8 +794,8 @@ function useSearch({ value, onSearch, onCancel, onKeyDown }) {
545
794
  }
546
795
 
547
796
  // src/ui/inputs/search/search.tsx
548
- var import_jsx_runtime20 = require("react/jsx-runtime");
549
- var searchIconVariants = (0, import_tailwind_variants2.tv)({
797
+ var import_jsx_runtime21 = require("react/jsx-runtime");
798
+ var searchIconVariants = (0, import_tailwind_variants4.tv)({
550
799
  base: "size-5 shrink-0",
551
800
  variants: {
552
801
  variant: {
@@ -557,7 +806,7 @@ var searchIconVariants = (0, import_tailwind_variants2.tv)({
557
806
  }
558
807
  }
559
808
  });
560
- var Search = import_react22.default.forwardRef(
809
+ var Search = import_react24.default.forwardRef(
561
810
  ({ variant = "bordered", radius = "full", value, onSearch, onCancel, onKeyDown, ...props }, ref) => {
562
811
  const { handleKeyDown, handleSearchClick, hasValue } = useSearch({
563
812
  value,
@@ -565,12 +814,12 @@ var Search = import_react22.default.forwardRef(
565
814
  onCancel,
566
815
  onKeyDown
567
816
  });
568
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
817
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
569
818
  Input,
570
819
  {
571
820
  ref,
572
821
  radius,
573
- startContent: onSearch ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
822
+ startContent: onSearch ? /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
574
823
  import_button4.Button,
575
824
  {
576
825
  isIconOnly: true,
@@ -580,9 +829,9 @@ var Search = import_react22.default.forwardRef(
580
829
  size: "sm",
581
830
  variant: "light",
582
831
  onPress: handleSearchClick,
583
- children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react2.SearchIcon, { className: searchIconVariants({ variant }) })
832
+ children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react2.SearchIcon, { className: searchIconVariants({ variant }) })
584
833
  }
585
- ) : /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react2.SearchIcon, { className: searchIconVariants({ variant }) }),
834
+ ) : /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react2.SearchIcon, { className: searchIconVariants({ variant }) }),
586
835
  value,
587
836
  variant,
588
837
  onKeyDown: handleKeyDown,
@@ -594,12 +843,12 @@ var Search = import_react22.default.forwardRef(
594
843
  Search.displayName = "TeachInUI.Search";
595
844
 
596
845
  // src/ui/inputs/select/select.tsx
597
- var import_react24 = __toESM(require("react"));
846
+ var import_react26 = __toESM(require("react"));
598
847
  var import_select = require("@heroui/select");
599
- var import_tailwind_variants3 = require("tailwind-variants");
848
+ var import_tailwind_variants5 = require("tailwind-variants");
600
849
 
601
850
  // src/ui/inputs/select/use-select.ts
602
- var import_react23 = require("react");
851
+ var import_react25 = require("react");
603
852
  function useSelect({
604
853
  value,
605
854
  onChange,
@@ -608,34 +857,27 @@ function useSelect({
608
857
  isClearable = true
609
858
  }) {
610
859
  const isMultiple = selectionMode === "multiple";
611
- const [internalValue, setInternalValue] = (0, import_react23.useState)(
612
- isMultiple ? [] : null
613
- );
614
- const isControlled = value !== void 0;
615
- const currentValue = isControlled ? value : internalValue;
860
+ const currentValue = value != null ? value : isMultiple ? [] : null;
616
861
  const hasValue = currentValue != null && (Array.isArray(currentValue) ? currentValue.length > 0 : currentValue !== "");
617
- const handleChange = (0, import_react23.useCallback)(
862
+ const handleChange = (0, import_react25.useCallback)(
618
863
  (newValue) => {
619
- if (!isControlled) {
620
- setInternalValue(newValue);
621
- }
622
864
  if (isMultiple) {
623
865
  onChange == null ? void 0 : onChange(newValue);
624
866
  } else {
625
867
  onChange == null ? void 0 : onChange(newValue);
626
868
  }
627
869
  },
628
- [isControlled, onChange, isMultiple]
870
+ [onChange, isMultiple]
629
871
  );
630
- const handleClear = (0, import_react23.useCallback)(() => {
872
+ const handleClear = (0, import_react25.useCallback)(() => {
631
873
  onClear == null ? void 0 : onClear();
632
874
  handleChange(isMultiple ? [] : null);
633
875
  }, [onClear, handleChange, isMultiple]);
634
- const selectedKeys = (0, import_react23.useMemo)(() => {
876
+ const selectedKeys = (0, import_react25.useMemo)(() => {
635
877
  if (currentValue == null) return /* @__PURE__ */ new Set();
636
878
  return new Set(Array.isArray(currentValue) ? currentValue : [currentValue]);
637
879
  }, [currentValue]);
638
- const handleSelectionChange = (0, import_react23.useCallback)(
880
+ const handleSelectionChange = (0, import_react25.useCallback)(
639
881
  (keys) => {
640
882
  var _a;
641
883
  if (keys === "all") return;
@@ -656,8 +898,8 @@ function useSelect({
656
898
  }
657
899
 
658
900
  // src/ui/inputs/select/select.tsx
659
- var import_jsx_runtime21 = require("react/jsx-runtime");
660
- var selectWrapperVariants = (0, import_tailwind_variants3.tv)({
901
+ var import_jsx_runtime22 = require("react/jsx-runtime");
902
+ var selectWrapperVariants = (0, import_tailwind_variants5.tv)({
661
903
  variants: {
662
904
  variant: {
663
905
  flat: "",
@@ -667,12 +909,14 @@ var selectWrapperVariants = (0, import_tailwind_variants3.tv)({
667
909
  }
668
910
  }
669
911
  });
670
- var Select = import_react24.default.forwardRef(
912
+ var Select = import_react26.default.forwardRef(
671
913
  ({
672
914
  value,
673
- defaultSelectedKeys,
674
915
  items,
916
+ children,
917
+ selectedKeys: selectedKeysProp,
675
918
  onChange,
919
+ onSelectionChange,
676
920
  selectionMode,
677
921
  onClear,
678
922
  variant,
@@ -681,6 +925,8 @@ var Select = import_react24.default.forwardRef(
681
925
  isClearable,
682
926
  ...props
683
927
  }, ref) => {
928
+ const usesExternalSelectionControl = selectedKeysProp !== void 0 || onSelectionChange !== void 0;
929
+ const selectChildren = children != null ? children : (item) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_select.SelectItem, { children: item.label }, item.key);
684
930
  const { selectedKeys, handleSelectionChange, handleClear, showClearButton } = useSelect({
685
931
  value,
686
932
  onChange,
@@ -688,48 +934,48 @@ var Select = import_react24.default.forwardRef(
688
934
  selectionMode,
689
935
  isClearable
690
936
  });
691
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
937
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
692
938
  import_select.Select,
693
939
  {
694
940
  ref,
695
941
  classNames: {
696
942
  ...classNames,
697
- trigger: selectWrapperVariants({ variant }),
943
+ trigger: cn(selectWrapperVariants({ variant }), classNames == null ? void 0 : classNames.trigger),
698
944
  innerWrapper: "group"
699
945
  },
700
- defaultSelectedKeys,
701
- endContent: (endContent || showClearButton) && /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "flex items-center gap-1", children: [
946
+ endContent: (endContent || showClearButton) && /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "flex items-center gap-1", children: [
702
947
  endContent,
703
- showClearButton && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(ClearButton, { onClear: handleClear })
948
+ showClearButton && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(ClearButton, { onClear: handleClear })
704
949
  ] }),
705
950
  items,
706
- selectedKeys,
951
+ selectedKeys: usesExternalSelectionControl ? selectedKeysProp : selectedKeys,
707
952
  selectionMode,
708
953
  variant,
709
- onSelectionChange: handleSelectionChange,
954
+ onSelectionChange: usesExternalSelectionControl ? onSelectionChange : handleSelectionChange,
710
955
  ...props,
711
- children: (item) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_select.SelectItem, { children: item.label }, item.key)
956
+ children: selectChildren
712
957
  }
713
958
  );
714
959
  }
715
960
  );
716
961
  Select.displayName = "TeachInUI.Select";
962
+ var SelectItem = import_select.SelectItem;
717
963
 
718
964
  // src/ui/inputs/switch/switch.tsx
719
- var import_react25 = __toESM(require("react"));
965
+ var import_react27 = __toESM(require("react"));
720
966
  var import_switch = require("@heroui/switch");
721
- var import_jsx_runtime22 = require("react/jsx-runtime");
722
- var Switch = import_react25.default.forwardRef(({ ...props }, ref) => {
723
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_switch.Switch, { ref, ...props });
967
+ var import_jsx_runtime23 = require("react/jsx-runtime");
968
+ var Switch = import_react27.default.forwardRef(({ ...props }, ref) => {
969
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_switch.Switch, { ref, ...props });
724
970
  });
725
971
  Switch.displayName = "TeachInUI.Switch";
726
972
 
727
973
  // src/ui/inputs/switch/favorite-switch.tsx
728
974
  var import_switch2 = require("@heroui/switch");
729
975
  var import_lucide_react3 = require("lucide-react");
730
- var import_tailwind_variants4 = require("tailwind-variants");
731
- var import_jsx_runtime23 = require("react/jsx-runtime");
732
- var bookmarkVariants = (0, import_tailwind_variants4.tv)({
976
+ var import_tailwind_variants6 = require("tailwind-variants");
977
+ var import_jsx_runtime24 = require("react/jsx-runtime");
978
+ var bookmarkVariants = (0, import_tailwind_variants6.tv)({
733
979
  base: "stroke-default-400 group-hover:fill-primary-100 group-hover:stroke-default-400",
734
980
  variants: {
735
981
  size: {
@@ -745,7 +991,7 @@ var bookmarkVariants = (0, import_tailwind_variants4.tv)({
745
991
  size: "md"
746
992
  }
747
993
  });
748
- var wrapperVariants = (0, import_tailwind_variants4.tv)({
994
+ var wrapperVariants = (0, import_tailwind_variants6.tv)({
749
995
  base: "flex cursor-pointer items-center justify-center rounded-sm bg-transparent!",
750
996
  variants: {
751
997
  size: {
@@ -763,16 +1009,16 @@ function FavoriteSwitch({ isSelected, onValueChange, size }) {
763
1009
  isSelected,
764
1010
  onValueChange
765
1011
  });
766
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(Component, { ...getBaseProps(), children: [
767
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "sr-only", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("input", { ...getInputProps() }) }),
768
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
1012
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(Component, { ...getBaseProps(), children: [
1013
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "sr-only", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("input", { ...getInputProps() }) }),
1014
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
769
1015
  "div",
770
1016
  {
771
1017
  ...getWrapperProps(),
772
1018
  className: slots.wrapper({
773
1019
  class: wrapperVariants({ size })
774
1020
  }),
775
- children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
1021
+ children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
776
1022
  import_lucide_react3.BookmarkIcon,
777
1023
  {
778
1024
  absoluteStrokeWidth: true,
@@ -792,45 +1038,45 @@ var import_radio = require("@heroui/radio");
792
1038
  var Radio = Object.assign(import_radio.Radio, { displayName: "TeachInUI.Radio" });
793
1039
 
794
1040
  // src/ui/inputs/radio/radio-group.tsx
795
- var import_react26 = __toESM(require("react"));
1041
+ var import_react28 = __toESM(require("react"));
796
1042
  var import_radio2 = require("@heroui/radio");
797
- var import_jsx_runtime24 = require("react/jsx-runtime");
798
- var RadioGroup = import_react26.default.forwardRef(
1043
+ var import_jsx_runtime25 = require("react/jsx-runtime");
1044
+ var RadioGroup = import_react28.default.forwardRef(
799
1045
  (props, ref) => {
800
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_radio2.RadioGroup, { ref, ...props });
1046
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_radio2.RadioGroup, { ref, ...props });
801
1047
  }
802
1048
  );
803
1049
  RadioGroup.displayName = "TeachInUI.RadioGroup";
804
1050
 
805
1051
  // src/ui/inputs/text/text.tsx
806
- var import_react27 = __toESM(require("react"));
807
- var import_jsx_runtime25 = require("react/jsx-runtime");
808
- var Text = import_react27.default.forwardRef(({ ...props }, ref) => {
809
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Input, { ref, type: "text", ...props });
1052
+ var import_react29 = __toESM(require("react"));
1053
+ var import_jsx_runtime26 = require("react/jsx-runtime");
1054
+ var Text = import_react29.default.forwardRef(({ ...props }, ref) => {
1055
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Input, { ref, type: "text", ...props });
810
1056
  });
811
1057
  Text.displayName = "TeachInUI.Text";
812
1058
 
813
1059
  // src/ui/inputs/textarea/textarea.tsx
814
1060
  var import_input6 = require("@heroui/input");
815
- var import_react28 = __toESM(require("react"));
816
- var import_jsx_runtime26 = require("react/jsx-runtime");
817
- var Textarea = import_react28.default.forwardRef(
1061
+ var import_react30 = __toESM(require("react"));
1062
+ var import_jsx_runtime27 = require("react/jsx-runtime");
1063
+ var Textarea = import_react30.default.forwardRef(
818
1064
  ({ minRows = 4, ...props }, ref) => {
819
- return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_input6.Textarea, { ref, minRows, ...props });
1065
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_input6.Textarea, { ref, minRows, ...props });
820
1066
  }
821
1067
  );
822
1068
  Textarea.displayName = "TeachInUI.Textarea";
823
1069
 
824
1070
  // src/ui/form/rhf/fields/input-field.tsx
825
- var import_jsx_runtime27 = require("react/jsx-runtime");
1071
+ var import_jsx_runtime28 = require("react/jsx-runtime");
826
1072
  function InputField({ name, ...props }) {
827
1073
  const { control } = (0, import_react_hook_form.useFormContext)();
828
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
1074
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
829
1075
  import_react_hook_form.Controller,
830
1076
  {
831
1077
  control,
832
1078
  name,
833
- render: ({ field: { ref, ...field }, fieldState: { error } }) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
1079
+ render: ({ field: { ref, ...field }, fieldState: { error } }) => /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
834
1080
  Input,
835
1081
  {
836
1082
  ...props,
@@ -848,15 +1094,15 @@ InputField.displayName = "TeachInUI.InputField";
848
1094
 
849
1095
  // src/ui/form/rhf/fields/text-field.tsx
850
1096
  var import_react_hook_form2 = require("react-hook-form");
851
- var import_jsx_runtime28 = require("react/jsx-runtime");
1097
+ var import_jsx_runtime29 = require("react/jsx-runtime");
852
1098
  function TextField({ name, ...props }) {
853
1099
  const { control } = (0, import_react_hook_form2.useFormContext)();
854
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
1100
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
855
1101
  import_react_hook_form2.Controller,
856
1102
  {
857
1103
  control,
858
1104
  name,
859
- render: ({ field: { ref, ...field }, fieldState: { error } }) => /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Text, { ...props, ...field, ref, errorMessage: error == null ? void 0 : error.message, isInvalid: !!error })
1105
+ render: ({ field: { ref, ...field }, fieldState: { error } }) => /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Text, { ...props, ...field, ref, errorMessage: error == null ? void 0 : error.message, isInvalid: !!error })
860
1106
  }
861
1107
  );
862
1108
  }
@@ -864,15 +1110,15 @@ TextField.displayName = "TeachInUI.TextField";
864
1110
 
865
1111
  // src/ui/form/rhf/fields/email-field.tsx
866
1112
  var import_react_hook_form3 = require("react-hook-form");
867
- var import_jsx_runtime29 = require("react/jsx-runtime");
1113
+ var import_jsx_runtime30 = require("react/jsx-runtime");
868
1114
  function EmailField({ name, ...props }) {
869
1115
  const { control } = (0, import_react_hook_form3.useFormContext)();
870
- return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
1116
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
871
1117
  import_react_hook_form3.Controller,
872
1118
  {
873
1119
  control,
874
1120
  name,
875
- render: ({ field: { ref, ...field }, fieldState: { error } }) => /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Email, { ...props, ...field, ref, errorMessage: error == null ? void 0 : error.message, isInvalid: !!error })
1121
+ render: ({ field: { ref, ...field }, fieldState: { error } }) => /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Email, { ...props, ...field, ref, errorMessage: error == null ? void 0 : error.message, isInvalid: !!error })
876
1122
  }
877
1123
  );
878
1124
  }
@@ -880,15 +1126,15 @@ EmailField.displayName = "TeachInUI.EmailField";
880
1126
 
881
1127
  // src/ui/form/rhf/fields/search-field.tsx
882
1128
  var import_react_hook_form4 = require("react-hook-form");
883
- var import_jsx_runtime30 = require("react/jsx-runtime");
1129
+ var import_jsx_runtime31 = require("react/jsx-runtime");
884
1130
  function SearchField({ name, ...props }) {
885
1131
  const { control } = (0, import_react_hook_form4.useFormContext)();
886
- return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
1132
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
887
1133
  import_react_hook_form4.Controller,
888
1134
  {
889
1135
  control,
890
1136
  name,
891
- render: ({ field: { ref, ...field }, fieldState: { error } }) => /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
1137
+ render: ({ field: { ref, ...field }, fieldState: { error } }) => /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
892
1138
  Search,
893
1139
  {
894
1140
  ...props,
@@ -906,15 +1152,15 @@ SearchField.displayName = "TeachInUI.SearchField";
906
1152
 
907
1153
  // src/ui/form/rhf/fields/textarea-field.tsx
908
1154
  var import_react_hook_form5 = require("react-hook-form");
909
- var import_jsx_runtime31 = require("react/jsx-runtime");
1155
+ var import_jsx_runtime32 = require("react/jsx-runtime");
910
1156
  function TextareaField({ name, ...props }) {
911
1157
  const { control } = (0, import_react_hook_form5.useFormContext)();
912
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
1158
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
913
1159
  import_react_hook_form5.Controller,
914
1160
  {
915
1161
  control,
916
1162
  name,
917
- render: ({ field: { ref, ...field }, fieldState: { error } }) => /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
1163
+ render: ({ field: { ref, ...field }, fieldState: { error } }) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
918
1164
  Textarea,
919
1165
  {
920
1166
  ...props,
@@ -931,15 +1177,15 @@ TextareaField.displayName = "TeachInUI.TextareaField";
931
1177
 
932
1178
  // src/ui/form/rhf/fields/select-field.tsx
933
1179
  var import_react_hook_form6 = require("react-hook-form");
934
- var import_jsx_runtime32 = require("react/jsx-runtime");
1180
+ var import_jsx_runtime33 = require("react/jsx-runtime");
935
1181
  function SelectField({ name, selectionMode, ...props }) {
936
1182
  const { control } = (0, import_react_hook_form6.useFormContext)();
937
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
1183
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
938
1184
  import_react_hook_form6.Controller,
939
1185
  {
940
1186
  control,
941
1187
  name,
942
- render: ({ field, fieldState: { error } }) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
1188
+ render: ({ field, fieldState: { error } }) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
943
1189
  Select,
944
1190
  {
945
1191
  selectionMode,
@@ -957,15 +1203,15 @@ SelectField.displayName = "TeachInUI.SelectField";
957
1203
 
958
1204
  // src/ui/form/rhf/fields/autocomplete-field.tsx
959
1205
  var import_react_hook_form7 = require("react-hook-form");
960
- var import_jsx_runtime33 = require("react/jsx-runtime");
1206
+ var import_jsx_runtime34 = require("react/jsx-runtime");
961
1207
  function AutocompleteField({ name, ...props }) {
962
1208
  const { control } = (0, import_react_hook_form7.useFormContext)();
963
- return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
1209
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
964
1210
  import_react_hook_form7.Controller,
965
1211
  {
966
1212
  control,
967
1213
  name,
968
- render: ({ field, fieldState: { error } }) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
1214
+ render: ({ field, fieldState: { error } }) => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
969
1215
  Autocomplete,
970
1216
  {
971
1217
  ...props,
@@ -982,15 +1228,15 @@ AutocompleteField.displayName = "TeachInUI.AutocompleteField";
982
1228
 
983
1229
  // src/ui/form/rhf/fields/date-picker-field.tsx
984
1230
  var import_react_hook_form8 = require("react-hook-form");
985
- var import_jsx_runtime34 = require("react/jsx-runtime");
1231
+ var import_jsx_runtime35 = require("react/jsx-runtime");
986
1232
  function DatePickerField({ name, ...props }) {
987
1233
  const { control } = (0, import_react_hook_form8.useFormContext)();
988
- return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
1234
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
989
1235
  import_react_hook_form8.Controller,
990
1236
  {
991
1237
  control,
992
1238
  name,
993
- render: ({ field: { ref, ...field }, fieldState: { error } }) => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
1239
+ render: ({ field: { ref, ...field }, fieldState: { error } }) => /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
994
1240
  DatePicker,
995
1241
  {
996
1242
  ...props,
@@ -1007,17 +1253,17 @@ DatePickerField.displayName = "TeachInUI.DatePickerField";
1007
1253
 
1008
1254
  // src/ui/form/rhf/fields/checkbox-field.tsx
1009
1255
  var import_react_hook_form9 = require("react-hook-form");
1010
- var import_jsx_runtime35 = require("react/jsx-runtime");
1256
+ var import_jsx_runtime36 = require("react/jsx-runtime");
1011
1257
  function CheckboxField({ name, ...props }) {
1012
1258
  const { control } = (0, import_react_hook_form9.useFormContext)();
1013
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
1259
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
1014
1260
  import_react_hook_form9.Controller,
1015
1261
  {
1016
1262
  control,
1017
1263
  name,
1018
- render: ({ field, fieldState: { error } }) => /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { children: [
1019
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Checkbox, { ...props, isSelected: field.value, onValueChange: field.onChange }),
1020
- error && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: "text-tiny text-danger", children: error.message })
1264
+ render: ({ field, fieldState: { error } }) => /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { children: [
1265
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Checkbox, { ...props, isSelected: field.value, onValueChange: field.onChange }),
1266
+ error && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: "text-tiny text-danger", children: error.message })
1021
1267
  ] })
1022
1268
  }
1023
1269
  );
@@ -1026,17 +1272,17 @@ CheckboxField.displayName = "TeachInUI.CheckboxField";
1026
1272
 
1027
1273
  // src/ui/form/rhf/fields/switch-field.tsx
1028
1274
  var import_react_hook_form10 = require("react-hook-form");
1029
- var import_jsx_runtime36 = require("react/jsx-runtime");
1275
+ var import_jsx_runtime37 = require("react/jsx-runtime");
1030
1276
  function SwitchField({ name, ...props }) {
1031
1277
  const { control } = (0, import_react_hook_form10.useFormContext)();
1032
- return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
1278
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
1033
1279
  import_react_hook_form10.Controller,
1034
1280
  {
1035
1281
  control,
1036
1282
  name,
1037
- render: ({ field, fieldState: { error } }) => /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { children: [
1038
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Switch, { ...props, isSelected: field.value, onValueChange: field.onChange }),
1039
- error && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: "text-tiny text-danger", children: error.message })
1283
+ render: ({ field, fieldState: { error } }) => /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { children: [
1284
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(Switch, { ...props, isSelected: field.value, onValueChange: field.onChange }),
1285
+ error && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: "text-tiny text-danger", children: error.message })
1040
1286
  ] })
1041
1287
  }
1042
1288
  );
@@ -1045,15 +1291,15 @@ SwitchField.displayName = "TeachInUI.SwitchField";
1045
1291
 
1046
1292
  // src/ui/form/rhf/fields/radio-field.tsx
1047
1293
  var import_react_hook_form11 = require("react-hook-form");
1048
- var import_jsx_runtime37 = require("react/jsx-runtime");
1294
+ var import_jsx_runtime38 = require("react/jsx-runtime");
1049
1295
  function RadioField({ name, ...props }) {
1050
1296
  const { control } = (0, import_react_hook_form11.useFormContext)();
1051
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
1297
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
1052
1298
  import_react_hook_form11.Controller,
1053
1299
  {
1054
1300
  control,
1055
1301
  name,
1056
- render: ({ field: { ref, value, onChange, ...field }, fieldState: { error } }) => /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
1302
+ render: ({ field: { ref, value, onChange, ...field }, fieldState: { error } }) => /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
1057
1303
  RadioGroup,
1058
1304
  {
1059
1305
  ...props,
@@ -1072,15 +1318,15 @@ RadioField.displayName = "TeachInUI.RadioField";
1072
1318
 
1073
1319
  // src/ui/form/form.tsx
1074
1320
  var import_form = require("@heroui/form");
1075
- var import_react29 = __toESM(require("react"));
1076
- var import_jsx_runtime38 = require("react/jsx-runtime");
1077
- var Form = import_react29.default.forwardRef(({ ...props }, ref) => {
1078
- return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_form.Form, { ref, ...props });
1321
+ var import_react31 = __toESM(require("react"));
1322
+ var import_jsx_runtime39 = require("react/jsx-runtime");
1323
+ var Form = import_react31.default.forwardRef(({ ...props }, ref) => {
1324
+ return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_form.Form, { ref, ...props });
1079
1325
  });
1080
1326
  Form.displayName = "TeachInUI.Form";
1081
1327
 
1082
1328
  // src/ui/format/datetime.tsx
1083
- var import_jsx_runtime39 = require("react/jsx-runtime");
1329
+ var import_jsx_runtime40 = require("react/jsx-runtime");
1084
1330
  var defaultFormat = {
1085
1331
  day: "numeric",
1086
1332
  month: "long",
@@ -1096,15 +1342,15 @@ function Datetime({
1096
1342
  fallback = "\u2014"
1097
1343
  }) {
1098
1344
  const formatter = new Intl.DateTimeFormat(locale, format);
1099
- if (!value) return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_jsx_runtime39.Fragment, { children: fallback });
1345
+ if (!value) return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_jsx_runtime40.Fragment, { children: fallback });
1100
1346
  const date = value instanceof Date ? value : new Date(value);
1101
- if (isNaN(date.getTime())) return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_jsx_runtime39.Fragment, { children: fallback });
1102
- return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_jsx_runtime39.Fragment, { children: formatter.format(date) });
1347
+ if (isNaN(date.getTime())) return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_jsx_runtime40.Fragment, { children: fallback });
1348
+ return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_jsx_runtime40.Fragment, { children: formatter.format(date) });
1103
1349
  }
1104
1350
  Datetime.displayName = "TeachInUI.FormatDatetime";
1105
1351
 
1106
1352
  // src/ui/format/date.tsx
1107
- var import_jsx_runtime40 = require("react/jsx-runtime");
1353
+ var import_jsx_runtime41 = require("react/jsx-runtime");
1108
1354
  var defaultFormat2 = {
1109
1355
  day: "numeric",
1110
1356
  month: "long",
@@ -1117,15 +1363,15 @@ function DateFormat({
1117
1363
  fallback = "\u2014"
1118
1364
  }) {
1119
1365
  const formatter = new Intl.DateTimeFormat(locale, format);
1120
- if (!value) return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_jsx_runtime40.Fragment, { children: fallback });
1366
+ if (!value) return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_jsx_runtime41.Fragment, { children: fallback });
1121
1367
  const date = value instanceof Date ? value : new Date(value);
1122
- if (isNaN(date.getTime())) return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_jsx_runtime40.Fragment, { children: fallback });
1123
- return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_jsx_runtime40.Fragment, { children: formatter.format(date) });
1368
+ if (isNaN(date.getTime())) return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_jsx_runtime41.Fragment, { children: fallback });
1369
+ return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_jsx_runtime41.Fragment, { children: formatter.format(date) });
1124
1370
  }
1125
1371
  DateFormat.displayName = "TeachInUI.FormatDate";
1126
1372
 
1127
1373
  // src/ui/format/time.tsx
1128
- var import_jsx_runtime41 = require("react/jsx-runtime");
1374
+ var import_jsx_runtime42 = require("react/jsx-runtime");
1129
1375
  var defaultFormat3 = {
1130
1376
  hour: "2-digit",
1131
1377
  minute: "2-digit"
@@ -1137,15 +1383,15 @@ function Time({
1137
1383
  fallback = "\u2014"
1138
1384
  }) {
1139
1385
  const formatter = new Intl.DateTimeFormat(locale, format);
1140
- if (!value) return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_jsx_runtime41.Fragment, { children: fallback });
1386
+ if (!value) return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_jsx_runtime42.Fragment, { children: fallback });
1141
1387
  const date = value instanceof Date ? value : new Date(value);
1142
- if (isNaN(date.getTime())) return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_jsx_runtime41.Fragment, { children: fallback });
1143
- return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_jsx_runtime41.Fragment, { children: formatter.format(date) });
1388
+ if (isNaN(date.getTime())) return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_jsx_runtime42.Fragment, { children: fallback });
1389
+ return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_jsx_runtime42.Fragment, { children: formatter.format(date) });
1144
1390
  }
1145
1391
  Time.displayName = "TeachInUI.FormatTime";
1146
1392
 
1147
1393
  // src/ui/format/currency.tsx
1148
- var import_jsx_runtime42 = require("react/jsx-runtime");
1394
+ var import_jsx_runtime43 = require("react/jsx-runtime");
1149
1395
  function Currency({
1150
1396
  amount,
1151
1397
  currency = "RUB",
@@ -1160,23 +1406,23 @@ function Currency({
1160
1406
  maximumFractionDigits: decimals
1161
1407
  }
1162
1408
  });
1163
- return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_jsx_runtime42.Fragment, { children: formatter.format(amount) });
1409
+ return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_jsx_runtime43.Fragment, { children: formatter.format(amount) });
1164
1410
  }
1165
1411
  Currency.displayName = "TeachInUI.FormatCurrency";
1166
1412
 
1167
1413
  // src/ui/format/number.tsx
1168
- var import_jsx_runtime43 = require("react/jsx-runtime");
1169
- function Number2({ value, decimals, locale = "ru-RU" }) {
1414
+ var import_jsx_runtime44 = require("react/jsx-runtime");
1415
+ function Number3({ value, decimals, locale = "ru-RU" }) {
1170
1416
  const formatter = new Intl.NumberFormat(locale, {
1171
1417
  minimumFractionDigits: decimals != null ? decimals : 0,
1172
1418
  maximumFractionDigits: decimals != null ? decimals : 2
1173
1419
  });
1174
- return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_jsx_runtime43.Fragment, { children: formatter.format(value) });
1420
+ return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_jsx_runtime44.Fragment, { children: formatter.format(value) });
1175
1421
  }
1176
- Number2.displayName = "TeachInUI.FormatNumber";
1422
+ Number3.displayName = "TeachInUI.FormatNumber";
1177
1423
 
1178
1424
  // src/ui/format/percent.tsx
1179
- var import_jsx_runtime44 = require("react/jsx-runtime");
1425
+ var import_jsx_runtime45 = require("react/jsx-runtime");
1180
1426
  function Percent({
1181
1427
  value,
1182
1428
  decimals = 1,
@@ -1189,12 +1435,12 @@ function Percent({
1189
1435
  maximumFractionDigits: decimals
1190
1436
  });
1191
1437
  const normalizedValue = unit === "percent" ? value / 100 : value;
1192
- return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_jsx_runtime44.Fragment, { children: formatter.format(normalizedValue) });
1438
+ return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_jsx_runtime45.Fragment, { children: formatter.format(normalizedValue) });
1193
1439
  }
1194
1440
  Percent.displayName = "TeachInUI.FormatPercent";
1195
1441
 
1196
1442
  // src/ui/format/plural.tsx
1197
- var import_jsx_runtime45 = require("react/jsx-runtime");
1443
+ var import_jsx_runtime46 = require("react/jsx-runtime");
1198
1444
  function Plural({
1199
1445
  count,
1200
1446
  one,
@@ -1215,12 +1461,12 @@ function Plural({
1215
1461
  };
1216
1462
  const selectedForm = forms[rule];
1217
1463
  const result = showCount ? `${count} ${selectedForm}` : selectedForm;
1218
- return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_jsx_runtime45.Fragment, { children: result });
1464
+ return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_jsx_runtime46.Fragment, { children: result });
1219
1465
  }
1220
1466
  Plural.displayName = "TeachInUI.FormatPlural";
1221
1467
 
1222
1468
  // src/ui/format/duration.tsx
1223
- var import_jsx_runtime46 = require("react/jsx-runtime");
1469
+ var import_jsx_runtime47 = require("react/jsx-runtime");
1224
1470
  function Duration({
1225
1471
  minutes = 0,
1226
1472
  hours = 0,
@@ -1242,25 +1488,25 @@ function Duration({
1242
1488
  if (remainingMinutes > 0 || totalDays === 0 && totalHours === 0) {
1243
1489
  parts.push(compact ? `${remainingMinutes}\u043C` : `${remainingMinutes} \u043C\u0438\u043D`);
1244
1490
  }
1245
- return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_jsx_runtime46.Fragment, { children: parts.join(" ") });
1491
+ return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_jsx_runtime47.Fragment, { children: parts.join(" ") });
1246
1492
  }
1247
1493
  Duration.displayName = "TeachInUI.FormatDuration";
1248
1494
 
1249
1495
  // src/ui/format/boolean.tsx
1250
- var import_jsx_runtime47 = require("react/jsx-runtime");
1251
- function Boolean({
1496
+ var import_jsx_runtime48 = require("react/jsx-runtime");
1497
+ function Boolean2({
1252
1498
  value,
1253
1499
  trueLabel = "\u0414\u0430",
1254
1500
  falseLabel = "\u041D\u0435\u0442",
1255
1501
  nullLabel = "\u2014"
1256
1502
  }) {
1257
- if (value === null || value === void 0) return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_jsx_runtime47.Fragment, { children: nullLabel });
1258
- return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_jsx_runtime47.Fragment, { children: value ? trueLabel : falseLabel });
1503
+ if (value === null || value === void 0) return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_jsx_runtime48.Fragment, { children: nullLabel });
1504
+ return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_jsx_runtime48.Fragment, { children: value ? trueLabel : falseLabel });
1259
1505
  }
1260
- Boolean.displayName = "TeachInUI.FormatBoolean";
1506
+ Boolean2.displayName = "TeachInUI.FormatBoolean";
1261
1507
 
1262
1508
  // src/ui/format/uuid.tsx
1263
- var import_jsx_runtime48 = require("react/jsx-runtime");
1509
+ var import_jsx_runtime49 = require("react/jsx-runtime");
1264
1510
  var uuidHyphenatedRegex = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$/;
1265
1511
  function normalizeUuid(value) {
1266
1512
  const trimmed = value.trim();
@@ -1283,20 +1529,20 @@ function Uuid({
1283
1529
  showVersion = false,
1284
1530
  invalidFallback = "\u2014"
1285
1531
  }) {
1286
- if (!value) return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_jsx_runtime48.Fragment, { children: invalidFallback });
1532
+ if (!value) return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_jsx_runtime49.Fragment, { children: invalidFallback });
1287
1533
  const normalized = normalizeUuid(value);
1288
- if (!normalized) return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_jsx_runtime48.Fragment, { children: invalidFallback });
1534
+ if (!normalized) return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_jsx_runtime49.Fragment, { children: invalidFallback });
1289
1535
  const formatted = letterCase === "upper" ? normalized.toUpperCase() : normalized;
1290
- if (!showVersion) return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_jsx_runtime48.Fragment, { children: formatted });
1536
+ if (!showVersion) return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_jsx_runtime49.Fragment, { children: formatted });
1291
1537
  const version = detectUuidVersion(normalized);
1292
- return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_jsx_runtime48.Fragment, { children: version !== null ? `${formatted} (v${version})` : formatted });
1538
+ return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_jsx_runtime49.Fragment, { children: version !== null ? `${formatted} (v${version})` : formatted });
1293
1539
  }
1294
1540
  Uuid.displayName = "TeachInUI.FormatUUID";
1295
1541
 
1296
1542
  // src/ui/surface/bento/bento.tsx
1297
- var import_tailwind_variants5 = require("tailwind-variants");
1298
- var import_jsx_runtime49 = require("react/jsx-runtime");
1299
- var bento = (0, import_tailwind_variants5.tv)({
1543
+ var import_tailwind_variants7 = require("tailwind-variants");
1544
+ var import_jsx_runtime50 = require("react/jsx-runtime");
1545
+ var bento = (0, import_tailwind_variants7.tv)({
1300
1546
  base: "p-8 transition-colors",
1301
1547
  variants: {
1302
1548
  color: {
@@ -1333,23 +1579,14 @@ var bento = (0, import_tailwind_variants5.tv)({
1333
1579
  }
1334
1580
  });
1335
1581
  var Bento = ({ className, ...props }) => {
1336
- return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: bento({ ...props, className }), ...props });
1582
+ return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("div", { className: bento({ ...props, className }), ...props });
1337
1583
  };
1338
1584
  Bento.displayName = "TeachInUI.Bento";
1339
1585
 
1340
1586
  // src/ui/surface/card/card.tsx
1341
- var import_react30 = __toESM(require("react"));
1587
+ var import_react32 = __toESM(require("react"));
1342
1588
  var import_card = require("@heroui/card");
1343
-
1344
- // src/ui/style/css.ts
1345
- var import_clsx = require("clsx");
1346
- var import_tailwind_merge = require("tailwind-merge");
1347
- function cn(...inputs) {
1348
- return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
1349
- }
1350
-
1351
- // src/ui/surface/card/card.tsx
1352
- var import_jsx_runtime50 = require("react/jsx-runtime");
1589
+ var import_jsx_runtime51 = require("react/jsx-runtime");
1353
1590
  var CardBase = extendVariants2(import_card.Card, {
1354
1591
  variants: {
1355
1592
  radius: {
@@ -1362,20 +1599,20 @@ var CardBase = extendVariants2(import_card.Card, {
1362
1599
  shadow: "none"
1363
1600
  }
1364
1601
  });
1365
- var Root = import_react30.default.forwardRef(({ children, className, ...props }, ref) => {
1366
- return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(CardBase, { ref, className: cn("bg-default-100", className), ...props, children });
1602
+ var Root = import_react32.default.forwardRef(({ children, className, ...props }, ref) => {
1603
+ return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(CardBase, { ref, className: cn("bg-default-100", className), ...props, children });
1367
1604
  });
1368
1605
  Root.displayName = "TeachInUI.Card.Root";
1369
- var Header = import_react30.default.forwardRef(({ children, ...props }, ref) => {
1370
- return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_card.CardHeader, { ref, ...props, children });
1606
+ var Header = import_react32.default.forwardRef(({ children, ...props }, ref) => {
1607
+ return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_card.CardHeader, { ref, ...props, children });
1371
1608
  });
1372
1609
  Header.displayName = "TeachInUI.Card.Header";
1373
- var Body = import_react30.default.forwardRef(({ children, ...props }, ref) => {
1374
- return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_card.CardBody, { ref, ...props, children });
1610
+ var Body = import_react32.default.forwardRef(({ children, ...props }, ref) => {
1611
+ return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_card.CardBody, { ref, ...props, children });
1375
1612
  });
1376
1613
  Body.displayName = "TeachInUI.Card.Body";
1377
- var Footer = import_react30.default.forwardRef(({ children, ...props }, ref) => {
1378
- return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_card.CardFooter, { ref, ...props, children });
1614
+ var Footer = import_react32.default.forwardRef(({ children, ...props }, ref) => {
1615
+ return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_card.CardFooter, { ref, ...props, children });
1379
1616
  });
1380
1617
  Footer.displayName = "TeachInUI.Card.Footer";
1381
1618
  var Card = {
@@ -1387,9 +1624,9 @@ var Card = {
1387
1624
 
1388
1625
  // src/ui/layout/container/container.tsx
1389
1626
  var import_react_slot = require("@radix-ui/react-slot");
1390
- var import_tailwind_variants6 = require("tailwind-variants");
1391
- var import_jsx_runtime51 = require("react/jsx-runtime");
1392
- var variants = (0, import_tailwind_variants6.tv)({
1627
+ var import_tailwind_variants8 = require("tailwind-variants");
1628
+ var import_jsx_runtime52 = require("react/jsx-runtime");
1629
+ var variants = (0, import_tailwind_variants8.tv)({
1393
1630
  base: "w-full mx-auto px-6",
1394
1631
  variants: {
1395
1632
  size: {
@@ -1408,58 +1645,58 @@ var variants = (0, import_tailwind_variants6.tv)({
1408
1645
  });
1409
1646
  var Container = ({ children, asChild = false, className, size, ...props }) => {
1410
1647
  const Comp = asChild ? import_react_slot.Slot : "div";
1411
- return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Comp, { className: cn(variants({ size }), className), ...props, children });
1648
+ return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Comp, { className: cn(variants({ size }), className), ...props, children });
1412
1649
  };
1413
1650
  Container.displayName = "TeachInUI.Container";
1414
1651
 
1415
1652
  // src/ui/layout/page/breadcrumbs.tsx
1416
1653
  var import_breadcrumbs = require("@heroui/breadcrumbs");
1417
- var import_jsx_runtime52 = require("react/jsx-runtime");
1418
- var Breadcrumbs = ({ items }) => /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_breadcrumbs.Breadcrumbs, { children: items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_breadcrumbs.BreadcrumbItem, { href: item.href, isDisabled: item.href === void 0, children: item.label }, item.label)) });
1654
+ var import_jsx_runtime53 = require("react/jsx-runtime");
1655
+ var Breadcrumbs = ({ items }) => /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_breadcrumbs.Breadcrumbs, { children: items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_breadcrumbs.BreadcrumbItem, { href: item.href, isDisabled: item.href === void 0, children: item.label }, item.label)) });
1419
1656
 
1420
1657
  // src/ui/layout/page/page-content.tsx
1421
- var import_jsx_runtime53 = require("react/jsx-runtime");
1658
+ var import_jsx_runtime54 = require("react/jsx-runtime");
1422
1659
  var Root2 = ({
1423
1660
  children,
1424
1661
  breadcrumbs = []
1425
- }) => /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "flex flex-col gap-6", children: [
1426
- breadcrumbs.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(Breadcrumbs, { items: breadcrumbs }),
1662
+ }) => /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "flex flex-col gap-6", children: [
1663
+ breadcrumbs.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Breadcrumbs, { items: breadcrumbs }),
1427
1664
  children
1428
1665
  ] });
1429
1666
  Root2.displayName = "TeachInUI.PageContent.Root";
1430
- var Header2 = ({ children, ...others }) => /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("header", { className: "flex items-center justify-between gap-4", role: "banner", ...others, children });
1667
+ var Header2 = ({ children, ...others }) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("header", { className: "flex items-center justify-between gap-4", role: "banner", ...others, children });
1431
1668
  Header2.displayName = "TeachInUI.PageContent.Header";
1432
1669
  var Title = ({
1433
1670
  children,
1434
1671
  ...others
1435
- }) => /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("h1", { className: "text-4xl leading-10 font-bold", ...others, children });
1672
+ }) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("h1", { className: "text-4xl leading-10 font-bold", ...others, children });
1436
1673
  Title.displayName = "TeachInUI.PageContent.Title";
1437
1674
  var Actions = ({
1438
1675
  children,
1439
1676
  ...others
1440
- }) => /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { className: "flex gap-2", role: "group", ...others, children });
1677
+ }) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "flex gap-2", role: "group", ...others, children });
1441
1678
  Actions.displayName = "TeachInUI.PageContent.Actions";
1442
- var Body2 = ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { className: "flex flex-col gap-6", children });
1679
+ var Body2 = ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "flex flex-col gap-6", children });
1443
1680
  Body2.displayName = "TeachInUI.PageContent.Body";
1444
1681
  var Section = ({
1445
1682
  children,
1446
1683
  ...others
1447
- }) => /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("section", { className: "flex flex-col gap-4", ...others, children });
1684
+ }) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("section", { className: "flex flex-col gap-4", ...others, children });
1448
1685
  Section.displayName = "TeachInUI.PageContent.Section";
1449
1686
  var SectionHeader = ({
1450
1687
  children,
1451
1688
  ...others
1452
- }) => /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { className: "flex items-center justify-between", ...others, children });
1689
+ }) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "flex items-center justify-between", ...others, children });
1453
1690
  SectionHeader.displayName = "TeachInUI.PageContent.SectionHeader";
1454
1691
  var SectionTitle = ({
1455
1692
  children,
1456
1693
  ...others
1457
- }) => /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("h2", { className: "text-3xl leading-9 font-bold", ...others, children });
1694
+ }) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("h2", { className: "text-3xl leading-9 font-bold", ...others, children });
1458
1695
  SectionTitle.displayName = "TeachInUI.PageContent.SectionTitle";
1459
1696
  var SectionActions = ({
1460
1697
  children,
1461
1698
  ...others
1462
- }) => /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { className: "flex gap-2", role: "group", ...others, children });
1699
+ }) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "flex gap-2", role: "group", ...others, children });
1463
1700
  SectionActions.displayName = "TeachInUI.PageContent.SectionActions";
1464
1701
  var PageContent = {
1465
1702
  Root: Root2,
@@ -1474,19 +1711,19 @@ var PageContent = {
1474
1711
  };
1475
1712
 
1476
1713
  // src/ui/layout/page/page-loading.tsx
1477
- var import_jsx_runtime54 = require("react/jsx-runtime");
1478
- var PageLoading = () => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "flex h-screen items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Spinner, {}) });
1714
+ var import_jsx_runtime55 = require("react/jsx-runtime");
1715
+ var PageLoading = () => /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("div", { className: "flex h-screen items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Spinner, {}) });
1479
1716
  PageLoading.displayName = "TeachInUI.PageLoading";
1480
1717
 
1481
1718
  // src/ui/layout/page/section-loading.tsx
1482
- var import_jsx_runtime55 = require("react/jsx-runtime");
1483
- var SectionLoading = () => /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("div", { className: "flex min-h-[400px] items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Spinner, {}) });
1719
+ var import_jsx_runtime56 = require("react/jsx-runtime");
1720
+ var SectionLoading = () => /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: "flex min-h-[400px] items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(Spinner, {}) });
1484
1721
  SectionLoading.displayName = "TeachInUI.SectionLoading";
1485
1722
 
1486
1723
  // src/ui/layout/flex/flex.tsx
1487
- var import_tailwind_variants7 = require("tailwind-variants");
1488
- var import_jsx_runtime56 = require("react/jsx-runtime");
1489
- var variants2 = (0, import_tailwind_variants7.tv)({
1724
+ var import_tailwind_variants9 = require("tailwind-variants");
1725
+ var import_jsx_runtime57 = require("react/jsx-runtime");
1726
+ var variants2 = (0, import_tailwind_variants9.tv)({
1490
1727
  base: "flex",
1491
1728
  variants: {
1492
1729
  direction: {
@@ -1533,14 +1770,14 @@ var variants2 = (0, import_tailwind_variants7.tv)({
1533
1770
  }
1534
1771
  });
1535
1772
  var Flex = ({ className, ...props }) => {
1536
- return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: variants2({ ...props, className }), ...props });
1773
+ return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: variants2({ ...props, className }), ...props });
1537
1774
  };
1538
1775
  Flex.displayName = "TeachInUI.Flex";
1539
1776
 
1540
1777
  // src/ui/layout/grid/grid.tsx
1541
- var import_tailwind_variants8 = require("tailwind-variants");
1542
- var import_jsx_runtime57 = require("react/jsx-runtime");
1543
- var variants3 = (0, import_tailwind_variants8.tv)({
1778
+ var import_tailwind_variants10 = require("tailwind-variants");
1779
+ var import_jsx_runtime58 = require("react/jsx-runtime");
1780
+ var variants3 = (0, import_tailwind_variants10.tv)({
1544
1781
  base: "grid",
1545
1782
  variants: {
1546
1783
  columns: {
@@ -1589,26 +1826,26 @@ var variants3 = (0, import_tailwind_variants8.tv)({
1589
1826
  }
1590
1827
  });
1591
1828
  var Grid = ({ className, ...props }) => {
1592
- return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: variants3({ ...props, className }), ...props });
1829
+ return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { className: variants3({ ...props, className }), ...props });
1593
1830
  };
1594
1831
  Grid.displayName = "TeachInUI.Grid";
1595
1832
 
1596
1833
  // src/ui/layout/divider/divider.tsx
1597
- var import_react31 = __toESM(require("react"));
1834
+ var import_react33 = __toESM(require("react"));
1598
1835
  var import_divider = require("@heroui/divider");
1599
- var import_jsx_runtime58 = require("react/jsx-runtime");
1600
- var Divider = import_react31.default.forwardRef((props, ref) => {
1836
+ var import_jsx_runtime59 = require("react/jsx-runtime");
1837
+ var Divider = import_react33.default.forwardRef((props, ref) => {
1601
1838
  const { ...restProps } = props;
1602
- return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_divider.Divider, { ref, ...restProps });
1839
+ return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_divider.Divider, { ref, ...restProps });
1603
1840
  });
1604
1841
  Divider.displayName = "TeachInUI.Divider";
1605
1842
 
1606
1843
  // src/ui/layout/scroll-shadow/scroll-shadow.tsx
1607
- var import_react32 = __toESM(require("react"));
1844
+ var import_react34 = __toESM(require("react"));
1608
1845
  var import_scroll_shadow = require("@heroui/scroll-shadow");
1609
- var import_jsx_runtime59 = require("react/jsx-runtime");
1610
- var ScrollShadow = import_react32.default.forwardRef((props, ref) => {
1611
- return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_scroll_shadow.ScrollShadow, { ref, ...props });
1846
+ var import_jsx_runtime60 = require("react/jsx-runtime");
1847
+ var ScrollShadow = import_react34.default.forwardRef((props, ref) => {
1848
+ return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_scroll_shadow.ScrollShadow, { ref, ...props });
1612
1849
  });
1613
1850
  ScrollShadow.displayName = "TeachInUI.ScrollShadow";
1614
1851
 
@@ -1619,18 +1856,18 @@ var AccordionItem = Object.assign(import_accordion.AccordionItem, { displayName:
1619
1856
 
1620
1857
  // src/ui/navigation/link/link.tsx
1621
1858
  var import_link = require("@heroui/link");
1622
- var import_jsx_runtime60 = require("react/jsx-runtime");
1859
+ var import_jsx_runtime61 = require("react/jsx-runtime");
1623
1860
  function Link({ children, ...props }) {
1624
- return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_link.Link, { ...props, children });
1861
+ return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_link.Link, { ...props, children });
1625
1862
  }
1626
1863
  Link.displayName = "TeachInUI.Link";
1627
1864
 
1628
1865
  // src/ui/navigation/tabs/tabs.tsx
1629
- var import_react33 = __toESM(require("react"));
1866
+ var import_react35 = __toESM(require("react"));
1630
1867
  var import_tabs = require("@heroui/tabs");
1631
- var import_jsx_runtime61 = require("react/jsx-runtime");
1632
- var Root3 = import_react33.default.forwardRef(({ children, ...props }, ref) => {
1633
- return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_tabs.Tabs, { ref, ...props, children });
1868
+ var import_jsx_runtime62 = require("react/jsx-runtime");
1869
+ var Root3 = import_react35.default.forwardRef(({ children, ...props }, ref) => {
1870
+ return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_tabs.Tabs, { ref, ...props, children });
1634
1871
  });
1635
1872
  Root3.displayName = "TeachInUI.Tabs.Root";
1636
1873
  var Tab = Object.assign(import_tabs.Tab, {
@@ -1642,35 +1879,35 @@ var Tabs = {
1642
1879
  };
1643
1880
 
1644
1881
  // src/ui/navigation/navbar/navbar.tsx
1645
- var import_react34 = __toESM(require("react"));
1882
+ var import_react36 = __toESM(require("react"));
1646
1883
  var import_navbar = require("@heroui/navbar");
1647
- var import_jsx_runtime62 = require("react/jsx-runtime");
1648
- var Navbar = import_react34.default.forwardRef((props, ref) => {
1649
- return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_navbar.Navbar, { ref, ...props });
1884
+ var import_jsx_runtime63 = require("react/jsx-runtime");
1885
+ var Navbar = import_react36.default.forwardRef((props, ref) => {
1886
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_navbar.Navbar, { ref, ...props });
1650
1887
  });
1651
1888
  Navbar.displayName = "TeachInUI.Navbar";
1652
- var NavbarBrand = import_react34.default.forwardRef((props, ref) => {
1653
- return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_navbar.NavbarBrand, { ref, ...props });
1889
+ var NavbarBrand = import_react36.default.forwardRef((props, ref) => {
1890
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_navbar.NavbarBrand, { ref, ...props });
1654
1891
  });
1655
1892
  NavbarBrand.displayName = "TeachInUI.NavbarBrand";
1656
- var NavbarContent = import_react34.default.forwardRef((props, ref) => {
1657
- return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_navbar.NavbarContent, { ref, ...props });
1893
+ var NavbarContent = import_react36.default.forwardRef((props, ref) => {
1894
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_navbar.NavbarContent, { ref, ...props });
1658
1895
  });
1659
1896
  NavbarContent.displayName = "TeachInUI.NavbarContent";
1660
- var NavbarItem = import_react34.default.forwardRef((props, ref) => {
1661
- return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_navbar.NavbarItem, { ref, ...props });
1897
+ var NavbarItem = import_react36.default.forwardRef((props, ref) => {
1898
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_navbar.NavbarItem, { ref, ...props });
1662
1899
  });
1663
1900
  NavbarItem.displayName = "TeachInUI.NavbarItem";
1664
- var NavbarMenu = import_react34.default.forwardRef((props, ref) => {
1665
- return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_navbar.NavbarMenu, { ref, ...props });
1901
+ var NavbarMenu = import_react36.default.forwardRef((props, ref) => {
1902
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_navbar.NavbarMenu, { ref, ...props });
1666
1903
  });
1667
1904
  NavbarMenu.displayName = "TeachInUI.NavbarMenu";
1668
- var NavbarMenuItem = import_react34.default.forwardRef((props, ref) => {
1669
- return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_navbar.NavbarMenuItem, { ref, ...props });
1905
+ var NavbarMenuItem = import_react36.default.forwardRef((props, ref) => {
1906
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_navbar.NavbarMenuItem, { ref, ...props });
1670
1907
  });
1671
1908
  NavbarMenuItem.displayName = "TeachInUI.NavbarMenuItem";
1672
- var NavbarMenuToggle = import_react34.default.forwardRef((props, ref) => {
1673
- return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_navbar.NavbarMenuToggle, { ref, ...props });
1909
+ var NavbarMenuToggle = import_react36.default.forwardRef((props, ref) => {
1910
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_navbar.NavbarMenuToggle, { ref, ...props });
1674
1911
  });
1675
1912
  NavbarMenuToggle.displayName = "TeachInUI.NavbarMenuToggle";
1676
1913
 
@@ -1683,30 +1920,30 @@ var BreadcrumbItem2 = Object.assign(import_breadcrumbs3.BreadcrumbItem, {
1683
1920
 
1684
1921
  // src/ui/overlays/modal/modal.tsx
1685
1922
  var import_modal = require("@heroui/modal");
1686
- var import_jsx_runtime63 = require("react/jsx-runtime");
1923
+ var import_jsx_runtime64 = require("react/jsx-runtime");
1687
1924
  function Root4({
1688
1925
  size = "md",
1689
1926
  placement = "center",
1690
1927
  children,
1691
1928
  ...props
1692
1929
  }) {
1693
- return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_modal.Modal, { placement, size, ...props, children });
1930
+ return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_modal.Modal, { placement, size, ...props, children });
1694
1931
  }
1695
1932
  Root4.displayName = "TeachInUI.Modal.Root";
1696
1933
  function Content({ children, ...props }) {
1697
- return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_modal.ModalContent, { ...props, children: (onClose) => typeof children === "function" ? children(onClose) : children });
1934
+ return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_modal.ModalContent, { ...props, children: (onClose) => typeof children === "function" ? children(onClose) : children });
1698
1935
  }
1699
1936
  Content.displayName = "TeachInUI.Modal.Content";
1700
1937
  function Header3({ children, ...props }) {
1701
- return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_modal.ModalHeader, { ...props, children });
1938
+ return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_modal.ModalHeader, { ...props, children });
1702
1939
  }
1703
1940
  Header3.displayName = "TeachInUI.Modal.Header";
1704
1941
  function Body3({ children, ...props }) {
1705
- return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_modal.ModalBody, { ...props, children });
1942
+ return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_modal.ModalBody, { ...props, children });
1706
1943
  }
1707
1944
  Body3.displayName = "TeachInUI.Modal.Body";
1708
1945
  function Footer2({ children, ...props }) {
1709
- return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_modal.ModalFooter, { ...props, children });
1946
+ return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_modal.ModalFooter, { ...props, children });
1710
1947
  }
1711
1948
  Footer2.displayName = "TeachInUI.Modal.Footer";
1712
1949
  var Modal = {
@@ -1731,17 +1968,17 @@ var DropdownSection = Object.assign(import_dropdown.DropdownSection, {
1731
1968
 
1732
1969
  // src/ui/overlays/popover/popover.tsx
1733
1970
  var import_popover = require("@heroui/popover");
1734
- var import_jsx_runtime64 = require("react/jsx-runtime");
1971
+ var import_jsx_runtime65 = require("react/jsx-runtime");
1735
1972
  var Root5 = ({ children, ...props }) => {
1736
- return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_popover.Popover, { ...props, children });
1973
+ return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_popover.Popover, { ...props, children });
1737
1974
  };
1738
1975
  Root5.displayName = "TeachInUI.Popover.Root";
1739
1976
  var Trigger = ({ children, ...props }) => {
1740
- return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_popover.PopoverTrigger, { ...props, children });
1977
+ return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_popover.PopoverTrigger, { ...props, children });
1741
1978
  };
1742
1979
  Trigger.displayName = "TeachInUI.Popover.Trigger";
1743
1980
  var Content2 = ({ children, ...props }) => {
1744
- return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_popover.PopoverContent, { ...props, children });
1981
+ return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_popover.PopoverContent, { ...props, children });
1745
1982
  };
1746
1983
  Content2.displayName = "TeachInUI.Popover.Content";
1747
1984
  var Popover = {
@@ -1752,7 +1989,7 @@ var Popover = {
1752
1989
 
1753
1990
  // src/ui/provider/ui-provider.tsx
1754
1991
  var import_system3 = require("@heroui/system");
1755
- var import_jsx_runtime65 = require("react/jsx-runtime");
1992
+ var import_jsx_runtime66 = require("react/jsx-runtime");
1756
1993
  function UIProvider({
1757
1994
  children,
1758
1995
  locale = "ru-RU",
@@ -1760,9 +1997,9 @@ function UIProvider({
1760
1997
  navigate,
1761
1998
  toastProviderProps
1762
1999
  }) {
1763
- return /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(import_system3.HeroUIProvider, { labelPlacement, locale, navigate, children: [
2000
+ return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(import_system3.HeroUIProvider, { labelPlacement, locale, navigate, children: [
1764
2001
  children,
1765
- /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(ToastProvider, { ...toastProviderProps })
2002
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(ToastProvider, { ...toastProviderProps })
1766
2003
  ] });
1767
2004
  }
1768
2005
 
@@ -2216,6 +2453,7 @@ var theme = (0, import_theme.heroui)({
2216
2453
  NavbarMenu,
2217
2454
  NavbarMenuItem,
2218
2455
  NavbarMenuToggle,
2456
+ Number,
2219
2457
  PageContent,
2220
2458
  PageLoading,
2221
2459
  Pagination,
@@ -2235,6 +2473,7 @@ var theme = (0, import_theme.heroui)({
2235
2473
  SectionTitle,
2236
2474
  Select,
2237
2475
  SelectField,
2476
+ SelectItem,
2238
2477
  Spinner,
2239
2478
  Switch,
2240
2479
  SwitchField,