@helpwave/hightide 0.1.7 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (175) hide show
  1. package/dist/components/branding/HelpwaveBadge.js +30 -8
  2. package/dist/components/branding/HelpwaveBadge.js.map +1 -1
  3. package/dist/components/branding/HelpwaveBadge.mjs +30 -8
  4. package/dist/components/branding/HelpwaveBadge.mjs.map +1 -1
  5. package/dist/components/date/DatePicker.js +18 -20
  6. package/dist/components/date/DatePicker.js.map +1 -1
  7. package/dist/components/date/DatePicker.mjs +18 -20
  8. package/dist/components/date/DatePicker.mjs.map +1 -1
  9. package/dist/components/date/DayPicker.d.mts +1 -1
  10. package/dist/components/date/DayPicker.d.ts +1 -1
  11. package/dist/components/date/DayPicker.js +23 -11
  12. package/dist/components/date/DayPicker.js.map +1 -1
  13. package/dist/components/date/DayPicker.mjs +23 -11
  14. package/dist/components/date/DayPicker.mjs.map +1 -1
  15. package/dist/components/date/YearMonthPicker.js +106 -22
  16. package/dist/components/date/YearMonthPicker.js.map +1 -1
  17. package/dist/components/date/YearMonthPicker.mjs +106 -22
  18. package/dist/components/date/YearMonthPicker.mjs.map +1 -1
  19. package/dist/components/dialogs/ConfirmDialog.js +2 -2
  20. package/dist/components/dialogs/ConfirmDialog.js.map +1 -1
  21. package/dist/components/dialogs/ConfirmDialog.mjs +2 -2
  22. package/dist/components/dialogs/ConfirmDialog.mjs.map +1 -1
  23. package/dist/components/icons-and-geometry/Avatar.js +2 -2
  24. package/dist/components/icons-and-geometry/Avatar.js.map +1 -1
  25. package/dist/components/icons-and-geometry/Avatar.mjs +2 -2
  26. package/dist/components/icons-and-geometry/Avatar.mjs.map +1 -1
  27. package/dist/components/layout-and-navigation/Carousel.d.mts +1 -1
  28. package/dist/components/layout-and-navigation/Carousel.d.ts +1 -1
  29. package/dist/components/layout-and-navigation/Carousel.js +86 -28
  30. package/dist/components/layout-and-navigation/Carousel.js.map +1 -1
  31. package/dist/components/layout-and-navigation/Carousel.mjs +86 -28
  32. package/dist/components/layout-and-navigation/Carousel.mjs.map +1 -1
  33. package/dist/components/layout-and-navigation/Expandable.d.mts +3 -0
  34. package/dist/components/layout-and-navigation/Expandable.d.ts +3 -0
  35. package/dist/components/layout-and-navigation/Expandable.js +4 -3
  36. package/dist/components/layout-and-navigation/Expandable.js.map +1 -1
  37. package/dist/components/layout-and-navigation/Expandable.mjs +4 -3
  38. package/dist/components/layout-and-navigation/Expandable.mjs.map +1 -1
  39. package/dist/components/layout-and-navigation/FAQSection.js +4 -3
  40. package/dist/components/layout-and-navigation/FAQSection.js.map +1 -1
  41. package/dist/components/layout-and-navigation/FAQSection.mjs +4 -3
  42. package/dist/components/layout-and-navigation/FAQSection.mjs.map +1 -1
  43. package/dist/components/layout-and-navigation/Overlay.js +2 -2
  44. package/dist/components/layout-and-navigation/Overlay.js.map +1 -1
  45. package/dist/components/layout-and-navigation/Overlay.mjs +2 -2
  46. package/dist/components/layout-and-navigation/Overlay.mjs.map +1 -1
  47. package/dist/components/layout-and-navigation/SearchableList.d.mts +7 -6
  48. package/dist/components/layout-and-navigation/SearchableList.d.ts +7 -6
  49. package/dist/components/layout-and-navigation/SearchableList.js +114 -21
  50. package/dist/components/layout-and-navigation/SearchableList.js.map +1 -1
  51. package/dist/components/layout-and-navigation/SearchableList.mjs +114 -21
  52. package/dist/components/layout-and-navigation/SearchableList.mjs.map +1 -1
  53. package/dist/components/layout-and-navigation/StepperBar.js +6 -6
  54. package/dist/components/layout-and-navigation/StepperBar.js.map +1 -1
  55. package/dist/components/layout-and-navigation/StepperBar.mjs +6 -6
  56. package/dist/components/layout-and-navigation/StepperBar.mjs.map +1 -1
  57. package/dist/components/layout-and-navigation/Table.js +1 -1
  58. package/dist/components/layout-and-navigation/Table.js.map +1 -1
  59. package/dist/components/layout-and-navigation/Table.mjs +1 -1
  60. package/dist/components/layout-and-navigation/Table.mjs.map +1 -1
  61. package/dist/components/layout-and-navigation/Tile.d.mts +10 -15
  62. package/dist/components/layout-and-navigation/Tile.d.ts +10 -15
  63. package/dist/components/layout-and-navigation/Tile.js +30 -8
  64. package/dist/components/layout-and-navigation/Tile.js.map +1 -1
  65. package/dist/components/layout-and-navigation/Tile.mjs +30 -8
  66. package/dist/components/layout-and-navigation/Tile.mjs.map +1 -1
  67. package/dist/components/loading-states/ProgressIndicator.js +2 -2
  68. package/dist/components/loading-states/ProgressIndicator.js.map +1 -1
  69. package/dist/components/loading-states/ProgressIndicator.mjs +2 -2
  70. package/dist/components/loading-states/ProgressIndicator.mjs.map +1 -1
  71. package/dist/components/modals/ConfirmModal.js +2 -2
  72. package/dist/components/modals/ConfirmModal.js.map +1 -1
  73. package/dist/components/modals/ConfirmModal.mjs +2 -2
  74. package/dist/components/modals/ConfirmModal.mjs.map +1 -1
  75. package/dist/components/modals/DiscardChangesModal.js +2 -2
  76. package/dist/components/modals/DiscardChangesModal.js.map +1 -1
  77. package/dist/components/modals/DiscardChangesModal.mjs +2 -2
  78. package/dist/components/modals/DiscardChangesModal.mjs.map +1 -1
  79. package/dist/components/modals/InputModal.js +2 -2
  80. package/dist/components/modals/InputModal.js.map +1 -1
  81. package/dist/components/modals/InputModal.mjs +2 -2
  82. package/dist/components/modals/InputModal.mjs.map +1 -1
  83. package/dist/components/modals/LanguageModal.js +384 -150
  84. package/dist/components/modals/LanguageModal.js.map +1 -1
  85. package/dist/components/modals/LanguageModal.mjs +383 -149
  86. package/dist/components/modals/LanguageModal.mjs.map +1 -1
  87. package/dist/components/modals/ThemeModal.js +385 -154
  88. package/dist/components/modals/ThemeModal.js.map +1 -1
  89. package/dist/components/modals/ThemeModal.mjs +382 -151
  90. package/dist/components/modals/ThemeModal.mjs.map +1 -1
  91. package/dist/components/properties/CheckboxProperty.js +1 -1
  92. package/dist/components/properties/CheckboxProperty.js.map +1 -1
  93. package/dist/components/properties/CheckboxProperty.mjs +1 -1
  94. package/dist/components/properties/CheckboxProperty.mjs.map +1 -1
  95. package/dist/components/properties/DateProperty.js +1 -1
  96. package/dist/components/properties/DateProperty.js.map +1 -1
  97. package/dist/components/properties/DateProperty.mjs +1 -1
  98. package/dist/components/properties/DateProperty.mjs.map +1 -1
  99. package/dist/components/properties/MultiSelectProperty.d.mts +1 -0
  100. package/dist/components/properties/MultiSelectProperty.d.ts +1 -0
  101. package/dist/components/properties/MultiSelectProperty.js +482 -430
  102. package/dist/components/properties/MultiSelectProperty.js.map +1 -1
  103. package/dist/components/properties/MultiSelectProperty.mjs +478 -426
  104. package/dist/components/properties/MultiSelectProperty.mjs.map +1 -1
  105. package/dist/components/properties/NumberProperty.js +1 -1
  106. package/dist/components/properties/NumberProperty.js.map +1 -1
  107. package/dist/components/properties/NumberProperty.mjs +1 -1
  108. package/dist/components/properties/NumberProperty.mjs.map +1 -1
  109. package/dist/components/properties/PropertyBase.js +1 -1
  110. package/dist/components/properties/PropertyBase.js.map +1 -1
  111. package/dist/components/properties/PropertyBase.mjs +1 -1
  112. package/dist/components/properties/PropertyBase.mjs.map +1 -1
  113. package/dist/components/properties/SelectProperty.d.mts +3 -3
  114. package/dist/components/properties/SelectProperty.d.ts +3 -3
  115. package/dist/components/properties/SelectProperty.js +404 -263
  116. package/dist/components/properties/SelectProperty.js.map +1 -1
  117. package/dist/components/properties/SelectProperty.mjs +404 -263
  118. package/dist/components/properties/SelectProperty.mjs.map +1 -1
  119. package/dist/components/properties/TextProperty.js +1 -1
  120. package/dist/components/properties/TextProperty.js.map +1 -1
  121. package/dist/components/properties/TextProperty.mjs +1 -1
  122. package/dist/components/properties/TextProperty.mjs.map +1 -1
  123. package/dist/components/user-action/DateAndTimePicker.js +18 -20
  124. package/dist/components/user-action/DateAndTimePicker.js.map +1 -1
  125. package/dist/components/user-action/DateAndTimePicker.mjs +18 -20
  126. package/dist/components/user-action/DateAndTimePicker.mjs.map +1 -1
  127. package/dist/components/user-action/Menu.d.mts +14 -8
  128. package/dist/components/user-action/Menu.d.ts +14 -8
  129. package/dist/components/user-action/Menu.js +32 -11
  130. package/dist/components/user-action/Menu.js.map +1 -1
  131. package/dist/components/user-action/Menu.mjs +32 -11
  132. package/dist/components/user-action/Menu.mjs.map +1 -1
  133. package/dist/components/user-action/MultiSelect.d.mts +10 -16
  134. package/dist/components/user-action/MultiSelect.d.ts +10 -16
  135. package/dist/components/user-action/MultiSelect.js +485 -312
  136. package/dist/components/user-action/MultiSelect.js.map +1 -1
  137. package/dist/components/user-action/MultiSelect.mjs +482 -310
  138. package/dist/components/user-action/MultiSelect.mjs.map +1 -1
  139. package/dist/components/user-action/Select.d.mts +5 -18
  140. package/dist/components/user-action/Select.d.ts +5 -18
  141. package/dist/components/user-action/Select.js +309 -113
  142. package/dist/components/user-action/Select.js.map +1 -1
  143. package/dist/components/user-action/Select.mjs +304 -107
  144. package/dist/components/user-action/Select.mjs.map +1 -1
  145. package/dist/components/user-action/Tooltip.js +2 -2
  146. package/dist/components/user-action/Tooltip.js.map +1 -1
  147. package/dist/components/user-action/Tooltip.mjs +2 -2
  148. package/dist/components/user-action/Tooltip.mjs.map +1 -1
  149. package/dist/css/globals.css +213 -205
  150. package/dist/css/uncompiled/globals.css +136 -72
  151. package/dist/hooks/useSearch.d.mts +17 -0
  152. package/dist/hooks/useSearch.d.ts +17 -0
  153. package/dist/hooks/useSearch.js +66 -0
  154. package/dist/hooks/useSearch.js.map +1 -0
  155. package/dist/hooks/useSearch.mjs +42 -0
  156. package/dist/hooks/useSearch.mjs.map +1 -0
  157. package/dist/index.d.mts +7 -5
  158. package/dist/index.d.ts +7 -5
  159. package/dist/index.js +555 -463
  160. package/dist/index.js.map +1 -1
  161. package/dist/index.mjs +517 -427
  162. package/dist/index.mjs.map +1 -1
  163. package/dist/util/PropsWithFunctionChildren.d.mts +14 -0
  164. package/dist/util/PropsWithFunctionChildren.d.ts +14 -0
  165. package/dist/util/PropsWithFunctionChildren.js +38 -0
  166. package/dist/util/PropsWithFunctionChildren.js.map +1 -0
  167. package/dist/util/PropsWithFunctionChildren.mjs +14 -0
  168. package/dist/util/PropsWithFunctionChildren.mjs.map +1 -0
  169. package/dist/util/simpleSearch.d.mts +2 -2
  170. package/dist/util/simpleSearch.d.ts +2 -2
  171. package/dist/util/simpleSearch.js +4 -1
  172. package/dist/util/simpleSearch.js.map +1 -1
  173. package/dist/util/simpleSearch.mjs +4 -1
  174. package/dist/util/simpleSearch.mjs.map +1 -1
  175. package/package.json +1 -2
package/dist/index.js CHANGED
@@ -2845,6 +2845,7 @@ __export(index_exports, {
2845
2845
  ArrayUtil: () => ArrayUtil,
2846
2846
  Avatar: () => Avatar,
2847
2847
  AvatarGroup: () => AvatarGroup,
2848
+ BagFunctionUtil: () => BagFunctionUtil,
2848
2849
  BreadCrumb: () => BreadCrumb,
2849
2850
  ButtonColorUtil: () => ButtonColorUtil,
2850
2851
  ButtonUtil: () => ButtonUtil,
@@ -2889,12 +2890,13 @@ __export(index_exports, {
2889
2890
  LocalStorageService: () => LocalStorageService,
2890
2891
  LoopingArrayCalculator: () => LoopingArrayCalculator,
2891
2892
  MarkdownInterpreter: () => MarkdownInterpreter,
2892
- Menu: () => Menu2,
2893
+ Menu: () => Menu,
2893
2894
  MenuItem: () => MenuItem,
2894
2895
  Modal: () => Modal,
2895
2896
  MultiSearchWithMapping: () => MultiSearchWithMapping,
2896
2897
  MultiSelect: () => MultiSelect,
2897
2898
  MultiSelectProperty: () => MultiSelectProperty,
2899
+ MultiSelectUncontrolled: () => MultiSelectUncontrolled,
2898
2900
  MultiSubjectSearchWithMapping: () => MultiSubjectSearchWithMapping,
2899
2901
  NumberProperty: () => NumberProperty,
2900
2902
  OutlineButton: () => OutlineButton,
@@ -2908,7 +2910,6 @@ __export(index_exports, {
2908
2910
  RingWave: () => RingWave,
2909
2911
  ScrollPicker: () => ScrollPicker,
2910
2912
  SearchableList: () => SearchableList,
2911
- SearchableSelect: () => SearchableSelect,
2912
2913
  Select: () => Select,
2913
2914
  SelectUncontrolled: () => SelectUncontrolled,
2914
2915
  SessionStorageService: () => SessionStorageService,
@@ -2982,6 +2983,7 @@ __export(index_exports, {
2982
2983
  useLocale: () => useLocale,
2983
2984
  useOutsideClick: () => useOutsideClick,
2984
2985
  useSaveDelay: () => useSaveDelay,
2986
+ useSearch: () => useSearch,
2985
2987
  useTheme: () => useTheme,
2986
2988
  useTranslation: () => useTranslation,
2987
2989
  validateEmail: () => validateEmail,
@@ -3038,22 +3040,44 @@ var import_clsx3 = __toESM(require("clsx"));
3038
3040
 
3039
3041
  // src/components/layout-and-navigation/Tile.tsx
3040
3042
  var import_clsx = __toESM(require("clsx"));
3043
+ var import_lucide_react = require("lucide-react");
3041
3044
  var import_jsx_runtime = require("react/jsx-runtime");
3042
3045
  var Tile = ({
3043
3046
  title,
3044
3047
  description,
3048
+ onClick,
3049
+ isSelected = false,
3050
+ isDisabled = false,
3045
3051
  prefix,
3046
3052
  suffix,
3053
+ normalClassName = "hover:bg-primary/40 cursor-pointer",
3054
+ selectedClassName = " bg-primary/20",
3055
+ disabledClassName = "text-disabled-text bg-disabled-background cursor-not-allowed",
3047
3056
  className
3048
3057
  }) => {
3049
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: (0, import_clsx.default)("row gap-x-4 w-full items-center", className), children: [
3050
- prefix,
3051
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "col gap-y-0 w-full", children: [
3052
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h4", { className: (0, import_clsx.default)(title.className ?? "textstyle-title-normal"), children: title.value }),
3053
- !!description && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: (0, import_clsx.default)(description.className ?? "textstyle-description"), children: description.value })
3054
- ] }),
3055
- suffix
3056
- ] });
3058
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
3059
+ "div",
3060
+ {
3061
+ className: (0, import_clsx.default)(
3062
+ "row gap-x-2 w-full items-center",
3063
+ {
3064
+ [normalClassName]: !!onClick && !isDisabled,
3065
+ [selectedClassName]: isSelected && !isDisabled,
3066
+ [disabledClassName]: isDisabled
3067
+ },
3068
+ className
3069
+ ),
3070
+ onClick: isDisabled ? void 0 : onClick,
3071
+ children: [
3072
+ prefix ?? (isSelected ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Check, { size: 24 }) : void 0),
3073
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "col gap-y-0 w-full", children: [
3074
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h4", { className: (0, import_clsx.default)(title.className ?? "textstyle-title-normal"), children: title.value }),
3075
+ !!description && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: (0, import_clsx.default)(description.className ?? "textstyle-description"), children: description.value })
3076
+ ] }),
3077
+ suffix
3078
+ ]
3079
+ }
3080
+ );
3057
3081
  };
3058
3082
 
3059
3083
  // src/components/icons-and-geometry/Helpwave.tsx
@@ -3154,7 +3178,7 @@ var HelpwaveBadge = ({
3154
3178
 
3155
3179
  // src/components/date/DatePicker.tsx
3156
3180
  var import_react6 = require("react");
3157
- var import_lucide_react2 = require("lucide-react");
3181
+ var import_lucide_react3 = require("lucide-react");
3158
3182
 
3159
3183
  // src/localization/LanguageProvider.tsx
3160
3184
  var import_react2 = require("react");
@@ -3766,10 +3790,10 @@ var import_clsx6 = __toESM(require("clsx"));
3766
3790
 
3767
3791
  // src/components/layout-and-navigation/Expandable.tsx
3768
3792
  var import_react3 = require("react");
3769
- var import_lucide_react = require("lucide-react");
3793
+ var import_lucide_react2 = require("lucide-react");
3770
3794
  var import_clsx5 = __toESM(require("clsx"));
3771
3795
  var import_jsx_runtime6 = require("react/jsx-runtime");
3772
- var DefaultIcon = (expanded) => expanded ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_lucide_react.ChevronUp, { size: 16, className: "min-w-[16px]" }) : /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_lucide_react.ChevronDown, { size: 16, className: "min-w-[16px]" });
3796
+ var DefaultIcon = (expanded) => expanded ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_lucide_react2.ChevronUp, { size: 16, className: "min-w-[16px]" }) : /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_lucide_react2.ChevronDown, { size: 16, className: "min-w-[16px]" });
3773
3797
  var Expandable = (0, import_react3.forwardRef)(function Expandable2({
3774
3798
  children,
3775
3799
  label,
@@ -3778,8 +3802,9 @@ var Expandable = (0, import_react3.forwardRef)(function Expandable2({
3778
3802
  onChange = noop,
3779
3803
  clickOnlyOnHeader = true,
3780
3804
  disabled = false,
3781
- className = "",
3782
- headerClassName = ""
3805
+ className,
3806
+ headerClassName,
3807
+ contentClassName
3783
3808
  }, ref) {
3784
3809
  icon ??= DefaultIcon;
3785
3810
  return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
@@ -3808,7 +3833,7 @@ var Expandable = (0, import_react3.forwardRef)(function Expandable2({
3808
3833
  ]
3809
3834
  }
3810
3835
  ),
3811
- isExpanded && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "col px-4 pb-2", children })
3836
+ isExpanded && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: (0, import_clsx5.default)("col px-4 pb-2", contentClassName), children })
3812
3837
  ]
3813
3838
  }
3814
3839
  );
@@ -3873,7 +3898,8 @@ var YearMonthPicker = ({
3873
3898
  ref: (displayedYearMonth.getFullYear() ?? (/* @__PURE__ */ new Date()).getFullYear()) === year ? ref : void 0,
3874
3899
  label: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: (0, import_clsx6.default)({ "text-primary font-bold": selectedYear }), children: year }),
3875
3900
  isExpanded: showValueOpen && selectedYear,
3876
- children: equalSizeGroups([...monthsList], 3).map((monthList, index) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "row", children: monthList.map((month) => {
3901
+ contentClassName: "gap-y-1",
3902
+ children: equalSizeGroups([...monthsList], 3).map((monthList, index) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "row gap-x-1", children: monthList.map((month) => {
3877
3903
  const monthIndex = monthsList.indexOf(month);
3878
3904
  const newDate = new Date(year, monthIndex);
3879
3905
  const selectedMonth = selectedYear && monthIndex === displayedYearMonth.getMonth();
@@ -3883,17 +3909,12 @@ var YearMonthPicker = ({
3883
3909
  const isBeforeEnd = end === void 0 || firstOfMonth <= end;
3884
3910
  const isValid = isAfterStart && isBeforeEnd;
3885
3911
  return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
3886
- "button",
3912
+ SolidButton,
3887
3913
  {
3888
3914
  disabled: !isValid,
3889
- className: (0, import_clsx6.default)(
3890
- "chip hover:brightness-95 flex-1",
3891
- {
3892
- "bg-gray-50 text-black": !selectedMonth && isValid,
3893
- "bg-primary text-on-primary": selectedMonth && isValid,
3894
- "bg-disabled-background text-disabled-text": !isValid
3895
- }
3896
- ),
3915
+ color: selectedMonth && isValid ? "primary" : "neutral",
3916
+ className: "flex-1",
3917
+ size: "small",
3897
3918
  onClick: () => {
3898
3919
  onChange(newDate);
3899
3920
  },
@@ -3908,11 +3929,11 @@ var YearMonthPicker = ({
3908
3929
  }) }) }) });
3909
3930
  };
3910
3931
  var YearMonthPickerUncontrolled = ({
3911
- displayedYearMonth = /* @__PURE__ */ new Date(),
3932
+ displayedYearMonth,
3912
3933
  onChange = noop,
3913
3934
  ...props
3914
3935
  }) => {
3915
- const [yearMonth, setYearMonth] = (0, import_react4.useState)(displayedYearMonth);
3936
+ const [yearMonth, setYearMonth] = (0, import_react4.useState)(displayedYearMonth ?? /* @__PURE__ */ new Date());
3916
3937
  (0, import_react4.useEffect)(() => setYearMonth(displayedYearMonth), [displayedYearMonth]);
3917
3938
  return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
3918
3939
  YearMonthPicker,
@@ -3956,14 +3977,15 @@ var DayPicker = ({
3956
3977
  {
3957
3978
  disabled: !isDayValid,
3958
3979
  className: (0, import_clsx7.default)(
3959
- "flex-1 rounded-full border-2 border-transparent shadow-sm",
3980
+ "flex-1 rounded-full border-2",
3960
3981
  {
3961
- "text-gray-700 bg-gray-100": !isSameMonth && isDayValid,
3962
- "text-black bg-white": !isSelected && isSameMonth && isDayValid,
3963
- "text-on-primary bg-primary": isSelected,
3964
- "border-black": isToday && markToday,
3965
- "hover:brightness-90 hover:bg-primary hover:text-on-primary": isDayValid,
3966
- "text-disabled-text bg-disabled-background": !isDayValid
3982
+ "text-description": !isSameMonth && !isSelected && isDayValid,
3983
+ "text-button-solid-neutral-text bg-button-solid-neutral-background": !isSelected && isSameMonth && isDayValid,
3984
+ "text-button-solid-primary-text bg-button-solid-primary-background": isSelected && isDayValid,
3985
+ "hover:brightness-90 hover:bg-button-solid-primary-background hover:text-button-solid-primary-text": isDayValid,
3986
+ "text-disabled-text bg-disabled-background cursor-not-allowed": !isDayValid,
3987
+ "border-secondary": isToday && markToday,
3988
+ "border-transparent": !isToday || !markToday
3967
3989
  }
3968
3990
  ),
3969
3991
  onClick: () => onChange(date),
@@ -3974,15 +3996,26 @@ var DayPicker = ({
3974
3996
  }) }, index))
3975
3997
  ] });
3976
3998
  };
3977
- var DayPickerUncontrolled = ({ displayedMonth, onChange = noop, ...restProps }) => {
3978
- const [date, setDate] = (0, import_react5.useState)(displayedMonth);
3979
- (0, import_react5.useEffect)(() => setDate(displayedMonth), [displayedMonth]);
3999
+ var DayPickerUncontrolled = ({
4000
+ displayedMonth,
4001
+ selected,
4002
+ onChange = noop,
4003
+ ...restProps
4004
+ }) => {
4005
+ const [date, setDate] = (0, import_react5.useState)(selected);
4006
+ const [usedDisplayedMonth, setUsedDDisplayedMonth] = (0, import_react5.useState)(displayedMonth);
4007
+ (0, import_react5.useEffect)(() => {
4008
+ setDate(selected);
4009
+ setUsedDDisplayedMonth(selected);
4010
+ }, [selected]);
3980
4011
  return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
3981
4012
  DayPicker,
3982
4013
  {
3983
- displayedMonth: date,
4014
+ displayedMonth: usedDisplayedMonth,
4015
+ selected: date,
3984
4016
  onChange: (newDate) => {
3985
4017
  setDate(newDate);
4018
+ setUsedDDisplayedMonth(newDate);
3986
4019
  onChange(newDate);
3987
4020
  },
3988
4021
  ...restProps
@@ -4029,7 +4062,7 @@ var DatePicker = ({
4029
4062
  onClick: () => setDisplayMode(displayMode === "day" ? "yearMonth" : "day"),
4030
4063
  children: [
4031
4064
  `${new Intl.DateTimeFormat(locale, { month: "long" }).format(displayedMonth)} ${displayedMonth.getFullYear()}`,
4032
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_lucide_react2.ChevronDown, { size: 16 })
4065
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_lucide_react3.ChevronDown, { size: 16 })
4033
4066
  ]
4034
4067
  }
4035
4068
  ),
@@ -4043,7 +4076,7 @@ var DatePicker = ({
4043
4076
  onClick: () => {
4044
4077
  setDisplayedMonth(subtractDuration(displayedMonth, { months: 1 }));
4045
4078
  },
4046
- children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_lucide_react2.ArrowUp, { size: 20 })
4079
+ children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_lucide_react3.ArrowUp, { size: 20 })
4047
4080
  }
4048
4081
  ),
4049
4082
  /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
@@ -4055,7 +4088,7 @@ var DatePicker = ({
4055
4088
  onClick: () => {
4056
4089
  setDisplayedMonth(addDuration(displayedMonth, { months: 1 }));
4057
4090
  },
4058
- children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_lucide_react2.ArrowDown, { size: 20 })
4091
+ children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_lucide_react3.ArrowDown, { size: 20 })
4059
4092
  }
4060
4093
  )
4061
4094
  ] })
@@ -4438,7 +4471,7 @@ var Tooltip = ({
4438
4471
  {
4439
4472
  className: (0, import_clsx10.clsx)(
4440
4473
  `opacity-0 absolute text-xs font-semibold text-tooltip-text px-2 py-1 rounded whitespace-nowrap
4441
- animate-tooltip-fade-in shadow-lg bg-tooltip-background`,
4474
+ animate-tooltip-fade-in shadow-around-md bg-tooltip-background`,
4442
4475
  positionClasses[position],
4443
4476
  tooltipClassName
4444
4477
  ),
@@ -4449,7 +4482,7 @@ var Tooltip = ({
4449
4482
  "div",
4450
4483
  {
4451
4484
  className: (0, import_clsx10.clsx)(`absolute w-0 h-0`, triangleClasses[position]),
4452
- style: { ...triangleStyle[position], zIndex }
4485
+ style: { ...triangleStyle[position], zIndex: zIndex + 1 }
4453
4486
  }
4454
4487
  )
4455
4488
  ]
@@ -4461,7 +4494,7 @@ var Tooltip = ({
4461
4494
  };
4462
4495
 
4463
4496
  // src/components/layout-and-navigation/Overlay.tsx
4464
- var import_lucide_react3 = require("lucide-react");
4497
+ var import_lucide_react4 = require("lucide-react");
4465
4498
  var import_jsx_runtime13 = require("react/jsx-runtime");
4466
4499
  var Overlay = ({
4467
4500
  children,
@@ -4517,7 +4550,7 @@ var OverlayHeader = ({
4517
4550
  children: titleText
4518
4551
  }
4519
4552
  ),
4520
- !!onClose && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Tooltip, { tooltip: translation.close, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(IconButton, { color: "neutral", size: "small", onClick: onClose, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_lucide_react3.X, { className: "w-full h-full" }) }) })
4553
+ !!onClose && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Tooltip, { tooltip: translation.close, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(IconButton, { color: "neutral", size: "small", onClick: onClose, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_lucide_react4.X, { className: "w-full h-full" }) }) })
4521
4554
  ] });
4522
4555
  return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "col", children: [
4523
4556
  hasTitleRow && titleRow,
@@ -4749,10 +4782,10 @@ var Avatar = ({ avatarUrl, alt, size = "medium", className = "" }) => {
4749
4782
  };
4750
4783
  return (
4751
4784
  // TODO transparent or white background later
4752
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: (0, import_clsx13.default)(`rounded-full bg-primary`, className), style, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
4785
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: (0, import_clsx13.default)(`rounded-full bg-primary shadow`, className), style, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
4753
4786
  "img",
4754
4787
  {
4755
- className: "rounded-full border border-gray-200",
4788
+ className: "rounded-full",
4756
4789
  style,
4757
4790
  src: avatarUrl,
4758
4791
  alt,
@@ -5125,7 +5158,7 @@ var BreadCrumb = ({ crumbs, linkClassName, containerClassName }) => {
5125
5158
  // src/components/layout-and-navigation/Carousel.tsx
5126
5159
  var import_react11 = require("react");
5127
5160
  var import_clsx17 = __toESM(require("clsx"));
5128
- var import_lucide_react4 = require("lucide-react");
5161
+ var import_lucide_react5 = require("lucide-react");
5129
5162
 
5130
5163
  // src/util/math.ts
5131
5164
  var clamp = (value, min = 0, max = 1) => {
@@ -5242,7 +5275,7 @@ var Carousel = ({
5242
5275
  arrows = false,
5243
5276
  dots = true,
5244
5277
  overScrollThreshold = 0.1,
5245
- blurColor = "from-white",
5278
+ blurColor = "from-background",
5246
5279
  className = "",
5247
5280
  heightClassName = "h-[24rem]",
5248
5281
  widthClassName = "w-[70%] desktop:w-1/2"
@@ -5474,19 +5507,23 @@ var Carousel = ({
5474
5507
  /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: (0, import_clsx17.default)(`relative w-full overflow-hidden`, heightClassName, className), children: [
5475
5508
  arrows && /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_jsx_runtime20.Fragment, { children: [
5476
5509
  /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5477
- "div",
5510
+ IconButton,
5478
5511
  {
5479
- className: (0, import_clsx17.default)("absolute z-10 left-0 top-1/2 -translate-y-1/2 bg-gray-200 hover:bg-gray-300 rounded-lg cursor-pointer border-black border-2", { hidden: !canGoLeft() }),
5512
+ color: "neutral",
5513
+ className: (0, import_clsx17.default)("absolute z-10 left-0 top-1/2 -translate-y-1/2 shadow-md", { hidden: !canGoLeft() }),
5514
+ disabled: !canGoLeft(),
5480
5515
  onClick: () => left(),
5481
- children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react4.ChevronLeft, { size: 32 })
5516
+ children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react5.ChevronLeft, { size: 24 })
5482
5517
  }
5483
5518
  ),
5484
5519
  /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5485
- "div",
5520
+ IconButton,
5486
5521
  {
5487
- className: (0, import_clsx17.default)("absolute z-10 right-0 top-1/2 -translate-y-1/2 bg-gray-200 hover:bg-gray-300 rounded-lg cursor-pointer border-black border-2", { hidden: !canGoRight() }),
5522
+ color: "neutral",
5523
+ className: (0, import_clsx17.default)("absolute z-10 right-0 top-1/2 -translate-y-1/2 shadow-md", { hidden: !canGoRight() }),
5524
+ disabled: !canGoRight(),
5488
5525
  onClick: () => right(),
5489
- children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react4.ChevronRight, { size: 32 })
5526
+ children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react5.ChevronRight, { size: 24 })
5490
5527
  }
5491
5528
  )
5492
5529
  ] }),
@@ -5526,9 +5563,9 @@ var Carousel = ({
5526
5563
  children: range(0, length - 1).map((index) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5527
5564
  "button",
5528
5565
  {
5529
- className: (0, import_clsx17.default)("w-[2rem] min-w-[2rem] h-[0.75rem] min-h-[0.75rem] hover:bg-primary hover:brightness-90 first:rounded-l-md last:rounded-r-md", {
5530
- "bg-gray-200": currentIndex !== index,
5531
- "bg-primary": currentIndex === index
5566
+ className: (0, import_clsx17.default)("w-[2rem] min-w-[2rem] h-[0.75rem] min-h-[0.75rem] first:rounded-l-md last:rounded-r-md", {
5567
+ "bg-carousel-dot-disabled hover:bg-carousel-dot-active": currentIndex !== index,
5568
+ "bg-carousel-dot-active hover:brightness-90": currentIndex === index
5532
5569
  }),
5533
5570
  onClick: () => startAnimation(index)
5534
5571
  },
@@ -5628,7 +5665,7 @@ var DividerInserter = ({
5628
5665
 
5629
5666
  // src/components/layout-and-navigation/FAQSection.tsx
5630
5667
  var import_clsx20 = __toESM(require("clsx"));
5631
- var import_lucide_react5 = require("lucide-react");
5668
+ var import_lucide_react6 = require("lucide-react");
5632
5669
 
5633
5670
  // src/components/layout-and-navigation/MarkdownInterpreter.tsx
5634
5671
  var import_jsx_runtime23 = require("react/jsx-runtime");
@@ -5726,7 +5763,7 @@ var inserterIdentifierMapping = [
5726
5763
  { id: "helpwave", name: "helpwave" },
5727
5764
  { id: "newline", name: "newline" }
5728
5765
  ];
5729
- var parseMarkdown = (text, commandStart = "\\", open = "{", close = "}") => {
5766
+ var parseMarkdown = (text, commandStart = "\\", open2 = "{", close = "}") => {
5730
5767
  let start = text.indexOf(commandStart);
5731
5768
  const children = [];
5732
5769
  while (text !== "") {
@@ -5747,7 +5784,7 @@ var parseMarkdown = (text, commandStart = "\\", open = "{", close = "}") => {
5747
5784
  text = "";
5748
5785
  continue;
5749
5786
  }
5750
- const simpleReplace = [commandStart, open, close];
5787
+ const simpleReplace = [commandStart, open2, close];
5751
5788
  if (simpleReplace.some((value) => text[1] === value)) {
5752
5789
  children.push({
5753
5790
  type: "text",
@@ -5768,7 +5805,7 @@ var parseMarkdown = (text, commandStart = "\\", open = "{", close = "}") => {
5768
5805
  }
5769
5806
  const modifier = modifierIdentifierMapping.find((value) => text.substring(1).startsWith(value.id));
5770
5807
  if (modifier) {
5771
- if (text[modifier.id.length + 1] !== open) {
5808
+ if (text[modifier.id.length + 1] !== open2) {
5772
5809
  children.push({
5773
5810
  type: "text",
5774
5811
  text: text.substring(0, modifier.id.length + 1)
@@ -5782,7 +5819,7 @@ var parseMarkdown = (text, commandStart = "\\", open = "{", close = "}") => {
5782
5819
  let counter = 1;
5783
5820
  let escaping = false;
5784
5821
  while (index < text.length) {
5785
- if (text[index] === open && !escaping) {
5822
+ if (text[index] === open2 && !escaping) {
5786
5823
  counter++;
5787
5824
  }
5788
5825
  if (text[index] === close && !escaping) {
@@ -5874,7 +5911,7 @@ var FAQSection = ({
5874
5911
  ...restProps,
5875
5912
  label: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("h3", { id, className: "textstyle-title-md", children: title }),
5876
5913
  clickOnlyOnHeader: false,
5877
- icon: (expanded) => expanded ? /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react5.ChevronUp, { size: chevronSize, className: "text-primary", style: { minWidth: `${chevronSize}px` } }) : /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react5.ChevronDown, { size: chevronSize, className: "text-primary" }),
5914
+ icon: (expanded) => expanded ? /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react6.ChevronUp, { size: chevronSize, className: "text-primary", style: { minWidth: `${chevronSize}px` } }) : /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react6.ChevronDown, { size: chevronSize, className: "text-primary" }),
5878
5915
  className: (0, import_clsx20.default)("rounded-xl", expandableClassName),
5879
5916
  children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "mt-2", children: content.type === "markdown" ? /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(MarkdownInterpreter, { text: content.value }) : content.value })
5880
5917
  },
@@ -5883,7 +5920,7 @@ var FAQSection = ({
5883
5920
  };
5884
5921
 
5885
5922
  // src/components/layout-and-navigation/Pagination.tsx
5886
- var import_lucide_react6 = require("lucide-react");
5923
+ var import_lucide_react7 = require("lucide-react");
5887
5924
  var import_clsx21 = __toESM(require("clsx"));
5888
5925
  var import_jsx_runtime25 = require("react/jsx-runtime");
5889
5926
  var defaultPaginationTranslations = {
@@ -5908,43 +5945,22 @@ var Pagination = ({
5908
5945
  const onFirstPage = page === 0 && !noPages;
5909
5946
  const onLastPage = page === numberOfPages - 1;
5910
5947
  return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: (0, import_clsx21.default)("row", { "opacity-30": noPages }), children: [
5911
- /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("button", { onClick: () => changePage(0), disabled: onFirstPage, children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react6.ChevronFirst, { className: (0, import_clsx21.default)({ "opacity-30": onFirstPage }) }) }),
5912
- /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("button", { onClick: () => changePage(page - 1), disabled: onFirstPage, children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react6.ChevronLeft, { className: (0, import_clsx21.default)({ "opacity-30": onFirstPage }) }) }),
5948
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("button", { onClick: () => changePage(0), disabled: onFirstPage, children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react7.ChevronFirst, { className: (0, import_clsx21.default)({ "opacity-30": onFirstPage }) }) }),
5949
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("button", { onClick: () => changePage(page - 1), disabled: onFirstPage, children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react7.ChevronLeft, { className: (0, import_clsx21.default)({ "opacity-30": onFirstPage }) }) }),
5913
5950
  /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "min-w-[80px] justify-center mx-2", children: [
5914
5951
  /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: "select-none text-right flex-1", children: noPages ? 0 : page + 1 }),
5915
5952
  /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: "select-none mx-2", children: translation.of }),
5916
5953
  /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: "select-none text-left flex-1", children: numberOfPages })
5917
5954
  ] }),
5918
- /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("button", { onClick: () => changePage(page + 1), disabled: onLastPage || noPages, children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react6.ChevronRight, { className: (0, import_clsx21.default)({ "opacity-30": onLastPage }) }) }),
5919
- /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("button", { onClick: () => changePage(numberOfPages - 1), disabled: onLastPage || noPages, children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react6.ChevronLast, { className: (0, import_clsx21.default)({ "opacity-30": onLastPage }) }) })
5955
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("button", { onClick: () => changePage(page + 1), disabled: onLastPage || noPages, children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react7.ChevronRight, { className: (0, import_clsx21.default)({ "opacity-30": onLastPage }) }) }),
5956
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("button", { onClick: () => changePage(numberOfPages - 1), disabled: onLastPage || noPages, children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react7.ChevronLast, { className: (0, import_clsx21.default)({ "opacity-30": onLastPage }) }) })
5920
5957
  ] });
5921
5958
  };
5922
5959
 
5923
5960
  // src/components/layout-and-navigation/SearchableList.tsx
5924
- var import_react14 = require("react");
5925
- var import_lucide_react7 = require("lucide-react");
5961
+ var import_lucide_react8 = require("lucide-react");
5926
5962
  var import_clsx24 = __toESM(require("clsx"));
5927
5963
 
5928
- // src/util/simpleSearch.ts
5929
- var MultiSubjectSearchWithMapping = (search, objects, mapping) => {
5930
- return objects.filter((object) => {
5931
- const mappedSearchKeywords = mapping(object).map((value) => value ? value.toLowerCase().trim() : void 0);
5932
- return search.every((searchValue) => !!mappedSearchKeywords.find((value) => !!value && value.includes(searchValue.toLowerCase().trim())));
5933
- });
5934
- };
5935
- var MultiSearchWithMapping = (search, objects, mapping) => {
5936
- return objects.filter((object) => {
5937
- const mappedSearchKeywords = mapping(object).map((value) => value.toLowerCase().trim());
5938
- return !!mappedSearchKeywords.find((value) => value.includes(search.toLowerCase().trim()));
5939
- });
5940
- };
5941
- var SimpleSearchWithMapping = (search, objects, mapping) => {
5942
- return MultiSearchWithMapping(search, objects, (value) => [mapping(value)]);
5943
- };
5944
- var SimpleSearch = (search, objects) => {
5945
- return SimpleSearchWithMapping(search, objects, (value) => value);
5946
- };
5947
-
5948
5964
  // src/components/user-action/Input.tsx
5949
5965
  var import_react13 = require("react");
5950
5966
  var import_clsx23 = __toESM(require("clsx"));
@@ -6123,6 +6139,57 @@ var FormInput = (0, import_react13.forwardRef)(function FormInput2({
6123
6139
  ] });
6124
6140
  });
6125
6141
 
6142
+ // src/hooks/useSearch.ts
6143
+ var import_react14 = require("react");
6144
+
6145
+ // src/util/simpleSearch.ts
6146
+ var MultiSubjectSearchWithMapping = (search, objects, mapping) => {
6147
+ return objects.filter((object) => {
6148
+ const mappedSearchKeywords = mapping(object).map((value) => value ? value.toLowerCase().trim() : void 0);
6149
+ return search.every((searchValue) => !!mappedSearchKeywords.find((value) => !!value && value.includes(searchValue.toLowerCase().trim())));
6150
+ });
6151
+ };
6152
+ var MultiSearchWithMapping = (search, objects, mapping) => {
6153
+ return objects.filter((object) => {
6154
+ const mappedSearchKeywords = mapping(object)?.map((value) => value.toLowerCase().trim());
6155
+ if (!mappedSearchKeywords) {
6156
+ return true;
6157
+ }
6158
+ return !!mappedSearchKeywords.find((value) => value.includes(search.toLowerCase().trim()));
6159
+ });
6160
+ };
6161
+ var SimpleSearchWithMapping = (search, objects, mapping) => {
6162
+ return MultiSearchWithMapping(search, objects, (value) => [mapping(value)]);
6163
+ };
6164
+ var SimpleSearch = (search, objects) => {
6165
+ return SimpleSearchWithMapping(search, objects, (value) => value);
6166
+ };
6167
+
6168
+ // src/hooks/useSearch.ts
6169
+ var useSearch = ({
6170
+ list,
6171
+ initialSearch,
6172
+ searchMapping
6173
+ }) => {
6174
+ const [items, setItems] = (0, import_react14.useState)(list);
6175
+ const [search, setSearch] = (0, import_react14.useState)(initialSearch);
6176
+ (0, import_react14.useEffect)(() => {
6177
+ setItems(list);
6178
+ }, [list]);
6179
+ const result = (0, import_react14.useMemo)(
6180
+ () => MultiSearchWithMapping(search, items, searchMapping),
6181
+ [search, items, searchMapping]
6182
+ );
6183
+ return {
6184
+ result,
6185
+ hasResult: result.length > 0,
6186
+ allItems: items,
6187
+ setItems,
6188
+ search,
6189
+ setSearch
6190
+ };
6191
+ };
6192
+
6126
6193
  // src/components/layout-and-navigation/SearchableList.tsx
6127
6194
  var import_jsx_runtime28 = require("react/jsx-runtime");
6128
6195
  var defaultSearchableListTranslation = {
@@ -6140,38 +6207,47 @@ var SearchableList = ({
6140
6207
  list,
6141
6208
  initialSearch = "",
6142
6209
  searchMapping,
6210
+ autoFocus,
6211
+ minimumItemsForSearch = 6,
6143
6212
  itemMapper,
6144
- className
6213
+ className,
6214
+ resultListClassName
6145
6215
  }) => {
6146
6216
  const translation = useTranslation(defaultSearchableListTranslation, overwriteTranslation);
6147
- const [search, setSearch] = (0, import_react14.useState)(initialSearch);
6148
- (0, import_react14.useEffect)(() => setSearch(initialSearch), [initialSearch]);
6149
- const filteredEntries = (0, import_react14.useMemo)(() => MultiSearchWithMapping(search, list, searchMapping), [search, list, searchMapping]);
6217
+ const { result, hasResult, search, setSearch } = useSearch({ list, initialSearch, searchMapping });
6150
6218
  return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: (0, import_clsx24.default)("col gap-y-2", className), children: [
6151
- /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "row justify-between gap-x-2 items-center", children: [
6152
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "flex-1", children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Input, { value: search, onChangeText: setSearch, placeholder: translation.search }) }),
6153
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react7.Search, { size: 20 })
6219
+ list.length > minimumItemsForSearch && /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "row justify-between gap-x-4 items-center", children: [
6220
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
6221
+ Input,
6222
+ {
6223
+ value: search,
6224
+ onChangeText: setSearch,
6225
+ placeholder: translation.search,
6226
+ autoFocus,
6227
+ className: "w-full"
6228
+ }
6229
+ ),
6230
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(IconButton, { color: "neutral", disabled: search.length === 0, children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react8.Search, { className: "w-full h-full" }) })
6154
6231
  ] }),
6155
- filteredEntries.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "col gap-y-1", children: filteredEntries.map(itemMapper) }),
6156
- !filteredEntries.length && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "row justify-center", children: translation.nothingFound })
6232
+ hasResult ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: (0, import_clsx24.default)("col gap-y-1", resultListClassName), children: result.map(itemMapper) }) : /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "row text-description py-2 px-2", children: translation.nothingFound })
6157
6233
  ] });
6158
6234
  };
6159
6235
 
6160
6236
  // src/components/layout-and-navigation/StepperBar.tsx
6161
- var import_lucide_react8 = require("lucide-react");
6237
+ var import_lucide_react9 = require("lucide-react");
6162
6238
  var import_clsx25 = __toESM(require("clsx"));
6163
6239
  var import_react15 = require("react");
6164
6240
  var import_jsx_runtime29 = require("react/jsx-runtime");
6165
6241
  var defaultStepperBarTranslation = {
6166
6242
  en: {
6167
6243
  back: "Back",
6168
- next: "Next Step",
6244
+ next: "Next",
6169
6245
  confirm: "Create"
6170
6246
  },
6171
6247
  de: {
6172
6248
  back: "Zur\xFCck",
6173
- next: "N\xE4chster Schritt",
6174
- confirm: "Erstellen"
6249
+ next: "N\xE4chster",
6250
+ confirm: "Fertig"
6175
6251
  }
6176
6252
  };
6177
6253
  var defaultState = {
@@ -6210,7 +6286,7 @@ var StepperBar = ({
6210
6286
  },
6211
6287
  className: "row gap-x-1 items-center justify-center",
6212
6288
  children: [
6213
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_lucide_react8.ChevronLeft, { size: 14 }),
6289
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_lucide_react9.ChevronLeft, { size: 14 }),
6214
6290
  translation.back
6215
6291
  ]
6216
6292
  }
@@ -6224,9 +6300,9 @@ var StepperBar = ({
6224
6300
  className: (0, import_clsx25.default)(
6225
6301
  "rounded-full w-4 h-4",
6226
6302
  {
6227
- "bg-primary hover:brightness-75": index === currentStep && seen && !disabledSteps.has(currentStep),
6228
- "bg-primary/40 hover:bg-primary": index !== currentStep && seen && !disabledSteps.has(currentStep),
6229
- "bg-gray-200 outline-transparent": !seen || disabledSteps.has(currentStep)
6303
+ "bg-stepperbar-dot-active hover:brightness-75": index === currentStep && seen && !disabledSteps.has(currentStep),
6304
+ "bg-stepperbar-dot-normal hover:bg-stepperbar-dot-active": index !== currentStep && seen && !disabledSteps.has(currentStep),
6305
+ "bg-stepperbar-dot-disabled": !seen || disabledSteps.has(currentStep)
6230
6306
  },
6231
6307
  {
6232
6308
  "cursor-pointer": seen,
@@ -6245,7 +6321,7 @@ var StepperBar = ({
6245
6321
  disabled: disabledSteps.has(currentStep),
6246
6322
  children: [
6247
6323
  translation.next,
6248
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_lucide_react8.ChevronRight, { size: 14 })
6324
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_lucide_react9.ChevronRight, { size: 14 })
6249
6325
  ]
6250
6326
  }
6251
6327
  ) }),
@@ -6256,7 +6332,7 @@ var StepperBar = ({
6256
6332
  onClick: onFinish,
6257
6333
  className: "row gap-x-1 items-center justify-center",
6258
6334
  children: [
6259
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_lucide_react8.Check, { size: 14 }),
6335
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_lucide_react9.Check, { size: 14 }),
6260
6336
  finishText ?? translation.confirm
6261
6337
  ]
6262
6338
  }
@@ -6290,7 +6366,7 @@ var import_react_custom_scrollbars_23 = require("react-custom-scrollbars-2");
6290
6366
  // src/components/user-action/Checkbox.tsx
6291
6367
  var import_react16 = require("react");
6292
6368
  var CheckboxPrimitive = __toESM(require("@radix-ui/react-checkbox"));
6293
- var import_lucide_react9 = require("lucide-react");
6369
+ var import_lucide_react10 = require("lucide-react");
6294
6370
  var import_clsx26 = __toESM(require("clsx"));
6295
6371
  var import_jsx_runtime30 = require("react/jsx-runtime");
6296
6372
  var checkboxSizeMapping = {
@@ -6343,8 +6419,8 @@ var Checkbox = ({
6343
6419
  "hover:border-primary focus:hover:border-primary": !checked
6344
6420
  }, className),
6345
6421
  children: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(CheckboxPrimitive.Indicator, { children: [
6346
- checked === true && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_lucide_react9.Check, { className: innerIconSize }),
6347
- checked === "indeterminate" && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_lucide_react9.Minus, { className: innerIconSize })
6422
+ checked === true && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_lucide_react10.Check, { className: innerIconSize }),
6423
+ checked === "indeterminate" && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_lucide_react10.Minus, { className: innerIconSize })
6348
6424
  ] })
6349
6425
  }
6350
6426
  ),
@@ -6387,7 +6463,7 @@ var CheckboxUncontrolled = ({
6387
6463
 
6388
6464
  // src/components/layout-and-navigation/Table.tsx
6389
6465
  var import_clsx27 = __toESM(require("clsx"));
6390
- var import_lucide_react10 = require("lucide-react");
6466
+ var import_lucide_react11 = require("lucide-react");
6391
6467
  var import_jsx_runtime31 = require("react/jsx-runtime");
6392
6468
  var defaultTableStatePagination = {
6393
6469
  currentPage: 0,
@@ -6536,7 +6612,7 @@ var Table = ({
6536
6612
  } else {
6537
6613
  currentPage = 0;
6538
6614
  }
6539
- const headerRow = "border-b-2 border-gray-300";
6615
+ const headerRow = "border-b-2";
6540
6616
  const headerPaddingHead = "pb-2";
6541
6617
  const headerPaddingBody = "pt-2";
6542
6618
  const cellPadding = "py-1 px-2";
@@ -6612,7 +6688,7 @@ var SortButton = ({
6612
6688
  ...buttonProps,
6613
6689
  children: /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { className: "row gap-x-2", children: [
6614
6690
  children,
6615
- ascending === "ascending" ? /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_lucide_react10.ChevronUp, {}) : !ascending ? /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_lucide_react10.ChevronsUpDown, {}) : /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_lucide_react10.ChevronDown, {})
6691
+ ascending === "ascending" ? /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_lucide_react11.ChevronUp, {}) : !ascending ? /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_lucide_react11.ChevronsUpDown, {}) : /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_lucide_react11.ChevronDown, {})
6616
6692
  ] })
6617
6693
  }
6618
6694
  );
@@ -6731,7 +6807,7 @@ var VerticalDivider = ({
6731
6807
  };
6732
6808
 
6733
6809
  // src/components/loading-states/ErrorComponent.tsx
6734
- var import_lucide_react11 = require("lucide-react");
6810
+ var import_lucide_react12 = require("lucide-react");
6735
6811
  var import_clsx29 = __toESM(require("clsx"));
6736
6812
  var import_jsx_runtime34 = require("react/jsx-runtime");
6737
6813
  var defaultErrorComponentTranslation = {
@@ -6749,7 +6825,7 @@ var ErrorComponent = ({
6749
6825
  }) => {
6750
6826
  const translation = useTranslation(defaultErrorComponentTranslation, overwriteTranslation);
6751
6827
  return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: (0, import_clsx29.default)("col items-center justify-center gap-y-4 w-full h-24", classname), children: [
6752
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_lucide_react11.AlertOctagon, { size: 64, className: "text-warning" }),
6828
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_lucide_react12.AlertOctagon, { size: 64, className: "text-warning" }),
6753
6829
  errorText ?? `${translation.errorOccurred} :(`
6754
6830
  ] });
6755
6831
  };
@@ -6854,7 +6930,7 @@ var ProgressIndicator = ({
6854
6930
  r: radius,
6855
6931
  fill: "transparent",
6856
6932
  strokeWidth,
6857
- className: "stroke-primary"
6933
+ className: "stroke-progress-indicator-fill"
6858
6934
  }
6859
6935
  ),
6860
6936
  /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
@@ -6867,7 +6943,7 @@ var ProgressIndicator = ({
6867
6943
  strokeWidth,
6868
6944
  strokeDasharray: arcLength,
6869
6945
  strokeDashoffset: arcOffset,
6870
- className: "stroke-gray-300"
6946
+ className: "stroke-progress-indicator-background"
6871
6947
  }
6872
6948
  )
6873
6949
  ]
@@ -7007,99 +7083,107 @@ var InputModal = ({
7007
7083
  };
7008
7084
 
7009
7085
  // src/components/user-action/Select.tsx
7010
- var import_react19 = require("@headlessui/react");
7011
- var import_lucide_react12 = require("lucide-react");
7086
+ var import_lucide_react13 = require("lucide-react");
7012
7087
  var import_react20 = require("react");
7013
7088
  var import_clsx33 = __toESM(require("clsx"));
7089
+
7090
+ // src/hooks/useOutsideClick.ts
7091
+ var import_react19 = require("react");
7092
+ var useOutsideClick = (refs, handler) => {
7093
+ (0, import_react19.useEffect)(() => {
7094
+ const listener = (event) => {
7095
+ if (event.target === null) return;
7096
+ if (refs.some((ref) => !ref.current || ref.current.contains(event.target))) {
7097
+ return;
7098
+ }
7099
+ handler();
7100
+ };
7101
+ document.addEventListener("mousedown", listener);
7102
+ document.addEventListener("touchstart", listener);
7103
+ return () => {
7104
+ document.removeEventListener("mousedown", listener);
7105
+ document.removeEventListener("touchstart", listener);
7106
+ };
7107
+ }, [refs, handler]);
7108
+ };
7109
+
7110
+ // src/components/user-action/Select.tsx
7014
7111
  var import_jsx_runtime42 = require("react/jsx-runtime");
7015
7112
  var Select = ({
7016
7113
  value,
7017
7114
  label,
7018
7115
  options,
7019
7116
  onChange,
7020
- isHidingCurrentValue = true,
7021
7117
  hintText = "",
7022
- showDisabledOptions = true,
7023
7118
  isDisabled,
7119
+ isSearchEnabled = false,
7024
7120
  className,
7025
- textColor = "text-menu-text",
7026
- additionalItems,
7027
7121
  selectedDisplayOverwrite
7028
7122
  }) => {
7029
- let filteredOptions = isHidingCurrentValue ? options.filter((option) => option.value !== value) : options;
7030
- if (!showDisabledOptions) {
7031
- filteredOptions = filteredOptions.filter((value2) => !value2.disabled);
7032
- }
7123
+ const triggerRef = (0, import_react20.useRef)(null);
7124
+ const menuRef = (0, import_react20.useRef)(null);
7125
+ const [isOpen, setIsOpen] = (0, import_react20.useState)(false);
7126
+ useOutsideClick([triggerRef, menuRef], () => setIsOpen(false));
7033
7127
  const selectedOption = options.find((option) => option.value === value);
7034
7128
  if (value !== void 0 && selectedOption === void 0 && selectedDisplayOverwrite === void 0) {
7035
7129
  console.warn("The selected value is not found in the options list. This might be an error on your part or default behavior if it is complex data type on which === does not work. In case of the latter use selectedDisplayOverwrite to set your selected text or component");
7036
7130
  }
7037
- const borderColor = "border-menu-border";
7131
+ const isShowingHint = !selectedDisplayOverwrite && !selectedOption?.label;
7038
7132
  return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("div", { className: (0, import_clsx33.default)(className), children: [
7039
7133
  label && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Label, { ...label, labelType: label.labelType ?? "labelBig", className: (0, import_clsx33.default)("mb-1", label.className) }),
7040
- /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_react19.Menu, { as: "div", className: "relative text-menu-text", children: ({ open }) => /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(import_jsx_runtime42.Fragment, { children: [
7134
+ /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("div", { className: "relative", children: [
7041
7135
  /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(
7042
- import_react19.Menu.Button,
7136
+ "button",
7043
7137
  {
7138
+ ref: triggerRef,
7044
7139
  className: (0, import_clsx33.default)(
7045
- "inline-flex w-full justify-between items-center rounded-t-lg border-2 px-4 py-2 font-medium bg-menu-background text-menu-text",
7046
- textColor,
7047
- borderColor,
7140
+ "btn-md justify-between w-full border-2",
7048
7141
  {
7049
7142
  "rounded-b-lg": !open,
7050
- "hover:border-primary": !isDisabled,
7051
- "bg-disabled-background cursor-not-allowed text-disabled": isDisabled
7143
+ "bg-menu-background border-menu-border hover:border-primary": !isDisabled,
7144
+ "bg-disabled-background text-disabled-text border-disabled-background cursor-not-allowed": isDisabled
7052
7145
  }
7053
7146
  ),
7147
+ onClick: () => setIsOpen(!isOpen),
7054
7148
  disabled: isDisabled,
7055
7149
  children: [
7056
- /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("span", { children: selectedDisplayOverwrite ?? selectedOption?.label ?? hintText }),
7057
- open ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_lucide_react12.ChevronUp, {}) : /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_lucide_react12.ChevronDown, {})
7150
+ !isShowingHint && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("span", { className: "font-semibold text-menu-text", children: selectedDisplayOverwrite ?? selectedOption?.label }),
7151
+ isShowingHint && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("span", { className: "textstyle-description", children: hintText }),
7152
+ isOpen ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_lucide_react13.ChevronUp, {}) : /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_lucide_react13.ChevronDown, {})
7058
7153
  ]
7059
7154
  }
7060
7155
  ),
7061
- /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(
7062
- import_react19.Menu.Items,
7156
+ isOpen && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
7157
+ "div",
7063
7158
  {
7064
- className: "absolute w-full z-10 rounded-b-lg bg-menu-background text-menu-text shadow-lg max-h-[500px] overflow-y-auto",
7065
- children: [
7066
- (additionalItems ?? []).map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
7067
- "div",
7068
- {
7069
- className: (0, import_clsx33.default)(borderColor, "px-4 py-2 overflow-hidden whitespace-nowrap text-ellipsis border-2 border-t-0", {
7070
- "border-b-0 rounded-b-lg": filteredOptions.length === 0 && index === (additionalItems?.length ?? 1) - 1
7071
- }),
7072
- children: item
7073
- },
7074
- `additionalItems${index}`
7075
- )),
7076
- filteredOptions.map((option, index) => /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_react19.Menu.Item, { children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
7077
- "div",
7078
- {
7079
- className: (0, import_clsx33.default)(
7080
- "px-4 py-2 overflow-hidden whitespace-nowrap text-ellipsis border-2 border-t-0 cursor-pointer",
7081
- option.className,
7082
- borderColor,
7083
- {
7084
- "brightness-90": option.value === value,
7085
- "brightness-95": index % 2 === 1,
7086
- "text-disabled bg-disabled-background cursor-not-allowed": !!option.disabled,
7087
- "bg-menu-background text-menu-text hover:brightness-90 cursor-pointer": !option.disabled,
7088
- "rounded-b-lg": index === filteredOptions.length - 1
7089
- }
7090
- ),
7091
- onClick: () => {
7092
- if (!option.disabled) {
7159
+ ref: menuRef,
7160
+ className: "absolute w-full z-10 rounded-lg mt-0.5 bg-menu-background text-menu-text shadow-around-md max-h-[500px] overflow-y-auto p-2",
7161
+ children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
7162
+ SearchableList,
7163
+ {
7164
+ list: options,
7165
+ minimumItemsForSearch: isSearchEnabled ? void 0 : options.length,
7166
+ searchMapping: (item) => item.searchTags,
7167
+ itemMapper: (option, index) => /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
7168
+ Tile,
7169
+ {
7170
+ isSelected: selectedOption?.value === option.value,
7171
+ className: "px-2 py-1 rounded-md",
7172
+ disabledClassName: "text-disabled-text cursor-not-allowed",
7173
+ title: { value: option.label, className: "font-semibold" },
7174
+ onClick: () => {
7093
7175
  onChange(option.value);
7094
- }
7176
+ setIsOpen(false);
7177
+ },
7178
+ isDisabled: option.disabled
7095
7179
  },
7096
- children: option.label
7097
- }
7098
- ) }, `item${index}`))
7099
- ]
7180
+ index
7181
+ )
7182
+ }
7183
+ )
7100
7184
  }
7101
7185
  )
7102
- ] }) })
7186
+ ] })
7103
7187
  ] });
7104
7188
  };
7105
7189
  var SelectUncontrolled = ({
@@ -7129,27 +7213,6 @@ var SelectUncontrolled = ({
7129
7213
  }
7130
7214
  );
7131
7215
  };
7132
- var SearchableSelect = ({
7133
- value,
7134
- options,
7135
- searchMapping,
7136
- ...selectProps
7137
- }) => {
7138
- const [search, setSearch] = (0, import_react20.useState)("");
7139
- const filteredOptions = MultiSearchWithMapping(search, options, searchMapping);
7140
- return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
7141
- Select,
7142
- {
7143
- value,
7144
- options: filteredOptions,
7145
- additionalItems: [/* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("div", { className: "row gap-x-2 items-center", children: [
7146
- /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Input, { autoFocus: true, value: search, onChangeText: setSearch, className: "w-full" }),
7147
- /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_lucide_react12.Search, { className: "min-w-[1.5rem] min-h-[1.5rem]" })
7148
- ] }, "selectSearch")],
7149
- ...selectProps
7150
- }
7151
- );
7152
- };
7153
7216
 
7154
7217
  // src/components/modals/LanguageModal.tsx
7155
7218
  var import_jsx_runtime43 = require("react/jsx-runtime");
@@ -7289,10 +7352,10 @@ var ThemeModal = ({
7289
7352
  };
7290
7353
 
7291
7354
  // src/components/properties/CheckboxProperty.tsx
7292
- var import_lucide_react14 = require("lucide-react");
7355
+ var import_lucide_react15 = require("lucide-react");
7293
7356
 
7294
7357
  // src/components/properties/PropertyBase.tsx
7295
- var import_lucide_react13 = require("lucide-react");
7358
+ var import_lucide_react14 = require("lucide-react");
7296
7359
  var import_clsx34 = __toESM(require("clsx"));
7297
7360
  var import_jsx_runtime46 = require("react/jsx-runtime");
7298
7361
  var defaultPropertyBaseTranslation = {
@@ -7333,13 +7396,13 @@ var PropertyBase = ({
7333
7396
  /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(
7334
7397
  "div",
7335
7398
  {
7336
- className: (0, import_clsx34.default)("row grow justify-between items-center rounded-r-xl border-2 border-l-0", {
7399
+ className: (0, import_clsx34.default)("row gap-x-0 grow justify-between items-center rounded-r-xl border-2 border-l-0", {
7337
7400
  "bg-surface group-hover:border-primary": !requiredAndNoValue,
7338
7401
  "bg-surface-warning group-hover:border-warning border-warning/90": requiredAndNoValue
7339
7402
  }, className),
7340
7403
  children: [
7341
7404
  input({ softRequired, hasValue }),
7342
- requiredAndNoValue && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { className: "text-warning pr-4", children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_lucide_react13.AlertTriangle, { size: 24 }) }),
7405
+ requiredAndNoValue && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { className: "text-warning pr-4", children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_lucide_react14.AlertTriangle, { size: 24 }) }),
7343
7406
  onRemove && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
7344
7407
  TextButton,
7345
7408
  {
@@ -7382,7 +7445,7 @@ var CheckboxProperty = ({
7382
7445
  ...baseProps,
7383
7446
  hasValue: true,
7384
7447
  readOnly,
7385
- icon: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_lucide_react14.Check, { size: 16 }),
7448
+ icon: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_lucide_react15.Check, { size: 16 }),
7386
7449
  input: () => /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "row py-2 px-4 items-center", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
7387
7450
  Checkbox,
7388
7451
  {
@@ -7397,7 +7460,7 @@ var CheckboxProperty = ({
7397
7460
  };
7398
7461
 
7399
7462
  // src/components/properties/DateProperty.tsx
7400
- var import_lucide_react15 = require("lucide-react");
7463
+ var import_lucide_react16 = require("lucide-react");
7401
7464
  var import_clsx35 = __toESM(require("clsx"));
7402
7465
  var import_jsx_runtime48 = require("react/jsx-runtime");
7403
7466
  var DateProperty = ({
@@ -7415,7 +7478,7 @@ var DateProperty = ({
7415
7478
  {
7416
7479
  ...baseProps,
7417
7480
  hasValue,
7418
- icon: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_lucide_react15.CalendarDays, { size: 16 }),
7481
+ icon: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_lucide_react16.CalendarDays, { size: 16 }),
7419
7482
  input: ({ softRequired }) => /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
7420
7483
  "div",
7421
7484
  {
@@ -7446,95 +7509,14 @@ var DateProperty = ({
7446
7509
  };
7447
7510
 
7448
7511
  // src/components/properties/MultiSelectProperty.tsx
7449
- var import_lucide_react17 = require("lucide-react");
7450
- var import_clsx38 = __toESM(require("clsx"));
7451
-
7452
- // src/components/user-action/MultiSelect.tsx
7453
- var import_react24 = require("react");
7454
- var import_lucide_react16 = require("lucide-react");
7512
+ var import_lucide_react18 = require("lucide-react");
7455
7513
  var import_clsx37 = __toESM(require("clsx"));
7456
7514
 
7457
- // src/components/user-action/Menu.tsx
7458
- var import_react23 = require("react");
7459
- var import_clsx36 = __toESM(require("clsx"));
7460
-
7461
- // src/hooks/useOutsideClick.ts
7515
+ // src/components/user-action/MultiSelect.tsx
7462
7516
  var import_react22 = require("react");
7463
- var useOutsideClick = (refs, handler) => {
7464
- (0, import_react22.useEffect)(() => {
7465
- const listener = (event) => {
7466
- if (event.target === null) return;
7467
- if (refs.some((ref) => !ref.current || ref.current.contains(event.target))) {
7468
- return;
7469
- }
7470
- handler();
7471
- };
7472
- document.addEventListener("mousedown", listener);
7473
- document.addEventListener("touchstart", listener);
7474
- return () => {
7475
- document.removeEventListener("mousedown", listener);
7476
- document.removeEventListener("touchstart", listener);
7477
- };
7478
- }, [refs, handler]);
7479
- };
7480
-
7481
- // src/components/user-action/Menu.tsx
7517
+ var import_lucide_react17 = require("lucide-react");
7518
+ var import_clsx36 = __toESM(require("clsx"));
7482
7519
  var import_jsx_runtime49 = require("react/jsx-runtime");
7483
- var MenuItem = ({
7484
- children,
7485
- onClick,
7486
- alignment = "left",
7487
- className
7488
- }) => /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
7489
- "div",
7490
- {
7491
- className: (0, import_clsx36.default)("block px-3 py-1 bg-menu-background text-menu-text hover:brightness-90", {
7492
- "text-right": alignment === "right",
7493
- "text-left": alignment === "left"
7494
- }, className),
7495
- onClick,
7496
- children
7497
- }
7498
- );
7499
- var Menu2 = ({
7500
- trigger,
7501
- children,
7502
- alignment = "tl",
7503
- showOnHover = false,
7504
- menuClassName = ""
7505
- }) => {
7506
- const { isHovered: isOpen, setIsHovered: setIsOpen, handlers } = useHoverState({ isDisabled: !showOnHover });
7507
- const triggerRef = (0, import_react23.useRef)(null);
7508
- const menuRef = (0, import_react23.useRef)(null);
7509
- useOutsideClick([triggerRef, menuRef], () => setIsOpen(false));
7510
- return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(
7511
- "div",
7512
- {
7513
- className: "relative",
7514
- ...handlers,
7515
- children: [
7516
- trigger(() => setIsOpen(!isOpen), triggerRef),
7517
- isOpen ? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
7518
- "div",
7519
- {
7520
- ref: menuRef,
7521
- onClick: (e) => e.stopPropagation(),
7522
- className: (0, import_clsx36.default)("absolute top-full mt-1 py-2 w-60 rounded-lg bg-menu-background text-menu-text ring-1 ring-slate-900/5 text-sm leading-6 font-semibold shadow-md z-[1]", {
7523
- " top-[8px]": alignment[0] === "t",
7524
- " bottom-[8px]": alignment[0] === "b",
7525
- " left-[-8px]": alignment[1] === "l",
7526
- " right-[-8px]": alignment[1] === "r"
7527
- }, menuClassName),
7528
- children
7529
- }
7530
- ) : null
7531
- ]
7532
- }
7533
- );
7534
- };
7535
-
7536
- // src/components/user-action/MultiSelect.tsx
7537
- var import_jsx_runtime50 = require("react/jsx-runtime");
7538
7520
  var defaultMultiSelectTranslation = {
7539
7521
  en: {
7540
7522
  select: "Select",
@@ -7550,110 +7532,149 @@ var defaultMultiSelectTranslation = {
7550
7532
  var MultiSelect = ({
7551
7533
  overwriteTranslation,
7552
7534
  options,
7553
- onChange,
7554
- search,
7555
- disabled = false,
7556
- selectedDisplay,
7557
7535
  label,
7536
+ onChange,
7558
7537
  hintText,
7559
- showDisabledOptions = true,
7560
- className = "",
7561
- triggerClassName = ""
7538
+ isDisabled = false,
7539
+ isSearchEnabled = false,
7540
+ selectedDisplayOverwrite,
7541
+ useChipDisplay = false,
7542
+ className = ""
7562
7543
  }) => {
7563
7544
  const translation = useTranslation(defaultMultiSelectTranslation, overwriteTranslation);
7564
- const [searchText, setSearchText] = (0, import_react24.useState)(search?.initialSearch ?? "");
7565
- let filteredOptions = options;
7566
- const enableSearch = !!search;
7567
- if (enableSearch && !!searchText) {
7568
- filteredOptions = MultiSearchWithMapping(
7569
- searchText,
7570
- filteredOptions,
7571
- (value) => search.searchMapping(value)
7572
- );
7573
- }
7574
- if (!showDisabledOptions) {
7575
- filteredOptions = filteredOptions.filter((value) => !value.disabled);
7576
- }
7545
+ const triggerRef = (0, import_react22.useRef)(null);
7546
+ const menuRef = (0, import_react22.useRef)(null);
7547
+ const [isOpen, setIsOpen] = (0, import_react22.useState)(false);
7548
+ useOutsideClick([triggerRef, menuRef], () => setIsOpen(false));
7577
7549
  const selectedItems = options.filter((value) => value.selected);
7578
- const menuButtonText = selectedItems.length === 0 ? hintText ?? translation.select : /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("span", { children: `${selectedItems.length} ${translation.selected}` });
7579
- const borderColor = "border-menu-border";
7580
- return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: (0, import_clsx37.default)(className), children: [
7581
- label && /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
7550
+ const isShowingHint = !selectedDisplayOverwrite && selectedItems.length === 0;
7551
+ return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: (0, import_clsx36.default)(className), children: [
7552
+ label && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
7582
7553
  Label,
7583
7554
  {
7584
7555
  ...label,
7585
7556
  htmlFor: label.name,
7586
- className: (0, import_clsx37.default)(" mb-1", label.className),
7557
+ className: (0, import_clsx36.default)(" mb-1", label.className),
7587
7558
  labelType: label.labelType ?? "labelBig"
7588
7559
  }
7589
7560
  ),
7590
- /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(
7591
- Menu2,
7592
- {
7593
- alignment: "t_",
7594
- trigger: (onClick, ref) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
7595
- "div",
7596
- {
7597
- ref,
7598
- onClick: disabled ? void 0 : onClick,
7599
- className: (0, import_clsx37.default)(
7600
- borderColor,
7601
- "bg-menu-background text-menu-text inline-w-full justify-between items-center rounded-lg border-2 px-4 py-2 font-medium",
7602
- {
7603
- "hover:border-primary cursor-pointer": !disabled,
7604
- "bg-disabled-background text-disabled cursor-not-allowed": disabled
7605
- },
7606
- triggerClassName
7607
- ),
7608
- children: selectedDisplay ? selectedDisplay({ items: options, disabled }) : menuButtonText
7609
- }
7610
- ),
7611
- menuClassName: (0, import_clsx37.default)(
7612
- "!rounded-lg !shadow-lg !max-h-[500px] !min-w-[400px] !max-w-[70vh] !overflow-y-auto !border !border-2",
7613
- borderColor,
7614
- { "!py-0": !enableSearch, "!pb-0": enableSearch }
7615
- ),
7616
- children: [
7617
- enableSearch && /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "row gap-x-2 items-center px-2 py-2", children: [
7618
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Input, { autoFocus: true, className: "w-full", value: searchText, onChangeText: setSearchText }),
7619
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_lucide_react16.Search, {})
7620
- ] }, "selectSearch"),
7621
- filteredOptions.map((option, index) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
7622
- MenuItem,
7561
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "relative", children: [
7562
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(
7563
+ "button",
7564
+ {
7565
+ ref: triggerRef,
7566
+ className: (0, import_clsx36.default)(
7567
+ "btn-md justify-between w-full border-2 h-auto",
7623
7568
  {
7624
- className: (0, import_clsx37.default)({
7625
- "cursor-not-allowed !bg-disabled-background !text-disabled-text hover:brightness-100": !!option.disabled,
7626
- "cursor-pointer": !option.disabled
7627
- }),
7628
- children: /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(
7629
- "div",
7630
- {
7631
- className: (0, import_clsx37.default)("overflow-hidden whitespace-nowrap text-ellipsis row items-center gap-x-2", option.className),
7632
- onClick: () => {
7633
- if (!option.disabled) {
7569
+ "rounded-b-lg": !open,
7570
+ "bg-menu-background border-menu-border hover:border-primary": !isDisabled,
7571
+ "bg-disabled-background text-disabled-text border-disabled-background cursor-not-allowed": isDisabled
7572
+ }
7573
+ ),
7574
+ onClick: () => setIsOpen(!isOpen),
7575
+ disabled: isDisabled,
7576
+ children: [
7577
+ !isShowingHint && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { className: "font-semibold text-menu-text", children: selectedDisplayOverwrite ?? (useChipDisplay && selectedItems ? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(ChipList, { list: selectedItems.map((value) => ({ children: value.label })) }) : `${selectedItems.length} ${translation.selected}`) }),
7578
+ isShowingHint && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { className: "textstyle-description", children: hintText ?? translation.select }),
7579
+ isOpen ? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_lucide_react17.ChevronUp, { size: 24, className: "min-w-6" }) : /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_lucide_react17.ChevronDown, { className: "min-w-6" })
7580
+ ]
7581
+ }
7582
+ ),
7583
+ isOpen && /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(
7584
+ "div",
7585
+ {
7586
+ ref: menuRef,
7587
+ className: "absolute w-full z-10 rounded-lg mt-0.5 bg-menu-background text-menu-text shadow-around-md max-h-[500px] overflow-y-auto p-2",
7588
+ children: [
7589
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
7590
+ SearchableList,
7591
+ {
7592
+ list: options,
7593
+ minimumItemsForSearch: isSearchEnabled ? void 0 : options.length,
7594
+ searchMapping: (item) => item.searchTags,
7595
+ itemMapper: (option, index) => /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
7596
+ Tile,
7597
+ {
7598
+ isSelected: option.selected,
7599
+ className: "px-2 py-1 rounded-md",
7600
+ disabledClassName: "text-disabled-text cursor-not-allowed",
7601
+ title: { value: option.label, className: "font-semibold" },
7602
+ onClick: () => {
7634
7603
  onChange(options.map((value) => value.value === option.value ? {
7635
7604
  ...option,
7636
7605
  selected: !value.selected
7637
7606
  } : value));
7638
- }
7607
+ },
7608
+ isDisabled: option.disabled
7639
7609
  },
7640
- children: [
7641
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Checkbox, { checked: option.selected, disabled: option.disabled, size: "small" }),
7642
- option.label
7643
- ]
7644
- }
7645
- )
7646
- },
7647
- `item${index}`
7648
- ))
7649
- ]
7650
- }
7651
- )
7610
+ index
7611
+ )
7612
+ }
7613
+ ),
7614
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "row justify-between mt-2", children: [
7615
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "row gap-x-2", children: [
7616
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
7617
+ SolidButton,
7618
+ {
7619
+ color: "neutral",
7620
+ size: "small",
7621
+ onClick: () => {
7622
+ onChange(options.map((option) => ({
7623
+ ...option,
7624
+ selected: !option.disabled
7625
+ })));
7626
+ },
7627
+ disabled: options.every((value) => value.selected || value.disabled),
7628
+ children: "All"
7629
+ }
7630
+ ),
7631
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
7632
+ SolidButton,
7633
+ {
7634
+ color: "neutral",
7635
+ size: "small",
7636
+ onClick: () => {
7637
+ onChange(options.map((option) => ({
7638
+ ...option,
7639
+ selected: false
7640
+ })));
7641
+ },
7642
+ children: "None"
7643
+ }
7644
+ )
7645
+ ] }),
7646
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(SolidButton, { size: "small", onClick: () => setIsOpen(false), children: "Done" })
7647
+ ] })
7648
+ ]
7649
+ }
7650
+ )
7651
+ ] })
7652
7652
  ] });
7653
7653
  };
7654
+ var MultiSelectUncontrolled = ({
7655
+ options,
7656
+ onChange,
7657
+ ...props
7658
+ }) => {
7659
+ const [usedOptions, setUsedOptions] = (0, import_react22.useState)(options);
7660
+ (0, import_react22.useEffect)(() => {
7661
+ setUsedOptions(options);
7662
+ }, [options]);
7663
+ return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
7664
+ MultiSelect,
7665
+ {
7666
+ ...props,
7667
+ options: usedOptions,
7668
+ onChange: (options2) => {
7669
+ setUsedOptions(options2);
7670
+ onChange(options2);
7671
+ }
7672
+ }
7673
+ );
7674
+ };
7654
7675
 
7655
7676
  // src/components/properties/MultiSelectProperty.tsx
7656
- var import_jsx_runtime51 = require("react/jsx-runtime");
7677
+ var import_jsx_runtime50 = require("react/jsx-runtime");
7657
7678
  var defaultMultiSelectPropertyTranslation = {
7658
7679
  en: {
7659
7680
  select: "Select"
@@ -7673,11 +7694,7 @@ var MultiSelectProperty = ({
7673
7694
  }) => {
7674
7695
  const translation = useTranslation(defaultMultiSelectPropertyTranslation, overwriteTranslation);
7675
7696
  const hasValue = options.some((value) => value.selected);
7676
- let triggerClassName;
7677
- if (softRequired && !hasValue) {
7678
- triggerClassName = "border-warning hover:brightness-90";
7679
- }
7680
- return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
7697
+ return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
7681
7698
  PropertyBase,
7682
7699
  {
7683
7700
  name,
@@ -7685,26 +7702,19 @@ var MultiSelectProperty = ({
7685
7702
  readOnly,
7686
7703
  softRequired,
7687
7704
  hasValue,
7688
- icon: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react17.List, { size: 16 }),
7689
- input: ({ softRequired: softRequired2 }) => /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
7705
+ icon: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_lucide_react18.List, { size: 16 }),
7706
+ input: ({ softRequired: softRequired2 }) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
7690
7707
  "div",
7691
7708
  {
7692
- className: (0, import_clsx38.default)("row grow py-2 px-4 cursor-pointer", { "text-warning": softRequired2 && !hasValue }),
7693
- children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
7709
+ className: (0, import_clsx37.default)("row grow py-2 px-4 cursor-pointer", { "text-warning": softRequired2 && !hasValue }),
7710
+ children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
7694
7711
  MultiSelect,
7695
7712
  {
7696
7713
  ...multiSelectProps,
7697
- className: (0, import_clsx38.default)("w-full", { "bg-surface-warning": softRequired2 && !hasValue }),
7698
- triggerClassName,
7699
- selectedDisplay: ({ items }) => {
7700
- const selected = items.filter((value) => value.selected);
7701
- if (selected.length === 0) {
7702
- return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { children: "Select" });
7703
- }
7704
- return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(ChipList, { list: selected.map((value) => ({ children: value.label })) });
7705
- },
7714
+ className: (0, import_clsx37.default)("w-full", { "bg-surface-warning": softRequired2 && !hasValue }),
7706
7715
  options,
7707
- disabled: readOnly,
7716
+ isDisabled: readOnly,
7717
+ useChipDisplay: true,
7708
7718
  hintText: `${translation.select}...`
7709
7719
  }
7710
7720
  )
@@ -7715,9 +7725,9 @@ var MultiSelectProperty = ({
7715
7725
  };
7716
7726
 
7717
7727
  // src/components/properties/NumberProperty.tsx
7718
- var import_lucide_react18 = require("lucide-react");
7719
- var import_clsx39 = __toESM(require("clsx"));
7720
- var import_jsx_runtime52 = require("react/jsx-runtime");
7728
+ var import_lucide_react19 = require("lucide-react");
7729
+ var import_clsx38 = __toESM(require("clsx"));
7730
+ var import_jsx_runtime51 = require("react/jsx-runtime");
7721
7731
  var defaultNumberPropertyTranslation = {
7722
7732
  en: {
7723
7733
  value: "Value"
@@ -7738,23 +7748,23 @@ var NumberProperty = ({
7738
7748
  }) => {
7739
7749
  const translation = useTranslation(defaultNumberPropertyTranslation, overwriteTranslation);
7740
7750
  const hasValue = value !== void 0;
7741
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
7751
+ return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
7742
7752
  PropertyBase,
7743
7753
  {
7744
7754
  ...baseProps,
7745
7755
  onRemove,
7746
7756
  hasValue,
7747
- icon: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react18.Binary, { size: 16 }),
7748
- input: ({ softRequired }) => /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(
7757
+ icon: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react19.Binary, { size: 16 }),
7758
+ input: ({ softRequired }) => /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(
7749
7759
  "div",
7750
7760
  {
7751
- className: (0, import_clsx39.default)("row grow py-2 px-4 cursor-pointer", { "text-warning": softRequired && !hasValue }),
7761
+ className: (0, import_clsx38.default)("row grow py-2 px-4 cursor-pointer", { "text-warning": softRequired && !hasValue }),
7752
7762
  children: [
7753
- /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
7763
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
7754
7764
  Input,
7755
7765
  {
7756
7766
  expanded: false,
7757
- className: (0, import_clsx39.default)("!ring-0 !border-0 !outline-0 !p-0 !m-0 !w-fit !shadow-none !rounded-none", { "bg-surface-warning placeholder-warning": softRequired && !hasValue }),
7767
+ className: (0, import_clsx38.default)("!ring-0 !border-0 !outline-0 !p-0 !m-0 !w-fit !shadow-none !rounded-none", { "bg-surface-warning placeholder-warning": softRequired && !hasValue }),
7758
7768
  value: value?.toString() ?? "",
7759
7769
  type: "number",
7760
7770
  readOnly,
@@ -7777,7 +7787,7 @@ var NumberProperty = ({
7777
7787
  }
7778
7788
  }
7779
7789
  ),
7780
- suffix && /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("span", { className: (0, import_clsx39.default)("ml-1", { "bg-surface-warning": softRequired && !hasValue }), children: suffix })
7790
+ suffix && /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: (0, import_clsx38.default)("ml-1", { "bg-surface-warning": softRequired && !hasValue }), children: suffix })
7781
7791
  ]
7782
7792
  }
7783
7793
  )
@@ -7786,9 +7796,9 @@ var NumberProperty = ({
7786
7796
  };
7787
7797
 
7788
7798
  // src/components/properties/SelectProperty.tsx
7789
- var import_lucide_react19 = require("lucide-react");
7790
- var import_clsx40 = __toESM(require("clsx"));
7791
- var import_jsx_runtime53 = require("react/jsx-runtime");
7799
+ var import_lucide_react20 = require("lucide-react");
7800
+ var import_clsx39 = __toESM(require("clsx"));
7801
+ var import_jsx_runtime52 = require("react/jsx-runtime");
7792
7802
  var defaultSingleSelectPropertyTranslation = {
7793
7803
  en: {
7794
7804
  select: "Select"
@@ -7805,11 +7815,11 @@ var SingleSelectProperty = ({
7805
7815
  readOnly = false,
7806
7816
  softRequired,
7807
7817
  onRemove,
7808
- ...multiSelectProps
7818
+ ...selectProps
7809
7819
  }) => {
7810
7820
  const translation = useTranslation(defaultSingleSelectPropertyTranslation, overwriteTranslation);
7811
7821
  const hasValue = value !== void 0;
7812
- return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
7822
+ return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
7813
7823
  PropertyBase,
7814
7824
  {
7815
7825
  name,
@@ -7817,19 +7827,19 @@ var SingleSelectProperty = ({
7817
7827
  readOnly,
7818
7828
  softRequired,
7819
7829
  hasValue,
7820
- icon: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react19.List, { size: 16 }),
7821
- input: ({ softRequired: softRequired2 }) => /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
7830
+ icon: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react20.List, { size: 16 }),
7831
+ input: ({ softRequired: softRequired2 }) => /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
7822
7832
  "div",
7823
7833
  {
7824
- className: (0, import_clsx40.default)("row grow py-2 px-4 cursor-pointer", { "text-warning": softRequired2 && !hasValue }),
7825
- children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
7826
- SearchableSelect,
7834
+ className: (0, import_clsx39.default)("row grow py-2 px-4 cursor-pointer", { "text-warning": softRequired2 && !hasValue }),
7835
+ children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
7836
+ Select,
7827
7837
  {
7828
- ...multiSelectProps,
7838
+ ...selectProps,
7829
7839
  value,
7830
7840
  options,
7831
7841
  isDisabled: readOnly,
7832
- className: (0, import_clsx40.default)("w-full", { "bg-surface-warning": softRequired2 && !hasValue }),
7842
+ className: (0, import_clsx39.default)("w-full", { "bg-surface-warning": softRequired2 && !hasValue }),
7833
7843
  hintText: `${translation.select}...`
7834
7844
  }
7835
7845
  )
@@ -7840,13 +7850,13 @@ var SingleSelectProperty = ({
7840
7850
  };
7841
7851
 
7842
7852
  // src/components/properties/TextProperty.tsx
7843
- var import_lucide_react20 = require("lucide-react");
7844
- var import_clsx42 = __toESM(require("clsx"));
7853
+ var import_lucide_react21 = require("lucide-react");
7854
+ var import_clsx41 = __toESM(require("clsx"));
7845
7855
 
7846
7856
  // src/components/user-action/Textarea.tsx
7847
- var import_react25 = require("react");
7848
- var import_clsx41 = __toESM(require("clsx"));
7849
- var import_jsx_runtime54 = require("react/jsx-runtime");
7857
+ var import_react23 = require("react");
7858
+ var import_clsx40 = __toESM(require("clsx"));
7859
+ var import_jsx_runtime53 = require("react/jsx-runtime");
7850
7860
  var Textarea = ({
7851
7861
  label,
7852
7862
  headline,
@@ -7861,33 +7871,33 @@ var Textarea = ({
7861
7871
  className,
7862
7872
  ...props
7863
7873
  }) => {
7864
- const [hasFocus, setHasFocus] = (0, import_react25.useState)(false);
7874
+ const [hasFocus, setHasFocus] = (0, import_react23.useState)(false);
7865
7875
  const { restartTimer, clearUpdateTimer } = useSaveDelay(() => void 0, 3e3);
7866
7876
  const onEditCompletedWrapper = (text) => {
7867
7877
  onEditCompleted(text);
7868
7878
  clearUpdateTimer();
7869
7879
  };
7870
- return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "w-full", children: [
7871
- label && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
7880
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "w-full", children: [
7881
+ label && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
7872
7882
  Label,
7873
7883
  {
7874
7884
  ...label,
7875
7885
  htmlFor: id,
7876
- className: (0, import_clsx41.default)("mb-1", label.className),
7886
+ className: (0, import_clsx40.default)("mb-1", label.className),
7877
7887
  labelType: label.labelType ?? "labelSmall"
7878
7888
  }
7879
7889
  ),
7880
- /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
7890
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(
7881
7891
  "div",
7882
7892
  {
7883
- className: `${(0, import_clsx41.default)(" bg-surface text-on-surface focus-within:border-primary relative", { "shadow border-2 hover:border-primary rounded-lg": defaultStyle })}`,
7893
+ className: `${(0, import_clsx40.default)(" bg-surface text-on-surface focus-within:border-primary relative", { "shadow border-2 hover:border-primary rounded-lg": defaultStyle })}`,
7884
7894
  children: [
7885
- headline && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "mx-3 mt-3 block textstyle-label-md", children: headline }),
7886
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
7895
+ headline && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { className: "mx-3 mt-3 block textstyle-label-md", children: headline }),
7896
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
7887
7897
  "textarea",
7888
7898
  {
7889
7899
  id,
7890
- className: (0, import_clsx41.default)("pt-0 px-3 border-transparent focus:border-transparent focus:ring-0 appearance-none border w-full leading-tight focus:outline-none", {
7900
+ className: (0, import_clsx40.default)("pt-0 px-3 border-transparent focus:border-transparent focus:ring-0 appearance-none border w-full leading-tight focus:outline-none", {
7891
7901
  "resize-none": !resizable,
7892
7902
  "h-32": defaultStyle,
7893
7903
  "mt-3": !headline
@@ -7914,7 +7924,7 @@ var Textarea = ({
7914
7924
  ]
7915
7925
  }
7916
7926
  ),
7917
- hasFocus && disclaimer && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("label", { className: "text-negative", children: disclaimer })
7927
+ hasFocus && disclaimer && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("label", { className: "text-negative", children: disclaimer })
7918
7928
  ] });
7919
7929
  };
7920
7930
  var TextareaUncontrolled = ({
@@ -7922,11 +7932,11 @@ var TextareaUncontrolled = ({
7922
7932
  onChangeText = noop,
7923
7933
  ...props
7924
7934
  }) => {
7925
- const [text, setText] = (0, import_react25.useState)(value);
7926
- (0, import_react25.useEffect)(() => {
7935
+ const [text, setText] = (0, import_react23.useState)(value);
7936
+ (0, import_react23.useEffect)(() => {
7927
7937
  setText(value);
7928
7938
  }, [value]);
7929
- return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
7939
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
7930
7940
  Textarea,
7931
7941
  {
7932
7942
  ...props,
@@ -7940,7 +7950,7 @@ var TextareaUncontrolled = ({
7940
7950
  };
7941
7951
 
7942
7952
  // src/components/properties/TextProperty.tsx
7943
- var import_jsx_runtime55 = require("react/jsx-runtime");
7953
+ var import_jsx_runtime54 = require("react/jsx-runtime");
7944
7954
  var defaultTextPropertyTranslation = {
7945
7955
  en: {
7946
7956
  value: "Text"
@@ -7960,21 +7970,21 @@ var TextProperty = ({
7960
7970
  }) => {
7961
7971
  const translation = useTranslation(defaultTextPropertyTranslation, overwriteTranslation);
7962
7972
  const hasValue = value !== void 0;
7963
- return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
7973
+ return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
7964
7974
  PropertyBase,
7965
7975
  {
7966
7976
  ...baseProps,
7967
7977
  onRemove,
7968
7978
  hasValue,
7969
- icon: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_lucide_react20.Text, { size: 16 }),
7970
- input: ({ softRequired }) => /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
7979
+ icon: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react21.Text, { size: 16 }),
7980
+ input: ({ softRequired }) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
7971
7981
  "div",
7972
7982
  {
7973
- className: (0, import_clsx42.default)("row grow pt-2 pb-1 px-4 cursor-pointer", { "text-warning": softRequired && !hasValue }),
7974
- children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
7983
+ className: (0, import_clsx41.default)("row grow pt-2 pb-1 px-4 cursor-pointer", { "text-warning": softRequired && !hasValue }),
7984
+ children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
7975
7985
  Textarea,
7976
7986
  {
7977
- className: (0, import_clsx42.default)("ring-0 border-0 outline-0 p-0 m-0 shadow-none rounded-none", { "bg-surface-warning placeholder-warning": softRequired && !hasValue }),
7987
+ className: (0, import_clsx41.default)("ring-0 border-0 outline-0 p-0 m-0 shadow-none rounded-none", { "bg-surface-warning placeholder-warning": softRequired && !hasValue }),
7978
7988
  rows: 5,
7979
7989
  defaultStyle: false,
7980
7990
  value: value ?? "",
@@ -8003,8 +8013,8 @@ var TextProperty = ({
8003
8013
  };
8004
8014
 
8005
8015
  // src/components/user-action/DateAndTimePicker.tsx
8006
- var import_clsx43 = __toESM(require("clsx"));
8007
- var import_jsx_runtime56 = require("react/jsx-runtime");
8016
+ var import_clsx42 = __toESM(require("clsx"));
8017
+ var import_jsx_runtime55 = require("react/jsx-runtime");
8008
8018
  var defaultTimeTranslation = {
8009
8019
  en: {
8010
8020
  clear: "Clear",
@@ -8063,7 +8073,7 @@ var DateTimePicker = ({
8063
8073
  let dateDisplay;
8064
8074
  let timeDisplay;
8065
8075
  if (useDate) {
8066
- dateDisplay = /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
8076
+ dateDisplay = /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
8067
8077
  DatePicker,
8068
8078
  {
8069
8079
  ...datePickerProps,
@@ -8077,25 +8087,25 @@ var DateTimePicker = ({
8077
8087
  );
8078
8088
  }
8079
8089
  if (useTime) {
8080
- timeDisplay = /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
8090
+ timeDisplay = /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
8081
8091
  TimePicker,
8082
8092
  {
8083
8093
  ...timePickerProps,
8084
- className: (0, import_clsx43.default)("h-full", { "justify-between w-full": mode === "time" }),
8094
+ className: (0, import_clsx42.default)("h-full", { "justify-between w-full": mode === "time" }),
8085
8095
  maxHeight: 250,
8086
8096
  time: value,
8087
8097
  onChange
8088
8098
  }
8089
8099
  );
8090
8100
  }
8091
- return /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("div", { className: "col w-fit", children: [
8092
- /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("div", { className: "row gap-x-4", children: [
8101
+ return /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "col w-fit", children: [
8102
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "row gap-x-4", children: [
8093
8103
  dateDisplay,
8094
8104
  timeDisplay
8095
8105
  ] }),
8096
- /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: "row justify-end", children: /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("div", { className: "row gap-x-2 mt-1", children: [
8097
- /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(SolidButton, { size: "medium", color: "negative", onClick: onRemove, children: translation.clear }),
8098
- /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
8106
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("div", { className: "row justify-end", children: /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "row gap-x-2 mt-1", children: [
8107
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(SolidButton, { size: "medium", color: "negative", onClick: onRemove, children: translation.clear }),
8108
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
8099
8109
  SolidButton,
8100
8110
  {
8101
8111
  size: "medium",
@@ -8107,8 +8117,88 @@ var DateTimePicker = ({
8107
8117
  ] });
8108
8118
  };
8109
8119
 
8120
+ // src/components/user-action/Menu.tsx
8121
+ var import_react24 = require("react");
8122
+ var import_clsx43 = __toESM(require("clsx"));
8123
+
8124
+ // src/util/PropsWithFunctionChildren.ts
8125
+ var resolve = (children, bag) => {
8126
+ if (typeof children === "function") {
8127
+ return children(bag);
8128
+ }
8129
+ return children ?? void 0;
8130
+ };
8131
+ var BagFunctionUtil = {
8132
+ resolve
8133
+ };
8134
+
8135
+ // src/components/user-action/Menu.tsx
8136
+ var import_jsx_runtime56 = require("react/jsx-runtime");
8137
+ var MenuItem = ({
8138
+ children,
8139
+ onClick,
8140
+ alignment = "left",
8141
+ isDisabled = false,
8142
+ className
8143
+ }) => /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
8144
+ "div",
8145
+ {
8146
+ className: (0, import_clsx43.default)("block px-3 py-1.5 bg-menu-background first:rounded-t-lg last:rounded-b-lg text-sm font-semibold", {
8147
+ "text-right": alignment === "right",
8148
+ "text-left": alignment === "left",
8149
+ "text-disabled-text cursor-not-allowed": isDisabled,
8150
+ "text-menu-text hover:bg-primary/20": !isDisabled,
8151
+ "cursor-pointer": !!onClick
8152
+ }, className),
8153
+ onClick,
8154
+ children
8155
+ }
8156
+ );
8157
+ var Menu = ({
8158
+ trigger,
8159
+ children,
8160
+ alignment = "tl",
8161
+ showOnHover = false,
8162
+ menuClassName = ""
8163
+ }) => {
8164
+ const { isHovered: isOpen, setIsHovered: setIsOpen, handlers } = useHoverState({ isDisabled: !showOnHover });
8165
+ const triggerRef = (0, import_react24.useRef)(null);
8166
+ const menuRef = (0, import_react24.useRef)(null);
8167
+ useOutsideClick([triggerRef, menuRef], () => setIsOpen(false));
8168
+ const bag = { isOpen, close: () => setIsOpen(false) };
8169
+ return /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(
8170
+ "div",
8171
+ {
8172
+ className: "relative",
8173
+ ...handlers,
8174
+ children: [
8175
+ trigger(() => setIsOpen(!isOpen), triggerRef),
8176
+ /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
8177
+ "div",
8178
+ {
8179
+ ref: menuRef,
8180
+ onClick: (e) => e.stopPropagation(),
8181
+ className: (0, import_clsx43.default)(
8182
+ "absolute top-full mt-1 min-w-40 rounded-lg bg-menu-background text-menu-text shadow-around-md z-10",
8183
+ {
8184
+ "top-0": alignment[0] === "t",
8185
+ "bottom-0": alignment[0] === "b",
8186
+ "left-0": alignment[1] === "l",
8187
+ "right-0": alignment[1] === "r",
8188
+ "hidden": !isOpen
8189
+ },
8190
+ menuClassName
8191
+ ),
8192
+ children: BagFunctionUtil.resolve(children, bag)
8193
+ }
8194
+ )
8195
+ ]
8196
+ }
8197
+ );
8198
+ };
8199
+
8110
8200
  // src/components/user-action/ScrollPicker.tsx
8111
- var import_react26 = require("react");
8201
+ var import_react25 = require("react");
8112
8202
  var import_clsx44 = __toESM(require("clsx"));
8113
8203
  var import_jsx_runtime57 = require("react/jsx-runtime");
8114
8204
  var up = 1;
@@ -8129,7 +8219,7 @@ var ScrollPicker = ({
8129
8219
  transition,
8130
8220
  items,
8131
8221
  lastTimeStamp
8132
- }, setAnimation] = (0, import_react26.useState)({
8222
+ }, setAnimation] = (0, import_react25.useState)({
8133
8223
  targetIndex: selectedIndex,
8134
8224
  currentIndex: disabled ? selectedIndex : 0,
8135
8225
  velocity: 0,
@@ -8145,7 +8235,7 @@ var ScrollPicker = ({
8145
8235
  const itemHeight = 40;
8146
8236
  const distance = 8;
8147
8237
  const containerHeight = itemHeight * (itemsShownCount - 2) + distance * (itemsShownCount - 2 + 1);
8148
- const getDirection = (0, import_react26.useCallback)((targetIndex, currentIndex2, transition2, length) => {
8238
+ const getDirection = (0, import_react25.useCallback)((targetIndex, currentIndex2, transition2, length) => {
8149
8239
  if (targetIndex === currentIndex2) {
8150
8240
  return transition2 > 0 ? up : down;
8151
8241
  }
@@ -8155,7 +8245,7 @@ var ScrollPicker = ({
8155
8245
  }
8156
8246
  return distanceForward >= length / 2 ? down : up;
8157
8247
  }, []);
8158
- const animate = (0, import_react26.useCallback)((timestamp, startTime) => {
8248
+ const animate = (0, import_react25.useCallback)((timestamp, startTime) => {
8159
8249
  setAnimation((prevState) => {
8160
8250
  const {
8161
8251
  targetIndex,
@@ -8228,7 +8318,7 @@ var ScrollPicker = ({
8228
8318
  };
8229
8319
  });
8230
8320
  }, [disabled, getDirection, onChange]);
8231
- (0, import_react26.useEffect)(() => {
8321
+ (0, import_react25.useEffect)(() => {
8232
8322
  requestAnimationFrame((timestamp) => animate(timestamp, lastTimeStamp));
8233
8323
  });
8234
8324
  const opacity = (transition2, index, itemsCount) => {
@@ -8305,8 +8395,8 @@ var ScrollPicker = ({
8305
8395
  };
8306
8396
 
8307
8397
  // src/components/user-action/ToggleableInput.tsx
8308
- var import_react27 = require("react");
8309
- var import_lucide_react21 = require("lucide-react");
8398
+ var import_react26 = require("react");
8399
+ var import_lucide_react22 = require("lucide-react");
8310
8400
  var import_clsx45 = __toESM(require("clsx"));
8311
8401
  var import_jsx_runtime58 = require("react/jsx-runtime");
8312
8402
  var ToggleableInput = ({
@@ -8322,14 +8412,14 @@ var ToggleableInput = ({
8322
8412
  onBlur,
8323
8413
  ...restProps
8324
8414
  }) => {
8325
- const [isEditing, setIsEditing] = (0, import_react27.useState)(initialState !== "display");
8415
+ const [isEditing, setIsEditing] = (0, import_react26.useState)(initialState !== "display");
8326
8416
  const { restartTimer, clearUpdateTimer } = useSaveDelay(() => void 0, 3e3);
8327
- const ref = (0, import_react27.useRef)(null);
8417
+ const ref = (0, import_react26.useRef)(null);
8328
8418
  const onEditCompletedWrapper = (text) => {
8329
8419
  onEditCompleted(text);
8330
8420
  clearUpdateTimer();
8331
8421
  };
8332
- (0, import_react27.useEffect)(() => {
8422
+ (0, import_react26.useEffect)(() => {
8333
8423
  if (isEditing) {
8334
8424
  ref.current?.focus();
8335
8425
  }
@@ -8376,7 +8466,7 @@ var ToggleableInput = ({
8376
8466
  }
8377
8467
  ) : /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("span", { className: (0, import_clsx45.default)("max-w-xs break-words overflow-hidden", labelClassName), children: value }) }),
8378
8468
  /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
8379
- import_lucide_react21.Pencil,
8469
+ import_lucide_react22.Pencil,
8380
8470
  {
8381
8471
  className: (0, import_clsx45.default)(`cursor-pointer`, { "text-transparent": isEditing }),
8382
8472
  size,
@@ -8394,8 +8484,8 @@ var ToggleableInputUncontrolled = ({
8394
8484
  onChangeText = noop,
8395
8485
  ...restProps
8396
8486
  }) => {
8397
- const [value, setValue] = (0, import_react27.useState)(initialValue);
8398
- (0, import_react27.useEffect)(() => {
8487
+ const [value, setValue] = (0, import_react26.useState)(initialValue);
8488
+ (0, import_react26.useEffect)(() => {
8399
8489
  setValue(initialValue);
8400
8490
  }, [initialValue]);
8401
8491
  return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
@@ -8456,6 +8546,7 @@ var filterNews = (localizedNews, requiredKeys) => {
8456
8546
  ArrayUtil,
8457
8547
  Avatar,
8458
8548
  AvatarGroup,
8549
+ BagFunctionUtil,
8459
8550
  BreadCrumb,
8460
8551
  ButtonColorUtil,
8461
8552
  ButtonUtil,
@@ -8506,6 +8597,7 @@ var filterNews = (localizedNews, requiredKeys) => {
8506
8597
  MultiSearchWithMapping,
8507
8598
  MultiSelect,
8508
8599
  MultiSelectProperty,
8600
+ MultiSelectUncontrolled,
8509
8601
  MultiSubjectSearchWithMapping,
8510
8602
  NumberProperty,
8511
8603
  OutlineButton,
@@ -8519,7 +8611,6 @@ var filterNews = (localizedNews, requiredKeys) => {
8519
8611
  RingWave,
8520
8612
  ScrollPicker,
8521
8613
  SearchableList,
8522
- SearchableSelect,
8523
8614
  Select,
8524
8615
  SelectUncontrolled,
8525
8616
  SessionStorageService,
@@ -8593,6 +8684,7 @@ var filterNews = (localizedNews, requiredKeys) => {
8593
8684
  useLocale,
8594
8685
  useOutsideClick,
8595
8686
  useSaveDelay,
8687
+ useSearch,
8596
8688
  useTheme,
8597
8689
  useTranslation,
8598
8690
  validateEmail,