@helpwave/hightide 0.1.18 → 0.1.20

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 (261) hide show
  1. package/dist/components/branding/HelpwaveBadge.js +7 -7
  2. package/dist/components/branding/HelpwaveBadge.js.map +1 -1
  3. package/dist/components/branding/HelpwaveBadge.mjs +7 -7
  4. package/dist/components/branding/HelpwaveBadge.mjs.map +1 -1
  5. package/dist/components/date/DatePicker.js +67 -39
  6. package/dist/components/date/DatePicker.js.map +1 -1
  7. package/dist/components/date/DatePicker.mjs +56 -28
  8. package/dist/components/date/DatePicker.mjs.map +1 -1
  9. package/dist/components/date/DayPicker.js +3 -3
  10. package/dist/components/date/DayPicker.js.map +1 -1
  11. package/dist/components/date/DayPicker.mjs +3 -3
  12. package/dist/components/date/DayPicker.mjs.map +1 -1
  13. package/dist/components/date/TimePicker.js +4 -4
  14. package/dist/components/date/TimePicker.js.map +1 -1
  15. package/dist/components/date/TimePicker.mjs +4 -4
  16. package/dist/components/date/TimePicker.mjs.map +1 -1
  17. package/dist/components/date/YearMonthPicker.js +48 -20
  18. package/dist/components/date/YearMonthPicker.js.map +1 -1
  19. package/dist/components/date/YearMonthPicker.mjs +46 -18
  20. package/dist/components/date/YearMonthPicker.mjs.map +1 -1
  21. package/dist/components/dialogs/ConfirmDialog.js +32 -28
  22. package/dist/components/dialogs/ConfirmDialog.js.map +1 -1
  23. package/dist/components/dialogs/ConfirmDialog.mjs +18 -14
  24. package/dist/components/dialogs/ConfirmDialog.mjs.map +1 -1
  25. package/dist/components/icons-and-geometry/Avatar.js +2 -2
  26. package/dist/components/icons-and-geometry/Avatar.js.map +1 -1
  27. package/dist/components/icons-and-geometry/Avatar.mjs +2 -2
  28. package/dist/components/icons-and-geometry/Avatar.mjs.map +1 -1
  29. package/dist/components/icons-and-geometry/Ring.js +2 -2
  30. package/dist/components/icons-and-geometry/Ring.js.map +1 -1
  31. package/dist/components/icons-and-geometry/Ring.mjs +2 -2
  32. package/dist/components/icons-and-geometry/Ring.mjs.map +1 -1
  33. package/dist/components/layout-and-navigation/BreadCrumb.js +1 -1
  34. package/dist/components/layout-and-navigation/BreadCrumb.js.map +1 -1
  35. package/dist/components/layout-and-navigation/BreadCrumb.mjs +1 -1
  36. package/dist/components/layout-and-navigation/BreadCrumb.mjs.map +1 -1
  37. package/dist/components/layout-and-navigation/Carousel.js +84 -15
  38. package/dist/components/layout-and-navigation/Carousel.js.map +1 -1
  39. package/dist/components/layout-and-navigation/Carousel.mjs +76 -7
  40. package/dist/components/layout-and-navigation/Carousel.mjs.map +1 -1
  41. package/dist/components/layout-and-navigation/Chip.js +1 -1
  42. package/dist/components/layout-and-navigation/Chip.js.map +1 -1
  43. package/dist/components/layout-and-navigation/Chip.mjs +1 -1
  44. package/dist/components/layout-and-navigation/Chip.mjs.map +1 -1
  45. package/dist/components/layout-and-navigation/Expandable.d.mts +10 -1
  46. package/dist/components/layout-and-navigation/Expandable.d.ts +10 -1
  47. package/dist/components/layout-and-navigation/Expandable.js +38 -10
  48. package/dist/components/layout-and-navigation/Expandable.js.map +1 -1
  49. package/dist/components/layout-and-navigation/Expandable.mjs +38 -11
  50. package/dist/components/layout-and-navigation/Expandable.mjs.map +1 -1
  51. package/dist/components/layout-and-navigation/FAQSection.js +36 -12
  52. package/dist/components/layout-and-navigation/FAQSection.js.map +1 -1
  53. package/dist/components/layout-and-navigation/FAQSection.mjs +38 -14
  54. package/dist/components/layout-and-navigation/FAQSection.mjs.map +1 -1
  55. package/dist/components/layout-and-navigation/Overlay.js +92 -19
  56. package/dist/components/layout-and-navigation/Overlay.js.map +1 -1
  57. package/dist/components/layout-and-navigation/Overlay.mjs +81 -8
  58. package/dist/components/layout-and-navigation/Overlay.mjs.map +1 -1
  59. package/dist/components/layout-and-navigation/Pagination.js +82 -9
  60. package/dist/components/layout-and-navigation/Pagination.js.map +1 -1
  61. package/dist/components/layout-and-navigation/Pagination.mjs +79 -6
  62. package/dist/components/layout-and-navigation/Pagination.mjs.map +1 -1
  63. package/dist/components/layout-and-navigation/SearchableList.js +127 -25
  64. package/dist/components/layout-and-navigation/SearchableList.js.map +1 -1
  65. package/dist/components/layout-and-navigation/SearchableList.mjs +126 -24
  66. package/dist/components/layout-and-navigation/SearchableList.mjs.map +1 -1
  67. package/dist/components/layout-and-navigation/StepperBar.js +22 -16
  68. package/dist/components/layout-and-navigation/StepperBar.js.map +1 -1
  69. package/dist/components/layout-and-navigation/StepperBar.mjs +19 -13
  70. package/dist/components/layout-and-navigation/StepperBar.mjs.map +1 -1
  71. package/dist/components/layout-and-navigation/TextImage.js +7 -3
  72. package/dist/components/layout-and-navigation/TextImage.js.map +1 -1
  73. package/dist/components/layout-and-navigation/TextImage.mjs +7 -3
  74. package/dist/components/layout-and-navigation/TextImage.mjs.map +1 -1
  75. package/dist/components/layout-and-navigation/Tile.d.mts +2 -2
  76. package/dist/components/layout-and-navigation/Tile.d.ts +2 -2
  77. package/dist/components/layout-and-navigation/Tile.js +7 -7
  78. package/dist/components/layout-and-navigation/Tile.js.map +1 -1
  79. package/dist/components/layout-and-navigation/Tile.mjs +7 -7
  80. package/dist/components/layout-and-navigation/Tile.mjs.map +1 -1
  81. package/dist/components/loading-states/ErrorComponent.js +1 -1
  82. package/dist/components/loading-states/ErrorComponent.js.map +1 -1
  83. package/dist/components/loading-states/ErrorComponent.mjs +1 -1
  84. package/dist/components/loading-states/ErrorComponent.mjs.map +1 -1
  85. package/dist/components/loading-states/LoadingAndErrorComponent.d.mts +5 -10
  86. package/dist/components/loading-states/LoadingAndErrorComponent.d.ts +5 -10
  87. package/dist/components/loading-states/LoadingAndErrorComponent.js +14 -327
  88. package/dist/components/loading-states/LoadingAndErrorComponent.js.map +1 -1
  89. package/dist/components/loading-states/LoadingAndErrorComponent.mjs +15 -318
  90. package/dist/components/loading-states/LoadingAndErrorComponent.mjs.map +1 -1
  91. package/dist/components/loading-states/LoadingAnimation.js +5 -1
  92. package/dist/components/loading-states/LoadingAnimation.js.map +1 -1
  93. package/dist/components/loading-states/LoadingAnimation.mjs +5 -1
  94. package/dist/components/loading-states/LoadingAnimation.mjs.map +1 -1
  95. package/dist/components/loading-states/LoadingButton.js +8 -6
  96. package/dist/components/loading-states/LoadingButton.js.map +1 -1
  97. package/dist/components/loading-states/LoadingButton.mjs +8 -6
  98. package/dist/components/loading-states/LoadingButton.mjs.map +1 -1
  99. package/dist/components/loading-states/LoadingContainer.d.mts +8 -0
  100. package/dist/components/loading-states/LoadingContainer.d.ts +8 -0
  101. package/dist/components/loading-states/LoadingContainer.js +34 -0
  102. package/dist/components/loading-states/LoadingContainer.js.map +1 -0
  103. package/dist/components/loading-states/LoadingContainer.mjs +10 -0
  104. package/dist/components/loading-states/LoadingContainer.mjs.map +1 -0
  105. package/dist/components/modals/ConfirmModal.js +32 -28
  106. package/dist/components/modals/ConfirmModal.js.map +1 -1
  107. package/dist/components/modals/ConfirmModal.mjs +18 -14
  108. package/dist/components/modals/ConfirmModal.mjs.map +1 -1
  109. package/dist/components/modals/DiscardChangesModal.js +28 -24
  110. package/dist/components/modals/DiscardChangesModal.js.map +1 -1
  111. package/dist/components/modals/DiscardChangesModal.mjs +18 -14
  112. package/dist/components/modals/DiscardChangesModal.mjs.map +1 -1
  113. package/dist/components/modals/InputModal.js +32 -28
  114. package/dist/components/modals/InputModal.js.map +1 -1
  115. package/dist/components/modals/InputModal.mjs +18 -14
  116. package/dist/components/modals/InputModal.mjs.map +1 -1
  117. package/dist/components/modals/LanguageModal.js +729 -434
  118. package/dist/components/modals/LanguageModal.js.map +1 -1
  119. package/dist/components/modals/LanguageModal.mjs +729 -430
  120. package/dist/components/modals/LanguageModal.mjs.map +1 -1
  121. package/dist/components/modals/ThemeModal.js +733 -438
  122. package/dist/components/modals/ThemeModal.js.map +1 -1
  123. package/dist/components/modals/ThemeModal.mjs +732 -433
  124. package/dist/components/modals/ThemeModal.mjs.map +1 -1
  125. package/dist/components/properties/CheckboxProperty.js +110 -35
  126. package/dist/components/properties/CheckboxProperty.js.map +1 -1
  127. package/dist/components/properties/CheckboxProperty.mjs +110 -35
  128. package/dist/components/properties/CheckboxProperty.mjs.map +1 -1
  129. package/dist/components/properties/DateProperty.js +118 -41
  130. package/dist/components/properties/DateProperty.js.map +1 -1
  131. package/dist/components/properties/DateProperty.mjs +114 -37
  132. package/dist/components/properties/DateProperty.mjs.map +1 -1
  133. package/dist/components/properties/MultiSelectProperty.d.mts +10 -3
  134. package/dist/components/properties/MultiSelectProperty.d.ts +10 -3
  135. package/dist/components/properties/MultiSelectProperty.js +916 -463
  136. package/dist/components/properties/MultiSelectProperty.js.map +1 -1
  137. package/dist/components/properties/MultiSelectProperty.mjs +921 -464
  138. package/dist/components/properties/MultiSelectProperty.mjs.map +1 -1
  139. package/dist/components/properties/NumberProperty.js +101 -18
  140. package/dist/components/properties/NumberProperty.js.map +1 -1
  141. package/dist/components/properties/NumberProperty.mjs +101 -18
  142. package/dist/components/properties/NumberProperty.mjs.map +1 -1
  143. package/dist/components/properties/PropertyBase.js +103 -20
  144. package/dist/components/properties/PropertyBase.js.map +1 -1
  145. package/dist/components/properties/PropertyBase.mjs +99 -16
  146. package/dist/components/properties/PropertyBase.mjs.map +1 -1
  147. package/dist/components/properties/SelectProperty.d.mts +9 -2
  148. package/dist/components/properties/SelectProperty.d.ts +9 -2
  149. package/dist/components/properties/SelectProperty.js +683 -243
  150. package/dist/components/properties/SelectProperty.js.map +1 -1
  151. package/dist/components/properties/SelectProperty.mjs +687 -243
  152. package/dist/components/properties/SelectProperty.mjs.map +1 -1
  153. package/dist/components/properties/TextProperty.js +133 -46
  154. package/dist/components/properties/TextProperty.js.map +1 -1
  155. package/dist/components/properties/TextProperty.mjs +133 -46
  156. package/dist/components/properties/TextProperty.mjs.map +1 -1
  157. package/dist/components/table/Table.js +285 -185
  158. package/dist/components/table/Table.js.map +1 -1
  159. package/dist/components/table/Table.mjs +270 -166
  160. package/dist/components/table/Table.mjs.map +1 -1
  161. package/dist/components/table/TableFilterButton.js +179 -78
  162. package/dist/components/table/TableFilterButton.js.map +1 -1
  163. package/dist/components/table/TableFilterButton.mjs +160 -55
  164. package/dist/components/table/TableFilterButton.mjs.map +1 -1
  165. package/dist/components/table/TableSortButton.js +72 -3
  166. package/dist/components/table/TableSortButton.js.map +1 -1
  167. package/dist/components/table/TableSortButton.mjs +72 -3
  168. package/dist/components/table/TableSortButton.mjs.map +1 -1
  169. package/dist/components/user-action/Button.d.mts +15 -2
  170. package/dist/components/user-action/Button.d.ts +15 -2
  171. package/dist/components/user-action/Button.js +12 -12
  172. package/dist/components/user-action/Button.js.map +1 -1
  173. package/dist/components/user-action/Button.mjs +12 -12
  174. package/dist/components/user-action/Button.mjs.map +1 -1
  175. package/dist/components/user-action/Checkbox.js +6 -15
  176. package/dist/components/user-action/Checkbox.js.map +1 -1
  177. package/dist/components/user-action/Checkbox.mjs +6 -15
  178. package/dist/components/user-action/Checkbox.mjs.map +1 -1
  179. package/dist/components/user-action/CopyToClipboardWrapper.js +6 -2
  180. package/dist/components/user-action/CopyToClipboardWrapper.js.map +1 -1
  181. package/dist/components/user-action/CopyToClipboardWrapper.mjs +6 -2
  182. package/dist/components/user-action/CopyToClipboardWrapper.mjs.map +1 -1
  183. package/dist/components/user-action/DateAndTimePicker.js +81 -49
  184. package/dist/components/user-action/DateAndTimePicker.js.map +1 -1
  185. package/dist/components/user-action/DateAndTimePicker.mjs +67 -35
  186. package/dist/components/user-action/DateAndTimePicker.mjs.map +1 -1
  187. package/dist/components/user-action/Menu.d.mts +11 -6
  188. package/dist/components/user-action/Menu.d.ts +11 -6
  189. package/dist/components/user-action/Menu.js +128 -31
  190. package/dist/components/user-action/Menu.js.map +1 -1
  191. package/dist/components/user-action/Menu.mjs +134 -33
  192. package/dist/components/user-action/Menu.mjs.map +1 -1
  193. package/dist/components/user-action/MultiSelect.d.mts +17 -7
  194. package/dist/components/user-action/MultiSelect.d.ts +17 -7
  195. package/dist/components/user-action/MultiSelect.js +797 -375
  196. package/dist/components/user-action/MultiSelect.js.map +1 -1
  197. package/dist/components/user-action/MultiSelect.mjs +782 -356
  198. package/dist/components/user-action/MultiSelect.mjs.map +1 -1
  199. package/dist/components/user-action/ScrollPicker.js +2 -2
  200. package/dist/components/user-action/ScrollPicker.js.map +1 -1
  201. package/dist/components/user-action/ScrollPicker.mjs +2 -2
  202. package/dist/components/user-action/ScrollPicker.mjs.map +1 -1
  203. package/dist/components/user-action/SearchBar.d.mts +14 -0
  204. package/dist/components/user-action/SearchBar.d.ts +14 -0
  205. package/dist/components/user-action/SearchBar.js +673 -0
  206. package/dist/components/user-action/SearchBar.js.map +1 -0
  207. package/dist/components/user-action/SearchBar.mjs +637 -0
  208. package/dist/components/user-action/SearchBar.mjs.map +1 -0
  209. package/dist/components/user-action/Select.d.mts +18 -5
  210. package/dist/components/user-action/Select.d.ts +18 -5
  211. package/dist/components/user-action/Select.js +765 -355
  212. package/dist/components/user-action/Select.js.map +1 -1
  213. package/dist/components/user-action/Select.mjs +762 -349
  214. package/dist/components/user-action/Select.mjs.map +1 -1
  215. package/dist/components/user-action/Textarea.d.mts +1 -1
  216. package/dist/components/user-action/Textarea.d.ts +1 -1
  217. package/dist/components/user-action/Textarea.js +13 -3
  218. package/dist/components/user-action/Textarea.js.map +1 -1
  219. package/dist/components/user-action/Textarea.mjs +13 -3
  220. package/dist/components/user-action/Textarea.mjs.map +1 -1
  221. package/dist/components/user-action/ToggleableInput.js +2 -2
  222. package/dist/components/user-action/ToggleableInput.js.map +1 -1
  223. package/dist/components/user-action/ToggleableInput.mjs +2 -2
  224. package/dist/components/user-action/ToggleableInput.mjs.map +1 -1
  225. package/dist/css/globals.css +284 -113
  226. package/dist/css/uncompiled/globals.css +19 -13
  227. package/dist/css/uncompiled/theme/colors-component.css +12 -3
  228. package/dist/css/uncompiled/theme/colors-semantic.css +10 -7
  229. package/dist/css/uncompiled/utitlity/animation.css +96 -1
  230. package/dist/css/uncompiled/utitlity/general.css +16 -0
  231. package/dist/hooks/usePopoverPosition.d.mts +15 -0
  232. package/dist/hooks/usePopoverPosition.d.ts +15 -0
  233. package/dist/hooks/usePopoverPosition.js +81 -0
  234. package/dist/hooks/usePopoverPosition.js.map +1 -0
  235. package/dist/hooks/usePopoverPosition.mjs +57 -0
  236. package/dist/hooks/usePopoverPosition.mjs.map +1 -0
  237. package/dist/hooks/useSearch.d.mts +7 -2
  238. package/dist/hooks/useSearch.d.ts +7 -2
  239. package/dist/hooks/useSearch.js +44 -15
  240. package/dist/hooks/useSearch.js.map +1 -1
  241. package/dist/hooks/useSearch.mjs +45 -16
  242. package/dist/hooks/useSearch.mjs.map +1 -1
  243. package/dist/index.d.mts +7 -4
  244. package/dist/index.d.ts +7 -4
  245. package/dist/index.js +1197 -902
  246. package/dist/index.js.map +1 -1
  247. package/dist/index.mjs +1048 -754
  248. package/dist/index.mjs.map +1 -1
  249. package/dist/localization/defaults/form.d.mts +2 -0
  250. package/dist/localization/defaults/form.d.ts +2 -0
  251. package/dist/localization/defaults/form.js +4 -0
  252. package/dist/localization/defaults/form.js.map +1 -1
  253. package/dist/localization/defaults/form.mjs +4 -0
  254. package/dist/localization/defaults/form.mjs.map +1 -1
  255. package/dist/util/simpleSearch.d.mts +1 -1
  256. package/dist/util/simpleSearch.d.ts +1 -1
  257. package/dist/util/simpleSearch.js +4 -1
  258. package/dist/util/simpleSearch.js.map +1 -1
  259. package/dist/util/simpleSearch.mjs +4 -1
  260. package/dist/util/simpleSearch.mjs.map +1 -1
  261. package/package.json +1 -1
package/dist/index.mjs CHANGED
@@ -2894,7 +2894,7 @@ var Tile = ({
2894
2894
  description,
2895
2895
  onClick,
2896
2896
  isSelected = false,
2897
- isDisabled = false,
2897
+ disabled = false,
2898
2898
  prefix,
2899
2899
  suffix,
2900
2900
  normalClassName = "hover:bg-primary/40 cursor-pointer",
@@ -2906,18 +2906,18 @@ var Tile = ({
2906
2906
  "div",
2907
2907
  {
2908
2908
  className: clsx(
2909
- "row gap-x-2 w-full items-center",
2909
+ "flex-row-2 w-full items-center",
2910
2910
  {
2911
- [normalClassName]: !!onClick && !isDisabled,
2912
- [selectedClassName]: isSelected && !isDisabled,
2913
- [disabledClassName]: isDisabled
2911
+ [normalClassName]: !!onClick && !disabled,
2912
+ [selectedClassName]: isSelected && !disabled,
2913
+ [disabledClassName]: disabled
2914
2914
  },
2915
2915
  className
2916
2916
  ),
2917
- onClick: isDisabled ? void 0 : onClick,
2917
+ onClick: disabled ? void 0 : onClick,
2918
2918
  children: [
2919
2919
  prefix,
2920
- /* @__PURE__ */ jsxs("div", { className: "col gap-y-0 w-full", children: [
2920
+ /* @__PURE__ */ jsxs("div", { className: "flex-col-0 w-full", children: [
2921
2921
  /* @__PURE__ */ jsx("h4", { className: clsx(title.className ?? "textstyle-title-normal"), children: title.value }),
2922
2922
  !!description && /* @__PURE__ */ jsx("span", { className: clsx(description.className ?? "textstyle-description"), children: description.value })
2923
2923
  ] }),
@@ -3454,6 +3454,7 @@ var getWeeksForCalenderMonth = (date, weekStart, weeks = 6) => {
3454
3454
  import clsx8 from "clsx";
3455
3455
 
3456
3456
  // src/components/user-action/Button.tsx
3457
+ import { forwardRef } from "react";
3457
3458
  import clsx4 from "clsx";
3458
3459
  import { jsx as jsx5, jsxs as jsxs3 } from "react/jsx-runtime";
3459
3460
  var ButtonColorUtil = {
@@ -3479,7 +3480,7 @@ var ButtonUtil = {
3479
3480
  paddingMapping,
3480
3481
  iconPaddingMapping
3481
3482
  };
3482
- var SolidButton = ({
3483
+ var SolidButton = forwardRef(function SolidButton2({
3483
3484
  children,
3484
3485
  disabled = false,
3485
3486
  color = "primary",
@@ -3489,7 +3490,7 @@ var SolidButton = ({
3489
3490
  onClick,
3490
3491
  className,
3491
3492
  ...restProps
3492
- }) => {
3493
+ }, ref) {
3493
3494
  const colorClasses = {
3494
3495
  primary: "bg-button-solid-primary-background text-button-solid-primary-text",
3495
3496
  secondary: "bg-button-solid-secondary-background text-button-solid-secondary-text",
@@ -3511,8 +3512,9 @@ var SolidButton = ({
3511
3512
  return /* @__PURE__ */ jsxs3(
3512
3513
  "button",
3513
3514
  {
3514
- onClick: disabled ? void 0 : onClick,
3515
- disabled: disabled || onClick === void 0,
3515
+ ref,
3516
+ onClick,
3517
+ disabled,
3516
3518
  className: clsx4(
3517
3519
  {
3518
3520
  "text-disabled-text bg-disabled-background cursor-not-allowed": disabled,
@@ -3547,7 +3549,7 @@ var SolidButton = ({
3547
3549
  ]
3548
3550
  }
3549
3551
  );
3550
- };
3552
+ });
3551
3553
  var OutlineButton = ({
3552
3554
  children,
3553
3555
  disabled = false,
@@ -3568,8 +3570,8 @@ var OutlineButton = ({
3568
3570
  return /* @__PURE__ */ jsxs3(
3569
3571
  "button",
3570
3572
  {
3571
- onClick: disabled ? void 0 : onClick,
3572
- disabled: disabled || onClick === void 0,
3573
+ onClick,
3574
+ disabled,
3573
3575
  className: clsx4(
3574
3576
  {
3575
3577
  "text-disabled-text border-disabled-outline cursor-not-allowed": disabled,
@@ -3629,8 +3631,8 @@ var TextButton = ({
3629
3631
  return /* @__PURE__ */ jsxs3(
3630
3632
  "button",
3631
3633
  {
3632
- onClick: disabled ? void 0 : onClick,
3633
- disabled: disabled || onClick === void 0,
3634
+ onClick,
3635
+ disabled,
3634
3636
  className: clsx4(
3635
3637
  {
3636
3638
  "text-disabled-text cursor-not-allowed": disabled,
@@ -3671,7 +3673,6 @@ var IconButton = ({
3671
3673
  disabled = false,
3672
3674
  color = "primary",
3673
3675
  size = "medium",
3674
- onClick,
3675
3676
  className,
3676
3677
  ...restProps
3677
3678
  }) => {
@@ -3688,8 +3689,7 @@ var IconButton = ({
3688
3689
  return /* @__PURE__ */ jsx5(
3689
3690
  "button",
3690
3691
  {
3691
- onClick: disabled ? void 0 : onClick,
3692
- disabled: disabled || onClick === void 0,
3692
+ disabled,
3693
3693
  className: clsx4(
3694
3694
  {
3695
3695
  "text-disabled-text bg-disabled-background cursor-not-allowed": disabled && color !== "transparent",
@@ -3712,12 +3712,23 @@ import { Scrollbars } from "react-custom-scrollbars-2";
3712
3712
  import clsx6 from "clsx";
3713
3713
 
3714
3714
  // src/components/layout-and-navigation/Expandable.tsx
3715
- import { forwardRef, useEffect as useEffect3, useState as useState3 } from "react";
3716
- import { ChevronDown, ChevronUp } from "lucide-react";
3715
+ import { forwardRef as forwardRef2, useCallback as useCallback2, useEffect as useEffect3, useState as useState3 } from "react";
3716
+ import { ChevronDown } from "lucide-react";
3717
3717
  import clsx5 from "clsx";
3718
3718
  import { jsx as jsx6, jsxs as jsxs4 } from "react/jsx-runtime";
3719
- var DefaultIcon = (expanded) => expanded ? /* @__PURE__ */ jsx6(ChevronUp, { className: "min-w-4 w-4" }) : /* @__PURE__ */ jsx6(ChevronDown, { className: "min-w-4 w-4" });
3720
- var Expandable = forwardRef(function Expandable2({
3719
+ var ExpansionIcon = ({ isExpanded, className }) => {
3720
+ return /* @__PURE__ */ jsx6(
3721
+ ChevronDown,
3722
+ {
3723
+ className: clsx5(
3724
+ "min-w-6 w-6 min-h-6 h-6 transition-transform duration-200 ease-in-out",
3725
+ { "rotate-180": isExpanded },
3726
+ className
3727
+ )
3728
+ }
3729
+ );
3730
+ };
3731
+ var Expandable = forwardRef2(function Expandable2({
3721
3732
  children,
3722
3733
  label,
3723
3734
  icon,
@@ -3727,24 +3738,26 @@ var Expandable = forwardRef(function Expandable2({
3727
3738
  disabled = false,
3728
3739
  className,
3729
3740
  headerClassName,
3730
- contentClassName
3741
+ contentClassName,
3742
+ contentExpandedClassName
3731
3743
  }, ref) {
3732
- icon ??= DefaultIcon;
3744
+ const defaultIcon = useCallback2((expanded) => /* @__PURE__ */ jsx6(ExpansionIcon, { isExpanded: expanded }), []);
3745
+ icon ??= defaultIcon;
3733
3746
  return /* @__PURE__ */ jsxs4(
3734
3747
  "div",
3735
3748
  {
3736
3749
  ref,
3737
- className: clsx5("col gap-y-0 bg-surface text-on-surface group rounded-lg shadow-sm", { "cursor-pointer": !clickOnlyOnHeader && !disabled }, className),
3750
+ className: clsx5("flex-col-0 bg-surface text-on-surface group rounded-lg shadow-sm", { "cursor-pointer": !clickOnlyOnHeader && !disabled }, className),
3738
3751
  onClick: () => !clickOnlyOnHeader && !disabled && onChange(!isExpanded),
3739
3752
  children: [
3740
3753
  /* @__PURE__ */ jsxs4(
3741
3754
  "div",
3742
3755
  {
3743
3756
  className: clsx5(
3744
- "row py-2 px-4 rounded-lg justify-between items-center bg-surface text-on-surface select-none",
3757
+ "flex-row-2 py-2 px-4 rounded-lg justify-between items-center bg-surface text-on-surface select-none",
3745
3758
  {
3746
- "group-hover:brightness-95": !isExpanded,
3747
- "hover:brightness-95": isExpanded && !disabled,
3759
+ "group-hover:brightness-97": !isExpanded,
3760
+ "hover:brightness-97": isExpanded && !disabled,
3748
3761
  "cursor-pointer": clickOnlyOnHeader && !disabled
3749
3762
  },
3750
3763
  headerClassName
@@ -3756,12 +3769,25 @@ var Expandable = forwardRef(function Expandable2({
3756
3769
  ]
3757
3770
  }
3758
3771
  ),
3759
- isExpanded && /* @__PURE__ */ jsx6("div", { className: clsx5("col px-4 pb-2", contentClassName), children })
3772
+ /* @__PURE__ */ jsx6(
3773
+ "div",
3774
+ {
3775
+ className: clsx5(
3776
+ "flex-col-2 px-4 transition-all duration-300 ease-in-out",
3777
+ {
3778
+ [clsx5("max-h-96 opacity-100 pb-2 overflow-y-auto", contentExpandedClassName)]: isExpanded,
3779
+ "max-h-0 opacity-0 overflow-hidden": !isExpanded
3780
+ },
3781
+ contentClassName
3782
+ ),
3783
+ children
3784
+ }
3785
+ )
3760
3786
  ]
3761
3787
  }
3762
3788
  );
3763
3789
  });
3764
- var ExpandableUncontrolled = forwardRef(function ExpandableUncontrolled2({
3790
+ var ExpandableUncontrolled = forwardRef2(function ExpandableUncontrolled2({
3765
3791
  isExpanded,
3766
3792
  onChange = noop,
3767
3793
  ...props
@@ -3813,7 +3839,7 @@ var YearMonthPicker = ({
3813
3839
  return null;
3814
3840
  }
3815
3841
  const years = range([start.getFullYear(), end.getFullYear()], { exclusiveEnd: false });
3816
- return /* @__PURE__ */ jsx7("div", { className: clsx6("col select-none", className), children: /* @__PURE__ */ jsx7(Scrollbars, { autoHeight: true, autoHeightMax: maxHeight, style: { height: "100%" }, children: /* @__PURE__ */ jsx7("div", { className: "col gap-y-1 mr-3", children: years.map((year) => {
3842
+ return /* @__PURE__ */ jsx7("div", { className: clsx6("flex-col-0 select-none", className), children: /* @__PURE__ */ jsx7(Scrollbars, { autoHeight: true, autoHeightMax: maxHeight, style: { height: "100%" }, children: /* @__PURE__ */ jsx7("div", { className: "flex-col-1 mr-3", children: years.map((year) => {
3817
3843
  const selectedYear = displayedYearMonth.getFullYear() === year;
3818
3844
  return /* @__PURE__ */ jsx7(
3819
3845
  ExpandableUncontrolled,
@@ -3822,7 +3848,7 @@ var YearMonthPicker = ({
3822
3848
  label: /* @__PURE__ */ jsx7("span", { className: clsx6({ "text-primary font-bold": selectedYear }), children: year }),
3823
3849
  isExpanded: showValueOpen && selectedYear,
3824
3850
  contentClassName: "gap-y-1",
3825
- children: equalSizeGroups([...monthsList], 3).map((monthList, index) => /* @__PURE__ */ jsx7("div", { className: "row gap-x-1", children: monthList.map((month) => {
3851
+ children: equalSizeGroups([...monthsList], 3).map((monthList, index) => /* @__PURE__ */ jsx7("div", { className: "flex-row-1", children: monthList.map((month) => {
3826
3852
  const monthIndex = monthsList.indexOf(month);
3827
3853
  const newDate = new Date(year, monthIndex);
3828
3854
  const selectedMonth = selectedYear && monthIndex === displayedYearMonth.getMonth();
@@ -3888,9 +3914,9 @@ var DayPicker = ({
3888
3914
  const locale = useLocale();
3889
3915
  const month = displayedMonth.getMonth();
3890
3916
  const weeks = getWeeksForCalenderMonth(displayedMonth, weekStart);
3891
- return /* @__PURE__ */ jsxs5("div", { className: clsx7("col gap-y-1 min-w-[220px] select-none", className), children: [
3892
- /* @__PURE__ */ jsx8("div", { className: "row text-center", children: weeks[0].map((weekDay, index) => /* @__PURE__ */ jsx8("div", { className: "flex-1 font-semibold", children: new Intl.DateTimeFormat(locale, { weekday: "long" }).format(weekDay).substring(0, 2) }, index)) }),
3893
- weeks.map((week, index) => /* @__PURE__ */ jsx8("div", { className: "row text-center", children: week.map((date) => {
3917
+ return /* @__PURE__ */ jsxs5("div", { className: clsx7("flex-col-1 min-w-[220px] select-none", className), children: [
3918
+ /* @__PURE__ */ jsx8("div", { className: "flex-row-2 text-center", children: weeks[0].map((weekDay, index) => /* @__PURE__ */ jsx8("div", { className: "flex-1 font-semibold", children: new Intl.DateTimeFormat(locale, { weekday: "long" }).format(weekDay).substring(0, 2) }, index)) }),
3919
+ weeks.map((week, index) => /* @__PURE__ */ jsx8("div", { className: "flex-row-2 text-center", children: week.map((date) => {
3894
3920
  const isSelected = !!selected && equalDate(selected, date);
3895
3921
  const isToday = equalDate(/* @__PURE__ */ new Date(), date);
3896
3922
  const isSameMonth = date.getMonth() === month;
@@ -4038,12 +4064,12 @@ var DatePicker = ({
4038
4064
  useEffect6(() => {
4039
4065
  setDisplayedMonth(value);
4040
4066
  }, [value]);
4041
- return /* @__PURE__ */ jsxs6("div", { className: clsx8("col gap-y-4", className), children: [
4042
- /* @__PURE__ */ jsxs6("div", { className: "row items-center justify-between h-7", children: [
4067
+ return /* @__PURE__ */ jsxs6("div", { className: clsx8("flex-col-4", className), children: [
4068
+ /* @__PURE__ */ jsxs6("div", { className: "flex-row-2 items-center justify-between h-7", children: [
4043
4069
  /* @__PURE__ */ jsxs6(
4044
4070
  TextButton,
4045
4071
  {
4046
- className: clsx8("row gap-x-1 items-center cursor-pointer select-none", {
4072
+ className: clsx8("flex-row-1 items-center cursor-pointer select-none", {
4047
4073
  "text-disabled-text": displayMode !== "day"
4048
4074
  }),
4049
4075
  onClick: () => setDisplayMode(displayMode === "day" ? "yearMonth" : "day"),
@@ -4053,7 +4079,7 @@ var DatePicker = ({
4053
4079
  ]
4054
4080
  }
4055
4081
  ),
4056
- displayMode === "day" && /* @__PURE__ */ jsxs6("div", { className: "row justify-end", children: [
4082
+ displayMode === "day" && /* @__PURE__ */ jsxs6("div", { className: "flex-row-2 justify-end", children: [
4057
4083
  /* @__PURE__ */ jsx9(
4058
4084
  SolidButton,
4059
4085
  {
@@ -4267,8 +4293,8 @@ var TimePicker = ({
4267
4293
  transformer(newDate);
4268
4294
  onChange(newDate);
4269
4295
  };
4270
- return /* @__PURE__ */ jsxs7("div", { className: clsx9("row gap-x-2 w-fit min-w-[150px] select-none", className), children: [
4271
- /* @__PURE__ */ jsx11(Scrollbars2, { autoHeight: true, autoHeightMax: maxHeight, style: { height: "100%" }, children: /* @__PURE__ */ jsx11("div", { className: "col gap-y-1 h-full", children: hours.map((hour) => {
4296
+ return /* @__PURE__ */ jsxs7("div", { className: clsx9("flex-row-2 w-fit min-w-[150px] select-none", className), children: [
4297
+ /* @__PURE__ */ jsx11(Scrollbars2, { autoHeight: true, autoHeightMax: maxHeight, style: { height: "100%" }, children: /* @__PURE__ */ jsx11("div", { className: "flex-col-1 h-full", children: hours.map((hour) => {
4272
4298
  const currentHour = hour === time.getHours() - (!is24HourFormat && isPM ? 12 : 0);
4273
4299
  return /* @__PURE__ */ jsx11(
4274
4300
  "button",
@@ -4281,7 +4307,7 @@ var TimePicker = ({
4281
4307
  hour
4282
4308
  );
4283
4309
  }) }) }),
4284
- /* @__PURE__ */ jsx11(Scrollbars2, { autoHeight: true, autoHeightMax: maxHeight, style: { height: "100%" }, children: /* @__PURE__ */ jsx11("div", { className: "col gap-y-1 h-full", children: minutes.map((minute) => {
4310
+ /* @__PURE__ */ jsx11(Scrollbars2, { autoHeight: true, autoHeightMax: maxHeight, style: { height: "100%" }, children: /* @__PURE__ */ jsx11("div", { className: "flex-col-1 h-full", children: minutes.map((minute) => {
4285
4311
  const currentMinute = minute === closestMinute;
4286
4312
  return /* @__PURE__ */ jsx11(
4287
4313
  "button",
@@ -4294,7 +4320,7 @@ var TimePicker = ({
4294
4320
  minute + minuteIncrement
4295
4321
  );
4296
4322
  }) }) }),
4297
- !is24HourFormat && /* @__PURE__ */ jsxs7("div", { className: "col gap-y-1", children: [
4323
+ !is24HourFormat && /* @__PURE__ */ jsxs7("div", { className: "flex-col-1", children: [
4298
4324
  /* @__PURE__ */ jsx11(
4299
4325
  "button",
4300
4326
  {
@@ -4458,6 +4484,7 @@ import { X } from "lucide-react";
4458
4484
  // src/localization/defaults/form.ts
4459
4485
  var formTranslation = {
4460
4486
  en: {
4487
+ add: "Add",
4461
4488
  all: "All",
4462
4489
  apply: "Apply",
4463
4490
  back: "Back",
@@ -4470,6 +4497,7 @@ var formTranslation = {
4470
4497
  confirm: "Confirm",
4471
4498
  copy: "Copy",
4472
4499
  copied: "Copied",
4500
+ create: "Create",
4473
4501
  decline: "Decline",
4474
4502
  delete: "Delete",
4475
4503
  discard: "Discard",
@@ -4512,6 +4540,7 @@ var formTranslation = {
4512
4540
  yes: "Yes"
4513
4541
  },
4514
4542
  de: {
4543
+ add: "Hinzuf\xFCgen",
4515
4544
  all: "Alle",
4516
4545
  apply: "Anwenden",
4517
4546
  back: "Zur\xFCck",
@@ -4524,6 +4553,7 @@ var formTranslation = {
4524
4553
  confirm: "Best\xE4tigen",
4525
4554
  copy: "Kopieren",
4526
4555
  copied: "Kopiert",
4556
+ create: "Erstellen",
4527
4557
  decline: "Ablehnen",
4528
4558
  delete: "L\xF6schen",
4529
4559
  discard: "Verwerfen",
@@ -4585,7 +4615,7 @@ var Overlay = ({
4585
4615
  /* @__PURE__ */ jsx13(
4586
4616
  "div",
4587
4617
  {
4588
- className: clsx11("fixed inset-0 h-screen w-screen bg-black/30", backgroundClassName),
4618
+ className: clsx11("fixed inset-0 h-screen w-screen bg-overlay-shadow", backgroundClassName),
4589
4619
  onClick: onBackgroundClick
4590
4620
  }
4591
4621
  ),
@@ -4613,7 +4643,7 @@ var OverlayHeader = ({
4613
4643
  }) => {
4614
4644
  const translation = useTranslation([defaultModalHeaderTranslation], overwriteTranslation);
4615
4645
  const hasTitleRow = !!title || !!titleText || !!onClose;
4616
- const titleRow = /* @__PURE__ */ jsxs9("div", { className: "row justify-between items-start gap-x-8", children: [
4646
+ const titleRow = /* @__PURE__ */ jsxs9("div", { className: "flex-row-8 justify-between items-start", children: [
4617
4647
  title ?? /* @__PURE__ */ jsx13(
4618
4648
  "h2",
4619
4649
  {
@@ -4625,7 +4655,7 @@ var OverlayHeader = ({
4625
4655
  ),
4626
4656
  !!onClose && /* @__PURE__ */ jsx13(Tooltip, { tooltip: translation("close"), children: /* @__PURE__ */ jsx13(IconButton, { color: "neutral", size: "small", onClick: onClose, children: /* @__PURE__ */ jsx13(X, { className: "w-full h-full" }) }) })
4627
4657
  ] });
4628
- return /* @__PURE__ */ jsxs9("div", { className: "col", children: [
4658
+ return /* @__PURE__ */ jsxs9("div", { className: "flex-col-2", children: [
4629
4659
  hasTitleRow && titleRow,
4630
4660
  description ?? (descriptionText && /* @__PURE__ */ jsx13("span", { className: "textstyle-description", children: descriptionText }))
4631
4661
  ] });
@@ -4688,7 +4718,7 @@ var Modal = ({
4688
4718
  ref,
4689
4719
  tabIndex: -1,
4690
4720
  className: clsx11(
4691
- "fixed left-1/2 top-1/2 -translate-y-1/2 -translate-x-1/2 col p-4 bg-overlay-background text-overlay-text rounded-xl shadow-xl",
4721
+ "flex-col-2 fixed left-1/2 top-1/2 -translate-y-1/2 -translate-x-1/2 p-4 bg-overlay-background text-overlay-text rounded-xl shadow-xl animate-pop-in",
4692
4722
  className
4693
4723
  ),
4694
4724
  role: "dialog",
@@ -4757,7 +4787,7 @@ var Dialog = ({
4757
4787
  ref,
4758
4788
  tabIndex: -1,
4759
4789
  className: clsx11(
4760
- "fixed left-1/2 top-1/2 -translate-y-1/2 -translate-x-1/2 col p-4 bg-overlay-background text-overlay-text rounded-xl shadow-xl",
4790
+ "flex-col-2 fixed left-1/2 top-1/2 -translate-y-1/2 -translate-x-1/2 p-4 bg-overlay-background text-overlay-text rounded-xl shadow-xl animate-pop-in",
4761
4791
  className
4762
4792
  ),
4763
4793
  role: "dialog",
@@ -4792,8 +4822,8 @@ var ConfirmDialog = ({
4792
4822
  primary: "primary"
4793
4823
  };
4794
4824
  return /* @__PURE__ */ jsxs10(Dialog, { ...restProps, className: clsx12("justify-between", className), children: [
4795
- /* @__PURE__ */ jsx14("div", { className: "col grow", children }),
4796
- /* @__PURE__ */ jsxs10("div", { className: "row mt-3 gap-x-4 justify-end", children: [
4825
+ /* @__PURE__ */ jsx14("div", { className: "flex-col-2 grow", children }),
4826
+ /* @__PURE__ */ jsxs10("div", { className: "flex-row-4 mt-3 justify-end", children: [
4797
4827
  onDecline && /* @__PURE__ */ jsx14(
4798
4828
  SolidButton,
4799
4829
  {
@@ -4868,7 +4898,7 @@ var AvatarGroup = ({
4868
4898
  const stackingOverlap = 0.5;
4869
4899
  const notDisplayedProfiles = avatars.length - maxShownProfiles;
4870
4900
  const avatarGroupWidth = diameter * (stackingOverlap * (displayedProfiles.length - 1) + 1);
4871
- return /* @__PURE__ */ jsxs11("div", { className: "row relative", style: { height: diameter + "px" }, children: [
4901
+ return /* @__PURE__ */ jsxs11("div", { className: "flex-row-2 relative", style: { height: diameter + "px" }, children: [
4872
4902
  /* @__PURE__ */ jsx15("div", { style: { width: avatarGroupWidth + "px" }, children: displayedProfiles.map((avatar, index) => /* @__PURE__ */ jsx15(
4873
4903
  "div",
4874
4904
  {
@@ -4881,7 +4911,7 @@ var AvatarGroup = ({
4881
4911
  notDisplayedProfiles > 0 && /* @__PURE__ */ jsx15(
4882
4912
  "div",
4883
4913
  {
4884
- className: "truncate row items-center",
4914
+ className: "flex-row-2 truncate items-center",
4885
4915
  style: { fontSize: diameter / 2 + "px", marginLeft: 1 + diameter / 16 + "px" },
4886
4916
  children: /* @__PURE__ */ jsxs11("span", { children: [
4887
4917
  "+ ",
@@ -4917,7 +4947,7 @@ var Circle = ({
4917
4947
  };
4918
4948
 
4919
4949
  // src/components/icons-and-geometry/Ring.tsx
4920
- import { useCallback as useCallback2, useEffect as useEffect10, useState as useState10 } from "react";
4950
+ import { useCallback as useCallback3, useEffect as useEffect10, useState as useState10 } from "react";
4921
4951
  import clsx15 from "clsx";
4922
4952
  import { jsx as jsx17, jsxs as jsxs12 } from "react/jsx-runtime";
4923
4953
  var Ring = ({
@@ -4948,7 +4978,7 @@ var AnimatedRing = ({
4948
4978
  }) => {
4949
4979
  const [currentWidth, setCurrentWidth] = useState10(0);
4950
4980
  const milliseconds = 1e3 * fillAnimationDuration;
4951
- const animate = useCallback2((timestamp, startTime) => {
4981
+ const animate = useCallback3((timestamp, startTime) => {
4952
4982
  const progress = Math.min((timestamp - startTime) / milliseconds, 1);
4953
4983
  const newWidth = Math.min(width * progress, width);
4954
4984
  setCurrentWidth(newWidth);
@@ -4970,7 +5000,7 @@ var AnimatedRing = ({
4970
5000
  return /* @__PURE__ */ jsx17(
4971
5001
  "div",
4972
5002
  {
4973
- className: "row items-center justify-center",
5003
+ className: "flex-row-2 items-center justify-center",
4974
5004
  style: {
4975
5005
  width: `${innerSize + 2 * width}px`,
4976
5006
  height: `${innerSize + 2 * width}px`,
@@ -5000,7 +5030,7 @@ var RingWave = ({
5000
5030
  const [currentInnerSize, setCurrentInnerSize] = useState10(startInnerSize);
5001
5031
  const distance = endInnerSize - startInnerSize;
5002
5032
  const milliseconds = 1e3 * fillAnimationDuration;
5003
- const animate = useCallback2((timestamp, startTime) => {
5033
+ const animate = useCallback3((timestamp, startTime) => {
5004
5034
  const progress = Math.min((timestamp - startTime) / milliseconds, 1);
5005
5035
  const newInnerSize = Math.min(
5006
5036
  startInnerSize + distance * progress,
@@ -5025,7 +5055,7 @@ var RingWave = ({
5025
5055
  return /* @__PURE__ */ jsx17(
5026
5056
  "div",
5027
5057
  {
5028
- className: "row items-center justify-center",
5058
+ className: "flex-row-2 items-center justify-center",
5029
5059
  style: {
5030
5060
  width: `${endInnerSize + 2 * width}px`,
5031
5061
  height: `${endInnerSize + 2 * width}px`,
@@ -5205,7 +5235,7 @@ import clsx16 from "clsx";
5205
5235
  import { jsx as jsx19, jsxs as jsxs13 } from "react/jsx-runtime";
5206
5236
  var BreadCrumb = ({ crumbs, linkClassName, containerClassName }) => {
5207
5237
  const color = "text-description";
5208
- return /* @__PURE__ */ jsx19("div", { className: clsx16("row gap-x-0", containerClassName), children: crumbs.map((crumb, index) => /* @__PURE__ */ jsxs13("div", { children: [
5238
+ return /* @__PURE__ */ jsx19("div", { className: clsx16("flex-row-0", containerClassName), children: crumbs.map((crumb, index) => /* @__PURE__ */ jsxs13("div", { children: [
5209
5239
  /* @__PURE__ */ jsx19(
5210
5240
  import_link.default,
5211
5241
  {
@@ -5219,7 +5249,7 @@ var BreadCrumb = ({ crumbs, linkClassName, containerClassName }) => {
5219
5249
  };
5220
5250
 
5221
5251
  // src/components/layout-and-navigation/Carousel.tsx
5222
- import { useCallback as useCallback3, useEffect as useEffect11, useMemo, useRef as useRef4, useState as useState11 } from "react";
5252
+ import { useCallback as useCallback4, useEffect as useEffect11, useMemo, useRef as useRef4, useState as useState11 } from "react";
5223
5253
  import clsx17 from "clsx";
5224
5254
  import { ChevronLeft, ChevronRight } from "lucide-react";
5225
5255
 
@@ -5367,7 +5397,7 @@ var Carousel = ({
5367
5397
  const baseOffset = -50 + (index - currentPosition) * 100;
5368
5398
  return `${baseOffset}%`;
5369
5399
  };
5370
- const animation = useCallback3((time) => {
5400
+ const animation = useCallback4((time) => {
5371
5401
  let keepAnimating = true;
5372
5402
  setCarouselInformation((state) => {
5373
5403
  const {
@@ -5566,7 +5596,7 @@ var Carousel = ({
5566
5596
  onTouchEnd: (event) => onDragEnd(event.changedTouches[0].clientX, event.target.getBoundingClientRect().width),
5567
5597
  onTouchCancel: (event) => onDragEnd(event.changedTouches[0].clientX, event.target.getBoundingClientRect().width)
5568
5598
  };
5569
- return /* @__PURE__ */ jsxs14("div", { className: "col items-center w-full gap-y-2", children: [
5599
+ return /* @__PURE__ */ jsxs14("div", { className: "flex-col-2 items-center w-full", children: [
5570
5600
  /* @__PURE__ */ jsxs14("div", { className: clsx17(`relative w-full overflow-hidden`, heightClassName, className), children: [
5571
5601
  arrows && /* @__PURE__ */ jsxs14(Fragment, { children: [
5572
5602
  /* @__PURE__ */ jsx20(
@@ -5590,8 +5620,8 @@ var Carousel = ({
5590
5620
  }
5591
5621
  )
5592
5622
  ] }),
5593
- hintNext ? /* @__PURE__ */ jsxs14("div", { className: clsx17(`relative row h-full`, heightClassName), children: [
5594
- /* @__PURE__ */ jsx20("div", { className: "relative row h-full w-full px-2 overflow-hidden", children: items.map(({
5623
+ hintNext ? /* @__PURE__ */ jsxs14("div", { className: clsx17(`flex-row-2 relative h-full`, heightClassName), children: [
5624
+ /* @__PURE__ */ jsx20("div", { className: "flex-row-2 relative h-full w-full px-2 overflow-hidden", children: items.map(({
5595
5625
  item,
5596
5626
  index
5597
5627
  }, listIndex) => /* @__PURE__ */ jsx20(
@@ -5622,7 +5652,7 @@ var Carousel = ({
5622
5652
  dots && /* @__PURE__ */ jsx20(
5623
5653
  "div",
5624
5654
  {
5625
- className: "row items-center justify-center w-full my-2",
5655
+ className: "flex-row-2 items-center justify-center w-full my-2",
5626
5656
  children: range(length).map((index) => /* @__PURE__ */ jsx20(
5627
5657
  "button",
5628
5658
  {
@@ -5692,7 +5722,7 @@ var ChipList = ({
5692
5722
  list,
5693
5723
  className = ""
5694
5724
  }) => {
5695
- return /* @__PURE__ */ jsx21("div", { className: clsx18("flex flex-wrap gap-x-4 gap-y-2", className), children: list.map((value, index) => /* @__PURE__ */ jsx21(
5725
+ return /* @__PURE__ */ jsx21("div", { className: clsx18("flex flex-wrap gap-x-2 gap-y-2", className), children: list.map((value, index) => /* @__PURE__ */ jsx21(
5696
5726
  Chip,
5697
5727
  {
5698
5728
  ...value,
@@ -5728,7 +5758,6 @@ var DividerInserter = ({
5728
5758
 
5729
5759
  // src/components/layout-and-navigation/FAQSection.tsx
5730
5760
  import clsx20 from "clsx";
5731
- import { ChevronDown as ChevronDown3, ChevronUp as ChevronUp2 } from "lucide-react";
5732
5761
 
5733
5762
  // src/components/layout-and-navigation/MarkdownInterpreter.tsx
5734
5763
  import { Fragment as Fragment2, jsx as jsx23 } from "react/jsx-runtime";
@@ -5967,14 +5996,13 @@ var FAQSection = ({
5967
5996
  entries,
5968
5997
  expandableClassName
5969
5998
  }) => {
5970
- const chevronSize = 28;
5971
- return /* @__PURE__ */ jsx24("div", { className: "col gap-y-4", children: entries.map(({ id, title, content, ...restProps }) => /* @__PURE__ */ jsx24(
5999
+ return /* @__PURE__ */ jsx24("div", { className: "flex-col-4", children: entries.map(({ id, title, content, ...restProps }) => /* @__PURE__ */ jsx24(
5972
6000
  ExpandableUncontrolled,
5973
6001
  {
5974
6002
  ...restProps,
5975
6003
  label: /* @__PURE__ */ jsx24("h3", { id, className: "textstyle-title-md", children: title }),
5976
6004
  clickOnlyOnHeader: false,
5977
- icon: (expanded) => expanded ? /* @__PURE__ */ jsx24(ChevronUp2, { size: chevronSize, className: "text-primary", style: { minWidth: `${chevronSize}px` } }) : /* @__PURE__ */ jsx24(ChevronDown3, { size: chevronSize, className: "text-primary" }),
6005
+ icon: (expanded) => /* @__PURE__ */ jsx24(ExpansionIcon, { isExpanded: expanded, className: "text-primary" }),
5978
6006
  className: clsx20("rounded-xl", expandableClassName),
5979
6007
  children: /* @__PURE__ */ jsx24("div", { className: "mt-2", children: content.type === "markdown" ? /* @__PURE__ */ jsx24(MarkdownInterpreter, { text: content.value }) : content.value })
5980
6008
  },
@@ -5987,7 +6015,7 @@ import { ChevronFirst, ChevronLast, ChevronLeft as ChevronLeft2, ChevronRight as
5987
6015
  import clsx23 from "clsx";
5988
6016
 
5989
6017
  // src/components/user-action/Input.tsx
5990
- import { forwardRef as forwardRef2, useEffect as useEffect14, useImperativeHandle, useRef as useRef5, useState as useState13 } from "react";
6018
+ import { forwardRef as forwardRef3, useEffect as useEffect14, useImperativeHandle, useRef as useRef5, useState as useState13 } from "react";
5991
6019
  import clsx22 from "clsx";
5992
6020
 
5993
6021
  // src/hooks/useDelay.ts
@@ -6049,9 +6077,9 @@ var Label = ({
6049
6077
  };
6050
6078
 
6051
6079
  // src/hooks/useFocusManagement.ts
6052
- import { useCallback as useCallback4 } from "react";
6080
+ import { useCallback as useCallback5 } from "react";
6053
6081
  function useFocusManagement() {
6054
- const getFocusableElements = useCallback4(() => {
6082
+ const getFocusableElements = useCallback5(() => {
6055
6083
  return Array.from(
6056
6084
  document.querySelectorAll(
6057
6085
  'input, button, select, textarea, a[href], [tabindex]:not([tabindex="-1"])'
@@ -6060,7 +6088,7 @@ function useFocusManagement() {
6060
6088
  (el) => el instanceof HTMLElement && !el.hasAttribute("disabled") && !el.hasAttribute("hidden") && el.tabIndex !== -1
6061
6089
  );
6062
6090
  }, []);
6063
- const getNextFocusElement = useCallback4(() => {
6091
+ const getNextFocusElement = useCallback5(() => {
6064
6092
  const elements = getFocusableElements();
6065
6093
  if (elements.length === 0) {
6066
6094
  return void 0;
@@ -6072,11 +6100,11 @@ function useFocusManagement() {
6072
6100
  }
6073
6101
  return nextElement;
6074
6102
  }, [getFocusableElements]);
6075
- const focusNext = useCallback4(() => {
6103
+ const focusNext = useCallback5(() => {
6076
6104
  const nextElement = getNextFocusElement();
6077
6105
  nextElement?.focus();
6078
6106
  }, [getNextFocusElement]);
6079
- const getPreviousFocusElement = useCallback4(() => {
6107
+ const getPreviousFocusElement = useCallback5(() => {
6080
6108
  const elements = getFocusableElements();
6081
6109
  if (elements.length === 0) {
6082
6110
  return void 0;
@@ -6092,7 +6120,7 @@ function useFocusManagement() {
6092
6120
  }
6093
6121
  return previousElement;
6094
6122
  }, [getFocusableElements]);
6095
- const focusPrevious = useCallback4(() => {
6123
+ const focusPrevious = useCallback5(() => {
6096
6124
  const previousElement = getPreviousFocusElement();
6097
6125
  if (previousElement) previousElement.focus();
6098
6126
  }, [getPreviousFocusElement]);
@@ -6145,7 +6173,7 @@ var defaultEditCompleteOptions = {
6145
6173
  afterDelay: true,
6146
6174
  delay: 2500
6147
6175
  };
6148
- var Input = forwardRef2(function Input2({
6176
+ var Input = forwardRef3(function Input2({
6149
6177
  id,
6150
6178
  type = "text",
6151
6179
  value,
@@ -6241,7 +6269,7 @@ var InputUncontrolled = ({
6241
6269
  }
6242
6270
  );
6243
6271
  };
6244
- var FormInput = forwardRef2(function FormInput2({
6272
+ var FormInput = forwardRef3(function FormInput2({
6245
6273
  id,
6246
6274
  labelText,
6247
6275
  errorText,
@@ -6302,10 +6330,10 @@ var Pagination = ({
6302
6330
  const changePage = (page) => {
6303
6331
  onPageChanged(page);
6304
6332
  };
6305
- return /* @__PURE__ */ jsxs17("div", { className: clsx23("row gap-x-1", className), style, children: [
6333
+ return /* @__PURE__ */ jsxs17("div", { className: clsx23("flex-row-1", className), style, children: [
6306
6334
  /* @__PURE__ */ jsx27(IconButton, { color: "transparent", onClick: () => changePage(0), disabled: onFirstPage || noPages, children: /* @__PURE__ */ jsx27(ChevronFirst, {}) }),
6307
6335
  /* @__PURE__ */ jsx27(IconButton, { color: "transparent", onClick: () => changePage(pageIndex - 1), disabled: onFirstPage || noPages, children: /* @__PURE__ */ jsx27(ChevronLeft2, {}) }),
6308
- /* @__PURE__ */ jsxs17("div", { className: "row min-w-56 gap-x-2 items-center justify-center mx-2 text-center", children: [
6336
+ /* @__PURE__ */ jsxs17("div", { className: "flex-row-2 min-w-56 items-center justify-center mx-2 text-center", children: [
6309
6337
  /* @__PURE__ */ jsx27(
6310
6338
  Input,
6311
6339
  {
@@ -6335,7 +6363,7 @@ var Pagination = ({
6335
6363
  /* @__PURE__ */ jsx27(
6336
6364
  "span",
6337
6365
  {
6338
- className: "row flex-1 items-center justify-center select-none h-10 bg-surface text-on-surface rounded-md font-bold",
6366
+ className: "flex-row-2 flex-1 items-center justify-center select-none h-10 bg-surface text-on-surface rounded-md font-bold",
6339
6367
  children: pageCount
6340
6368
  }
6341
6369
  )
@@ -6350,12 +6378,15 @@ import { Search } from "lucide-react";
6350
6378
  import clsx24 from "clsx";
6351
6379
 
6352
6380
  // src/hooks/useSearch.ts
6353
- import { useEffect as useEffect16, useMemo as useMemo2, useState as useState15 } from "react";
6381
+ import { useCallback as useCallback6, useEffect as useEffect16, useMemo as useMemo2, useState as useState15 } from "react";
6354
6382
 
6355
6383
  // src/util/simpleSearch.ts
6356
6384
  var MultiSubjectSearchWithMapping = (search, objects, mapping) => {
6357
6385
  return objects.filter((object) => {
6358
- const mappedSearchKeywords = mapping(object).map((value) => value ? value.toLowerCase().trim() : void 0);
6386
+ const mappedSearchKeywords = mapping(object)?.map((value) => value.toLowerCase().trim());
6387
+ if (!mappedSearchKeywords) {
6388
+ return true;
6389
+ }
6359
6390
  return search.every((searchValue) => !!mappedSearchKeywords.find((value) => !!value && value.includes(searchValue.toLowerCase().trim())));
6360
6391
  });
6361
6392
  };
@@ -6379,22 +6410,51 @@ var SimpleSearch = (search, objects) => {
6379
6410
  var useSearch = ({
6380
6411
  list,
6381
6412
  initialSearch,
6382
- searchMapping
6413
+ searchMapping,
6414
+ additionalSearchTags,
6415
+ isSearchInstant = true,
6416
+ sortingFunction,
6417
+ filter,
6418
+ disabled = false
6383
6419
  }) => {
6384
- const [items, setItems] = useState15(list);
6385
- const [search, setSearch] = useState15(initialSearch);
6420
+ const [search, setSearch] = useState15(initialSearch ?? "");
6421
+ const [result, setResult] = useState15(list);
6422
+ const searchTags = useMemo2(() => additionalSearchTags ?? [], [additionalSearchTags]);
6423
+ const updateSearch = useCallback6((newSearch) => {
6424
+ const usedSearch = newSearch ?? search;
6425
+ if (newSearch) {
6426
+ setSearch(search);
6427
+ }
6428
+ setResult(MultiSubjectSearchWithMapping([usedSearch, ...searchTags], list, searchMapping));
6429
+ }, [searchTags, list, search, searchMapping]);
6386
6430
  useEffect16(() => {
6387
- setItems(list);
6388
- }, [list]);
6389
- const result = useMemo2(
6390
- () => MultiSearchWithMapping(search, items, searchMapping),
6391
- [search, items, searchMapping]
6392
- );
6431
+ if (isSearchInstant) {
6432
+ setResult(MultiSubjectSearchWithMapping([search, ...searchTags], list, searchMapping));
6433
+ }
6434
+ }, [searchTags, isSearchInstant, list, search, searchMapping, additionalSearchTags]);
6435
+ const filteredResult = useMemo2(() => {
6436
+ if (!filter) {
6437
+ return result;
6438
+ }
6439
+ return result.filter(filter);
6440
+ }, [result, filter]);
6441
+ const sortedAndFilteredResult = useMemo2(() => {
6442
+ if (!sortingFunction) {
6443
+ return filteredResult;
6444
+ }
6445
+ return filteredResult.sort(sortingFunction);
6446
+ }, [filteredResult, sortingFunction]);
6447
+ const usedResult = useMemo2(() => {
6448
+ if (!disabled) {
6449
+ return sortedAndFilteredResult;
6450
+ }
6451
+ return list;
6452
+ }, [disabled, list, sortedAndFilteredResult]);
6393
6453
  return {
6394
- result,
6395
- hasResult: result.length > 0,
6396
- allItems: items,
6397
- setItems,
6454
+ result: usedResult,
6455
+ hasResult: usedResult.length > 0,
6456
+ allItems: list,
6457
+ updateSearch,
6398
6458
  search,
6399
6459
  setSearch
6400
6460
  };
@@ -6422,9 +6482,9 @@ var SearchableList = ({
6422
6482
  resultListClassName
6423
6483
  }) => {
6424
6484
  const translation = useTranslation([defaultSearchableListTranslation, formTranslation], overwriteTranslation);
6425
- const { result, hasResult, search, setSearch } = useSearch({ list, initialSearch, searchMapping });
6426
- return /* @__PURE__ */ jsxs18("div", { className: clsx24("col gap-y-2", className), children: [
6427
- list.length > minimumItemsForSearch && /* @__PURE__ */ jsxs18("div", { className: "row justify-between gap-x-4 items-center", children: [
6485
+ const { result, hasResult, search, setSearch, updateSearch } = useSearch({ list, initialSearch, searchMapping });
6486
+ return /* @__PURE__ */ jsxs18("div", { className: clsx24("flex-col-2", className), children: [
6487
+ list.length > minimumItemsForSearch && /* @__PURE__ */ jsxs18("div", { className: "flex-row-2 justify-between items-center", children: [
6428
6488
  /* @__PURE__ */ jsx28(
6429
6489
  Input,
6430
6490
  {
@@ -6435,9 +6495,9 @@ var SearchableList = ({
6435
6495
  className: "w-full"
6436
6496
  }
6437
6497
  ),
6438
- /* @__PURE__ */ jsx28(IconButton, { color: "neutral", disabled: search.length === 0, children: /* @__PURE__ */ jsx28(Search, { className: "w-full h-full" }) })
6498
+ /* @__PURE__ */ jsx28(IconButton, { color: "neutral", onClick: () => updateSearch(), children: /* @__PURE__ */ jsx28(Search, { className: "w-full h-full" }) })
6439
6499
  ] }),
6440
- hasResult ? /* @__PURE__ */ jsx28("div", { className: clsx24("col gap-y-1", resultListClassName), children: result.map(itemMapper) }) : /* @__PURE__ */ jsx28("div", { className: "row text-description py-2 px-2", children: translation("nothingFound") })
6500
+ hasResult ? /* @__PURE__ */ jsx28("div", { className: clsx24("flex-col-1 overflow-y-auto", resultListClassName), children: result.map(itemMapper) }) : /* @__PURE__ */ jsx28("div", { className: "flex-row-2 text-description py-2 px-2", children: translation("nothingFound") })
6441
6501
  ] });
6442
6502
  };
6443
6503
 
@@ -6471,23 +6531,23 @@ var StepperBar = ({
6471
6531
  return /* @__PURE__ */ jsxs19(
6472
6532
  "div",
6473
6533
  {
6474
- className: clsx25("row justify-between", className),
6534
+ className: clsx25("flex-row-2 justify-between", className),
6475
6535
  children: [
6476
- /* @__PURE__ */ jsx29("div", { className: "row flex-[2] justify-start", children: /* @__PURE__ */ jsxs19(
6536
+ /* @__PURE__ */ jsx29("div", { className: "flex-row-2 flex-[2] justify-start", children: /* @__PURE__ */ jsxs19(
6477
6537
  SolidButton,
6478
6538
  {
6479
6539
  disabled: currentStep === 0 || disabledSteps.has(currentStep),
6480
6540
  onClick: () => {
6481
6541
  update(currentStep - 1);
6482
6542
  },
6483
- className: "row gap-x-1 items-center justify-center",
6543
+ className: "flex-row-1 items-center justify-center",
6484
6544
  children: [
6485
6545
  /* @__PURE__ */ jsx29(ChevronLeft3, { size: 14 }),
6486
6546
  translation("back")
6487
6547
  ]
6488
6548
  }
6489
6549
  ) }),
6490
- /* @__PURE__ */ jsx29("div", { className: "row flex-[5] gap-x-2 justify-center items-center", children: showDots && dots.map((value, index) => {
6550
+ /* @__PURE__ */ jsx29("div", { className: "flex-row-2 flex-[5] justify-center items-center", children: showDots && dots.map((value, index) => {
6491
6551
  const seen = seenSteps.has(index);
6492
6552
  return /* @__PURE__ */ jsx29(
6493
6553
  "div",
@@ -6509,11 +6569,11 @@ var StepperBar = ({
6509
6569
  index
6510
6570
  );
6511
6571
  }) }),
6512
- currentStep !== numberOfSteps && /* @__PURE__ */ jsx29("div", { className: "row flex-[2] justify-end", children: /* @__PURE__ */ jsxs19(
6572
+ currentStep !== numberOfSteps && /* @__PURE__ */ jsx29("div", { className: "flex-row-2 flex-[2] justify-end", children: /* @__PURE__ */ jsxs19(
6513
6573
  SolidButton,
6514
6574
  {
6515
6575
  onClick: () => update(currentStep + 1),
6516
- className: "row gap-x-1 items-center justify-center",
6576
+ className: "flex-row-1 items-center justify-center",
6517
6577
  disabled: disabledSteps.has(currentStep),
6518
6578
  children: [
6519
6579
  translation("next"),
@@ -6521,12 +6581,12 @@ var StepperBar = ({
6521
6581
  ]
6522
6582
  }
6523
6583
  ) }),
6524
- currentStep === numberOfSteps && /* @__PURE__ */ jsx29("div", { className: "row flex-[2] justify-end", children: /* @__PURE__ */ jsxs19(
6584
+ currentStep === numberOfSteps && /* @__PURE__ */ jsx29("div", { className: "flex-row-2 flex-[2] justify-end", children: /* @__PURE__ */ jsxs19(
6525
6585
  SolidButton,
6526
6586
  {
6527
6587
  disabled: disabledSteps.has(currentStep),
6528
6588
  onClick: onFinish,
6529
- className: "row gap-x-1 items-center justify-center",
6589
+ className: "flex-row-1 items-center justify-center",
6530
6590
  children: [
6531
6591
  /* @__PURE__ */ jsx29(Check2, { size: 14 }),
6532
6592
  finishText ?? translation("confirm")
@@ -6591,14 +6651,14 @@ var TextImage = ({
6591
6651
  children: /* @__PURE__ */ jsxs20(
6592
6652
  "div",
6593
6653
  {
6594
- className: clsx26(`col px-6 py-12 rounded-2xl h-full`, colorMapping[color], contentClassName),
6654
+ className: clsx26(`flex-col-2 px-6 py-12 rounded-2xl h-full`, colorMapping[color], contentClassName),
6595
6655
  children: [
6596
6656
  badge && /* @__PURE__ */ jsx30("div", { className: clsx26(`chip-full mb-2 py-2 px-4 w-fit`, chipColorMapping[color]), children: /* @__PURE__ */ jsx30("span", { className: "text-lg font-bold", children: badge }) }),
6597
- /* @__PURE__ */ jsxs20("div", { className: "col gap-y-1 overflow-hidden", children: [
6657
+ /* @__PURE__ */ jsxs20("div", { className: "flex-col-1 overflow-hidden", children: [
6598
6658
  /* @__PURE__ */ jsx30("span", { className: "textstyle-title-xl", children: title }),
6599
6659
  /* @__PURE__ */ jsx30("span", { className: "text-ellipsis overflow-hidden", children: description })
6600
6660
  ] }),
6601
- onShowMoreClicked && /* @__PURE__ */ jsx30("div", { className: "row mt-2 underline", children: /* @__PURE__ */ jsx30("button", { onClick: onShowMoreClicked, children: translation("showMore") }) })
6661
+ onShowMoreClicked && /* @__PURE__ */ jsx30("div", { className: "flex-row-2 mt-2 underline", children: /* @__PURE__ */ jsx30("button", { onClick: onShowMoreClicked, children: translation("showMore") }) })
6602
6662
  ]
6603
6663
  }
6604
6664
  )
@@ -6677,7 +6737,7 @@ var ErrorComponent = ({
6677
6737
  classname
6678
6738
  }) => {
6679
6739
  const translation = useTranslation([defaultErrorComponentTranslation], overwriteTranslation);
6680
- return /* @__PURE__ */ jsxs22("div", { className: clsx27("col items-center justify-center gap-y-4 w-full h-24", classname), children: [
6740
+ return /* @__PURE__ */ jsxs22("div", { className: clsx27("flex-col-4 items-center justify-center w-full h-24", classname), children: [
6681
6741
  /* @__PURE__ */ jsx32(AlertOctagon, { size: 64, className: "text-warning" }),
6682
6742
  errorText ?? `${translation("errorOccurred")} :(`
6683
6743
  ] });
@@ -6686,30 +6746,24 @@ var ErrorComponent = ({
6686
6746
  // src/components/loading-states/LoadingAndErrorComponent.tsx
6687
6747
  import { useState as useState17 } from "react";
6688
6748
 
6689
- // src/components/loading-states/LoadingAnimation.tsx
6690
- import clsx28 from "clsx";
6691
- import { jsx as jsx33, jsxs as jsxs23 } from "react/jsx-runtime";
6692
- var LoadingAnimation = ({
6693
- overwriteTranslation,
6694
- loadingText,
6695
- classname
6696
- }) => {
6697
- const translation = useTranslation([formTranslation], overwriteTranslation);
6698
- return /* @__PURE__ */ jsxs23("div", { className: clsx28("col items-center justify-center w-full h-24", classname), children: [
6699
- /* @__PURE__ */ jsx33(Helpwave, { animate: "loading" }),
6700
- loadingText ?? `${translation("loading")}...`
6701
- ] });
6749
+ // src/components/loading-states/LoadingContainer.tsx
6750
+ import { clsx as clsx28 } from "clsx";
6751
+ import { jsx as jsx33 } from "react/jsx-runtime";
6752
+ var LoadingContainer = ({ className }) => {
6753
+ return /* @__PURE__ */ jsx33("div", { className: clsx28("relative overflow-hidden shimmer bg-disabled-background rounded-md", className) });
6702
6754
  };
6703
6755
 
6704
6756
  // src/components/loading-states/LoadingAndErrorComponent.tsx
6757
+ import { clsx as clsx29 } from "clsx";
6705
6758
  import { jsx as jsx34 } from "react/jsx-runtime";
6706
6759
  var LoadingAndErrorComponent = ({
6707
6760
  children,
6708
6761
  isLoading = false,
6709
6762
  hasError = false,
6710
- errorProps,
6711
- loadingProps,
6712
- minimumLoadingDuration
6763
+ loadingComponent,
6764
+ errorComponent,
6765
+ minimumLoadingDuration,
6766
+ className
6713
6767
  }) => {
6714
6768
  const [isInMinimumLoading, setIsInMinimumLoading] = useState17(false);
6715
6769
  const [hasUsedMinimumLoading, setHasUsedMinimumLoading] = useState17(false);
@@ -6721,27 +6775,42 @@ var LoadingAndErrorComponent = ({
6721
6775
  }, minimumLoadingDuration);
6722
6776
  }
6723
6777
  if (isLoading || minimumLoadingDuration && isInMinimumLoading) {
6724
- return /* @__PURE__ */ jsx34(LoadingAnimation, { ...loadingProps });
6778
+ return loadingComponent ?? /* @__PURE__ */ jsx34(LoadingContainer, { className: clsx29(className) });
6725
6779
  }
6726
6780
  if (hasError) {
6727
- return /* @__PURE__ */ jsx34(ErrorComponent, { ...errorProps });
6781
+ return errorComponent ?? /* @__PURE__ */ jsx34(LoadingContainer, { className: clsx29("bg-negative", className) });
6728
6782
  }
6729
6783
  return children;
6730
6784
  };
6731
6785
 
6786
+ // src/components/loading-states/LoadingAnimation.tsx
6787
+ import clsx30 from "clsx";
6788
+ import { jsx as jsx35, jsxs as jsxs23 } from "react/jsx-runtime";
6789
+ var LoadingAnimation = ({
6790
+ overwriteTranslation,
6791
+ loadingText,
6792
+ classname
6793
+ }) => {
6794
+ const translation = useTranslation([formTranslation], overwriteTranslation);
6795
+ return /* @__PURE__ */ jsxs23("div", { className: clsx30("flex-col-2 items-center justify-center w-full h-24", classname), children: [
6796
+ /* @__PURE__ */ jsx35(Helpwave, { animate: "loading" }),
6797
+ loadingText ?? `${translation("loading")}...`
6798
+ ] });
6799
+ };
6800
+
6732
6801
  // src/components/loading-states/LoadingButton.tsx
6733
- import clsx29 from "clsx";
6734
- import { jsx as jsx35, jsxs as jsxs24 } from "react/jsx-runtime";
6802
+ import clsx31 from "clsx";
6803
+ import { jsx as jsx36, jsxs as jsxs24 } from "react/jsx-runtime";
6735
6804
  var LoadingButton = ({ isLoading = false, size = "medium", onClick, ...rest }) => {
6736
6805
  const paddingClass = ButtonUtil.paddingMapping[size];
6737
6806
  return /* @__PURE__ */ jsxs24("div", { className: "inline-block relative", children: [
6738
- isLoading && /* @__PURE__ */ jsx35("div", { className: clsx29("absolute inset-0 row items-center justify-center bg-white/40", paddingClass), children: /* @__PURE__ */ jsx35(Helpwave, { animate: "loading", className: "text-white" }) }),
6739
- /* @__PURE__ */ jsx35(SolidButton, { ...rest, disabled: rest.disabled, onClick: isLoading ? noop : onClick })
6807
+ isLoading && /* @__PURE__ */ jsx36("div", { className: clsx31("flex-row-2 absolute inset-0 items-center justify-center bg-white/40", paddingClass), children: /* @__PURE__ */ jsx36(Helpwave, { animate: "loading", className: "text-white" }) }),
6808
+ /* @__PURE__ */ jsx36(SolidButton, { ...rest, disabled: rest.disabled, onClick: isLoading ? noop : onClick })
6740
6809
  ] });
6741
6810
  };
6742
6811
 
6743
6812
  // src/components/loading-states/ProgressIndicator.tsx
6744
- import { jsx as jsx36, jsxs as jsxs25 } from "react/jsx-runtime";
6813
+ import { jsx as jsx37, jsxs as jsxs25 } from "react/jsx-runtime";
6745
6814
  var sizeMapping = { small: 16, medium: 24, big: 48 };
6746
6815
  var ProgressIndicator = ({
6747
6816
  progress,
@@ -6767,7 +6836,7 @@ var ProgressIndicator = ({
6767
6836
  transform: `rotate(${rotation}deg)`
6768
6837
  },
6769
6838
  children: [
6770
- /* @__PURE__ */ jsx36(
6839
+ /* @__PURE__ */ jsx37(
6771
6840
  "circle",
6772
6841
  {
6773
6842
  cx: center,
@@ -6778,7 +6847,7 @@ var ProgressIndicator = ({
6778
6847
  className: "stroke-progress-indicator-fill"
6779
6848
  }
6780
6849
  ),
6781
- /* @__PURE__ */ jsx36(
6850
+ /* @__PURE__ */ jsx37(
6782
6851
  "circle",
6783
6852
  {
6784
6853
  cx: center,
@@ -6797,8 +6866,8 @@ var ProgressIndicator = ({
6797
6866
  };
6798
6867
 
6799
6868
  // src/components/modals/ConfirmModal.tsx
6800
- import clsx30 from "clsx";
6801
- import { jsx as jsx37, jsxs as jsxs26 } from "react/jsx-runtime";
6869
+ import clsx32 from "clsx";
6870
+ import { jsx as jsx38, jsxs as jsxs26 } from "react/jsx-runtime";
6802
6871
  var ConfirmModal = ({
6803
6872
  overwriteTranslation,
6804
6873
  children,
@@ -6817,10 +6886,10 @@ var ConfirmModal = ({
6817
6886
  positive: "positive",
6818
6887
  primary: "primary"
6819
6888
  };
6820
- return /* @__PURE__ */ jsxs26(Modal, { ...restProps, onClose: onCancel, className: clsx30("justify-between", className), children: [
6821
- /* @__PURE__ */ jsx37("div", { className: "col grow", children }),
6822
- /* @__PURE__ */ jsxs26("div", { className: "row mt-3 gap-x-4 justify-end", children: [
6823
- onCancel && /* @__PURE__ */ jsx37(
6889
+ return /* @__PURE__ */ jsxs26(Modal, { ...restProps, onClose: onCancel, className: clsx32("justify-between", className), children: [
6890
+ /* @__PURE__ */ jsx38("div", { className: "flex-col-2 grow", children }),
6891
+ /* @__PURE__ */ jsxs26("div", { className: "flex-row-4 mt-3 justify-end", children: [
6892
+ onCancel && /* @__PURE__ */ jsx38(
6824
6893
  SolidButton,
6825
6894
  {
6826
6895
  color: buttonOverwrites?.[0].color ?? "neutral",
@@ -6829,7 +6898,7 @@ var ConfirmModal = ({
6829
6898
  children: buttonOverwrites?.[0].text ?? translation("cancel")
6830
6899
  }
6831
6900
  ),
6832
- onDecline && /* @__PURE__ */ jsx37(
6901
+ onDecline && /* @__PURE__ */ jsx38(
6833
6902
  SolidButton,
6834
6903
  {
6835
6904
  color: buttonOverwrites?.[1].color ?? "negative",
@@ -6838,7 +6907,7 @@ var ConfirmModal = ({
6838
6907
  children: buttonOverwrites?.[1].text ?? translation("decline")
6839
6908
  }
6840
6909
  ),
6841
- /* @__PURE__ */ jsx37(
6910
+ /* @__PURE__ */ jsx38(
6842
6911
  SolidButton,
6843
6912
  {
6844
6913
  autoFocus: true,
@@ -6853,7 +6922,7 @@ var ConfirmModal = ({
6853
6922
  };
6854
6923
 
6855
6924
  // src/components/modals/DiscardChangesModal.tsx
6856
- import { jsx as jsx38 } from "react/jsx-runtime";
6925
+ import { jsx as jsx39 } from "react/jsx-runtime";
6857
6926
  var DiscardChangesModal = ({
6858
6927
  overwriteTranslation,
6859
6928
  children,
@@ -6864,7 +6933,7 @@ var DiscardChangesModal = ({
6864
6933
  ...modalProps
6865
6934
  }) => {
6866
6935
  const translation = useTranslation([formTranslation], overwriteTranslation);
6867
- return /* @__PURE__ */ jsx38(
6936
+ return /* @__PURE__ */ jsx39(
6868
6937
  ConfirmModal,
6869
6938
  {
6870
6939
  headerProps: {
@@ -6883,26 +6952,34 @@ var DiscardChangesModal = ({
6883
6952
  };
6884
6953
 
6885
6954
  // src/components/modals/InputModal.tsx
6886
- import { jsx as jsx39 } from "react/jsx-runtime";
6955
+ import { jsx as jsx40 } from "react/jsx-runtime";
6887
6956
  var InputModal = ({
6888
6957
  inputs,
6889
6958
  buttonOverwrites,
6890
6959
  ...restProps
6891
6960
  }) => {
6892
- return /* @__PURE__ */ jsx39(
6961
+ return /* @__PURE__ */ jsx40(
6893
6962
  ConfirmModal,
6894
6963
  {
6895
6964
  buttonOverwrites,
6896
6965
  ...restProps,
6897
- children: inputs.map((inputProps, index) => /* @__PURE__ */ jsx39(Input, { ...inputProps }, `input ${index}`))
6966
+ children: inputs.map((inputProps, index) => /* @__PURE__ */ jsx40(Input, { ...inputProps }, `input ${index}`))
6898
6967
  }
6899
6968
  );
6900
6969
  };
6901
6970
 
6902
6971
  // src/components/user-action/Select.tsx
6903
- import { ChevronDown as ChevronDown4, ChevronUp as ChevronUp3 } from "lucide-react";
6904
- import { useEffect as useEffect19, useRef as useRef6, useState as useState18 } from "react";
6905
- import clsx31 from "clsx";
6972
+ import { useCallback as useCallback7 } from "react";
6973
+ import { useEffect as useEffect20, useState as useState19 } from "react";
6974
+ import clsx35 from "clsx";
6975
+
6976
+ // src/components/user-action/Menu.tsx
6977
+ import {
6978
+ useEffect as useEffect19,
6979
+ useRef as useRef6,
6980
+ useState as useState18
6981
+ } from "react";
6982
+ import clsx33 from "clsx";
6906
6983
 
6907
6984
  // src/hooks/useOutsideClick.ts
6908
6985
  import { useEffect as useEffect18 } from "react";
@@ -6924,83 +7001,305 @@ var useOutsideClick = (refs, handler) => {
6924
7001
  }, [refs, handler]);
6925
7002
  };
6926
7003
 
7004
+ // src/util/PropsWithFunctionChildren.ts
7005
+ var resolve = (children, bag) => {
7006
+ if (typeof children === "function") {
7007
+ return children(bag);
7008
+ }
7009
+ return children ?? void 0;
7010
+ };
7011
+ var BagFunctionUtil = {
7012
+ resolve
7013
+ };
7014
+
7015
+ // src/hooks/usePopoverPosition.ts
7016
+ var defaultPopoverPositionOptions = {
7017
+ edgePadding: 16,
7018
+ outerGap: 4,
7019
+ horizontalAlignment: "leftInside",
7020
+ verticalAlignment: "bottomOutside",
7021
+ disabled: false
7022
+ };
7023
+ var usePopoverPosition = (trigger, options) => {
7024
+ const {
7025
+ edgePadding,
7026
+ outerGap,
7027
+ verticalAlignment,
7028
+ horizontalAlignment,
7029
+ disabled
7030
+ } = { ...defaultPopoverPositionOptions, ...options };
7031
+ if (disabled || !trigger) {
7032
+ return {};
7033
+ }
7034
+ const left = {
7035
+ leftOutside: trigger.left - outerGap,
7036
+ leftInside: trigger.left,
7037
+ rightOutside: trigger.right + outerGap,
7038
+ rightInside: trigger.right,
7039
+ center: trigger.left + trigger.width / 2
7040
+ }[horizontalAlignment];
7041
+ const top = {
7042
+ topOutside: trigger.top - outerGap,
7043
+ topInside: trigger.top,
7044
+ bottomOutside: trigger.bottom + outerGap,
7045
+ bottomInside: trigger.bottom,
7046
+ center: trigger.top + trigger.height / 2
7047
+ }[verticalAlignment];
7048
+ const translateX = {
7049
+ leftOutside: "-100%",
7050
+ leftInside: void 0,
7051
+ rightOutside: void 0,
7052
+ rightInside: "-100%",
7053
+ center: "-50%"
7054
+ }[horizontalAlignment];
7055
+ const translateY = {
7056
+ topOutside: "-100%",
7057
+ topInside: void 0,
7058
+ bottomOutside: void 0,
7059
+ bottomInside: "-100%",
7060
+ center: "-50%"
7061
+ }[verticalAlignment];
7062
+ return {
7063
+ left: Math.max(left, edgePadding),
7064
+ top: Math.max(top, edgePadding),
7065
+ translate: [translateX ?? "0", translateY ?? "0"].join(" ")
7066
+ };
7067
+ };
7068
+
7069
+ // src/components/user-action/Menu.tsx
7070
+ import { createPortal } from "react-dom";
7071
+ import { Fragment as Fragment3, jsx as jsx41, jsxs as jsxs27 } from "react/jsx-runtime";
7072
+ var MenuItem = ({
7073
+ children,
7074
+ onClick,
7075
+ alignment = "left",
7076
+ isDisabled = false,
7077
+ className
7078
+ }) => /* @__PURE__ */ jsx41(
7079
+ "div",
7080
+ {
7081
+ className: clsx33("block px-3 py-1.5 first:rounded-t-md last:rounded-b-md text-sm font-semibold", {
7082
+ "text-right": alignment === "right",
7083
+ "text-left": alignment === "left",
7084
+ "text-disabled-text cursor-not-allowed": isDisabled,
7085
+ "text-menu-text hover:bg-primary/20": !isDisabled,
7086
+ "cursor-pointer": !!onClick
7087
+ }, className),
7088
+ onClick,
7089
+ children
7090
+ }
7091
+ );
7092
+ function getScrollableParents(element) {
7093
+ const scrollables = [];
7094
+ let parent = element.parentElement;
7095
+ while (parent) {
7096
+ scrollables.push(parent);
7097
+ parent = parent.parentElement;
7098
+ }
7099
+ return scrollables;
7100
+ }
7101
+ var Menu = ({
7102
+ trigger,
7103
+ children,
7104
+ alignmentHorizontal = "leftInside",
7105
+ alignmentVertical = "bottomOutside",
7106
+ showOnHover = false,
7107
+ disabled = false,
7108
+ menuClassName = ""
7109
+ }) => {
7110
+ const { isHovered: isOpen, setIsHovered: setIsOpen } = useHoverState({ isDisabled: !showOnHover || disabled });
7111
+ const triggerRef = useRef6(null);
7112
+ const menuRef = useRef6(null);
7113
+ useOutsideClick([triggerRef, menuRef], () => setIsOpen(false));
7114
+ const [isHidden, setIsHidden] = useState18(true);
7115
+ const bag = {
7116
+ isOpen,
7117
+ close: () => setIsOpen(false),
7118
+ toggleOpen: () => setIsOpen((prevState) => !prevState),
7119
+ disabled
7120
+ };
7121
+ const menuPosition = usePopoverPosition(
7122
+ triggerRef.current?.getBoundingClientRect(),
7123
+ { verticalAlignment: alignmentVertical, horizontalAlignment: alignmentHorizontal, disabled }
7124
+ );
7125
+ useEffect19(() => {
7126
+ if (!isOpen) return;
7127
+ const triggerEl = triggerRef.current;
7128
+ if (!triggerEl) return;
7129
+ const scrollableParents = getScrollableParents(triggerEl);
7130
+ const close = () => setIsOpen(false);
7131
+ scrollableParents.forEach((parent) => {
7132
+ parent.addEventListener("scroll", close);
7133
+ });
7134
+ window.addEventListener("resize", close);
7135
+ return () => {
7136
+ scrollableParents.forEach((parent) => {
7137
+ parent.removeEventListener("scroll", close);
7138
+ });
7139
+ window.removeEventListener("resize", close);
7140
+ };
7141
+ }, [isOpen, setIsOpen]);
7142
+ useEffect19(() => {
7143
+ if (isOpen) {
7144
+ setIsHidden(false);
7145
+ }
7146
+ }, [isOpen]);
7147
+ return /* @__PURE__ */ jsxs27(Fragment3, { children: [
7148
+ trigger(bag, triggerRef),
7149
+ createPortal(/* @__PURE__ */ jsx41(
7150
+ "div",
7151
+ {
7152
+ ref: menuRef,
7153
+ onClick: (e) => e.stopPropagation(),
7154
+ className: clsx33(
7155
+ "absolute rounded-md bg-menu-background text-menu-text shadow-around-lg z-10",
7156
+ {
7157
+ "animate-pop-in": isOpen,
7158
+ "animate-pop-out": !isOpen,
7159
+ "hidden": isHidden
7160
+ },
7161
+ menuClassName
7162
+ ),
7163
+ onAnimationEnd: () => {
7164
+ if (!isOpen) {
7165
+ setIsHidden(true);
7166
+ }
7167
+ },
7168
+ style: {
7169
+ ...menuPosition
7170
+ },
7171
+ children: BagFunctionUtil.resolve(children, bag)
7172
+ }
7173
+ ), document.body)
7174
+ ] });
7175
+ };
7176
+
7177
+ // src/components/user-action/SearchBar.tsx
7178
+ import { Search as Search2 } from "lucide-react";
7179
+ import { clsx as clsx34 } from "clsx";
7180
+ import { jsx as jsx42, jsxs as jsxs28 } from "react/jsx-runtime";
7181
+ var SearchBar = ({
7182
+ placeholder,
7183
+ onSearch,
7184
+ disableOnSearch,
7185
+ containerClassName,
7186
+ ...inputProps
7187
+ }) => {
7188
+ const translation = useTranslation([formTranslation]);
7189
+ return /* @__PURE__ */ jsxs28("div", { className: clsx34("flex-row-2 justify-between items-center", containerClassName), children: [
7190
+ /* @__PURE__ */ jsx42(
7191
+ Input,
7192
+ {
7193
+ ...inputProps,
7194
+ placeholder: placeholder ?? translation("search")
7195
+ }
7196
+ ),
7197
+ onSearch && /* @__PURE__ */ jsx42(IconButton, { color: "neutral", disabled: disableOnSearch, onClick: onSearch, children: /* @__PURE__ */ jsx42(Search2, { className: "w-full h-full" }) })
7198
+ ] });
7199
+ };
7200
+
6927
7201
  // src/components/user-action/Select.tsx
6928
- import { jsx as jsx40, jsxs as jsxs27 } from "react/jsx-runtime";
7202
+ import { Fragment as Fragment4, jsx as jsx43, jsxs as jsxs29 } from "react/jsx-runtime";
7203
+ var SelectTile = ({
7204
+ className,
7205
+ disabledClassName,
7206
+ title,
7207
+ ...restProps
7208
+ }) => {
7209
+ return /* @__PURE__ */ jsx43(
7210
+ Tile,
7211
+ {
7212
+ ...restProps,
7213
+ className: clsx35("px-2 py-1 rounded-md", className),
7214
+ disabledClassName: disabledClassName ?? "text-disabled-text cursor-not-allowed",
7215
+ title: { ...title, className: title.className ?? "font-semibold" }
7216
+ }
7217
+ );
7218
+ };
6929
7219
  var Select = ({
6930
7220
  value,
6931
7221
  label,
6932
7222
  options,
6933
7223
  onChange,
6934
7224
  hintText = "",
6935
- isDisabled,
6936
- isSearchEnabled = false,
7225
+ selectedDisplayOverwrite,
7226
+ searchOptions,
7227
+ additionalItems,
6937
7228
  className,
6938
- selectedDisplayOverwrite
7229
+ triggerClassName,
7230
+ hintTextClassName,
7231
+ ...menuProps
6939
7232
  }) => {
6940
- const triggerRef = useRef6(null);
6941
- const menuRef = useRef6(null);
6942
- const [isOpen, setIsOpen] = useState18(false);
6943
- useOutsideClick([triggerRef, menuRef], () => setIsOpen(false));
6944
7233
  const selectedOption = options.find((option) => option.value === value);
6945
7234
  if (value !== void 0 && selectedOption === void 0 && selectedDisplayOverwrite === void 0) {
6946
7235
  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");
6947
7236
  }
6948
7237
  const isShowingHint = !selectedDisplayOverwrite && !selectedOption?.label;
6949
- return /* @__PURE__ */ jsxs27("div", { className: clsx31(className), children: [
6950
- label && /* @__PURE__ */ jsx40(Label, { ...label, labelType: label.labelType ?? "labelBig", className: clsx31("mb-1", label.className) }),
6951
- /* @__PURE__ */ jsxs27("div", { className: "relative", children: [
6952
- /* @__PURE__ */ jsxs27(
6953
- "button",
6954
- {
6955
- ref: triggerRef,
6956
- className: clsx31(
6957
- "btn-md justify-between w-full border-2",
6958
- {
6959
- "rounded-b-lg": !open,
6960
- "bg-menu-background border-menu-border hover:border-primary": !isDisabled,
6961
- "bg-disabled-background text-disabled-text border-disabled-background cursor-not-allowed": isDisabled
6962
- }
6963
- ),
6964
- onClick: () => setIsOpen(!isOpen),
6965
- disabled: isDisabled,
6966
- children: [
6967
- !isShowingHint && /* @__PURE__ */ jsx40("span", { className: "font-semibold text-menu-text", children: selectedDisplayOverwrite ?? selectedOption?.label }),
6968
- isShowingHint && /* @__PURE__ */ jsx40("span", { className: "textstyle-description", children: hintText }),
6969
- isOpen ? /* @__PURE__ */ jsx40(ChevronUp3, {}) : /* @__PURE__ */ jsx40(ChevronDown4, {})
6970
- ]
6971
- }
6972
- ),
6973
- isOpen && /* @__PURE__ */ jsx40(
6974
- "div",
6975
- {
6976
- ref: menuRef,
6977
- className: "absolute w-full z-10 rounded-lg mt-0.5 bg-menu-background text-menu-text shadow-around-lg max-h-[500px] overflow-y-auto p-2",
6978
- children: /* @__PURE__ */ jsx40(
6979
- SearchableList,
6980
- {
6981
- list: options,
6982
- minimumItemsForSearch: isSearchEnabled ? void 0 : options.length,
6983
- searchMapping: (item) => item.searchTags,
6984
- itemMapper: (option, index) => /* @__PURE__ */ jsx40(
6985
- Tile,
7238
+ const { result, search, setSearch } = useSearch({
7239
+ list: options,
7240
+ searchMapping: useCallback7((item) => item.searchTags, []),
7241
+ ...searchOptions
7242
+ });
7243
+ return /* @__PURE__ */ jsxs29("div", { className: clsx35(className), children: [
7244
+ label && /* @__PURE__ */ jsx43(Label, { ...label, labelType: label.labelType ?? "labelBig", className: clsx35("mb-1", label.className) }),
7245
+ /* @__PURE__ */ jsx43(
7246
+ Menu,
7247
+ {
7248
+ ...menuProps,
7249
+ trigger: ({ toggleOpen, isOpen, disabled }, ref) => /* @__PURE__ */ jsxs29(
7250
+ "button",
7251
+ {
7252
+ ref,
7253
+ className: clsx35(
7254
+ "btn-md justify-between w-full border-2",
7255
+ {
7256
+ "rounded-b-lg": !open,
7257
+ "bg-menu-background text-menu-text border-menu-border hover:border-primary": !disabled,
7258
+ "bg-disabled-background text-disabled-text border-disabled-background cursor-not-allowed": disabled
7259
+ },
7260
+ triggerClassName
7261
+ ),
7262
+ onClick: toggleOpen,
7263
+ disabled,
7264
+ children: [
7265
+ !isShowingHint && /* @__PURE__ */ jsx43("span", { className: "font-semibold", children: selectedDisplayOverwrite ?? selectedOption?.label }),
7266
+ isShowingHint && /* @__PURE__ */ jsx43("span", { className: clsx35("textstyle-description", hintTextClassName), children: hintText }),
7267
+ /* @__PURE__ */ jsx43(ExpansionIcon, { isExpanded: isOpen })
7268
+ ]
7269
+ }
7270
+ ),
7271
+ menuClassName: clsx35("flex-col-2 p-2 max-h-96 overflow-hidden", menuProps.menuClassName),
7272
+ children: (bag) => {
7273
+ const { close } = bag;
7274
+ return /* @__PURE__ */ jsxs29(Fragment4, { children: [
7275
+ !searchOptions?.disabled && /* @__PURE__ */ jsx43(
7276
+ SearchBar,
7277
+ {
7278
+ value: search,
7279
+ onChangeText: setSearch,
7280
+ autoFocus: true
7281
+ }
7282
+ ),
7283
+ /* @__PURE__ */ jsxs29("div", { className: "flex-col-2 overflow-y-auto", children: [
7284
+ result.map((option, index) => /* @__PURE__ */ jsx43(
7285
+ SelectTile,
6986
7286
  {
6987
- isSelected: selectedOption?.value === option.value,
6988
- className: "px-2 py-1 rounded-md",
6989
- disabledClassName: "text-disabled-text cursor-not-allowed",
6990
- title: { value: option.label, className: "font-semibold" },
7287
+ isSelected: option === selectedOption,
7288
+ title: { value: option.label },
6991
7289
  onClick: () => {
6992
7290
  onChange(option.value);
6993
- setIsOpen(false);
7291
+ close();
6994
7292
  },
6995
- isDisabled: option.disabled
7293
+ disabled: option.disabled
6996
7294
  },
6997
7295
  index
6998
- )
6999
- }
7000
- )
7296
+ )),
7297
+ additionalItems && additionalItems({ ...bag, search, selected: value })
7298
+ ] })
7299
+ ] });
7001
7300
  }
7002
- )
7003
- ] })
7301
+ }
7302
+ )
7004
7303
  ] });
7005
7304
  };
7006
7305
  var SelectUncontrolled = ({
@@ -7010,13 +7309,13 @@ var SelectUncontrolled = ({
7010
7309
  hintText,
7011
7310
  ...props
7012
7311
  }) => {
7013
- const [selected, setSelected] = useState18(value);
7014
- useEffect19(() => {
7312
+ const [selected, setSelected] = useState19(value);
7313
+ useEffect20(() => {
7015
7314
  if (options.find((options2) => options2.value === value)) {
7016
7315
  setSelected(value);
7017
7316
  }
7018
7317
  }, [options, value]);
7019
- return /* @__PURE__ */ jsx40(
7318
+ return /* @__PURE__ */ jsx43(
7020
7319
  Select,
7021
7320
  {
7022
7321
  value: selected,
@@ -7032,7 +7331,7 @@ var SelectUncontrolled = ({
7032
7331
  };
7033
7332
 
7034
7333
  // src/components/modals/LanguageModal.tsx
7035
- import { jsx as jsx41, jsxs as jsxs28 } from "react/jsx-runtime";
7334
+ import { jsx as jsx44, jsxs as jsxs30 } from "react/jsx-runtime";
7036
7335
  var defaultLanguageModalTranslation = {
7037
7336
  en: {
7038
7337
  language: "Language",
@@ -7055,7 +7354,7 @@ var LanguageModal = ({
7055
7354
  }) => {
7056
7355
  const { language, setLanguage } = useLanguage();
7057
7356
  const translation = useTranslation([defaultLanguageModalTranslation], overwriteTranslation);
7058
- return /* @__PURE__ */ jsx41(
7357
+ return /* @__PURE__ */ jsx44(
7059
7358
  Modal,
7060
7359
  {
7061
7360
  headerProps: {
@@ -7065,8 +7364,8 @@ var LanguageModal = ({
7065
7364
  },
7066
7365
  onClose,
7067
7366
  ...modalProps,
7068
- children: /* @__PURE__ */ jsxs28("div", { className: "w-64", children: [
7069
- /* @__PURE__ */ jsx41(
7367
+ children: /* @__PURE__ */ jsxs30("div", { className: "w-64", children: [
7368
+ /* @__PURE__ */ jsx44(
7070
7369
  Select,
7071
7370
  {
7072
7371
  className: "mt-2",
@@ -7075,15 +7374,15 @@ var LanguageModal = ({
7075
7374
  onChange: (language2) => setLanguage(language2)
7076
7375
  }
7077
7376
  ),
7078
- /* @__PURE__ */ jsx41("div", { className: "row mt-3 gap-x-4 justify-end", children: /* @__PURE__ */ jsx41(SolidButton, { autoFocus: true, color: "positive", onClick: onClose, children: translation("done") }) })
7377
+ /* @__PURE__ */ jsx44("div", { className: "flex-row-4 mt-3 justify-end", children: /* @__PURE__ */ jsx44(SolidButton, { autoFocus: true, color: "positive", onClick: onClose, children: translation("done") }) })
7079
7378
  ] })
7080
7379
  }
7081
7380
  );
7082
7381
  };
7083
7382
 
7084
7383
  // src/theming/useTheme.tsx
7085
- import { createContext as createContext2, useContext as useContext2, useEffect as useEffect20, useState as useState19 } from "react";
7086
- import { jsx as jsx42 } from "react/jsx-runtime";
7384
+ import { createContext as createContext2, useContext as useContext2, useEffect as useEffect21, useState as useState20 } from "react";
7385
+ import { jsx as jsx45 } from "react/jsx-runtime";
7087
7386
  var themes = ["light", "dark"];
7088
7387
  var defaultThemeTypeTranslation = {
7089
7388
  en: {
@@ -7112,22 +7411,22 @@ var ThemeContext = createContext2({
7112
7411
  setTheme: noop
7113
7412
  });
7114
7413
  var ThemeProvider = ({ children, initialTheme = "light" }) => {
7115
- const [theme, setTheme] = useState19(initialTheme);
7116
- useEffect20(() => {
7414
+ const [theme, setTheme] = useState20(initialTheme);
7415
+ useEffect21(() => {
7117
7416
  if (theme !== initialTheme) {
7118
7417
  console.warn("ThemeProvider initial state changed: Prefer using useTheme's setTheme instead");
7119
7418
  setTheme(initialTheme);
7120
7419
  }
7121
7420
  }, [initialTheme]);
7122
- useEffect20(() => {
7421
+ useEffect21(() => {
7123
7422
  document.documentElement.setAttribute("data-theme", theme);
7124
7423
  }, [theme]);
7125
- return /* @__PURE__ */ jsx42(ThemeContext.Provider, { value: { theme, setTheme }, children });
7424
+ return /* @__PURE__ */ jsx45(ThemeContext.Provider, { value: { theme, setTheme }, children });
7126
7425
  };
7127
7426
  var useTheme = () => useContext2(ThemeContext);
7128
7427
 
7129
7428
  // src/components/modals/ThemeModal.tsx
7130
- import { jsx as jsx43, jsxs as jsxs29 } from "react/jsx-runtime";
7429
+ import { jsx as jsx46, jsxs as jsxs31 } from "react/jsx-runtime";
7131
7430
  var defaultConfirmDialogTranslation = {
7132
7431
  en: {
7133
7432
  chooseTheme: "Choose your preferred theme"
@@ -7144,7 +7443,7 @@ var ThemeModal = ({
7144
7443
  }) => {
7145
7444
  const { theme, setTheme } = useTheme();
7146
7445
  const translation = useTranslation([defaultConfirmDialogTranslation, formTranslation, ThemeUtil.translation], overwriteTranslation);
7147
- return /* @__PURE__ */ jsx43(
7446
+ return /* @__PURE__ */ jsx46(
7148
7447
  Modal,
7149
7448
  {
7150
7449
  headerProps: {
@@ -7154,8 +7453,8 @@ var ThemeModal = ({
7154
7453
  },
7155
7454
  onClose,
7156
7455
  ...modalProps,
7157
- children: /* @__PURE__ */ jsxs29("div", { className: "w-64", children: [
7158
- /* @__PURE__ */ jsx43(
7456
+ children: /* @__PURE__ */ jsxs31("div", { className: "w-64", children: [
7457
+ /* @__PURE__ */ jsx46(
7159
7458
  Select,
7160
7459
  {
7161
7460
  className: "mt-2",
@@ -7164,7 +7463,7 @@ var ThemeModal = ({
7164
7463
  onChange: (theme2) => setTheme(theme2)
7165
7464
  }
7166
7465
  ),
7167
- /* @__PURE__ */ jsx43("div", { className: "row mt-3 gap-x-4 justify-end", children: /* @__PURE__ */ jsx43(SolidButton, { autoFocus: true, color: "positive", onClick: onClose, children: translation("done") }) })
7466
+ /* @__PURE__ */ jsx46("div", { className: "flex-row-4 mt-3 justify-end", children: /* @__PURE__ */ jsx46(SolidButton, { autoFocus: true, color: "positive", onClick: onClose, children: translation("done") }) })
7168
7467
  ] })
7169
7468
  }
7170
7469
  );
@@ -7174,18 +7473,18 @@ var ThemeModal = ({
7174
7473
  import { Check as Check4 } from "lucide-react";
7175
7474
 
7176
7475
  // src/components/user-action/Checkbox.tsx
7177
- import { useState as useState20 } from "react";
7476
+ import { useState as useState21 } from "react";
7178
7477
  import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
7179
7478
  import { Check as Check3, Minus } from "lucide-react";
7180
- import clsx32 from "clsx";
7181
- import { jsx as jsx44, jsxs as jsxs30 } from "react/jsx-runtime";
7479
+ import clsx36 from "clsx";
7480
+ import { jsx as jsx47, jsxs as jsxs32 } from "react/jsx-runtime";
7182
7481
  var checkboxSizeMapping = {
7183
- small: "size-4",
7482
+ small: "size-5",
7184
7483
  medium: "size-6",
7185
7484
  large: "size-8"
7186
7485
  };
7187
7486
  var checkboxIconSizeMapping = {
7188
- small: "size-3",
7487
+ small: "size-4",
7189
7488
  medium: "size-5",
7190
7489
  large: "size-7"
7191
7490
  };
@@ -7214,36 +7513,27 @@ var Checkbox = ({
7214
7513
  const newValue = checked === "indeterminate" ? false : !checked;
7215
7514
  propagateChange(newValue);
7216
7515
  };
7217
- return /* @__PURE__ */ jsxs30("div", { className: clsx32("row justify-center items-center", containerClassName), children: [
7218
- /* @__PURE__ */ jsx44(
7516
+ return /* @__PURE__ */ jsxs32("div", { className: clsx36("group flex-row-2 items-center cursor-pointer", containerClassName), onClick: changeValue, children: [
7517
+ /* @__PURE__ */ jsx47(
7219
7518
  CheckboxPrimitive.Root,
7220
7519
  {
7221
7520
  onCheckedChange: propagateChange,
7222
7521
  checked,
7223
7522
  disabled,
7224
7523
  id,
7225
- className: clsx32(usedSizeClass, `items-center border-2 rounded outline-none `, {
7524
+ className: clsx36(usedSizeClass, `items-center border-2 rounded outline-none `, {
7226
7525
  "text-disabled-text border-disabled-outline bg-disabled-background cursor-not-allowed": disabled,
7227
- "focus:border-primary": !disabled,
7526
+ "focus:border-primary group-hover:border-primary ": !disabled,
7228
7527
  "bg-surface": !disabled && !checked,
7229
- "bg-primary/30 border-primary text-primary": !disabled && checked === true || checked === "indeterminate",
7230
- "hover:border-primary focus:hover:border-primary": !disabled && !checked
7528
+ "bg-primary/30 border-primary text-primary": !disabled && checked === true || checked === "indeterminate"
7231
7529
  }, className),
7232
- children: /* @__PURE__ */ jsxs30(CheckboxPrimitive.Indicator, { children: [
7233
- checked === true && /* @__PURE__ */ jsx44(Check3, { className: innerIconSize }),
7234
- checked === "indeterminate" && /* @__PURE__ */ jsx44(Minus, { className: innerIconSize })
7530
+ children: /* @__PURE__ */ jsxs32(CheckboxPrimitive.Indicator, { children: [
7531
+ checked === true && /* @__PURE__ */ jsx47(Check3, { className: innerIconSize }),
7532
+ checked === "indeterminate" && /* @__PURE__ */ jsx47(Minus, { className: innerIconSize })
7235
7533
  ] })
7236
7534
  }
7237
7535
  ),
7238
- label && /* @__PURE__ */ jsx44(
7239
- Label,
7240
- {
7241
- ...label,
7242
- className: clsx32("cursor-pointer", label.className),
7243
- htmlFor: id,
7244
- onClick: changeValue
7245
- }
7246
- )
7536
+ label && /* @__PURE__ */ jsx47(Label, { ...label, className: clsx36(label.className), htmlFor: id })
7247
7537
  ] });
7248
7538
  };
7249
7539
  var CheckboxUncontrolled = ({
@@ -7252,7 +7542,7 @@ var CheckboxUncontrolled = ({
7252
7542
  defaultValue = false,
7253
7543
  ...props
7254
7544
  }) => {
7255
- const [checked, setChecked] = useState20(defaultValue);
7545
+ const [checked, setChecked] = useState21(defaultValue);
7256
7546
  const handleChange = (checked2) => {
7257
7547
  if (onChangeTristate) {
7258
7548
  onChangeTristate(checked2);
@@ -7262,7 +7552,7 @@ var CheckboxUncontrolled = ({
7262
7552
  }
7263
7553
  setChecked(checked2);
7264
7554
  };
7265
- return /* @__PURE__ */ jsx44(
7555
+ return /* @__PURE__ */ jsx47(
7266
7556
  Checkbox,
7267
7557
  {
7268
7558
  ...props,
@@ -7274,8 +7564,8 @@ var CheckboxUncontrolled = ({
7274
7564
 
7275
7565
  // src/components/properties/PropertyBase.tsx
7276
7566
  import { AlertTriangle } from "lucide-react";
7277
- import clsx33 from "clsx";
7278
- import { jsx as jsx45, jsxs as jsxs31 } from "react/jsx-runtime";
7567
+ import clsx37 from "clsx";
7568
+ import { jsx as jsx48, jsxs as jsxs33 } from "react/jsx-runtime";
7279
7569
  var PropertyBase = ({
7280
7570
  overwriteTranslation,
7281
7571
  name,
@@ -7289,36 +7579,44 @@ var PropertyBase = ({
7289
7579
  }) => {
7290
7580
  const translation = useTranslation([formTranslation], overwriteTranslation);
7291
7581
  const requiredAndNoValue = softRequired && !hasValue;
7292
- return /* @__PURE__ */ jsxs31("div", { className: clsx33("row gap-x-0 group", className), children: [
7293
- /* @__PURE__ */ jsxs31(
7582
+ return /* @__PURE__ */ jsxs33("div", { className: clsx37("flex-row-0 group", className), children: [
7583
+ /* @__PURE__ */ jsxs33(
7294
7584
  "div",
7295
7585
  {
7296
- className: clsx33("row gap-x-2 !w-[200px] px-4 py-2 items-center rounded-l-xl border-2 border-r-0", {
7297
- "bg-property-title-background property-title-text group-hover:border-primary": !requiredAndNoValue,
7298
- "bg-warning text-surface-warning group-hover:border-warning border-warning/90": requiredAndNoValue
7299
- }, className),
7586
+ className: clsx37(
7587
+ "flex-row-2 max-w-48 min-w-48 px-3 py-2 items-center rounded-l-xl border-2 border-r-0",
7588
+ {
7589
+ "bg-property-title-background text-property-title-text group-hover:border-primary": !requiredAndNoValue,
7590
+ "bg-warning text-surface-warning group-hover:border-warning border-warning/90": requiredAndNoValue
7591
+ },
7592
+ className
7593
+ ),
7300
7594
  children: [
7301
- icon,
7302
- name
7595
+ /* @__PURE__ */ jsx48("div", { className: "max-w-6 min-w-6 text-text-default", children: icon }),
7596
+ /* @__PURE__ */ jsx48("span", { className: "font-semibold", children: name })
7303
7597
  ]
7304
7598
  }
7305
7599
  ),
7306
- /* @__PURE__ */ jsxs31(
7600
+ /* @__PURE__ */ jsxs33(
7307
7601
  "div",
7308
7602
  {
7309
- className: clsx33("row gap-x-0 grow justify-between items-center rounded-r-xl border-2 border-l-0", {
7310
- "bg-surface group-hover:border-primary": !requiredAndNoValue,
7311
- "bg-surface-warning group-hover:border-warning border-warning/90": requiredAndNoValue
7312
- }, className),
7603
+ className: clsx37(
7604
+ "flex-row-2 grow px-3 py-2 justify-between items-center rounded-r-xl border-2 border-l-0 min-h-15",
7605
+ {
7606
+ "bg-surface group-hover:border-primary": !requiredAndNoValue,
7607
+ "bg-surface-warning group-hover:border-warning border-warning/90": requiredAndNoValue
7608
+ },
7609
+ className
7610
+ ),
7313
7611
  children: [
7314
7612
  input({ softRequired, hasValue }),
7315
- requiredAndNoValue && /* @__PURE__ */ jsx45("div", { className: "text-warning pr-4", children: /* @__PURE__ */ jsx45(AlertTriangle, { size: 24 }) }),
7316
- onRemove && /* @__PURE__ */ jsx45(
7613
+ requiredAndNoValue && /* @__PURE__ */ jsx48("div", { className: "text-warning", children: /* @__PURE__ */ jsx48(AlertTriangle, { size: 24 }) }),
7614
+ onRemove && hasValue && /* @__PURE__ */ jsx48(
7317
7615
  TextButton,
7318
7616
  {
7319
7617
  onClick: onRemove,
7320
7618
  color: "negative",
7321
- className: clsx33("pr-4 items-center", { "!text-transparent": !hasValue || readOnly }),
7619
+ className: clsx37("items-center", { "!text-transparent": !hasValue || readOnly }),
7322
7620
  disabled: !hasValue || readOnly,
7323
7621
  children: translation("remove")
7324
7622
  }
@@ -7330,7 +7628,7 @@ var PropertyBase = ({
7330
7628
  };
7331
7629
 
7332
7630
  // src/components/properties/CheckboxProperty.tsx
7333
- import { jsx as jsx46 } from "react/jsx-runtime";
7631
+ import { jsx as jsx49 } from "react/jsx-runtime";
7334
7632
  var CheckboxProperty = ({
7335
7633
  overwriteTranslation,
7336
7634
  value,
@@ -7339,30 +7637,31 @@ var CheckboxProperty = ({
7339
7637
  ...baseProps
7340
7638
  }) => {
7341
7639
  const translation = useTranslation([formTranslation], overwriteTranslation);
7342
- return /* @__PURE__ */ jsx46(
7640
+ return /* @__PURE__ */ jsx49(
7343
7641
  PropertyBase,
7344
7642
  {
7345
7643
  ...baseProps,
7346
7644
  hasValue: true,
7347
7645
  readOnly,
7348
- icon: /* @__PURE__ */ jsx46(Check4, { size: 16 }),
7349
- input: () => /* @__PURE__ */ jsx46("div", { className: "row py-2 px-4 items-center", children: /* @__PURE__ */ jsx46(
7646
+ icon: /* @__PURE__ */ jsx49(Check4, { size: 24 }),
7647
+ input: () => /* @__PURE__ */ jsx49(
7350
7648
  Checkbox,
7351
7649
  {
7352
7650
  checked: value ?? true,
7353
7651
  disabled: readOnly,
7354
7652
  onChange,
7355
- label: { name: `${translation("yes")}/${translation("no")}`, labelType: "labelMedium" }
7653
+ label: { name: `${translation("yes")}/${translation("no")}`, labelType: "labelMedium" },
7654
+ containerClassName: "w-full"
7356
7655
  }
7357
- ) })
7656
+ )
7358
7657
  }
7359
7658
  );
7360
7659
  };
7361
7660
 
7362
7661
  // src/components/properties/DateProperty.tsx
7363
7662
  import { CalendarDays } from "lucide-react";
7364
- import clsx34 from "clsx";
7365
- import { jsx as jsx47 } from "react/jsx-runtime";
7663
+ import clsx38 from "clsx";
7664
+ import { jsx as jsx50 } from "react/jsx-runtime";
7366
7665
  var DateProperty = ({
7367
7666
  value,
7368
7667
  onChange = noop,
@@ -7373,35 +7672,29 @@ var DateProperty = ({
7373
7672
  }) => {
7374
7673
  const hasValue = !!value;
7375
7674
  const dateText = value ? type === "dateTime" ? formatDateTime(value) : formatDate(value) : "";
7376
- return /* @__PURE__ */ jsx47(
7675
+ return /* @__PURE__ */ jsx50(
7377
7676
  PropertyBase,
7378
7677
  {
7379
7678
  ...baseProps,
7380
7679
  hasValue,
7381
- icon: /* @__PURE__ */ jsx47(CalendarDays, { size: 16 }),
7382
- input: ({ softRequired }) => /* @__PURE__ */ jsx47(
7383
- "div",
7680
+ icon: /* @__PURE__ */ jsx50(CalendarDays, { size: 24 }),
7681
+ input: ({ softRequired }) => /* @__PURE__ */ jsx50(
7682
+ Input,
7384
7683
  {
7385
- className: clsx34("row grow py-2 px-4 cursor-pointer", { "text-warning": softRequired && !hasValue }),
7386
- children: /* @__PURE__ */ jsx47(
7387
- Input,
7388
- {
7389
- className: clsx34("!ring-0 !border-0 !outline-0 !p-0 !m-0 !shadow-none !w-fit !rounded-none", { "bg-surface-warning": softRequired && !hasValue }),
7390
- value: dateText,
7391
- type: type === "dateTime" ? "datetime-local" : "date",
7392
- readOnly,
7393
- onChange: (event) => {
7394
- const value2 = event.target.value;
7395
- if (!value2) {
7396
- event.preventDefault();
7397
- return;
7398
- }
7399
- const dueDate = new Date(value2);
7400
- onChange(dueDate);
7401
- },
7402
- onEditCompleted: (value2) => onEditComplete(new Date(value2))
7684
+ className: clsx38("!ring-0 !border-0 !outline-0 !p-0 !m-0 !shadow-none !w-fit !rounded-none", { "bg-surface-warning": softRequired && !hasValue }),
7685
+ value: dateText,
7686
+ type: type === "dateTime" ? "datetime-local" : "date",
7687
+ readOnly,
7688
+ onChange: (event) => {
7689
+ const value2 = event.target.value;
7690
+ if (!value2) {
7691
+ event.preventDefault();
7692
+ return;
7403
7693
  }
7404
- )
7694
+ const dueDate = new Date(value2);
7695
+ onChange(dueDate);
7696
+ },
7697
+ onEditCompleted: (value2) => onEditComplete(new Date(value2))
7405
7698
  }
7406
7699
  )
7407
7700
  }
@@ -7409,14 +7702,15 @@ var DateProperty = ({
7409
7702
  };
7410
7703
 
7411
7704
  // src/components/properties/MultiSelectProperty.tsx
7412
- import { List } from "lucide-react";
7413
- import clsx36 from "clsx";
7705
+ import { List, Plus as Plus2 } from "lucide-react";
7706
+ import clsx40 from "clsx";
7414
7707
 
7415
7708
  // src/components/user-action/MultiSelect.tsx
7416
- import { useEffect as useEffect21, useRef as useRef7, useState as useState21 } from "react";
7417
- import { ChevronDown as ChevronDown5, ChevronUp as ChevronUp4 } from "lucide-react";
7418
- import clsx35 from "clsx";
7419
- import { jsx as jsx48, jsxs as jsxs32 } from "react/jsx-runtime";
7709
+ import { useCallback as useCallback8 } from "react";
7710
+ import { useEffect as useEffect22, useState as useState22 } from "react";
7711
+ import clsx39 from "clsx";
7712
+ import { Plus } from "lucide-react";
7713
+ import { Fragment as Fragment5, jsx as jsx51, jsxs as jsxs34 } from "react/jsx-runtime";
7420
7714
  var defaultMultiSelectTranslation = {
7421
7715
  en: {
7422
7716
  selected: `{{amount}} selected`
@@ -7427,89 +7721,107 @@ var defaultMultiSelectTranslation = {
7427
7721
  };
7428
7722
  var MultiSelect = ({
7429
7723
  overwriteTranslation,
7430
- options,
7431
7724
  label,
7725
+ options,
7432
7726
  onChange,
7433
7727
  hintText,
7434
- isDisabled = false,
7435
- isSearchEnabled = false,
7436
7728
  selectedDisplayOverwrite,
7729
+ searchOptions,
7730
+ additionalItems,
7437
7731
  useChipDisplay = false,
7438
- className = ""
7732
+ className,
7733
+ triggerClassName,
7734
+ hintTextClassName,
7735
+ ...menuProps
7439
7736
  }) => {
7440
7737
  const translation = useTranslation([formTranslation, defaultMultiSelectTranslation], overwriteTranslation);
7441
- const triggerRef = useRef7(null);
7442
- const menuRef = useRef7(null);
7443
- const [isOpen, setIsOpen] = useState21(false);
7444
- useOutsideClick([triggerRef, menuRef], () => setIsOpen(false));
7738
+ const { result, search, setSearch } = useSearch({
7739
+ list: options,
7740
+ searchMapping: useCallback8((item) => item.searchTags, []),
7741
+ ...searchOptions
7742
+ });
7445
7743
  const selectedItems = options.filter((value) => value.selected);
7446
7744
  const isShowingHint = !selectedDisplayOverwrite && selectedItems.length === 0;
7447
- return /* @__PURE__ */ jsxs32("div", { className: clsx35(className), children: [
7448
- label && /* @__PURE__ */ jsx48(
7745
+ return /* @__PURE__ */ jsxs34("div", { className: clsx39(className), children: [
7746
+ label && /* @__PURE__ */ jsx51(
7449
7747
  Label,
7450
7748
  {
7451
7749
  ...label,
7452
7750
  htmlFor: label.name,
7453
- className: clsx35(" mb-1", label.className),
7751
+ className: clsx39(" mb-1", label.className),
7454
7752
  labelType: label.labelType ?? "labelBig"
7455
7753
  }
7456
7754
  ),
7457
- /* @__PURE__ */ jsxs32("div", { className: "relative", children: [
7458
- /* @__PURE__ */ jsxs32(
7459
- "button",
7460
- {
7461
- ref: triggerRef,
7462
- className: clsx35(
7463
- "btn-md justify-between w-full border-2 h-auto",
7464
- {
7465
- "rounded-b-lg": !open,
7466
- "bg-menu-background border-menu-border hover:border-primary": !isDisabled,
7467
- "bg-disabled-background text-disabled-text border-disabled-background cursor-not-allowed": isDisabled
7468
- }
7469
- ),
7470
- onClick: () => setIsOpen(!isOpen),
7471
- disabled: isDisabled,
7472
- children: [
7473
- !isShowingHint && /* @__PURE__ */ jsx48("span", { className: "font-semibold text-menu-text", children: selectedDisplayOverwrite ?? (useChipDisplay && selectedItems ? /* @__PURE__ */ jsx48(ChipList, { list: selectedItems.map((value) => ({ children: value.label })) }) : translation("selected", { replacements: { amount: selectedItems.length.toString() } })) }),
7474
- isShowingHint && /* @__PURE__ */ jsx48("span", { className: "textstyle-description", children: hintText ?? translation("select") }),
7475
- isOpen ? /* @__PURE__ */ jsx48(ChevronUp4, { size: 24, className: "min-w-6" }) : /* @__PURE__ */ jsx48(ChevronDown5, { className: "min-w-6" })
7476
- ]
7477
- }
7478
- ),
7479
- isOpen && /* @__PURE__ */ jsxs32(
7480
- "div",
7481
- {
7482
- ref: menuRef,
7483
- className: "absolute w-full z-10 rounded-lg mt-0.5 bg-menu-background text-menu-text shadow-around-lg max-h-[500px] overflow-y-auto p-2",
7484
- children: [
7485
- /* @__PURE__ */ jsx48(
7486
- SearchableList,
7755
+ /* @__PURE__ */ jsx51(
7756
+ Menu,
7757
+ {
7758
+ ...menuProps,
7759
+ trigger: ({ toggleOpen, isOpen, disabled }, ref) => /* @__PURE__ */ jsx51(
7760
+ "button",
7761
+ {
7762
+ ref,
7763
+ className: clsx39(
7764
+ "btn-md justify-between w-full border-2 h-auto",
7487
7765
  {
7488
- list: options,
7489
- minimumItemsForSearch: isSearchEnabled ? void 0 : options.length,
7490
- searchMapping: (item) => item.searchTags,
7491
- itemMapper: (option, index) => /* @__PURE__ */ jsx48(
7492
- Tile,
7766
+ "min-h-14": useChipDisplay,
7767
+ "bg-menu-background text-menu-text border-menu-border hover:border-primary": !disabled,
7768
+ "bg-disabled-background text-disabled-text border-disabled-background cursor-not-allowed": disabled
7769
+ },
7770
+ triggerClassName
7771
+ ),
7772
+ onClick: toggleOpen,
7773
+ disabled,
7774
+ children: useChipDisplay ? /* @__PURE__ */ jsx51(Fragment5, { children: isShowingHint ? /* @__PURE__ */ jsx51(IconButton, { disabled, size: "small", color: "neutral", children: /* @__PURE__ */ jsx51(Plus, {}) }) : /* @__PURE__ */ jsx51(ChipList, { list: selectedItems.map((value) => ({ children: value.label })) }) }) : /* @__PURE__ */ jsxs34(Fragment5, { children: [
7775
+ !isShowingHint && /* @__PURE__ */ jsx51("span", { className: "font-semibold", children: selectedDisplayOverwrite ?? translation("selected", { replacements: { amount: selectedItems.length.toString() } }) }),
7776
+ isShowingHint && /* @__PURE__ */ jsx51("span", { className: clsx39("textstyle-description", hintTextClassName), children: hintText ?? translation("select") }),
7777
+ /* @__PURE__ */ jsx51(ExpansionIcon, { isExpanded: isOpen })
7778
+ ] })
7779
+ }
7780
+ ),
7781
+ menuClassName: clsx39("flex-col-2 p-2 max-h-96 overflow-hidden", menuProps.menuClassName),
7782
+ children: (bag) => {
7783
+ const { close } = bag;
7784
+ return /* @__PURE__ */ jsxs34(Fragment5, { children: [
7785
+ !searchOptions?.disabled && /* @__PURE__ */ jsx51(
7786
+ SearchBar,
7787
+ {
7788
+ value: search,
7789
+ onChangeText: setSearch,
7790
+ autoFocus: true
7791
+ }
7792
+ ),
7793
+ /* @__PURE__ */ jsxs34("div", { className: "flex-col-2 overflow-y-auto", children: [
7794
+ result.map((option, index) => {
7795
+ const update = () => {
7796
+ onChange(options.map((value) => value.value === option.value ? {
7797
+ ...option,
7798
+ selected: !value.selected
7799
+ } : value));
7800
+ };
7801
+ return /* @__PURE__ */ jsx51(
7802
+ SelectTile,
7493
7803
  {
7494
- isSelected: option.selected,
7495
- className: "px-2 py-1 rounded-md",
7496
- disabledClassName: "text-disabled-text cursor-not-allowed",
7497
- title: { value: option.label, className: "font-semibold" },
7498
- onClick: () => {
7499
- onChange(options.map((value) => value.value === option.value ? {
7500
- ...option,
7501
- selected: !value.selected
7502
- } : value));
7503
- },
7504
- isDisabled: option.disabled
7804
+ prefix: /* @__PURE__ */ jsx51(
7805
+ Checkbox,
7806
+ {
7807
+ checked: option.selected,
7808
+ onChange: update,
7809
+ size: "small",
7810
+ disabled: option.disabled
7811
+ }
7812
+ ),
7813
+ title: { value: option.label },
7814
+ onClick: update,
7815
+ disabled: option.disabled
7505
7816
  },
7506
7817
  index
7507
- )
7508
- }
7509
- ),
7510
- /* @__PURE__ */ jsxs32("div", { className: "row justify-between mt-2", children: [
7511
- /* @__PURE__ */ jsxs32("div", { className: "row gap-x-2", children: [
7512
- /* @__PURE__ */ jsx48(
7818
+ );
7819
+ }),
7820
+ additionalItems && additionalItems({ ...bag, search })
7821
+ ] }),
7822
+ /* @__PURE__ */ jsxs34("div", { className: "flex-row-2 justify-between", children: [
7823
+ /* @__PURE__ */ jsxs34("div", { className: "flex-row-2", children: [
7824
+ /* @__PURE__ */ jsx51(
7513
7825
  SolidButton,
7514
7826
  {
7515
7827
  color: "neutral",
@@ -7524,7 +7836,7 @@ var MultiSelect = ({
7524
7836
  children: translation("all")
7525
7837
  }
7526
7838
  ),
7527
- /* @__PURE__ */ jsx48(
7839
+ /* @__PURE__ */ jsx51(
7528
7840
  SolidButton,
7529
7841
  {
7530
7842
  color: "neutral",
@@ -7539,12 +7851,12 @@ var MultiSelect = ({
7539
7851
  }
7540
7852
  )
7541
7853
  ] }),
7542
- /* @__PURE__ */ jsx48(SolidButton, { size: "small", onClick: () => setIsOpen(false), children: "Done" })
7854
+ /* @__PURE__ */ jsx51(SolidButton, { size: "small", onClick: close, children: "Done" })
7543
7855
  ] })
7544
- ]
7856
+ ] });
7545
7857
  }
7546
- )
7547
- ] })
7858
+ }
7859
+ )
7548
7860
  ] });
7549
7861
  };
7550
7862
  var MultiSelectUncontrolled = ({
@@ -7552,11 +7864,11 @@ var MultiSelectUncontrolled = ({
7552
7864
  onChange,
7553
7865
  ...props
7554
7866
  }) => {
7555
- const [usedOptions, setUsedOptions] = useState21(options);
7556
- useEffect21(() => {
7867
+ const [usedOptions, setUsedOptions] = useState22(options);
7868
+ useEffect22(() => {
7557
7869
  setUsedOptions(options);
7558
7870
  }, [options]);
7559
- return /* @__PURE__ */ jsx48(
7871
+ return /* @__PURE__ */ jsx51(
7560
7872
  MultiSelect,
7561
7873
  {
7562
7874
  ...props,
@@ -7570,7 +7882,7 @@ var MultiSelectUncontrolled = ({
7570
7882
  };
7571
7883
 
7572
7884
  // src/components/properties/MultiSelectProperty.tsx
7573
- import { jsx as jsx49 } from "react/jsx-runtime";
7885
+ import { jsx as jsx52 } from "react/jsx-runtime";
7574
7886
  var MultiSelectProperty = ({
7575
7887
  overwriteTranslation,
7576
7888
  options,
@@ -7578,11 +7890,12 @@ var MultiSelectProperty = ({
7578
7890
  readOnly = false,
7579
7891
  softRequired,
7580
7892
  onRemove,
7893
+ onAddNew,
7581
7894
  ...multiSelectProps
7582
7895
  }) => {
7583
7896
  const translation = useTranslation([formTranslation], overwriteTranslation);
7584
7897
  const hasValue = options.some((value) => value.selected);
7585
- return /* @__PURE__ */ jsx49(
7898
+ return /* @__PURE__ */ jsx52(
7586
7899
  PropertyBase,
7587
7900
  {
7588
7901
  name,
@@ -7590,20 +7903,42 @@ var MultiSelectProperty = ({
7590
7903
  readOnly,
7591
7904
  softRequired,
7592
7905
  hasValue,
7593
- icon: /* @__PURE__ */ jsx49(List, { size: 16 }),
7594
- input: ({ softRequired: softRequired2 }) => /* @__PURE__ */ jsx49(
7595
- "div",
7906
+ icon: /* @__PURE__ */ jsx52(List, { size: 24 }),
7907
+ input: ({ softRequired: softRequired2 }) => /* @__PURE__ */ jsx52(
7908
+ MultiSelect,
7596
7909
  {
7597
- className: clsx36("row grow py-2 px-4 cursor-pointer", { "text-warning": softRequired2 && !hasValue }),
7598
- children: /* @__PURE__ */ jsx49(
7599
- MultiSelect,
7910
+ ...multiSelectProps,
7911
+ className: clsx40("w-full", { "bg-surface-warning": softRequired2 && !hasValue }),
7912
+ options,
7913
+ disabled: readOnly,
7914
+ useChipDisplay: true,
7915
+ hintText: `${translation("select")}...`,
7916
+ searchOptions: {
7917
+ sortingFunction: (a, b) => a.value.localeCompare(b.value),
7918
+ ...multiSelectProps?.searchOptions
7919
+ },
7920
+ additionalItems: ({ close, search }) => {
7921
+ if (!onAddNew && !search.trim()) {
7922
+ return void 0;
7923
+ }
7924
+ return /* @__PURE__ */ jsx52(
7925
+ SelectTile,
7926
+ {
7927
+ prefix: /* @__PURE__ */ jsx52(Plus2, {}),
7928
+ title: { value: `${translation("add")} ${search.trim()}` },
7929
+ onClick: () => {
7930
+ onAddNew(search);
7931
+ close();
7932
+ },
7933
+ disabled: options.some((value) => value.value === search.trim())
7934
+ }
7935
+ );
7936
+ },
7937
+ triggerClassName: clsx40(
7938
+ "!border-none !p-0 !min-h-10",
7600
7939
  {
7601
- ...multiSelectProps,
7602
- className: clsx36("w-full", { "bg-surface-warning": softRequired2 && !hasValue }),
7603
- options,
7604
- isDisabled: readOnly,
7605
- useChipDisplay: true,
7606
- hintText: `${translation("select")}...`
7940
+ "!bg-warning !text-surface-warning": softRequired2 && !hasValue,
7941
+ "": !softRequired2 || hasValue
7607
7942
  }
7608
7943
  )
7609
7944
  }
@@ -7614,8 +7949,8 @@ var MultiSelectProperty = ({
7614
7949
 
7615
7950
  // src/components/properties/NumberProperty.tsx
7616
7951
  import { Binary } from "lucide-react";
7617
- import clsx37 from "clsx";
7618
- import { jsx as jsx50, jsxs as jsxs33 } from "react/jsx-runtime";
7952
+ import clsx41 from "clsx";
7953
+ import { jsx as jsx53, jsxs as jsxs35 } from "react/jsx-runtime";
7619
7954
  var defaultNumberPropertyTranslation = {
7620
7955
  en: {
7621
7956
  value: "Value"
@@ -7636,23 +7971,23 @@ var NumberProperty = ({
7636
7971
  }) => {
7637
7972
  const translation = useTranslation([defaultNumberPropertyTranslation], overwriteTranslation);
7638
7973
  const hasValue = value !== void 0;
7639
- return /* @__PURE__ */ jsx50(
7974
+ return /* @__PURE__ */ jsx53(
7640
7975
  PropertyBase,
7641
7976
  {
7642
7977
  ...baseProps,
7643
7978
  onRemove,
7644
7979
  hasValue,
7645
- icon: /* @__PURE__ */ jsx50(Binary, { size: 16 }),
7646
- input: ({ softRequired }) => /* @__PURE__ */ jsxs33(
7980
+ icon: /* @__PURE__ */ jsx53(Binary, { size: 24 }),
7981
+ input: ({ softRequired }) => /* @__PURE__ */ jsxs35(
7647
7982
  "div",
7648
7983
  {
7649
- className: clsx37("row grow py-2 px-4 cursor-pointer", { "text-warning": softRequired && !hasValue }),
7984
+ className: clsx41("flex-row-2 grow", { "text-warning": softRequired && !hasValue }),
7650
7985
  children: [
7651
- /* @__PURE__ */ jsx50(
7986
+ /* @__PURE__ */ jsx53(
7652
7987
  Input,
7653
7988
  {
7654
7989
  expanded: false,
7655
- className: clsx37("!ring-0 !border-0 !outline-0 !p-0 !m-0 !w-fit !shadow-none !rounded-none", { "bg-surface-warning placeholder-warning": softRequired && !hasValue }),
7990
+ className: clsx41("!ring-0 !border-0 !outline-0 !p-0 !m-0 !w-fit !shadow-none !rounded-none", { "bg-surface-warning placeholder-warning": softRequired && !hasValue }),
7656
7991
  value: value?.toString() ?? "",
7657
7992
  type: "number",
7658
7993
  readOnly,
@@ -7675,7 +8010,7 @@ var NumberProperty = ({
7675
8010
  }
7676
8011
  }
7677
8012
  ),
7678
- suffix && /* @__PURE__ */ jsx50("span", { className: clsx37("ml-1", { "bg-surface-warning": softRequired && !hasValue }), children: suffix })
8013
+ suffix && /* @__PURE__ */ jsx53("span", { className: clsx41("ml-1", { "bg-surface-warning": softRequired && !hasValue }), children: suffix })
7679
8014
  ]
7680
8015
  }
7681
8016
  )
@@ -7684,9 +8019,9 @@ var NumberProperty = ({
7684
8019
  };
7685
8020
 
7686
8021
  // src/components/properties/SelectProperty.tsx
7687
- import { List as List2 } from "lucide-react";
7688
- import clsx38 from "clsx";
7689
- import { jsx as jsx51 } from "react/jsx-runtime";
8022
+ import { List as List2, Plus as Plus3 } from "lucide-react";
8023
+ import clsx42 from "clsx";
8024
+ import { jsx as jsx54 } from "react/jsx-runtime";
7690
8025
  var SingleSelectProperty = ({
7691
8026
  overwriteTranslation,
7692
8027
  value,
@@ -7695,11 +8030,12 @@ var SingleSelectProperty = ({
7695
8030
  readOnly = false,
7696
8031
  softRequired,
7697
8032
  onRemove,
8033
+ onAddNew,
7698
8034
  ...selectProps
7699
8035
  }) => {
7700
8036
  const translation = useTranslation([formTranslation], overwriteTranslation);
7701
8037
  const hasValue = value !== void 0;
7702
- return /* @__PURE__ */ jsx51(
8038
+ return /* @__PURE__ */ jsx54(
7703
8039
  PropertyBase,
7704
8040
  {
7705
8041
  name,
@@ -7707,22 +8043,45 @@ var SingleSelectProperty = ({
7707
8043
  readOnly,
7708
8044
  softRequired,
7709
8045
  hasValue,
7710
- icon: /* @__PURE__ */ jsx51(List2, { size: 16 }),
7711
- input: ({ softRequired: softRequired2 }) => /* @__PURE__ */ jsx51(
7712
- "div",
8046
+ icon: /* @__PURE__ */ jsx54(List2, { size: 24 }),
8047
+ input: ({ softRequired: softRequired2 }) => /* @__PURE__ */ jsx54(
8048
+ Select,
7713
8049
  {
7714
- className: clsx38("row grow py-2 px-4 cursor-pointer", { "text-warning": softRequired2 && !hasValue }),
7715
- children: /* @__PURE__ */ jsx51(
7716
- Select,
8050
+ ...selectProps,
8051
+ value,
8052
+ options,
8053
+ disabled: readOnly,
8054
+ className: clsx42("w-full"),
8055
+ hintText: `${translation("select")}...`,
8056
+ searchOptions: {
8057
+ sortingFunction: (a, b) => a.value.localeCompare(b.value),
8058
+ ...selectProps?.searchOptions
8059
+ },
8060
+ additionalItems: ({ close, search }) => {
8061
+ if (!onAddNew && !search.trim()) {
8062
+ return void 0;
8063
+ }
8064
+ return /* @__PURE__ */ jsx54(
8065
+ SelectTile,
8066
+ {
8067
+ prefix: /* @__PURE__ */ jsx54(Plus3, {}),
8068
+ title: { value: `${translation("add")} ${search.trim()}` },
8069
+ onClick: () => {
8070
+ onAddNew(search);
8071
+ close();
8072
+ },
8073
+ disabled: options.some((value2) => value2.value === search.trim())
8074
+ }
8075
+ );
8076
+ },
8077
+ triggerClassName: clsx42(
8078
+ "!border-none",
7717
8079
  {
7718
- ...selectProps,
7719
- value,
7720
- options,
7721
- isDisabled: readOnly,
7722
- className: clsx38("w-full", { "bg-surface-warning": softRequired2 && !hasValue }),
7723
- hintText: `${translation("select")}...`
8080
+ "!bg-warning !text-surface-warning": softRequired2 && !hasValue,
8081
+ "!bg-property-title-background": !softRequired2 || hasValue
7724
8082
  }
7725
- )
8083
+ ),
8084
+ hintTextClassName: softRequired2 && !hasValue ? "text-surface-warning" : void 0
7726
8085
  }
7727
8086
  )
7728
8087
  }
@@ -7731,12 +8090,12 @@ var SingleSelectProperty = ({
7731
8090
 
7732
8091
  // src/components/properties/TextProperty.tsx
7733
8092
  import { Text } from "lucide-react";
7734
- import clsx40 from "clsx";
8093
+ import clsx44 from "clsx";
7735
8094
 
7736
8095
  // src/components/user-action/Textarea.tsx
7737
- import { useEffect as useEffect22, useState as useState22 } from "react";
7738
- import clsx39 from "clsx";
7739
- import { jsx as jsx52, jsxs as jsxs34 } from "react/jsx-runtime";
8096
+ import { useEffect as useEffect23, useState as useState23 } from "react";
8097
+ import clsx43 from "clsx";
8098
+ import { jsx as jsx55, jsxs as jsxs36 } from "react/jsx-runtime";
7740
8099
  var Textarea = ({
7741
8100
  label,
7742
8101
  headline,
@@ -7749,39 +8108,48 @@ var Textarea = ({
7749
8108
  onEditCompleted = noop,
7750
8109
  saveDelayOptions,
7751
8110
  defaultStyle = true,
8111
+ disabled = false,
7752
8112
  className,
7753
8113
  ...props
7754
8114
  }) => {
7755
- const [hasFocus, setHasFocus] = useState22(false);
8115
+ const [hasFocus, setHasFocus] = useState23(false);
7756
8116
  const { restartTimer, clearTimer } = useDelay(saveDelayOptions);
7757
8117
  const onEditCompletedWrapper = (text) => {
7758
8118
  onEditCompleted(text);
7759
8119
  clearTimer();
7760
8120
  };
7761
- return /* @__PURE__ */ jsxs34("div", { className: "w-full", children: [
7762
- label && /* @__PURE__ */ jsx52(
8121
+ return /* @__PURE__ */ jsxs36("div", { className: "w-full", children: [
8122
+ label && /* @__PURE__ */ jsx55(
7763
8123
  Label,
7764
8124
  {
7765
8125
  ...label,
7766
8126
  htmlFor: id,
7767
- className: clsx39("mb-1", label.className),
8127
+ className: clsx43("mb-1", label.className),
7768
8128
  labelType: label.labelType ?? "labelSmall"
7769
8129
  }
7770
8130
  ),
7771
- /* @__PURE__ */ jsxs34(
8131
+ /* @__PURE__ */ jsxs36(
7772
8132
  "div",
7773
8133
  {
7774
- className: `${clsx39(" bg-surface text-on-surface focus-within:border-primary relative", { "shadow border-2 hover:border-primary rounded-lg": defaultStyle })}`,
8134
+ className: clsx43(
8135
+ "bg-surface text-on-surface relative",
8136
+ {
8137
+ "shadow border-2 rounded-lg": defaultStyle,
8138
+ "hover:border-primary focus-within:border-primary": defaultStyle && !disabled,
8139
+ "border-disabled-border cursor-not-allowed": defaultStyle && !disabled
8140
+ }
8141
+ ),
7775
8142
  children: [
7776
- headline && /* @__PURE__ */ jsx52("span", { className: "mx-3 mt-3 block textstyle-label-md", children: headline }),
7777
- /* @__PURE__ */ jsx52(
8143
+ headline && /* @__PURE__ */ jsx55("span", { className: "mx-3 mt-3 block textstyle-label-md", children: headline }),
8144
+ /* @__PURE__ */ jsx55(
7778
8145
  "textarea",
7779
8146
  {
7780
8147
  id,
7781
- className: clsx39("pt-0 px-3 border-transparent focus:border-transparent focus:ring-0 appearance-none border w-full leading-tight focus:outline-none", {
8148
+ className: clsx43("pt-0 px-3 border-transparent appearance-none w-full leading-tight focus:ring-0 focus:outline-none", {
7782
8149
  "resize-none": !resizable,
7783
8150
  "h-32": defaultStyle,
7784
- "mt-3": !headline
8151
+ "mt-3": !headline,
8152
+ "text-disabled-text": disabled
7785
8153
  }, className),
7786
8154
  onChange: (event) => {
7787
8155
  const value = event.target.value;
@@ -7799,13 +8167,14 @@ var Textarea = ({
7799
8167
  onEditCompletedWrapper(event.target.value);
7800
8168
  setHasFocus(false);
7801
8169
  },
8170
+ disabled,
7802
8171
  ...props
7803
8172
  }
7804
8173
  )
7805
8174
  ]
7806
8175
  }
7807
8176
  ),
7808
- hasFocus && disclaimer && /* @__PURE__ */ jsx52("label", { className: "text-negative", children: disclaimer })
8177
+ hasFocus && disclaimer && /* @__PURE__ */ jsx55("label", { className: "text-negative", children: disclaimer })
7809
8178
  ] });
7810
8179
  };
7811
8180
  var TextareaUncontrolled = ({
@@ -7813,11 +8182,11 @@ var TextareaUncontrolled = ({
7813
8182
  onChangeText = noop,
7814
8183
  ...props
7815
8184
  }) => {
7816
- const [text, setText] = useState22(value);
7817
- useEffect22(() => {
8185
+ const [text, setText] = useState23(value);
8186
+ useEffect23(() => {
7818
8187
  setText(value);
7819
8188
  }, [value]);
7820
- return /* @__PURE__ */ jsx52(
8189
+ return /* @__PURE__ */ jsx55(
7821
8190
  Textarea,
7822
8191
  {
7823
8192
  ...props,
@@ -7831,7 +8200,7 @@ var TextareaUncontrolled = ({
7831
8200
  };
7832
8201
 
7833
8202
  // src/components/properties/TextProperty.tsx
7834
- import { jsx as jsx53 } from "react/jsx-runtime";
8203
+ import { jsx as jsx56 } from "react/jsx-runtime";
7835
8204
  var defaultTextPropertyTranslation = {
7836
8205
  en: {
7837
8206
  text: "Text"
@@ -7851,42 +8220,36 @@ var TextProperty = ({
7851
8220
  }) => {
7852
8221
  const translation = useTranslation([defaultTextPropertyTranslation], overwriteTranslation);
7853
8222
  const hasValue = value !== void 0;
7854
- return /* @__PURE__ */ jsx53(
8223
+ return /* @__PURE__ */ jsx56(
7855
8224
  PropertyBase,
7856
8225
  {
7857
8226
  ...baseProps,
7858
8227
  onRemove,
7859
8228
  hasValue,
7860
- icon: /* @__PURE__ */ jsx53(Text, { size: 16 }),
7861
- input: ({ softRequired }) => /* @__PURE__ */ jsx53(
7862
- "div",
8229
+ icon: /* @__PURE__ */ jsx56(Text, { size: 24 }),
8230
+ input: ({ softRequired }) => /* @__PURE__ */ jsx56(
8231
+ Textarea,
7863
8232
  {
7864
- className: clsx40("row grow pt-2 pb-1 px-4 cursor-pointer", { "text-warning": softRequired && !hasValue }),
7865
- children: /* @__PURE__ */ jsx53(
7866
- Textarea,
7867
- {
7868
- className: clsx40("ring-0 border-0 outline-0 p-0 m-0 shadow-none rounded-none", { "bg-surface-warning placeholder-warning": softRequired && !hasValue }),
7869
- rows: 5,
7870
- defaultStyle: false,
7871
- value: value ?? "",
7872
- readOnly,
7873
- placeholder: `${translation("text")}...`,
7874
- onChangeText: (value2) => {
7875
- if (!value2) {
7876
- onRemove();
7877
- } else {
7878
- onChange(value2);
7879
- }
7880
- },
7881
- onEditCompleted: (value2) => {
7882
- if (!value2) {
7883
- onRemove();
7884
- } else {
7885
- onEditComplete(value2);
7886
- }
7887
- }
8233
+ className: clsx44("ring-0 border-0 outline-0 !px-0 p-0 m-0 shadow-none rounded-none", { "bg-surface-warning placeholder-warning": softRequired && !hasValue }),
8234
+ rows: 5,
8235
+ defaultStyle: false,
8236
+ value: value ?? "",
8237
+ readOnly,
8238
+ placeholder: `${translation("text")}...`,
8239
+ onChangeText: (value2) => {
8240
+ if (!value2) {
8241
+ onRemove();
8242
+ } else {
8243
+ onChange(value2);
7888
8244
  }
7889
- )
8245
+ },
8246
+ onEditCompleted: (value2) => {
8247
+ if (!value2) {
8248
+ onRemove();
8249
+ } else {
8250
+ onEditComplete(value2);
8251
+ }
8252
+ }
7890
8253
  }
7891
8254
  )
7892
8255
  }
@@ -7894,12 +8257,12 @@ var TextProperty = ({
7894
8257
  };
7895
8258
 
7896
8259
  // src/components/table/FillerRowElement.tsx
7897
- import { clsx as clsx41 } from "clsx";
7898
- import { jsx as jsx54 } from "react/jsx-runtime";
8260
+ import { clsx as clsx45 } from "clsx";
8261
+ import { jsx as jsx57 } from "react/jsx-runtime";
7899
8262
  var FillerRowElement = ({
7900
8263
  className
7901
8264
  }) => {
7902
- return /* @__PURE__ */ jsx54("div", { className: clsx41("flex flex-row items-center w-1/2 h-4 text-disabled-text font-bold", className), children: "-" });
8265
+ return /* @__PURE__ */ jsx57("div", { className: clsx45("flex flex-row items-center w-1/2 h-4 text-disabled-text font-bold", className), children: "-" });
7903
8266
  };
7904
8267
 
7905
8268
  // src/components/table/Filter.ts
@@ -7917,8 +8280,8 @@ var TableFilters = {
7917
8280
  };
7918
8281
 
7919
8282
  // src/components/table/Table.tsx
7920
- import { useCallback as useCallback5, useEffect as useEffect25, useMemo as useMemo3, useRef as useRef9, useState as useState24 } from "react";
7921
- import clsx45 from "clsx";
8283
+ import { useCallback as useCallback9, useEffect as useEffect26, useMemo as useMemo3, useRef as useRef7, useState as useState25 } from "react";
8284
+ import clsx48 from "clsx";
7922
8285
  import {
7923
8286
  flexRender,
7924
8287
  getCoreRowModel,
@@ -7931,90 +8294,8 @@ import { Scrollbars as Scrollbars3 } from "react-custom-scrollbars-2";
7931
8294
 
7932
8295
  // src/components/table/TableFilterButton.tsx
7933
8296
  import { FilterIcon } from "lucide-react";
7934
-
7935
- // src/components/user-action/Menu.tsx
7936
- import { useRef as useRef8 } from "react";
7937
- import clsx42 from "clsx";
7938
-
7939
- // src/util/PropsWithFunctionChildren.ts
7940
- var resolve = (children, bag) => {
7941
- if (typeof children === "function") {
7942
- return children(bag);
7943
- }
7944
- return children ?? void 0;
7945
- };
7946
- var BagFunctionUtil = {
7947
- resolve
7948
- };
7949
-
7950
- // src/components/user-action/Menu.tsx
7951
- import { jsx as jsx55, jsxs as jsxs35 } from "react/jsx-runtime";
7952
- var MenuItem = ({
7953
- children,
7954
- onClick,
7955
- alignment = "left",
7956
- isDisabled = false,
7957
- className
7958
- }) => /* @__PURE__ */ jsx55(
7959
- "div",
7960
- {
7961
- className: clsx42("block px-3 py-1.5 bg-menu-background first:rounded-t-lg last:rounded-b-lg text-sm font-semibold", {
7962
- "text-right": alignment === "right",
7963
- "text-left": alignment === "left",
7964
- "text-disabled-text cursor-not-allowed": isDisabled,
7965
- "text-menu-text hover:bg-primary/20": !isDisabled,
7966
- "cursor-pointer": !!onClick
7967
- }, className),
7968
- onClick,
7969
- children
7970
- }
7971
- );
7972
- var Menu = ({
7973
- trigger,
7974
- children,
7975
- alignment = "tl",
7976
- showOnHover = false,
7977
- menuClassName = ""
7978
- }) => {
7979
- const { isHovered: isOpen, setIsHovered: setIsOpen, handlers } = useHoverState({ isDisabled: !showOnHover });
7980
- const triggerRef = useRef8(null);
7981
- const menuRef = useRef8(null);
7982
- useOutsideClick([triggerRef, menuRef], () => setIsOpen(false));
7983
- const bag = { isOpen, close: () => setIsOpen(false) };
7984
- return /* @__PURE__ */ jsxs35(
7985
- "div",
7986
- {
7987
- className: "relative",
7988
- ...handlers,
7989
- children: [
7990
- trigger(() => setIsOpen(!isOpen), triggerRef),
7991
- /* @__PURE__ */ jsx55(
7992
- "div",
7993
- {
7994
- ref: menuRef,
7995
- onClick: (e) => e.stopPropagation(),
7996
- className: clsx42(
7997
- "absolute top-full mt-1 min-w-40 rounded-lg bg-menu-background text-menu-text shadow-around-lg z-10",
7998
- {
7999
- "top-0": alignment[0] === "t",
8000
- "bottom-0": alignment[0] === "b",
8001
- "left-0": alignment[1] === "l",
8002
- "right-0": alignment[1] === "r",
8003
- "hidden": !isOpen
8004
- },
8005
- menuClassName
8006
- ),
8007
- children: BagFunctionUtil.resolve(children, bag)
8008
- }
8009
- )
8010
- ]
8011
- }
8012
- );
8013
- };
8014
-
8015
- // src/components/table/TableFilterButton.tsx
8016
- import { useEffect as useEffect23, useState as useState23 } from "react";
8017
- import { Fragment as Fragment3, jsx as jsx56, jsxs as jsxs36 } from "react/jsx-runtime";
8297
+ import { useEffect as useEffect24, useState as useState24 } from "react";
8298
+ import { Fragment as Fragment6, jsx as jsx58, jsxs as jsxs37 } from "react/jsx-runtime";
8018
8299
  var defaultTableFilterTranslation = {
8019
8300
  en: {
8020
8301
  filter: "Filter",
@@ -8039,17 +8320,17 @@ var TableFilterButton = ({
8039
8320
  }) => {
8040
8321
  const translation = useTranslation([formTranslation, defaultTableFilterTranslation]);
8041
8322
  const columnFilterValue = column.getFilterValue();
8042
- const [filterValue, setFilterValue] = useState23(columnFilterValue);
8323
+ const [filterValue, setFilterValue] = useState24(columnFilterValue);
8043
8324
  const hasFilter = !!filterValue;
8044
- useEffect23(() => {
8325
+ useEffect24(() => {
8045
8326
  setFilterValue(columnFilterValue);
8046
8327
  }, [columnFilterValue]);
8047
- return /* @__PURE__ */ jsx56(
8328
+ return /* @__PURE__ */ jsx58(
8048
8329
  Menu,
8049
8330
  {
8050
- trigger: (onClick, ref) => /* @__PURE__ */ jsxs36("div", { ref, className: "relative", children: [
8051
- /* @__PURE__ */ jsx56(IconButton, { color: "neutral", size: "tiny", onClick, children: /* @__PURE__ */ jsx56(FilterIcon, {}) }),
8052
- hasFilter && /* @__PURE__ */ jsx56(
8331
+ trigger: ({ toggleOpen }, ref) => /* @__PURE__ */ jsxs37("div", { ref, className: "relative", children: [
8332
+ /* @__PURE__ */ jsx58(IconButton, { color: "neutral", size: "tiny", onClick: toggleOpen, children: /* @__PURE__ */ jsx58(FilterIcon, {}) }),
8333
+ hasFilter && /* @__PURE__ */ jsx58(
8053
8334
  "div",
8054
8335
  {
8055
8336
  className: "absolute top-0.5 right-0.5 w-2 h-2 rounded-full bg-primary pointer-events-none",
@@ -8057,9 +8338,9 @@ var TableFilterButton = ({
8057
8338
  }
8058
8339
  )
8059
8340
  ] }),
8060
- children: ({ close }) => /* @__PURE__ */ jsxs36("div", { className: "col gap-y-1 p-2 items-start font-normal text-menu-text", children: [
8061
- /* @__PURE__ */ jsx56("h4", { className: "textstyle-title-sm", children: translation("filter") }),
8062
- filterType === "text" && /* @__PURE__ */ jsx56(
8341
+ children: ({ close }) => /* @__PURE__ */ jsxs37("div", { className: "flex-col-1 p-2 items-start font-normal text-menu-text", children: [
8342
+ /* @__PURE__ */ jsx58("h4", { className: "textstyle-title-sm", children: translation("filter") }),
8343
+ filterType === "text" && /* @__PURE__ */ jsx58(
8063
8344
  Input,
8064
8345
  {
8065
8346
  value: filterValue ?? "",
@@ -8069,8 +8350,8 @@ var TableFilterButton = ({
8069
8350
  className: "h-10"
8070
8351
  }
8071
8352
  ),
8072
- filterType === "range" && /* @__PURE__ */ jsxs36("div", { className: "row gap-x-2 items-center", children: [
8073
- /* @__PURE__ */ jsx56(
8353
+ filterType === "range" && /* @__PURE__ */ jsxs37("div", { className: "flex-row-2 items-center", children: [
8354
+ /* @__PURE__ */ jsx58(
8074
8355
  Input,
8075
8356
  {
8076
8357
  value: filterValue?.[0] ?? "",
@@ -8083,8 +8364,8 @@ var TableFilterButton = ({
8083
8364
  className: "h-10 input-indicator-hidden w-40"
8084
8365
  }
8085
8366
  ),
8086
- /* @__PURE__ */ jsx56("span", { className: "font-bold", children: "-" }),
8087
- /* @__PURE__ */ jsx56(
8367
+ /* @__PURE__ */ jsx58("span", { className: "font-bold", children: "-" }),
8368
+ /* @__PURE__ */ jsx58(
8088
8369
  Input,
8089
8370
  {
8090
8371
  value: filterValue?.[1] ?? "",
@@ -8098,8 +8379,8 @@ var TableFilterButton = ({
8098
8379
  }
8099
8380
  )
8100
8381
  ] }),
8101
- filterType === "dateRange" && /* @__PURE__ */ jsxs36(Fragment3, { children: [
8102
- /* @__PURE__ */ jsx56(
8382
+ filterType === "dateRange" && /* @__PURE__ */ jsxs37(Fragment6, { children: [
8383
+ /* @__PURE__ */ jsx58(
8103
8384
  Input,
8104
8385
  {
8105
8386
  value: filterValue?.[0] ? filterValue?.[0].toISOString().slice(0, 16) : "",
@@ -8112,7 +8393,7 @@ var TableFilterButton = ({
8112
8393
  className: "h-10 w-50"
8113
8394
  }
8114
8395
  ),
8115
- /* @__PURE__ */ jsx56(
8396
+ /* @__PURE__ */ jsx58(
8116
8397
  Input,
8117
8398
  {
8118
8399
  value: filterValue?.[1] ? filterValue?.[1].toISOString().slice(0, 16) : "",
@@ -8126,12 +8407,12 @@ var TableFilterButton = ({
8126
8407
  }
8127
8408
  )
8128
8409
  ] }),
8129
- /* @__PURE__ */ jsxs36("div", { className: "row justify-end w-full", children: [
8130
- hasFilter && /* @__PURE__ */ jsx56(SolidButton, { color: "negative", size: "small", onClick: () => {
8410
+ /* @__PURE__ */ jsxs37("div", { className: "flex-row-2 justify-end w-full", children: [
8411
+ hasFilter && /* @__PURE__ */ jsx58(SolidButton, { color: "negative", size: "small", onClick: () => {
8131
8412
  column.setFilterValue(void 0);
8132
8413
  close();
8133
8414
  }, children: translation("remove") }),
8134
- /* @__PURE__ */ jsx56(SolidButton, { size: "small", onClick: () => {
8415
+ /* @__PURE__ */ jsx58(SolidButton, { size: "small", onClick: () => {
8135
8416
  column.setFilterValue(filterValue);
8136
8417
  close();
8137
8418
  }, children: translation("apply") })
@@ -8142,9 +8423,9 @@ var TableFilterButton = ({
8142
8423
  };
8143
8424
 
8144
8425
  // src/components/table/TableSortButton.tsx
8145
- import { ChevronDown as ChevronDown6, ChevronsUpDown, ChevronUp as ChevronUp5 } from "lucide-react";
8146
- import clsx43 from "clsx";
8147
- import { jsx as jsx57 } from "react/jsx-runtime";
8426
+ import { ChevronDown as ChevronDown3, ChevronsUpDown, ChevronUp } from "lucide-react";
8427
+ import clsx46 from "clsx";
8428
+ import { jsx as jsx59 } from "react/jsx-runtime";
8148
8429
  var TableSortButton = ({
8149
8430
  sortDirection,
8150
8431
  invert = false,
@@ -8152,20 +8433,20 @@ var TableSortButton = ({
8152
8433
  className,
8153
8434
  ...buttonProps
8154
8435
  }) => {
8155
- let icon = /* @__PURE__ */ jsx57(ChevronsUpDown, { className: "w-full h-full" });
8436
+ let icon = /* @__PURE__ */ jsx59(ChevronsUpDown, { className: "w-full h-full" });
8156
8437
  if (sortDirection) {
8157
8438
  let usedSortDirection = sortDirection;
8158
8439
  if (invert) {
8159
8440
  usedSortDirection = usedSortDirection === "desc" ? "asc" : "desc";
8160
8441
  }
8161
- icon = usedSortDirection === "asc" ? /* @__PURE__ */ jsx57(ChevronUp5, { className: "w-full h-full" }) : /* @__PURE__ */ jsx57(ChevronDown6, { className: "w-full h-full" });
8442
+ icon = usedSortDirection === "asc" ? /* @__PURE__ */ jsx59(ChevronUp, { className: "w-full h-full" }) : /* @__PURE__ */ jsx59(ChevronDown3, { className: "w-full h-full" });
8162
8443
  }
8163
- return /* @__PURE__ */ jsx57(
8444
+ return /* @__PURE__ */ jsx59(
8164
8445
  IconButton,
8165
8446
  {
8166
8447
  size: "tiny",
8167
8448
  color,
8168
- className: clsx43(className),
8449
+ className: clsx46(className),
8169
8450
  ...buttonProps,
8170
8451
  children: icon
8171
8452
  }
@@ -8173,9 +8454,9 @@ var TableSortButton = ({
8173
8454
  };
8174
8455
 
8175
8456
  // src/hooks/useResizeCallbackWrapper.ts
8176
- import { useEffect as useEffect24 } from "react";
8457
+ import { useEffect as useEffect25 } from "react";
8177
8458
  var useResizeCallbackWrapper = (callback) => {
8178
- useEffect24(() => {
8459
+ useEffect25(() => {
8179
8460
  window.addEventListener("resize", callback);
8180
8461
  return () => {
8181
8462
  window.removeEventListener("resize", callback);
@@ -8184,17 +8465,17 @@ var useResizeCallbackWrapper = (callback) => {
8184
8465
  };
8185
8466
 
8186
8467
  // src/components/table/TableCell.tsx
8187
- import { clsx as clsx44 } from "clsx";
8188
- import { jsx as jsx58 } from "react/jsx-runtime";
8468
+ import { clsx as clsx47 } from "clsx";
8469
+ import { jsx as jsx60 } from "react/jsx-runtime";
8189
8470
  var TableCell = ({
8190
8471
  children,
8191
8472
  className
8192
8473
  }) => {
8193
- return /* @__PURE__ */ jsx58("span", { className: clsx44("block max-w-full overflow-ellipsis truncate", className), children });
8474
+ return /* @__PURE__ */ jsx60("span", { className: clsx47("block max-w-full overflow-ellipsis truncate", className), children });
8194
8475
  };
8195
8476
 
8196
8477
  // src/components/table/Table.tsx
8197
- import { jsx as jsx59, jsxs as jsxs37 } from "react/jsx-runtime";
8478
+ import { jsx as jsx61, jsxs as jsxs38 } from "react/jsx-runtime";
8198
8479
  var Table = ({
8199
8480
  data,
8200
8481
  fillerRow,
@@ -8207,21 +8488,21 @@ var Table = ({
8207
8488
  columns,
8208
8489
  ...tableOptions
8209
8490
  }) => {
8210
- const ref = useRef9(null);
8211
- const tableRef = useRef9(null);
8212
- const [columnSizing, setColumnSizing] = useState24(columns.reduce((previousValue, currentValue) => {
8491
+ const ref = useRef7(null);
8492
+ const tableRef = useRef7(null);
8493
+ const [columnSizing, setColumnSizing] = useState25(columns.reduce((previousValue, currentValue) => {
8213
8494
  return {
8214
8495
  ...previousValue,
8215
8496
  [currentValue.id]: currentValue.minSize ?? defaultColumn.minSize
8216
8497
  };
8217
8498
  }, {}));
8218
- const [columnSizingInfo, setColumnSizingInfo] = useState24();
8219
- const [pagination, setPagination] = useState24({
8499
+ const [columnSizingInfo, setColumnSizingInfo] = useState25();
8500
+ const [pagination, setPagination] = useState25({
8220
8501
  pageSize: 10,
8221
8502
  pageIndex: 0,
8222
8503
  ...initialState?.pagination
8223
8504
  });
8224
- const [columnFilters, setColumnFilters] = useState24(initialState?.columnFilters);
8505
+ const [columnFilters, setColumnFilters] = useState25(initialState?.columnFilters);
8225
8506
  const computedColumnMinWidths = useMemo3(() => {
8226
8507
  return columns.reduce((previousValue, column) => {
8227
8508
  return {
@@ -8313,7 +8594,7 @@ var Table = ({
8313
8594
  minSize: 60,
8314
8595
  maxSize: 700,
8315
8596
  cell: ({ cell }) => {
8316
- return /* @__PURE__ */ jsx59(TableCell, { children: cell.getValue() });
8597
+ return /* @__PURE__ */ jsx61(TableCell, { children: cell.getValue() });
8317
8598
  },
8318
8599
  ...defaultColumn
8319
8600
  },
@@ -8361,18 +8642,18 @@ var Table = ({
8361
8642
  columnResizeMode: "onChange",
8362
8643
  ...tableOptions
8363
8644
  });
8364
- const [hasInitializedSizing, setHasInitializedSizing] = useState24(false);
8365
- useEffect25(() => {
8645
+ const [hasInitializedSizing, setHasInitializedSizing] = useState25(false);
8646
+ useEffect26(() => {
8366
8647
  if (!hasInitializedSizing && ref.current) {
8367
8648
  setHasInitializedSizing(true);
8368
8649
  table.setColumnSizing(updateColumnSizes(columnSizing));
8369
8650
  }
8370
8651
  }, [columnSizing, hasInitializedSizing]);
8371
- useResizeCallbackWrapper(useCallback5(() => {
8652
+ useResizeCallbackWrapper(useCallback9(() => {
8372
8653
  table.setColumnSizing(updateColumnSizes);
8373
8654
  }, [updateColumnSizes]));
8374
8655
  const pageCount = table.getPageCount();
8375
- useEffect25(() => {
8656
+ useEffect26(() => {
8376
8657
  const totalPages = pageCount;
8377
8658
  if (totalPages === 0) {
8378
8659
  if (pagination.pageIndex !== 0) {
@@ -8393,98 +8674,106 @@ var Table = ({
8393
8674
  const colSizes = {};
8394
8675
  for (let i = 0; i < headers.length; i++) {
8395
8676
  const header = headers[i];
8396
- colSizes[`--header-${header.id}-size`] = header.getSize();
8397
- colSizes[`--col-${header.column.id}-size`] = header.column.getSize();
8677
+ colSizes[`--header-${header.id}-size`] = Math.floor(header.getSize());
8678
+ colSizes[`--col-${header.column.id}-size`] = Math.floor(header.column.getSize());
8398
8679
  }
8399
8680
  return colSizes;
8400
8681
  }, [table.getState().columnSizingInfo, table.getState().columnSizing]);
8401
- return /* @__PURE__ */ jsxs37("div", { ref, className: clsx45("col gap-y-4", className), children: [
8402
- /* @__PURE__ */ jsx59(Scrollbars3, { autoHeight: true, autoHeightMax: tableRef.current?.offsetHeight, autoHide: true, children: /* @__PURE__ */ jsxs37(
8403
- "table",
8682
+ return /* @__PURE__ */ jsxs38("div", { ref, className: clsx48("flex-col-4", className), children: [
8683
+ /* @__PURE__ */ jsx61(
8684
+ Scrollbars3,
8404
8685
  {
8405
- ref: tableRef,
8406
- className: clsx45(tableClassName),
8407
- style: {
8408
- ...columnSizeVars,
8409
- width: Math.max(table.getTotalSize(), ref.current?.offsetWidth ?? table.getTotalSize())
8410
- },
8411
- children: [
8412
- table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ jsx59("colgroup", { children: headerGroup.headers.map((header) => /* @__PURE__ */ jsx59(
8413
- "col",
8414
- {
8415
- style: {
8416
- width: `calc(var(--header-${header?.id}-size) * 1px)`,
8417
- minWidth: header.column.columnDef.minSize,
8418
- maxWidth: header.column.columnDef.maxSize
8419
- }
8686
+ autoHeight: true,
8687
+ autoHeightMax: tableRef.current?.offsetHeight + 2,
8688
+ autoHide: true,
8689
+ children: /* @__PURE__ */ jsxs38(
8690
+ "table",
8691
+ {
8692
+ ref: tableRef,
8693
+ className: clsx48(tableClassName),
8694
+ style: {
8695
+ ...columnSizeVars,
8696
+ width: Math.floor(Math.max(table.getTotalSize() - columns.length, ref.current?.offsetWidth ?? table.getTotalSize()))
8420
8697
  },
8421
- header.id
8422
- )) }, headerGroup.id)),
8423
- /* @__PURE__ */ jsx59("thead", { children: table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ jsx59("tr", { className: table.options.meta?.headerRowClassName, children: headerGroup.headers.map((header) => {
8424
- return /* @__PURE__ */ jsxs37(
8425
- "th",
8426
- {
8427
- colSpan: header.colSpan,
8428
- className: clsx45("relative group", header.column.columnDef.meta?.className),
8429
- children: [
8430
- /* @__PURE__ */ jsx59("div", { className: "row w-full", children: header.isPlaceholder ? null : /* @__PURE__ */ jsxs37("div", { className: "row gap-x-1 items-center", children: [
8431
- header.column.getCanSort() && /* @__PURE__ */ jsx59(
8432
- TableSortButton,
8433
- {
8434
- sortDirection: header.column.getIsSorted(),
8435
- onClick: () => header.column.toggleSorting()
8436
- }
8437
- ),
8438
- header.column.getCanFilter() && header.column.columnDef.meta?.filterType ? /* @__PURE__ */ jsx59(
8439
- TableFilterButton,
8440
- {
8441
- column: header.column,
8442
- filterType: header.column.columnDef.meta.filterType
8443
- }
8444
- ) : null,
8445
- flexRender(
8446
- header.column.columnDef.header,
8447
- header.getContext()
8448
- )
8449
- ] }) }),
8450
- header.column.getCanResize() && /* @__PURE__ */ jsx59(
8451
- "div",
8452
- {
8453
- onMouseDown: header.getResizeHandler(),
8454
- onTouchStart: header.getResizeHandler(),
8455
- onDoubleClick: () => {
8456
- header.column.resetSize();
8457
- },
8458
- className: "table-resize-indicator w-2 rounded bg-primary cursor-col-resize select-none touch-none opacity-0 group-hover:opacity-100 transition-opacity",
8459
- style: {
8460
- opacity: !columnSizingInfo?.columnSizingStart ? void 0 : columnSizingInfo?.columnSizingStart?.findIndex(([id, _]) => id === header.column.id) !== -1 ? 1 : columnSizingInfo?.columnSizingStart?.length !== 0 ? 0 : void 0
8461
- }
8462
- }
8463
- )
8464
- ]
8465
- },
8466
- header.id
8467
- );
8468
- }) }, headerGroup.id)) }),
8469
- /* @__PURE__ */ jsxs37("tbody", { children: [
8470
- table.getRowModel().rows.map((row) => {
8471
- return /* @__PURE__ */ jsx59("tr", { onClick: () => onRowClick(row, table), className: table.options.meta?.bodyRowClassName, children: row.getVisibleCells().map((cell) => {
8472
- return /* @__PURE__ */ jsx59("td", { children: flexRender(
8473
- cell.column.columnDef.cell,
8474
- cell.getContext()
8475
- ) }, cell.id);
8476
- }) }, row.id);
8477
- }),
8478
- range(table.getState().pagination.pageSize - table.getRowModel().rows.length, { allowEmptyRange: true }).map((row, index) => {
8479
- return /* @__PURE__ */ jsx59("tr", { children: columns.map((column) => {
8480
- return /* @__PURE__ */ jsx59("td", { children: fillerRow ? fillerRow(column.id, table) : /* @__PURE__ */ jsx59(FillerRowElement, {}) }, column.id);
8481
- }) }, "filler-row-" + index);
8482
- })
8483
- ] })
8484
- ]
8698
+ children: [
8699
+ table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ jsx61("colgroup", { children: headerGroup.headers.map((header) => /* @__PURE__ */ jsx61(
8700
+ "col",
8701
+ {
8702
+ style: {
8703
+ width: `calc(var(--header-${header?.id}-size) * 1px)`,
8704
+ minWidth: header.column.columnDef.minSize,
8705
+ maxWidth: header.column.columnDef.maxSize
8706
+ }
8707
+ },
8708
+ header.id
8709
+ )) }, headerGroup.id)),
8710
+ /* @__PURE__ */ jsx61("thead", { children: table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ jsx61("tr", { className: table.options.meta?.headerRowClassName, children: headerGroup.headers.map((header) => {
8711
+ return /* @__PURE__ */ jsxs38(
8712
+ "th",
8713
+ {
8714
+ colSpan: header.colSpan,
8715
+ className: clsx48("relative group", header.column.columnDef.meta?.className),
8716
+ children: [
8717
+ /* @__PURE__ */ jsx61("div", { className: "flex-row-2 w-full", children: header.isPlaceholder ? null : /* @__PURE__ */ jsxs38("div", { className: "flex-row-1 items-center", children: [
8718
+ header.column.getCanSort() && /* @__PURE__ */ jsx61(
8719
+ TableSortButton,
8720
+ {
8721
+ sortDirection: header.column.getIsSorted(),
8722
+ onClick: () => header.column.toggleSorting()
8723
+ }
8724
+ ),
8725
+ header.column.getCanFilter() && header.column.columnDef.meta?.filterType ? /* @__PURE__ */ jsx61(
8726
+ TableFilterButton,
8727
+ {
8728
+ column: header.column,
8729
+ filterType: header.column.columnDef.meta.filterType
8730
+ }
8731
+ ) : null,
8732
+ flexRender(
8733
+ header.column.columnDef.header,
8734
+ header.getContext()
8735
+ )
8736
+ ] }) }),
8737
+ header.column.getCanResize() && /* @__PURE__ */ jsx61(
8738
+ "div",
8739
+ {
8740
+ onMouseDown: header.getResizeHandler(),
8741
+ onTouchStart: header.getResizeHandler(),
8742
+ onDoubleClick: () => {
8743
+ header.column.resetSize();
8744
+ },
8745
+ className: "table-resize-indicator w-2 rounded bg-primary cursor-col-resize select-none touch-none opacity-0 group-hover:opacity-100 transition-opacity",
8746
+ style: {
8747
+ opacity: !columnSizingInfo?.columnSizingStart ? void 0 : columnSizingInfo?.columnSizingStart?.findIndex(([id, _]) => id === header.column.id) !== -1 ? 1 : columnSizingInfo?.columnSizingStart?.length !== 0 ? 0 : void 0
8748
+ }
8749
+ }
8750
+ )
8751
+ ]
8752
+ },
8753
+ header.id
8754
+ );
8755
+ }) }, headerGroup.id)) }),
8756
+ /* @__PURE__ */ jsxs38("tbody", { children: [
8757
+ table.getRowModel().rows.map((row) => {
8758
+ return /* @__PURE__ */ jsx61("tr", { onClick: () => onRowClick(row, table), className: table.options.meta?.bodyRowClassName, children: row.getVisibleCells().map((cell) => {
8759
+ return /* @__PURE__ */ jsx61("td", { children: flexRender(
8760
+ cell.column.columnDef.cell,
8761
+ cell.getContext()
8762
+ ) }, cell.id);
8763
+ }) }, row.id);
8764
+ }),
8765
+ range(table.getState().pagination.pageSize - table.getRowModel().rows.length, { allowEmptyRange: true }).map((row, index) => {
8766
+ return /* @__PURE__ */ jsx61("tr", { children: columns.map((column) => {
8767
+ return /* @__PURE__ */ jsx61("td", { children: fillerRow ? fillerRow(column.id, table) : /* @__PURE__ */ jsx61(FillerRowElement, {}) }, column.id);
8768
+ }) }, "filler-row-" + index);
8769
+ })
8770
+ ] })
8771
+ ]
8772
+ }
8773
+ )
8485
8774
  }
8486
- ) }),
8487
- /* @__PURE__ */ jsx59("div", { className: "row justify-center", children: /* @__PURE__ */ jsx59(
8775
+ ),
8776
+ /* @__PURE__ */ jsx61("div", { className: "flex-row-2 justify-center", children: /* @__PURE__ */ jsx61(
8488
8777
  Pagination,
8489
8778
  {
8490
8779
  pageIndex: table.getState().pagination.pageIndex,
@@ -8495,11 +8784,11 @@ var Table = ({
8495
8784
  ] });
8496
8785
  };
8497
8786
  var TableUncontrolled = ({ data, ...props }) => {
8498
- const [usedDate, setUsedData] = useState24(data);
8499
- useEffect25(() => {
8787
+ const [usedDate, setUsedData] = useState25(data);
8788
+ useEffect26(() => {
8500
8789
  setUsedData(data);
8501
8790
  }, [data]);
8502
- return /* @__PURE__ */ jsx59(
8791
+ return /* @__PURE__ */ jsx61(
8503
8792
  Table,
8504
8793
  {
8505
8794
  ...props,
@@ -8523,7 +8812,7 @@ var TableWithSelection = ({
8523
8812
  {
8524
8813
  id: selectionRowId,
8525
8814
  header: ({ table }) => {
8526
- return /* @__PURE__ */ jsx59(
8815
+ return /* @__PURE__ */ jsx61(
8527
8816
  Checkbox,
8528
8817
  {
8529
8818
  checked: table.getIsSomeRowsSelected() ? "indeterminate" : table.getIsAllRowsSelected(),
@@ -8536,7 +8825,7 @@ var TableWithSelection = ({
8536
8825
  );
8537
8826
  },
8538
8827
  cell: ({ row }) => {
8539
- return /* @__PURE__ */ jsx59(
8828
+ return /* @__PURE__ */ jsx61(
8540
8829
  Checkbox,
8541
8830
  {
8542
8831
  disabled: !row.getCanSelect(),
@@ -8555,15 +8844,15 @@ var TableWithSelection = ({
8555
8844
  ...columns
8556
8845
  ];
8557
8846
  }, [columns, selectionRowId]);
8558
- return /* @__PURE__ */ jsx59(
8847
+ return /* @__PURE__ */ jsx61(
8559
8848
  Table,
8560
8849
  {
8561
8850
  columns: columnsWithSelection,
8562
8851
  fillerRow: (columnId, table) => {
8563
8852
  if (columnId === selectionRowId) {
8564
- return /* @__PURE__ */ jsx59(Checkbox, { checked: false, disabled: true, containerClassName: "max-w-6" });
8853
+ return /* @__PURE__ */ jsx61(Checkbox, { checked: false, disabled: true, containerClassName: "max-w-6" });
8565
8854
  }
8566
- return fillerRow ? fillerRow(columnId, table) : /* @__PURE__ */ jsx59(FillerRowElement, {});
8855
+ return fillerRow ? fillerRow(columnId, table) : /* @__PURE__ */ jsx61(FillerRowElement, {});
8567
8856
  },
8568
8857
  state: {
8569
8858
  rowSelection,
@@ -8577,7 +8866,7 @@ var TableWithSelection = ({
8577
8866
  },
8578
8867
  meta: {
8579
8868
  ...meta,
8580
- bodyRowClassName: clsx45(
8869
+ bodyRowClassName: clsx48(
8581
8870
  { "cursor-pointer": !disableClickRowClickSelection },
8582
8871
  meta?.bodyRowClassName
8583
8872
  )
@@ -8588,8 +8877,8 @@ var TableWithSelection = ({
8588
8877
  };
8589
8878
 
8590
8879
  // src/components/user-action/CopyToClipboardWrapper.tsx
8591
- import { useState as useState25 } from "react";
8592
- import { clsx as clsx46 } from "clsx";
8880
+ import { useState as useState26 } from "react";
8881
+ import { clsx as clsx49 } from "clsx";
8593
8882
 
8594
8883
  // src/util/writeToClipboard.ts
8595
8884
  var writeToClipboard = (text) => {
@@ -8598,7 +8887,7 @@ var writeToClipboard = (text) => {
8598
8887
 
8599
8888
  // src/components/user-action/CopyToClipboardWrapper.tsx
8600
8889
  import { CheckIcon, Copy } from "lucide-react";
8601
- import { jsx as jsx60, jsxs as jsxs38 } from "react/jsx-runtime";
8890
+ import { jsx as jsx62, jsxs as jsxs39 } from "react/jsx-runtime";
8602
8891
  var CopyToClipboardWrapper = ({
8603
8892
  children,
8604
8893
  textToCopy,
@@ -8608,8 +8897,8 @@ var CopyToClipboardWrapper = ({
8608
8897
  zIndex = 10
8609
8898
  }) => {
8610
8899
  const translation = useTranslation([formTranslation]);
8611
- const [isShowingIndication, setIsShowingIndication] = useState25(false);
8612
- const [isShowingConfirmation, setIsShowingConfirmation] = useState25(false);
8900
+ const [isShowingIndication, setIsShowingIndication] = useState26(false);
8901
+ const [isShowingConfirmation, setIsShowingConfirmation] = useState26(false);
8613
8902
  const positionClasses = {
8614
8903
  top: `bottom-full left-1/2 -translate-x-1/2 mb-[6px]`,
8615
8904
  bottom: `top-full left-1/2 -translate-x-1/2 mt-[6px]`,
@@ -8629,10 +8918,10 @@ var CopyToClipboardWrapper = ({
8629
8918
  left: { borderWidth: `${triangleSize}px 0 ${triangleSize}px ${triangleSize}px` },
8630
8919
  right: { borderWidth: `${triangleSize}px ${triangleSize}px ${triangleSize}px 0` }
8631
8920
  };
8632
- return /* @__PURE__ */ jsxs38(
8921
+ return /* @__PURE__ */ jsxs39(
8633
8922
  "div",
8634
8923
  {
8635
- className: clsx46("relative inline-block cursor-copy", containerClassName),
8924
+ className: clsx49("relative inline-block cursor-copy", containerClassName),
8636
8925
  onMouseEnter: () => {
8637
8926
  setIsShowingIndication(true);
8638
8927
  },
@@ -8647,10 +8936,10 @@ var CopyToClipboardWrapper = ({
8647
8936
  },
8648
8937
  children: [
8649
8938
  children,
8650
- /* @__PURE__ */ jsxs38(
8939
+ /* @__PURE__ */ jsxs39(
8651
8940
  "div",
8652
8941
  {
8653
- className: clsx46(
8942
+ className: clsx49(
8654
8943
  `absolute text-xs font-semibold text-tooltip-text px-2 py-1 rounded whitespace-nowrap
8655
8944
  shadow-around-md bg-tooltip-background cursor-default pointer-events-none`,
8656
8945
  "transition-opacity duration-200",
@@ -8662,18 +8951,18 @@ var CopyToClipboardWrapper = ({
8662
8951
  opacity: isShowingIndication || isShowingConfirmation ? 1 : 0
8663
8952
  },
8664
8953
  children: [
8665
- isShowingConfirmation && /* @__PURE__ */ jsxs38("div", { className: "row gap-x-1", children: [
8666
- /* @__PURE__ */ jsx60(CheckIcon, { size: 16, className: "text-positive" }),
8954
+ isShowingConfirmation && /* @__PURE__ */ jsxs39("div", { className: "flex-row-1", children: [
8955
+ /* @__PURE__ */ jsx62(CheckIcon, { size: 16, className: "text-positive" }),
8667
8956
  translation("copied")
8668
8957
  ] }),
8669
- isShowingIndication && /* @__PURE__ */ jsxs38("div", { className: "row gap-x-1 text-description", children: [
8670
- /* @__PURE__ */ jsx60(Copy, { size: 16 }),
8958
+ isShowingIndication && /* @__PURE__ */ jsxs39("div", { className: "flex-row-1 text-description", children: [
8959
+ /* @__PURE__ */ jsx62(Copy, { size: 16 }),
8671
8960
  translation("clickToCopy")
8672
8961
  ] }),
8673
- /* @__PURE__ */ jsx60(
8962
+ /* @__PURE__ */ jsx62(
8674
8963
  "div",
8675
8964
  {
8676
- className: clsx46(`absolute w-0 h-0`, triangleClasses[position]),
8965
+ className: clsx49(`absolute w-0 h-0`, triangleClasses[position]),
8677
8966
  style: { ...triangleStyle[position], zIndex: zIndex + 1 }
8678
8967
  }
8679
8968
  )
@@ -8686,8 +8975,8 @@ var CopyToClipboardWrapper = ({
8686
8975
  };
8687
8976
 
8688
8977
  // src/components/user-action/DateAndTimePicker.tsx
8689
- import clsx47 from "clsx";
8690
- import { jsx as jsx61, jsxs as jsxs39 } from "react/jsx-runtime";
8978
+ import clsx50 from "clsx";
8979
+ import { jsx as jsx63, jsxs as jsxs40 } from "react/jsx-runtime";
8691
8980
  var DateTimePicker = ({
8692
8981
  overwriteTranslation,
8693
8982
  value = /* @__PURE__ */ new Date(),
@@ -8706,7 +8995,7 @@ var DateTimePicker = ({
8706
8995
  let dateDisplay;
8707
8996
  let timeDisplay;
8708
8997
  if (useDate) {
8709
- dateDisplay = /* @__PURE__ */ jsx61(
8998
+ dateDisplay = /* @__PURE__ */ jsx63(
8710
8999
  DatePicker,
8711
9000
  {
8712
9001
  ...datePickerProps,
@@ -8720,25 +9009,25 @@ var DateTimePicker = ({
8720
9009
  );
8721
9010
  }
8722
9011
  if (useTime) {
8723
- timeDisplay = /* @__PURE__ */ jsx61(
9012
+ timeDisplay = /* @__PURE__ */ jsx63(
8724
9013
  TimePicker,
8725
9014
  {
8726
9015
  ...timePickerProps,
8727
- className: clsx47("h-full", { "justify-between w-full": mode === "time" }),
9016
+ className: clsx50("h-full", { "justify-between w-full": mode === "time" }),
8728
9017
  maxHeight: 250,
8729
9018
  time: value,
8730
9019
  onChange
8731
9020
  }
8732
9021
  );
8733
9022
  }
8734
- return /* @__PURE__ */ jsxs39("div", { className: "col w-fit", children: [
8735
- /* @__PURE__ */ jsxs39("div", { className: "row gap-x-4", children: [
9023
+ return /* @__PURE__ */ jsxs40("div", { className: "flex-col-2 w-fit", children: [
9024
+ /* @__PURE__ */ jsxs40("div", { className: "flex-row-4", children: [
8736
9025
  dateDisplay,
8737
9026
  timeDisplay
8738
9027
  ] }),
8739
- /* @__PURE__ */ jsx61("div", { className: "row justify-end", children: /* @__PURE__ */ jsxs39("div", { className: "row gap-x-2 mt-1", children: [
8740
- /* @__PURE__ */ jsx61(SolidButton, { size: "medium", color: "negative", onClick: onRemove, children: translation("clear") }),
8741
- /* @__PURE__ */ jsx61(
9028
+ /* @__PURE__ */ jsx63("div", { className: "flex-row-2 justify-end", children: /* @__PURE__ */ jsxs40("div", { className: "flex-row-2 mt-1", children: [
9029
+ /* @__PURE__ */ jsx63(SolidButton, { size: "medium", color: "negative", onClick: onRemove, children: translation("clear") }),
9030
+ /* @__PURE__ */ jsx63(
8742
9031
  SolidButton,
8743
9032
  {
8744
9033
  size: "medium",
@@ -8751,9 +9040,9 @@ var DateTimePicker = ({
8751
9040
  };
8752
9041
 
8753
9042
  // src/components/user-action/ScrollPicker.tsx
8754
- import { useCallback as useCallback6, useEffect as useEffect26, useState as useState26 } from "react";
8755
- import clsx48 from "clsx";
8756
- import { jsx as jsx62, jsxs as jsxs40 } from "react/jsx-runtime";
9043
+ import { useCallback as useCallback10, useEffect as useEffect27, useState as useState27 } from "react";
9044
+ import clsx51 from "clsx";
9045
+ import { jsx as jsx64, jsxs as jsxs41 } from "react/jsx-runtime";
8757
9046
  var up = 1;
8758
9047
  var down = -1;
8759
9048
  var ScrollPicker = ({
@@ -8772,7 +9061,7 @@ var ScrollPicker = ({
8772
9061
  transition,
8773
9062
  items,
8774
9063
  lastTimeStamp
8775
- }, setAnimation] = useState26({
9064
+ }, setAnimation] = useState27({
8776
9065
  targetIndex: selectedIndex,
8777
9066
  currentIndex: disabled ? selectedIndex : 0,
8778
9067
  velocity: 0,
@@ -8788,7 +9077,7 @@ var ScrollPicker = ({
8788
9077
  const itemHeight = 40;
8789
9078
  const distance = 8;
8790
9079
  const containerHeight = itemHeight * (itemsShownCount - 2) + distance * (itemsShownCount - 2 + 1);
8791
- const getDirection = useCallback6((targetIndex, currentIndex2, transition2, length) => {
9080
+ const getDirection = useCallback10((targetIndex, currentIndex2, transition2, length) => {
8792
9081
  if (targetIndex === currentIndex2) {
8793
9082
  return transition2 > 0 ? up : down;
8794
9083
  }
@@ -8798,7 +9087,7 @@ var ScrollPicker = ({
8798
9087
  }
8799
9088
  return distanceForward >= length / 2 ? down : up;
8800
9089
  }, []);
8801
- const animate = useCallback6((timestamp, startTime) => {
9090
+ const animate = useCallback10((timestamp, startTime) => {
8802
9091
  setAnimation((prevState) => {
8803
9092
  const {
8804
9093
  targetIndex,
@@ -8871,7 +9160,7 @@ var ScrollPicker = ({
8871
9160
  };
8872
9161
  });
8873
9162
  }, [disabled, getDirection, onChange]);
8874
- useEffect26(() => {
9163
+ useEffect27(() => {
8875
9164
  requestAnimationFrame((timestamp) => animate(timestamp, lastTimeStamp));
8876
9165
  });
8877
9166
  const opacity = (transition2, index, itemsCount) => {
@@ -8892,7 +9181,7 @@ var ScrollPicker = ({
8892
9181
  }
8893
9182
  return clamp(1 - opacityValue / max);
8894
9183
  };
8895
- return /* @__PURE__ */ jsx62(
9184
+ return /* @__PURE__ */ jsx64(
8896
9185
  "div",
8897
9186
  {
8898
9187
  className: "relative overflow-hidden",
@@ -8902,27 +9191,27 @@ var ScrollPicker = ({
8902
9191
  setAnimation(({ velocity, ...animationData }) => ({ ...animationData, velocity: velocity + event.deltaY }));
8903
9192
  }
8904
9193
  },
8905
- children: /* @__PURE__ */ jsxs40("div", { className: "absolute top-1/2 -translate-y-1/2 -translate-x-1/2 left-1/2", children: [
8906
- /* @__PURE__ */ jsx62(
9194
+ children: /* @__PURE__ */ jsxs41("div", { className: "absolute top-1/2 -translate-y-1/2 -translate-x-1/2 left-1/2", children: [
9195
+ /* @__PURE__ */ jsx64(
8907
9196
  "div",
8908
9197
  {
8909
9198
  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 ",
8910
9199
  style: { height: `${itemHeight}px` }
8911
9200
  }
8912
9201
  ),
8913
- /* @__PURE__ */ jsx62(
9202
+ /* @__PURE__ */ jsx64(
8914
9203
  "div",
8915
9204
  {
8916
- className: "col select-none",
9205
+ className: "flex-col-2 select-none",
8917
9206
  style: {
8918
9207
  transform: `translateY(${-transition * (distance + itemHeight)}px)`,
8919
9208
  columnGap: `${distance}px`
8920
9209
  },
8921
- children: shownItems.map(({ name, index }, arrayIndex) => /* @__PURE__ */ jsx62(
9210
+ children: shownItems.map(({ name, index }, arrayIndex) => /* @__PURE__ */ jsx64(
8922
9211
  "div",
8923
9212
  {
8924
- className: clsx48(
8925
- `col items-center justify-center rounded-md`,
9213
+ className: clsx51(
9214
+ `flex-col-2 items-center justify-center rounded-md`,
8926
9215
  {
8927
9216
  "text-primary font-bold": currentIndex === index,
8928
9217
  "text-on-background": currentIndex === index,
@@ -8948,10 +9237,10 @@ var ScrollPicker = ({
8948
9237
  };
8949
9238
 
8950
9239
  // src/components/user-action/ToggleableInput.tsx
8951
- import { useEffect as useEffect27, useRef as useRef10, useState as useState27 } from "react";
9240
+ import { useEffect as useEffect28, useRef as useRef8, useState as useState28 } from "react";
8952
9241
  import { Pencil } from "lucide-react";
8953
- import clsx49 from "clsx";
8954
- import { jsx as jsx63, jsxs as jsxs41 } from "react/jsx-runtime";
9242
+ import clsx52 from "clsx";
9243
+ import { jsx as jsx65, jsxs as jsxs42 } from "react/jsx-runtime";
8955
9244
  var ToggleableInput = ({
8956
9245
  type = "text",
8957
9246
  value,
@@ -8966,26 +9255,26 @@ var ToggleableInput = ({
8966
9255
  saveDelayOptions,
8967
9256
  ...restProps
8968
9257
  }) => {
8969
- const [isEditing, setIsEditing] = useState27(initialState !== "display");
9258
+ const [isEditing, setIsEditing] = useState28(initialState !== "display");
8970
9259
  const { restartTimer, clearTimer } = useDelay(saveDelayOptions);
8971
- const ref = useRef10(null);
9260
+ const ref = useRef8(null);
8972
9261
  const onEditCompletedWrapper = (text) => {
8973
9262
  onEditCompleted(text);
8974
9263
  clearTimer();
8975
9264
  };
8976
- useEffect27(() => {
9265
+ useEffect28(() => {
8977
9266
  if (isEditing) {
8978
9267
  ref.current?.focus();
8979
9268
  }
8980
9269
  }, [isEditing]);
8981
- return /* @__PURE__ */ jsxs41("div", { children: [
8982
- /* @__PURE__ */ jsxs41(
9270
+ return /* @__PURE__ */ jsxs42("div", { children: [
9271
+ /* @__PURE__ */ jsxs42(
8983
9272
  "div",
8984
9273
  {
8985
- className: clsx49("row items-center w-full gap-x-2 overflow-hidden", { "cursor-pointer": !isEditing }),
9274
+ className: clsx52("flex-row-2 items-center w-full overflow-hidden", { "cursor-pointer": !isEditing }),
8986
9275
  onClick: () => !isEditing ? setIsEditing(!isEditing) : void 0,
8987
9276
  children: [
8988
- /* @__PURE__ */ jsx63("div", { className: clsx49("row overflow-hidden", { "flex-1": isEditing }), children: isEditing ? /* @__PURE__ */ jsx63(
9277
+ /* @__PURE__ */ jsx65("div", { className: clsx52("flex-row-2 overflow-hidden", { "flex-1": isEditing }), children: isEditing ? /* @__PURE__ */ jsx65(
8989
9278
  "input",
8990
9279
  {
8991
9280
  ref,
@@ -9013,16 +9302,16 @@ var ToggleableInput = ({
9013
9302
  onEditCompletedWrapper(value);
9014
9303
  }
9015
9304
  },
9016
- className: clsx49(`w-full border-none rounded-none ring-0 outline-0 text-inherit bg-inherit shadow-transparent decoration-primary p-0 underline-offset-4`, {
9305
+ className: clsx52(`w-full border-none rounded-none ring-0 outline-0 text-inherit bg-inherit shadow-transparent decoration-primary p-0 underline-offset-4`, {
9017
9306
  underline: isEditing
9018
9307
  }, labelClassName),
9019
9308
  onFocus: (event) => event.target.select()
9020
9309
  }
9021
- ) : /* @__PURE__ */ jsx63("span", { className: clsx49("max-w-xs break-words overflow-hidden", labelClassName), children: value }) }),
9022
- /* @__PURE__ */ jsx63(
9310
+ ) : /* @__PURE__ */ jsx65("span", { className: clsx52("max-w-xs break-words overflow-hidden", labelClassName), children: value }) }),
9311
+ /* @__PURE__ */ jsx65(
9023
9312
  Pencil,
9024
9313
  {
9025
- className: clsx49(`cursor-pointer`, { "text-transparent": isEditing }),
9314
+ className: clsx52(`cursor-pointer`, { "text-transparent": isEditing }),
9026
9315
  size,
9027
9316
  style: { minWidth: `${size}px` }
9028
9317
  }
@@ -9030,7 +9319,7 @@ var ToggleableInput = ({
9030
9319
  ]
9031
9320
  }
9032
9321
  ),
9033
- isEditing && disclaimer && /* @__PURE__ */ jsx63("label", { className: "text-negative", children: disclaimer })
9322
+ isEditing && disclaimer && /* @__PURE__ */ jsx65("label", { className: "text-negative", children: disclaimer })
9034
9323
  ] });
9035
9324
  };
9036
9325
  var ToggleableInputUncontrolled = ({
@@ -9038,11 +9327,11 @@ var ToggleableInputUncontrolled = ({
9038
9327
  onChangeText = noop,
9039
9328
  ...restProps
9040
9329
  }) => {
9041
- const [value, setValue] = useState27(initialValue);
9042
- useEffect27(() => {
9330
+ const [value, setValue] = useState28(initialValue);
9331
+ useEffect28(() => {
9043
9332
  setValue(initialValue);
9044
9333
  }, [initialValue]);
9045
- return /* @__PURE__ */ jsx63(
9334
+ return /* @__PURE__ */ jsx65(
9046
9335
  ToggleableInput,
9047
9336
  {
9048
9337
  value,
@@ -9137,6 +9426,7 @@ export {
9137
9426
  ErrorComponent,
9138
9427
  Expandable,
9139
9428
  ExpandableUncontrolled,
9429
+ ExpansionIcon,
9140
9430
  FAQSection,
9141
9431
  FillerRowElement,
9142
9432
  FormInput,
@@ -9155,6 +9445,7 @@ export {
9155
9445
  LoadingAndErrorComponent,
9156
9446
  LoadingAnimation,
9157
9447
  LoadingButton,
9448
+ LoadingContainer,
9158
9449
  LocalStorageService,
9159
9450
  LoopingArrayCalculator,
9160
9451
  MarkdownInterpreter,
@@ -9177,8 +9468,10 @@ export {
9177
9468
  Ring,
9178
9469
  RingWave,
9179
9470
  ScrollPicker,
9471
+ SearchBar,
9180
9472
  SearchableList,
9181
9473
  Select,
9474
+ SelectTile,
9182
9475
  SelectUncontrolled,
9183
9476
  SessionStorageService,
9184
9477
  SimpleSearch,
@@ -9255,6 +9548,7 @@ export {
9255
9548
  useLocalStorage,
9256
9549
  useLocale,
9257
9550
  useOutsideClick,
9551
+ usePopoverPosition,
9258
9552
  useRerender,
9259
9553
  useResizeCallbackWrapper,
9260
9554
  useSearch,