@helpwave/hightide 0.1.7-alpha.1 → 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 (189) 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 +20 -21
  6. package/dist/components/date/DatePicker.js.map +1 -1
  7. package/dist/components/date/DatePicker.mjs +20 -21
  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 +107 -23
  16. package/dist/components/date/YearMonthPicker.js.map +1 -1
  17. package/dist/components/date/YearMonthPicker.mjs +107 -23
  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.d.mts +1 -1
  54. package/dist/components/layout-and-navigation/StepperBar.d.ts +1 -1
  55. package/dist/components/layout-and-navigation/StepperBar.js +6 -6
  56. package/dist/components/layout-and-navigation/StepperBar.js.map +1 -1
  57. package/dist/components/layout-and-navigation/StepperBar.mjs +6 -6
  58. package/dist/components/layout-and-navigation/StepperBar.mjs.map +1 -1
  59. package/dist/components/layout-and-navigation/Table.js +4 -4
  60. package/dist/components/layout-and-navigation/Table.js.map +1 -1
  61. package/dist/components/layout-and-navigation/Table.mjs +4 -4
  62. package/dist/components/layout-and-navigation/Table.mjs.map +1 -1
  63. package/dist/components/layout-and-navigation/Tile.d.mts +10 -15
  64. package/dist/components/layout-and-navigation/Tile.d.ts +10 -15
  65. package/dist/components/layout-and-navigation/Tile.js +30 -8
  66. package/dist/components/layout-and-navigation/Tile.js.map +1 -1
  67. package/dist/components/layout-and-navigation/Tile.mjs +30 -8
  68. package/dist/components/layout-and-navigation/Tile.mjs.map +1 -1
  69. package/dist/components/loading-states/ProgressIndicator.js +2 -2
  70. package/dist/components/loading-states/ProgressIndicator.js.map +1 -1
  71. package/dist/components/loading-states/ProgressIndicator.mjs +2 -2
  72. package/dist/components/loading-states/ProgressIndicator.mjs.map +1 -1
  73. package/dist/components/modals/ConfirmModal.js +2 -2
  74. package/dist/components/modals/ConfirmModal.js.map +1 -1
  75. package/dist/components/modals/ConfirmModal.mjs +2 -2
  76. package/dist/components/modals/ConfirmModal.mjs.map +1 -1
  77. package/dist/components/modals/DiscardChangesModal.js +2 -2
  78. package/dist/components/modals/DiscardChangesModal.js.map +1 -1
  79. package/dist/components/modals/DiscardChangesModal.mjs +2 -2
  80. package/dist/components/modals/DiscardChangesModal.mjs.map +1 -1
  81. package/dist/components/modals/InputModal.js +2 -2
  82. package/dist/components/modals/InputModal.js.map +1 -1
  83. package/dist/components/modals/InputModal.mjs +2 -2
  84. package/dist/components/modals/InputModal.mjs.map +1 -1
  85. package/dist/components/modals/LanguageModal.js +384 -151
  86. package/dist/components/modals/LanguageModal.js.map +1 -1
  87. package/dist/components/modals/LanguageModal.mjs +383 -150
  88. package/dist/components/modals/LanguageModal.mjs.map +1 -1
  89. package/dist/components/modals/ThemeModal.js +385 -155
  90. package/dist/components/modals/ThemeModal.js.map +1 -1
  91. package/dist/components/modals/ThemeModal.mjs +382 -152
  92. package/dist/components/modals/ThemeModal.mjs.map +1 -1
  93. package/dist/components/properties/CheckboxProperty.js +6 -6
  94. package/dist/components/properties/CheckboxProperty.js.map +1 -1
  95. package/dist/components/properties/CheckboxProperty.mjs +6 -6
  96. package/dist/components/properties/CheckboxProperty.mjs.map +1 -1
  97. package/dist/components/properties/DateProperty.js +3 -3
  98. package/dist/components/properties/DateProperty.js.map +1 -1
  99. package/dist/components/properties/DateProperty.mjs +3 -3
  100. package/dist/components/properties/DateProperty.mjs.map +1 -1
  101. package/dist/components/properties/MultiSelectProperty.d.mts +1 -0
  102. package/dist/components/properties/MultiSelectProperty.d.ts +1 -0
  103. package/dist/components/properties/MultiSelectProperty.js +484 -432
  104. package/dist/components/properties/MultiSelectProperty.js.map +1 -1
  105. package/dist/components/properties/MultiSelectProperty.mjs +480 -428
  106. package/dist/components/properties/MultiSelectProperty.mjs.map +1 -1
  107. package/dist/components/properties/NumberProperty.js +3 -3
  108. package/dist/components/properties/NumberProperty.js.map +1 -1
  109. package/dist/components/properties/NumberProperty.mjs +3 -3
  110. package/dist/components/properties/NumberProperty.mjs.map +1 -1
  111. package/dist/components/properties/PropertyBase.js +3 -3
  112. package/dist/components/properties/PropertyBase.js.map +1 -1
  113. package/dist/components/properties/PropertyBase.mjs +3 -3
  114. package/dist/components/properties/PropertyBase.mjs.map +1 -1
  115. package/dist/components/properties/SelectProperty.d.mts +3 -3
  116. package/dist/components/properties/SelectProperty.d.ts +3 -3
  117. package/dist/components/properties/SelectProperty.js +404 -264
  118. package/dist/components/properties/SelectProperty.js.map +1 -1
  119. package/dist/components/properties/SelectProperty.mjs +404 -264
  120. package/dist/components/properties/SelectProperty.mjs.map +1 -1
  121. package/dist/components/properties/TextProperty.js +5 -5
  122. package/dist/components/properties/TextProperty.js.map +1 -1
  123. package/dist/components/properties/TextProperty.mjs +5 -5
  124. package/dist/components/properties/TextProperty.mjs.map +1 -1
  125. package/dist/components/user-action/Checkbox.js +3 -3
  126. package/dist/components/user-action/Checkbox.js.map +1 -1
  127. package/dist/components/user-action/Checkbox.mjs +3 -3
  128. package/dist/components/user-action/Checkbox.mjs.map +1 -1
  129. package/dist/components/user-action/DateAndTimePicker.js +20 -21
  130. package/dist/components/user-action/DateAndTimePicker.js.map +1 -1
  131. package/dist/components/user-action/DateAndTimePicker.mjs +20 -21
  132. package/dist/components/user-action/DateAndTimePicker.mjs.map +1 -1
  133. package/dist/components/user-action/Menu.d.mts +14 -8
  134. package/dist/components/user-action/Menu.d.ts +14 -8
  135. package/dist/components/user-action/Menu.js +32 -11
  136. package/dist/components/user-action/Menu.js.map +1 -1
  137. package/dist/components/user-action/Menu.mjs +32 -11
  138. package/dist/components/user-action/Menu.mjs.map +1 -1
  139. package/dist/components/user-action/MultiSelect.d.mts +10 -16
  140. package/dist/components/user-action/MultiSelect.d.ts +10 -16
  141. package/dist/components/user-action/MultiSelect.js +485 -312
  142. package/dist/components/user-action/MultiSelect.js.map +1 -1
  143. package/dist/components/user-action/MultiSelect.mjs +482 -310
  144. package/dist/components/user-action/MultiSelect.mjs.map +1 -1
  145. package/dist/components/user-action/ScrollPicker.js +1 -1
  146. package/dist/components/user-action/ScrollPicker.js.map +1 -1
  147. package/dist/components/user-action/ScrollPicker.mjs +1 -1
  148. package/dist/components/user-action/ScrollPicker.mjs.map +1 -1
  149. package/dist/components/user-action/Select.d.mts +5 -18
  150. package/dist/components/user-action/Select.d.ts +5 -18
  151. package/dist/components/user-action/Select.js +309 -114
  152. package/dist/components/user-action/Select.js.map +1 -1
  153. package/dist/components/user-action/Select.mjs +304 -108
  154. package/dist/components/user-action/Select.mjs.map +1 -1
  155. package/dist/components/user-action/Textarea.js +2 -2
  156. package/dist/components/user-action/Textarea.js.map +1 -1
  157. package/dist/components/user-action/Textarea.mjs +2 -2
  158. package/dist/components/user-action/Textarea.mjs.map +1 -1
  159. package/dist/components/user-action/Tooltip.js +2 -2
  160. package/dist/components/user-action/Tooltip.js.map +1 -1
  161. package/dist/components/user-action/Tooltip.mjs +2 -2
  162. package/dist/components/user-action/Tooltip.mjs.map +1 -1
  163. package/dist/css/globals.css +236 -219
  164. package/dist/css/uncompiled/globals.css +153 -77
  165. package/dist/hooks/useSearch.d.mts +17 -0
  166. package/dist/hooks/useSearch.d.ts +17 -0
  167. package/dist/hooks/useSearch.js +66 -0
  168. package/dist/hooks/useSearch.js.map +1 -0
  169. package/dist/hooks/useSearch.mjs +42 -0
  170. package/dist/hooks/useSearch.mjs.map +1 -0
  171. package/dist/index.d.mts +7 -5
  172. package/dist/index.d.ts +7 -5
  173. package/dist/index.js +563 -471
  174. package/dist/index.js.map +1 -1
  175. package/dist/index.mjs +525 -435
  176. package/dist/index.mjs.map +1 -1
  177. package/dist/util/PropsWithFunctionChildren.d.mts +14 -0
  178. package/dist/util/PropsWithFunctionChildren.d.ts +14 -0
  179. package/dist/util/PropsWithFunctionChildren.js +38 -0
  180. package/dist/util/PropsWithFunctionChildren.js.map +1 -0
  181. package/dist/util/PropsWithFunctionChildren.mjs +14 -0
  182. package/dist/util/PropsWithFunctionChildren.mjs.map +1 -0
  183. package/dist/util/simpleSearch.d.mts +2 -2
  184. package/dist/util/simpleSearch.d.ts +2 -2
  185. package/dist/util/simpleSearch.js +4 -1
  186. package/dist/util/simpleSearch.js.map +1 -1
  187. package/dist/util/simpleSearch.mjs +4 -1
  188. package/dist/util/simpleSearch.mjs.map +1 -1
  189. 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: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "col gap-y-1 px-2 pb-2", 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
  },
@@ -3901,18 +3922,18 @@ var YearMonthPicker = ({
3901
3922
  },
3902
3923
  month
3903
3924
  );
3904
- }) }, index)) })
3925
+ }) }, index))
3905
3926
  },
3906
3927
  year
3907
3928
  );
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
  ] })
@@ -4089,6 +4122,7 @@ var DatePicker = ({
4089
4122
  /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "mt-2", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
4090
4123
  TextButton,
4091
4124
  {
4125
+ color: "primary",
4092
4126
  onClick: () => {
4093
4127
  const newDate = /* @__PURE__ */ new Date();
4094
4128
  newDate.setHours(value.getHours(), value.getMinutes());
@@ -4437,7 +4471,7 @@ var Tooltip = ({
4437
4471
  {
4438
4472
  className: (0, import_clsx10.clsx)(
4439
4473
  `opacity-0 absolute text-xs font-semibold text-tooltip-text px-2 py-1 rounded whitespace-nowrap
4440
- animate-tooltip-fade-in shadow-lg bg-tooltip-background`,
4474
+ animate-tooltip-fade-in shadow-around-md bg-tooltip-background`,
4441
4475
  positionClasses[position],
4442
4476
  tooltipClassName
4443
4477
  ),
@@ -4448,7 +4482,7 @@ var Tooltip = ({
4448
4482
  "div",
4449
4483
  {
4450
4484
  className: (0, import_clsx10.clsx)(`absolute w-0 h-0`, triangleClasses[position]),
4451
- style: { ...triangleStyle[position], zIndex }
4485
+ style: { ...triangleStyle[position], zIndex: zIndex + 1 }
4452
4486
  }
4453
4487
  )
4454
4488
  ]
@@ -4460,7 +4494,7 @@ var Tooltip = ({
4460
4494
  };
4461
4495
 
4462
4496
  // src/components/layout-and-navigation/Overlay.tsx
4463
- var import_lucide_react3 = require("lucide-react");
4497
+ var import_lucide_react4 = require("lucide-react");
4464
4498
  var import_jsx_runtime13 = require("react/jsx-runtime");
4465
4499
  var Overlay = ({
4466
4500
  children,
@@ -4516,7 +4550,7 @@ var OverlayHeader = ({
4516
4550
  children: titleText
4517
4551
  }
4518
4552
  ),
4519
- !!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" }) }) })
4520
4554
  ] });
4521
4555
  return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "col", children: [
4522
4556
  hasTitleRow && titleRow,
@@ -4748,10 +4782,10 @@ var Avatar = ({ avatarUrl, alt, size = "medium", className = "" }) => {
4748
4782
  };
4749
4783
  return (
4750
4784
  // TODO transparent or white background later
4751
- /* @__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)(
4752
4786
  "img",
4753
4787
  {
4754
- className: "rounded-full border border-gray-200",
4788
+ className: "rounded-full",
4755
4789
  style,
4756
4790
  src: avatarUrl,
4757
4791
  alt,
@@ -5124,7 +5158,7 @@ var BreadCrumb = ({ crumbs, linkClassName, containerClassName }) => {
5124
5158
  // src/components/layout-and-navigation/Carousel.tsx
5125
5159
  var import_react11 = require("react");
5126
5160
  var import_clsx17 = __toESM(require("clsx"));
5127
- var import_lucide_react4 = require("lucide-react");
5161
+ var import_lucide_react5 = require("lucide-react");
5128
5162
 
5129
5163
  // src/util/math.ts
5130
5164
  var clamp = (value, min = 0, max = 1) => {
@@ -5241,7 +5275,7 @@ var Carousel = ({
5241
5275
  arrows = false,
5242
5276
  dots = true,
5243
5277
  overScrollThreshold = 0.1,
5244
- blurColor = "from-white",
5278
+ blurColor = "from-background",
5245
5279
  className = "",
5246
5280
  heightClassName = "h-[24rem]",
5247
5281
  widthClassName = "w-[70%] desktop:w-1/2"
@@ -5473,19 +5507,23 @@ var Carousel = ({
5473
5507
  /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: (0, import_clsx17.default)(`relative w-full overflow-hidden`, heightClassName, className), children: [
5474
5508
  arrows && /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_jsx_runtime20.Fragment, { children: [
5475
5509
  /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5476
- "div",
5510
+ IconButton,
5477
5511
  {
5478
- 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(),
5479
5515
  onClick: () => left(),
5480
- 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 })
5481
5517
  }
5482
5518
  ),
5483
5519
  /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5484
- "div",
5520
+ IconButton,
5485
5521
  {
5486
- 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(),
5487
5525
  onClick: () => right(),
5488
- 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 })
5489
5527
  }
5490
5528
  )
5491
5529
  ] }),
@@ -5525,9 +5563,9 @@ var Carousel = ({
5525
5563
  children: range(0, length - 1).map((index) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5526
5564
  "button",
5527
5565
  {
5528
- 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", {
5529
- "bg-gray-200": currentIndex !== index,
5530
- "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
5531
5569
  }),
5532
5570
  onClick: () => startAnimation(index)
5533
5571
  },
@@ -5627,7 +5665,7 @@ var DividerInserter = ({
5627
5665
 
5628
5666
  // src/components/layout-and-navigation/FAQSection.tsx
5629
5667
  var import_clsx20 = __toESM(require("clsx"));
5630
- var import_lucide_react5 = require("lucide-react");
5668
+ var import_lucide_react6 = require("lucide-react");
5631
5669
 
5632
5670
  // src/components/layout-and-navigation/MarkdownInterpreter.tsx
5633
5671
  var import_jsx_runtime23 = require("react/jsx-runtime");
@@ -5725,7 +5763,7 @@ var inserterIdentifierMapping = [
5725
5763
  { id: "helpwave", name: "helpwave" },
5726
5764
  { id: "newline", name: "newline" }
5727
5765
  ];
5728
- var parseMarkdown = (text, commandStart = "\\", open = "{", close = "}") => {
5766
+ var parseMarkdown = (text, commandStart = "\\", open2 = "{", close = "}") => {
5729
5767
  let start = text.indexOf(commandStart);
5730
5768
  const children = [];
5731
5769
  while (text !== "") {
@@ -5746,7 +5784,7 @@ var parseMarkdown = (text, commandStart = "\\", open = "{", close = "}") => {
5746
5784
  text = "";
5747
5785
  continue;
5748
5786
  }
5749
- const simpleReplace = [commandStart, open, close];
5787
+ const simpleReplace = [commandStart, open2, close];
5750
5788
  if (simpleReplace.some((value) => text[1] === value)) {
5751
5789
  children.push({
5752
5790
  type: "text",
@@ -5767,7 +5805,7 @@ var parseMarkdown = (text, commandStart = "\\", open = "{", close = "}") => {
5767
5805
  }
5768
5806
  const modifier = modifierIdentifierMapping.find((value) => text.substring(1).startsWith(value.id));
5769
5807
  if (modifier) {
5770
- if (text[modifier.id.length + 1] !== open) {
5808
+ if (text[modifier.id.length + 1] !== open2) {
5771
5809
  children.push({
5772
5810
  type: "text",
5773
5811
  text: text.substring(0, modifier.id.length + 1)
@@ -5781,7 +5819,7 @@ var parseMarkdown = (text, commandStart = "\\", open = "{", close = "}") => {
5781
5819
  let counter = 1;
5782
5820
  let escaping = false;
5783
5821
  while (index < text.length) {
5784
- if (text[index] === open && !escaping) {
5822
+ if (text[index] === open2 && !escaping) {
5785
5823
  counter++;
5786
5824
  }
5787
5825
  if (text[index] === close && !escaping) {
@@ -5873,7 +5911,7 @@ var FAQSection = ({
5873
5911
  ...restProps,
5874
5912
  label: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("h3", { id, className: "textstyle-title-md", children: title }),
5875
5913
  clickOnlyOnHeader: false,
5876
- 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" }),
5877
5915
  className: (0, import_clsx20.default)("rounded-xl", expandableClassName),
5878
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 })
5879
5917
  },
@@ -5882,7 +5920,7 @@ var FAQSection = ({
5882
5920
  };
5883
5921
 
5884
5922
  // src/components/layout-and-navigation/Pagination.tsx
5885
- var import_lucide_react6 = require("lucide-react");
5923
+ var import_lucide_react7 = require("lucide-react");
5886
5924
  var import_clsx21 = __toESM(require("clsx"));
5887
5925
  var import_jsx_runtime25 = require("react/jsx-runtime");
5888
5926
  var defaultPaginationTranslations = {
@@ -5907,43 +5945,22 @@ var Pagination = ({
5907
5945
  const onFirstPage = page === 0 && !noPages;
5908
5946
  const onLastPage = page === numberOfPages - 1;
5909
5947
  return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: (0, import_clsx21.default)("row", { "opacity-30": noPages }), children: [
5910
- /* @__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 }) }) }),
5911
- /* @__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 }) }) }),
5912
5950
  /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "min-w-[80px] justify-center mx-2", children: [
5913
5951
  /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: "select-none text-right flex-1", children: noPages ? 0 : page + 1 }),
5914
5952
  /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: "select-none mx-2", children: translation.of }),
5915
5953
  /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: "select-none text-left flex-1", children: numberOfPages })
5916
5954
  ] }),
5917
- /* @__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 }) }) }),
5918
- /* @__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 }) }) })
5919
5957
  ] });
5920
5958
  };
5921
5959
 
5922
5960
  // src/components/layout-and-navigation/SearchableList.tsx
5923
- var import_react14 = require("react");
5924
- var import_lucide_react7 = require("lucide-react");
5961
+ var import_lucide_react8 = require("lucide-react");
5925
5962
  var import_clsx24 = __toESM(require("clsx"));
5926
5963
 
5927
- // src/util/simpleSearch.ts
5928
- var MultiSubjectSearchWithMapping = (search, objects, mapping) => {
5929
- return objects.filter((object) => {
5930
- const mappedSearchKeywords = mapping(object).map((value) => value ? value.toLowerCase().trim() : void 0);
5931
- return search.every((searchValue) => !!mappedSearchKeywords.find((value) => !!value && value.includes(searchValue.toLowerCase().trim())));
5932
- });
5933
- };
5934
- var MultiSearchWithMapping = (search, objects, mapping) => {
5935
- return objects.filter((object) => {
5936
- const mappedSearchKeywords = mapping(object).map((value) => value.toLowerCase().trim());
5937
- return !!mappedSearchKeywords.find((value) => value.includes(search.toLowerCase().trim()));
5938
- });
5939
- };
5940
- var SimpleSearchWithMapping = (search, objects, mapping) => {
5941
- return MultiSearchWithMapping(search, objects, (value) => [mapping(value)]);
5942
- };
5943
- var SimpleSearch = (search, objects) => {
5944
- return SimpleSearchWithMapping(search, objects, (value) => value);
5945
- };
5946
-
5947
5964
  // src/components/user-action/Input.tsx
5948
5965
  var import_react13 = require("react");
5949
5966
  var import_clsx23 = __toESM(require("clsx"));
@@ -6122,6 +6139,57 @@ var FormInput = (0, import_react13.forwardRef)(function FormInput2({
6122
6139
  ] });
6123
6140
  });
6124
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
+
6125
6193
  // src/components/layout-and-navigation/SearchableList.tsx
6126
6194
  var import_jsx_runtime28 = require("react/jsx-runtime");
6127
6195
  var defaultSearchableListTranslation = {
@@ -6139,38 +6207,47 @@ var SearchableList = ({
6139
6207
  list,
6140
6208
  initialSearch = "",
6141
6209
  searchMapping,
6210
+ autoFocus,
6211
+ minimumItemsForSearch = 6,
6142
6212
  itemMapper,
6143
- className
6213
+ className,
6214
+ resultListClassName
6144
6215
  }) => {
6145
6216
  const translation = useTranslation(defaultSearchableListTranslation, overwriteTranslation);
6146
- const [search, setSearch] = (0, import_react14.useState)(initialSearch);
6147
- (0, import_react14.useEffect)(() => setSearch(initialSearch), [initialSearch]);
6148
- const filteredEntries = (0, import_react14.useMemo)(() => MultiSearchWithMapping(search, list, searchMapping), [search, list, searchMapping]);
6217
+ const { result, hasResult, search, setSearch } = useSearch({ list, initialSearch, searchMapping });
6149
6218
  return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: (0, import_clsx24.default)("col gap-y-2", className), children: [
6150
- /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "row justify-between gap-x-2 items-center", children: [
6151
- /* @__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 }) }),
6152
- /* @__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" }) })
6153
6231
  ] }),
6154
- filteredEntries.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "col gap-y-1", children: filteredEntries.map(itemMapper) }),
6155
- !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 })
6156
6233
  ] });
6157
6234
  };
6158
6235
 
6159
6236
  // src/components/layout-and-navigation/StepperBar.tsx
6160
- var import_lucide_react8 = require("lucide-react");
6237
+ var import_lucide_react9 = require("lucide-react");
6161
6238
  var import_clsx25 = __toESM(require("clsx"));
6162
6239
  var import_react15 = require("react");
6163
6240
  var import_jsx_runtime29 = require("react/jsx-runtime");
6164
6241
  var defaultStepperBarTranslation = {
6165
6242
  en: {
6166
6243
  back: "Back",
6167
- next: "Next Step",
6244
+ next: "Next",
6168
6245
  confirm: "Create"
6169
6246
  },
6170
6247
  de: {
6171
6248
  back: "Zur\xFCck",
6172
- next: "N\xE4chster Schritt",
6173
- confirm: "Erstellen"
6249
+ next: "N\xE4chster",
6250
+ confirm: "Fertig"
6174
6251
  }
6175
6252
  };
6176
6253
  var defaultState = {
@@ -6209,7 +6286,7 @@ var StepperBar = ({
6209
6286
  },
6210
6287
  className: "row gap-x-1 items-center justify-center",
6211
6288
  children: [
6212
- /* @__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 }),
6213
6290
  translation.back
6214
6291
  ]
6215
6292
  }
@@ -6223,9 +6300,9 @@ var StepperBar = ({
6223
6300
  className: (0, import_clsx25.default)(
6224
6301
  "rounded-full w-4 h-4",
6225
6302
  {
6226
- "bg-primary hover:brightness-75": index === currentStep && seen && !disabledSteps.has(currentStep),
6227
- "bg-primary/40 hover:bg-primary": index !== currentStep && seen && !disabledSteps.has(currentStep),
6228
- "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)
6229
6306
  },
6230
6307
  {
6231
6308
  "cursor-pointer": seen,
@@ -6244,7 +6321,7 @@ var StepperBar = ({
6244
6321
  disabled: disabledSteps.has(currentStep),
6245
6322
  children: [
6246
6323
  translation.next,
6247
- /* @__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 })
6248
6325
  ]
6249
6326
  }
6250
6327
  ) }),
@@ -6255,7 +6332,7 @@ var StepperBar = ({
6255
6332
  onClick: onFinish,
6256
6333
  className: "row gap-x-1 items-center justify-center",
6257
6334
  children: [
6258
- /* @__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 }),
6259
6336
  finishText ?? translation.confirm
6260
6337
  ]
6261
6338
  }
@@ -6289,7 +6366,7 @@ var import_react_custom_scrollbars_23 = require("react-custom-scrollbars-2");
6289
6366
  // src/components/user-action/Checkbox.tsx
6290
6367
  var import_react16 = require("react");
6291
6368
  var CheckboxPrimitive = __toESM(require("@radix-ui/react-checkbox"));
6292
- var import_lucide_react9 = require("lucide-react");
6369
+ var import_lucide_react10 = require("lucide-react");
6293
6370
  var import_clsx26 = __toESM(require("clsx"));
6294
6371
  var import_jsx_runtime30 = require("react/jsx-runtime");
6295
6372
  var checkboxSizeMapping = {
@@ -6336,14 +6413,14 @@ var Checkbox = ({
6336
6413
  disabled,
6337
6414
  id,
6338
6415
  className: (0, import_clsx26.default)(usedSizeClass, `items-center border-2 rounded outline-none focus:border-primary`, {
6339
- "text-disabled-text border-disabled-text": disabled,
6340
- "border-on-background": !disabled,
6416
+ "text-disabled-text border-disabled-text bg-disabled-background": disabled,
6417
+ "bg-surface": !disabled && !checked,
6341
6418
  "bg-primary/30 border-primary text-primary": checked === true || checked === "indeterminate",
6342
- "hover:border-gray-400 focus:hover:border-primary": !checked
6419
+ "hover:border-primary focus:hover:border-primary": !checked
6343
6420
  }, className),
6344
6421
  children: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(CheckboxPrimitive.Indicator, { children: [
6345
- checked === true && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_lucide_react9.Check, { className: innerIconSize }),
6346
- 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 })
6347
6424
  ] })
6348
6425
  }
6349
6426
  ),
@@ -6386,7 +6463,7 @@ var CheckboxUncontrolled = ({
6386
6463
 
6387
6464
  // src/components/layout-and-navigation/Table.tsx
6388
6465
  var import_clsx27 = __toESM(require("clsx"));
6389
- var import_lucide_react10 = require("lucide-react");
6466
+ var import_lucide_react11 = require("lucide-react");
6390
6467
  var import_jsx_runtime31 = require("react/jsx-runtime");
6391
6468
  var defaultTableStatePagination = {
6392
6469
  currentPage: 0,
@@ -6535,7 +6612,7 @@ var Table = ({
6535
6612
  } else {
6536
6613
  currentPage = 0;
6537
6614
  }
6538
- const headerRow = "border-b-2 border-gray-300";
6615
+ const headerRow = "border-b-2";
6539
6616
  const headerPaddingHead = "pb-2";
6540
6617
  const headerPaddingBody = "pt-2";
6541
6618
  const cellPadding = "py-1 px-2";
@@ -6611,7 +6688,7 @@ var SortButton = ({
6611
6688
  ...buttonProps,
6612
6689
  children: /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { className: "row gap-x-2", children: [
6613
6690
  children,
6614
- 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, {})
6615
6692
  ] })
6616
6693
  }
6617
6694
  );
@@ -6730,7 +6807,7 @@ var VerticalDivider = ({
6730
6807
  };
6731
6808
 
6732
6809
  // src/components/loading-states/ErrorComponent.tsx
6733
- var import_lucide_react11 = require("lucide-react");
6810
+ var import_lucide_react12 = require("lucide-react");
6734
6811
  var import_clsx29 = __toESM(require("clsx"));
6735
6812
  var import_jsx_runtime34 = require("react/jsx-runtime");
6736
6813
  var defaultErrorComponentTranslation = {
@@ -6748,7 +6825,7 @@ var ErrorComponent = ({
6748
6825
  }) => {
6749
6826
  const translation = useTranslation(defaultErrorComponentTranslation, overwriteTranslation);
6750
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: [
6751
- /* @__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" }),
6752
6829
  errorText ?? `${translation.errorOccurred} :(`
6753
6830
  ] });
6754
6831
  };
@@ -6853,7 +6930,7 @@ var ProgressIndicator = ({
6853
6930
  r: radius,
6854
6931
  fill: "transparent",
6855
6932
  strokeWidth,
6856
- className: "stroke-primary"
6933
+ className: "stroke-progress-indicator-fill"
6857
6934
  }
6858
6935
  ),
6859
6936
  /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
@@ -6866,7 +6943,7 @@ var ProgressIndicator = ({
6866
6943
  strokeWidth,
6867
6944
  strokeDasharray: arcLength,
6868
6945
  strokeDashoffset: arcOffset,
6869
- className: "stroke-gray-300"
6946
+ className: "stroke-progress-indicator-background"
6870
6947
  }
6871
6948
  )
6872
6949
  ]
@@ -7006,100 +7083,107 @@ var InputModal = ({
7006
7083
  };
7007
7084
 
7008
7085
  // src/components/user-action/Select.tsx
7009
- var import_react19 = require("@headlessui/react");
7010
- var import_lucide_react12 = require("lucide-react");
7086
+ var import_lucide_react13 = require("lucide-react");
7011
7087
  var import_react20 = require("react");
7012
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
7013
7111
  var import_jsx_runtime42 = require("react/jsx-runtime");
7014
7112
  var Select = ({
7015
7113
  value,
7016
7114
  label,
7017
7115
  options,
7018
7116
  onChange,
7019
- isHidingCurrentValue = true,
7020
7117
  hintText = "",
7021
- showDisabledOptions = true,
7022
7118
  isDisabled,
7119
+ isSearchEnabled = false,
7023
7120
  className,
7024
- textColor = "text-menu-text",
7025
- hoverColor = "hover:brightness-90",
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
- [hoverColor]: !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 }),
7147
- /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_lucide_react12.Search, {})
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 = {
@@ -7321,7 +7384,7 @@ var PropertyBase = ({
7321
7384
  "div",
7322
7385
  {
7323
7386
  className: (0, import_clsx34.default)("row gap-x-2 !w-[200px] px-4 py-2 items-center rounded-l-xl border-2 border-r-0", {
7324
- "bg-gray-100 text-black group-hover:border-primary border-gray-400": !requiredAndNoValue,
7387
+ "bg-property-title-background property-title-text group-hover:border-primary": !requiredAndNoValue,
7325
7388
  "bg-warning text-surface-warning group-hover:border-warning border-warning/90": requiredAndNoValue
7326
7389
  }, className),
7327
7390
  children: [
@@ -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", {
7337
- "bg-white group-hover:border-primary border-gray-400": !requiredAndNoValue,
7399
+ className: (0, import_clsx34.default)("row gap-x-0 grow justify-between items-center rounded-r-xl border-2 border-l-0", {
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:brightness-90 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 border-gray-300 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 text-gray-700 font-bold", 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) => {
@@ -8263,7 +8353,7 @@ var ScrollPicker = ({
8263
8353
  /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
8264
8354
  "div",
8265
8355
  {
8266
- className: "absolute z-[1] top-1/2 -translate-y-1/2 -translate-x-1/2 left-1/2 w-full min-w-[40px] border border-y-2 border-x-0 border-[#00000033]",
8356
+ className: "absolute z-[1] top-1/2 -translate-y-1/2 -translate-x-1/2 left-1/2 w-full min-w-[40px] border border-divider/30 border-y-2 border-x-0 ",
8267
8357
  style: { height: `${itemHeight}px` }
8268
8358
  }
8269
8359
  ),
@@ -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,