@helpwave/hightide 0.1.11 → 0.1.13

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 (277) hide show
  1. package/dist/components/date/DatePicker.js +37 -7
  2. package/dist/components/date/DatePicker.js.map +1 -1
  3. package/dist/components/date/DatePicker.mjs +37 -7
  4. package/dist/components/date/DatePicker.mjs.map +1 -1
  5. package/dist/components/date/DayPicker.js.map +1 -1
  6. package/dist/components/date/DayPicker.mjs.map +1 -1
  7. package/dist/components/date/TimePicker.js +27 -6
  8. package/dist/components/date/TimePicker.js.map +1 -1
  9. package/dist/components/date/TimePicker.mjs +27 -6
  10. package/dist/components/date/TimePicker.mjs.map +1 -1
  11. package/dist/components/date/YearMonthPicker.js +36 -6
  12. package/dist/components/date/YearMonthPicker.js.map +1 -1
  13. package/dist/components/date/YearMonthPicker.mjs +36 -6
  14. package/dist/components/date/YearMonthPicker.mjs.map +1 -1
  15. package/dist/components/dialogs/ConfirmDialog.js +16 -2
  16. package/dist/components/dialogs/ConfirmDialog.js.map +1 -1
  17. package/dist/components/dialogs/ConfirmDialog.mjs +16 -2
  18. package/dist/components/dialogs/ConfirmDialog.mjs.map +1 -1
  19. package/dist/components/layout-and-navigation/Carousel.js +42 -9
  20. package/dist/components/layout-and-navigation/Carousel.js.map +1 -1
  21. package/dist/components/layout-and-navigation/Carousel.mjs +42 -9
  22. package/dist/components/layout-and-navigation/Carousel.mjs.map +1 -1
  23. package/dist/components/layout-and-navigation/Expandable.js +1 -1
  24. package/dist/components/layout-and-navigation/Expandable.js.map +1 -1
  25. package/dist/components/layout-and-navigation/Expandable.mjs +1 -1
  26. package/dist/components/layout-and-navigation/Expandable.mjs.map +1 -1
  27. package/dist/components/layout-and-navigation/FAQSection.js +1 -1
  28. package/dist/components/layout-and-navigation/FAQSection.js.map +1 -1
  29. package/dist/components/layout-and-navigation/FAQSection.mjs +1 -1
  30. package/dist/components/layout-and-navigation/FAQSection.mjs.map +1 -1
  31. package/dist/components/layout-and-navigation/Overlay.js +16 -2
  32. package/dist/components/layout-and-navigation/Overlay.js.map +1 -1
  33. package/dist/components/layout-and-navigation/Overlay.mjs +16 -2
  34. package/dist/components/layout-and-navigation/Overlay.mjs.map +1 -1
  35. package/dist/components/layout-and-navigation/Pagination.d.mts +6 -3
  36. package/dist/components/layout-and-navigation/Pagination.d.ts +6 -3
  37. package/dist/components/layout-and-navigation/Pagination.js +404 -19
  38. package/dist/components/layout-and-navigation/Pagination.js.map +1 -1
  39. package/dist/components/layout-and-navigation/Pagination.mjs +404 -19
  40. package/dist/components/layout-and-navigation/Pagination.mjs.map +1 -1
  41. package/dist/components/layout-and-navigation/SearchableList.js +187 -67
  42. package/dist/components/layout-and-navigation/SearchableList.js.map +1 -1
  43. package/dist/components/layout-and-navigation/SearchableList.mjs +183 -63
  44. package/dist/components/layout-and-navigation/SearchableList.mjs.map +1 -1
  45. package/dist/components/layout-and-navigation/StepperBar.js +37 -5
  46. package/dist/components/layout-and-navigation/StepperBar.js.map +1 -1
  47. package/dist/components/layout-and-navigation/StepperBar.mjs +37 -5
  48. package/dist/components/layout-and-navigation/StepperBar.mjs.map +1 -1
  49. package/dist/components/layout-and-navigation/TextImage.js +2 -0
  50. package/dist/components/layout-and-navigation/TextImage.js.map +1 -1
  51. package/dist/components/layout-and-navigation/TextImage.mjs +2 -0
  52. package/dist/components/layout-and-navigation/TextImage.mjs.map +1 -1
  53. package/dist/components/loading-states/LoadingAndErrorComponent.js +2 -0
  54. package/dist/components/loading-states/LoadingAndErrorComponent.js.map +1 -1
  55. package/dist/components/loading-states/LoadingAndErrorComponent.mjs +2 -0
  56. package/dist/components/loading-states/LoadingAndErrorComponent.mjs.map +1 -1
  57. package/dist/components/loading-states/LoadingAnimation.js +2 -0
  58. package/dist/components/loading-states/LoadingAnimation.js.map +1 -1
  59. package/dist/components/loading-states/LoadingAnimation.mjs +2 -0
  60. package/dist/components/loading-states/LoadingAnimation.mjs.map +1 -1
  61. package/dist/components/loading-states/LoadingButton.js +9 -0
  62. package/dist/components/loading-states/LoadingButton.js.map +1 -1
  63. package/dist/components/loading-states/LoadingButton.mjs +9 -0
  64. package/dist/components/loading-states/LoadingButton.mjs.map +1 -1
  65. package/dist/components/modals/ConfirmModal.js +16 -2
  66. package/dist/components/modals/ConfirmModal.js.map +1 -1
  67. package/dist/components/modals/ConfirmModal.mjs +16 -2
  68. package/dist/components/modals/ConfirmModal.mjs.map +1 -1
  69. package/dist/components/modals/DiscardChangesModal.js +16 -2
  70. package/dist/components/modals/DiscardChangesModal.js.map +1 -1
  71. package/dist/components/modals/DiscardChangesModal.mjs +16 -2
  72. package/dist/components/modals/DiscardChangesModal.mjs.map +1 -1
  73. package/dist/components/modals/InputModal.d.mts +1 -0
  74. package/dist/components/modals/InputModal.d.ts +1 -0
  75. package/dist/components/modals/InputModal.js +196 -76
  76. package/dist/components/modals/InputModal.js.map +1 -1
  77. package/dist/components/modals/InputModal.mjs +189 -69
  78. package/dist/components/modals/InputModal.mjs.map +1 -1
  79. package/dist/components/modals/LanguageModal.js +203 -83
  80. package/dist/components/modals/LanguageModal.js.map +1 -1
  81. package/dist/components/modals/LanguageModal.mjs +192 -72
  82. package/dist/components/modals/LanguageModal.mjs.map +1 -1
  83. package/dist/components/modals/ThemeModal.js +206 -86
  84. package/dist/components/modals/ThemeModal.js.map +1 -1
  85. package/dist/components/modals/ThemeModal.mjs +193 -73
  86. package/dist/components/modals/ThemeModal.mjs.map +1 -1
  87. package/dist/components/properties/CheckboxProperty.js +17 -5
  88. package/dist/components/properties/CheckboxProperty.js.map +1 -1
  89. package/dist/components/properties/CheckboxProperty.mjs +17 -5
  90. package/dist/components/properties/CheckboxProperty.mjs.map +1 -1
  91. package/dist/components/properties/DateProperty.js +182 -65
  92. package/dist/components/properties/DateProperty.js.map +1 -1
  93. package/dist/components/properties/DateProperty.mjs +179 -62
  94. package/dist/components/properties/DateProperty.mjs.map +1 -1
  95. package/dist/components/properties/MultiSelectProperty.js +194 -74
  96. package/dist/components/properties/MultiSelectProperty.js.map +1 -1
  97. package/dist/components/properties/MultiSelectProperty.mjs +187 -67
  98. package/dist/components/properties/MultiSelectProperty.mjs.map +1 -1
  99. package/dist/components/properties/NumberProperty.js +182 -65
  100. package/dist/components/properties/NumberProperty.js.map +1 -1
  101. package/dist/components/properties/NumberProperty.mjs +179 -62
  102. package/dist/components/properties/NumberProperty.mjs.map +1 -1
  103. package/dist/components/properties/PropertyBase.js +12 -1
  104. package/dist/components/properties/PropertyBase.js.map +1 -1
  105. package/dist/components/properties/PropertyBase.mjs +12 -1
  106. package/dist/components/properties/PropertyBase.mjs.map +1 -1
  107. package/dist/components/properties/SelectProperty.js +194 -74
  108. package/dist/components/properties/SelectProperty.js.map +1 -1
  109. package/dist/components/properties/SelectProperty.mjs +187 -67
  110. package/dist/components/properties/SelectProperty.mjs.map +1 -1
  111. package/dist/components/properties/TextProperty.js +43 -34
  112. package/dist/components/properties/TextProperty.js.map +1 -1
  113. package/dist/components/properties/TextProperty.mjs +43 -34
  114. package/dist/components/properties/TextProperty.mjs.map +1 -1
  115. package/dist/components/table/FillerRowElement.d.mts +8 -0
  116. package/dist/components/table/FillerRowElement.d.ts +8 -0
  117. package/dist/components/table/FillerRowElement.js +36 -0
  118. package/dist/components/table/FillerRowElement.js.map +1 -0
  119. package/dist/components/table/FillerRowElement.mjs +12 -0
  120. package/dist/components/table/FillerRowElement.mjs.map +1 -0
  121. package/dist/components/table/Filter.d.mts +5 -0
  122. package/dist/components/table/Filter.d.ts +5 -0
  123. package/dist/components/table/Filter.js +41 -0
  124. package/dist/components/table/Filter.js.map +1 -0
  125. package/dist/components/table/Filter.mjs +17 -0
  126. package/dist/components/table/Filter.mjs.map +1 -0
  127. package/dist/components/table/Table.d.mts +41 -0
  128. package/dist/components/table/Table.d.ts +41 -0
  129. package/dist/components/table/Table.js +1549 -0
  130. package/dist/components/table/Table.js.map +1 -0
  131. package/dist/components/table/Table.mjs +1520 -0
  132. package/dist/components/table/Table.mjs.map +1 -0
  133. package/dist/components/table/TableCell.d.mts +9 -0
  134. package/dist/components/table/TableCell.d.ts +9 -0
  135. package/dist/components/table/TableCell.js +37 -0
  136. package/dist/components/table/TableCell.js.map +1 -0
  137. package/dist/components/table/TableCell.mjs +13 -0
  138. package/dist/components/table/TableCell.mjs.map +1 -0
  139. package/dist/components/table/TableFilterButton.d.mts +11 -0
  140. package/dist/components/table/TableFilterButton.d.ts +11 -0
  141. package/dist/components/table/TableFilterButton.js +888 -0
  142. package/dist/components/table/TableFilterButton.js.map +1 -0
  143. package/dist/components/table/TableFilterButton.mjs +852 -0
  144. package/dist/components/table/TableFilterButton.mjs.map +1 -0
  145. package/dist/components/table/TableSortButton.d.mts +15 -0
  146. package/dist/components/table/TableSortButton.d.ts +15 -0
  147. package/dist/components/table/TableSortButton.js +136 -0
  148. package/dist/components/table/TableSortButton.js.map +1 -0
  149. package/dist/components/table/TableSortButton.mjs +102 -0
  150. package/dist/components/table/TableSortButton.mjs.map +1 -0
  151. package/dist/components/user-action/Button.d.mts +20 -5
  152. package/dist/components/user-action/Button.d.ts +20 -5
  153. package/dist/components/user-action/Button.js +12 -3
  154. package/dist/components/user-action/Button.js.map +1 -1
  155. package/dist/components/user-action/Button.mjs +11 -3
  156. package/dist/components/user-action/Button.mjs.map +1 -1
  157. package/dist/components/user-action/Checkbox.js +5 -4
  158. package/dist/components/user-action/Checkbox.js.map +1 -1
  159. package/dist/components/user-action/Checkbox.mjs +5 -4
  160. package/dist/components/user-action/Checkbox.mjs.map +1 -1
  161. package/dist/components/user-action/DateAndTimePicker.js +41 -9
  162. package/dist/components/user-action/DateAndTimePicker.js.map +1 -1
  163. package/dist/components/user-action/DateAndTimePicker.mjs +41 -9
  164. package/dist/components/user-action/DateAndTimePicker.mjs.map +1 -1
  165. package/dist/components/user-action/Input.d.mts +27 -7
  166. package/dist/components/user-action/Input.d.ts +27 -7
  167. package/dist/components/user-action/Input.js +173 -64
  168. package/dist/components/user-action/Input.js.map +1 -1
  169. package/dist/components/user-action/Input.mjs +172 -63
  170. package/dist/components/user-action/Input.mjs.map +1 -1
  171. package/dist/components/user-action/MultiSelect.js +195 -75
  172. package/dist/components/user-action/MultiSelect.js.map +1 -1
  173. package/dist/components/user-action/MultiSelect.mjs +187 -67
  174. package/dist/components/user-action/MultiSelect.mjs.map +1 -1
  175. package/dist/components/user-action/ScrollPicker.js +26 -5
  176. package/dist/components/user-action/ScrollPicker.js.map +1 -1
  177. package/dist/components/user-action/ScrollPicker.mjs +26 -5
  178. package/dist/components/user-action/ScrollPicker.mjs.map +1 -1
  179. package/dist/components/user-action/Select.js +195 -75
  180. package/dist/components/user-action/Select.js.map +1 -1
  181. package/dist/components/user-action/Select.mjs +187 -67
  182. package/dist/components/user-action/Select.mjs.map +1 -1
  183. package/dist/components/user-action/Textarea.d.mts +3 -1
  184. package/dist/components/user-action/Textarea.d.ts +3 -1
  185. package/dist/components/user-action/Textarea.js +31 -33
  186. package/dist/components/user-action/Textarea.js.map +1 -1
  187. package/dist/components/user-action/Textarea.mjs +31 -33
  188. package/dist/components/user-action/Textarea.mjs.map +1 -1
  189. package/dist/components/user-action/ToggleableInput.d.mts +3 -1
  190. package/dist/components/user-action/ToggleableInput.d.ts +3 -1
  191. package/dist/components/user-action/ToggleableInput.js +31 -33
  192. package/dist/components/user-action/ToggleableInput.js.map +1 -1
  193. package/dist/components/user-action/ToggleableInput.mjs +31 -33
  194. package/dist/components/user-action/ToggleableInput.mjs.map +1 -1
  195. package/dist/css/globals.css +431 -186
  196. package/dist/css/uncompiled/globals.css +36 -493
  197. package/dist/css/uncompiled/textstyles.css +69 -0
  198. package/dist/css/uncompiled/theme/colors-basic.css +72 -0
  199. package/dist/css/uncompiled/theme/colors-component.css +143 -0
  200. package/dist/css/uncompiled/theme/colors-semantic.css +99 -0
  201. package/dist/css/uncompiled/theme/index.css +5 -0
  202. package/dist/css/uncompiled/theme/theme.css +0 -0
  203. package/dist/css/uncompiled/theme/variants.css +3 -0
  204. package/dist/css/uncompiled/utitlity/animation.css +111 -0
  205. package/dist/css/uncompiled/utitlity/borderradius.css +23 -0
  206. package/dist/css/uncompiled/utitlity/general.css +11 -0
  207. package/dist/css/uncompiled/utitlity/index.css +4 -0
  208. package/dist/css/uncompiled/utitlity/shadow.css +29 -0
  209. package/dist/hooks/useDelay.d.mts +11 -0
  210. package/dist/hooks/useDelay.d.ts +11 -0
  211. package/dist/hooks/useDelay.js +64 -0
  212. package/dist/hooks/useDelay.js.map +1 -0
  213. package/dist/hooks/useDelay.mjs +40 -0
  214. package/dist/hooks/useDelay.mjs.map +1 -0
  215. package/dist/hooks/useFocusManagement.d.mts +9 -0
  216. package/dist/hooks/useFocusManagement.d.ts +9 -0
  217. package/dist/hooks/useFocusManagement.js +84 -0
  218. package/dist/hooks/useFocusManagement.js.map +1 -0
  219. package/dist/hooks/useFocusManagement.mjs +60 -0
  220. package/dist/hooks/useFocusManagement.mjs.map +1 -0
  221. package/dist/hooks/useFocusOnceVisible.d.mts +5 -0
  222. package/dist/hooks/useFocusOnceVisible.d.ts +5 -0
  223. package/dist/hooks/useFocusOnceVisible.js +60 -0
  224. package/dist/hooks/useFocusOnceVisible.js.map +1 -0
  225. package/dist/hooks/useFocusOnceVisible.mjs +26 -0
  226. package/dist/hooks/useFocusOnceVisible.mjs.map +1 -0
  227. package/dist/hooks/useRerender.d.mts +5 -0
  228. package/dist/hooks/useRerender.d.ts +5 -0
  229. package/dist/hooks/useRerender.js +33 -0
  230. package/dist/hooks/useRerender.js.map +1 -0
  231. package/dist/hooks/useRerender.mjs +9 -0
  232. package/dist/hooks/useRerender.mjs.map +1 -0
  233. package/dist/hooks/useResizeCallbackWrapper.d.mts +11 -0
  234. package/dist/hooks/useResizeCallbackWrapper.d.ts +11 -0
  235. package/dist/hooks/useResizeCallbackWrapper.js +38 -0
  236. package/dist/hooks/useResizeCallbackWrapper.js.map +1 -0
  237. package/dist/hooks/useResizeCallbackWrapper.mjs +14 -0
  238. package/dist/hooks/useResizeCallbackWrapper.mjs.map +1 -0
  239. package/dist/index.d.mts +16 -5
  240. package/dist/index.d.ts +16 -5
  241. package/dist/index.js +1428 -860
  242. package/dist/index.js.map +1 -1
  243. package/dist/index.mjs +1370 -799
  244. package/dist/index.mjs.map +1 -1
  245. package/dist/localization/defaults/form.d.mts +1 -0
  246. package/dist/localization/defaults/form.d.ts +1 -0
  247. package/dist/localization/defaults/form.js +2 -0
  248. package/dist/localization/defaults/form.js.map +1 -1
  249. package/dist/localization/defaults/form.mjs +2 -0
  250. package/dist/localization/defaults/form.mjs.map +1 -1
  251. package/dist/util/array.d.mts +11 -5
  252. package/dist/util/array.d.ts +11 -5
  253. package/dist/util/array.js +25 -4
  254. package/dist/util/array.js.map +1 -1
  255. package/dist/util/array.mjs +25 -4
  256. package/dist/util/array.mjs.map +1 -1
  257. package/dist/util/date.js.map +1 -1
  258. package/dist/util/date.mjs.map +1 -1
  259. package/dist/util/resolveSetState.d.mts +5 -0
  260. package/dist/util/resolveSetState.d.ts +5 -0
  261. package/dist/util/resolveSetState.js +32 -0
  262. package/dist/util/resolveSetState.js.map +1 -0
  263. package/dist/util/resolveSetState.mjs +8 -0
  264. package/dist/util/resolveSetState.mjs.map +1 -0
  265. package/package.json +4 -2
  266. package/dist/components/layout-and-navigation/Table.d.mts +0 -99
  267. package/dist/components/layout-and-navigation/Table.d.ts +0 -99
  268. package/dist/components/layout-and-navigation/Table.js +0 -688
  269. package/dist/components/layout-and-navigation/Table.js.map +0 -1
  270. package/dist/components/layout-and-navigation/Table.mjs +0 -645
  271. package/dist/components/layout-and-navigation/Table.mjs.map +0 -1
  272. package/dist/hooks/useSaveDelay.d.mts +0 -6
  273. package/dist/hooks/useSaveDelay.d.ts +0 -6
  274. package/dist/hooks/useSaveDelay.js +0 -67
  275. package/dist/hooks/useSaveDelay.js.map +0 -1
  276. package/dist/hooks/useSaveDelay.mjs +0 -43
  277. package/dist/hooks/useSaveDelay.mjs.map +0 -1
@@ -1,5 +1,5 @@
1
1
  // src/components/user-action/MultiSelect.tsx
2
- import { useEffect as useEffect7, useRef as useRef2, useState as useState6 } from "react";
2
+ import { useEffect as useEffect8, useRef as useRef2, useState as useState6 } from "react";
3
3
  import { ChevronDown, ChevronUp } from "lucide-react";
4
4
 
5
5
  // src/localization/LanguageProvider.tsx
@@ -115,55 +115,147 @@ import { Search } from "lucide-react";
115
115
  import clsx4 from "clsx";
116
116
 
117
117
  // src/components/user-action/Input.tsx
118
- import { forwardRef, useEffect as useEffect4, useRef, useState as useState4 } from "react";
118
+ import { forwardRef, useEffect as useEffect5, useImperativeHandle, useRef, useState as useState4 } from "react";
119
119
  import clsx2 from "clsx";
120
120
 
121
- // src/hooks/useSaveDelay.ts
121
+ // src/hooks/useDelay.ts
122
122
  import { useEffect as useEffect3, useState as useState3 } from "react";
123
- function useSaveDelay(setNotificationStatus, delay) {
124
- const [updateTimer, setUpdateTimer] = useState3(void 0);
125
- const [notificationTimer, setNotificationTimer] = useState3(void 0);
126
- const restartTimer = (onSave) => {
127
- clearTimeout(updateTimer);
128
- setUpdateTimer(setTimeout(() => {
129
- onSave();
130
- setNotificationStatus(true);
131
- clearTimeout(notificationTimer);
132
- setNotificationTimer(setTimeout(() => {
133
- setNotificationStatus(false);
134
- clearTimeout(notificationTimer);
135
- }, delay));
136
- clearTimeout(updateTimer);
137
- }, delay));
123
+ var defaultOptions = {
124
+ delay: 3e3,
125
+ disabled: false
126
+ };
127
+ function useDelay(options) {
128
+ const [timer, setTimer] = useState3(void 0);
129
+ const { delay, disabled } = {
130
+ ...defaultOptions,
131
+ ...options
138
132
  };
139
- const clearUpdateTimer = (hasSaved = true) => {
140
- clearTimeout(updateTimer);
141
- if (hasSaved) {
142
- setNotificationStatus(true);
143
- clearTimeout(notificationTimer);
144
- setNotificationTimer(setTimeout(() => {
145
- setNotificationStatus(false);
146
- clearTimeout(notificationTimer);
147
- }, delay));
148
- } else {
149
- setNotificationStatus(false);
133
+ const restartTimer = (onDelayFinish) => {
134
+ if (disabled) {
135
+ return;
150
136
  }
137
+ clearTimeout(timer);
138
+ setTimer(setTimeout(() => {
139
+ onDelayFinish();
140
+ }, delay));
141
+ };
142
+ const clearTimer = () => {
143
+ clearTimeout(timer);
151
144
  };
152
145
  useEffect3(() => {
153
146
  return () => {
154
- clearTimeout(updateTimer);
155
- clearTimeout(notificationTimer);
147
+ clearTimeout(timer);
156
148
  };
157
- }, []);
158
- return { restartTimer, clearUpdateTimer };
149
+ }, [timer]);
150
+ useEffect3(() => {
151
+ if (disabled) {
152
+ clearTimeout(timer);
153
+ }
154
+ }, [disabled, timer]);
155
+ return { restartTimer, clearTimer };
159
156
  }
160
157
 
161
158
  // src/util/noop.ts
162
159
  var noop = () => void 0;
163
160
 
161
+ // src/hooks/useFocusManagement.ts
162
+ import { useCallback as useCallback2 } from "react";
163
+ function useFocusManagement() {
164
+ const getFocusableElements = useCallback2(() => {
165
+ return Array.from(
166
+ document.querySelectorAll(
167
+ 'input, button, select, textarea, a[href], [tabindex]:not([tabindex="-1"])'
168
+ )
169
+ ).filter(
170
+ (el) => el instanceof HTMLElement && !el.hasAttribute("disabled") && !el.hasAttribute("hidden") && el.tabIndex !== -1
171
+ );
172
+ }, []);
173
+ const getNextFocusElement = useCallback2(() => {
174
+ const elements = getFocusableElements();
175
+ if (elements.length === 0) {
176
+ return void 0;
177
+ }
178
+ let nextElement = elements[0];
179
+ if (document.activeElement instanceof HTMLElement) {
180
+ const currentIndex = elements.indexOf(document.activeElement);
181
+ nextElement = elements[(currentIndex + 1) % elements.length];
182
+ }
183
+ return nextElement;
184
+ }, [getFocusableElements]);
185
+ const focusNext = useCallback2(() => {
186
+ const nextElement = getNextFocusElement();
187
+ nextElement?.focus();
188
+ }, [getNextFocusElement]);
189
+ const getPreviousFocusElement = useCallback2(() => {
190
+ const elements = getFocusableElements();
191
+ if (elements.length === 0) {
192
+ return void 0;
193
+ }
194
+ let previousElement = elements[0];
195
+ if (document.activeElement instanceof HTMLElement) {
196
+ const currentIndex = elements.indexOf(document.activeElement);
197
+ if (currentIndex === 0) {
198
+ previousElement = elements[elements.length - 1];
199
+ } else {
200
+ previousElement = elements[currentIndex - 1];
201
+ }
202
+ }
203
+ return previousElement;
204
+ }, [getFocusableElements]);
205
+ const focusPrevious = useCallback2(() => {
206
+ const previousElement = getPreviousFocusElement();
207
+ if (previousElement) previousElement.focus();
208
+ }, [getPreviousFocusElement]);
209
+ return {
210
+ getFocusableElements,
211
+ getNextFocusElement,
212
+ getPreviousFocusElement,
213
+ focusNext,
214
+ focusPrevious
215
+ };
216
+ }
217
+
218
+ // src/hooks/useFocusOnceVisible.ts
219
+ import React, { useEffect as useEffect4 } from "react";
220
+ var useFocusOnceVisible = (ref, disable = false) => {
221
+ const [hasUsedFocus, setHasUsedFocus] = React.useState(false);
222
+ useEffect4(() => {
223
+ if (disable || hasUsedFocus) {
224
+ return;
225
+ }
226
+ const observer = new IntersectionObserver(([entry]) => {
227
+ if (entry.isIntersecting && !hasUsedFocus) {
228
+ ref.current?.focus();
229
+ setHasUsedFocus(hasUsedFocus);
230
+ }
231
+ }, {
232
+ threshold: 0.1
233
+ });
234
+ if (ref.current) {
235
+ observer.observe(ref.current);
236
+ }
237
+ return () => observer.disconnect();
238
+ }, [disable, hasUsedFocus, ref]);
239
+ };
240
+
164
241
  // src/components/user-action/Input.tsx
165
242
  import { jsx as jsx3, jsxs } from "react/jsx-runtime";
166
- var Input = ({
243
+ var getInputClassName = ({ disabled = false, hasError = false }) => {
244
+ return clsx2(
245
+ "px-2 py-1.5 rounded-md border-2",
246
+ {
247
+ "bg-surface text-on-surface hover:border-primary focus:border-primary": !disabled && !hasError,
248
+ "bg-on-negative text-negative border-negative-border hover:border-negative-border-hover": !disabled && hasError,
249
+ "bg-disabled-background text-disabled-text border-disabled-border": disabled
250
+ }
251
+ );
252
+ };
253
+ var defaultEditCompleteOptions = {
254
+ onBlur: true,
255
+ afterDelay: true,
256
+ delay: 2500
257
+ };
258
+ var Input = forwardRef(function Input2({
167
259
  id,
168
260
  type = "text",
169
261
  value,
@@ -172,57 +264,72 @@ var Input = ({
172
264
  onChangeText = noop,
173
265
  onEditCompleted,
174
266
  className = "",
267
+ allowEnterComplete = true,
175
268
  expanded = true,
176
- autoFocus,
269
+ autoFocus = false,
177
270
  onBlur,
271
+ editCompleteOptions,
178
272
  containerClassName,
273
+ disabled,
179
274
  ...restProps
180
- }) => {
275
+ }, forwardedRef) {
276
+ const { onBlur: allowEditCompleteOnBlur, afterDelay, delay } = { ...defaultEditCompleteOptions, ...editCompleteOptions };
181
277
  const {
182
278
  restartTimer,
183
- clearUpdateTimer
184
- } = useSaveDelay(() => void 0, 3e3);
185
- const ref = useRef(null);
186
- useEffect4(() => {
187
- if (autoFocus) {
188
- ref.current?.focus();
279
+ clearTimer
280
+ } = useDelay({ delay, disabled: !afterDelay });
281
+ const innerRef = useRef(null);
282
+ const { focusNext } = useFocusManagement();
283
+ useFocusOnceVisible(innerRef, !autoFocus);
284
+ useImperativeHandle(forwardedRef, () => innerRef.current);
285
+ const handleKeyDown = (e) => {
286
+ if (e.key === "Enter" && !e.shiftKey) {
287
+ e.preventDefault();
288
+ innerRef.current?.blur();
289
+ focusNext();
189
290
  }
190
- }, [autoFocus]);
291
+ };
191
292
  return /* @__PURE__ */ jsxs("div", { className: clsx2({ "w-full": expanded }, containerClassName), children: [
192
293
  label && /* @__PURE__ */ jsx3(Label, { ...label, htmlFor: id, className: clsx2("mb-1", label.className) }),
193
294
  /* @__PURE__ */ jsx3(
194
295
  "input",
195
296
  {
196
- ref,
297
+ ...restProps,
298
+ ref: innerRef,
197
299
  value,
198
300
  id,
199
301
  type,
200
- className,
302
+ disabled,
303
+ className: clsx2(getInputClassName({ disabled }), className),
304
+ onKeyDown: allowEnterComplete ? handleKeyDown : void 0,
201
305
  onBlur: (event) => {
202
- if (onBlur) {
203
- onBlur(event);
204
- }
205
- if (onEditCompleted) {
306
+ onBlur?.(event);
307
+ if (onEditCompleted && allowEditCompleteOnBlur) {
206
308
  onEditCompleted(event.target.value);
207
- clearUpdateTimer();
309
+ clearTimer();
208
310
  }
209
311
  },
210
312
  onChange: (e) => {
211
313
  const value2 = e.target.value;
212
314
  if (onEditCompleted) {
213
315
  restartTimer(() => {
214
- onEditCompleted(value2);
215
- clearUpdateTimer();
316
+ if (innerRef.current) {
317
+ innerRef.current.blur();
318
+ if (!allowEditCompleteOnBlur) {
319
+ onEditCompleted(value2);
320
+ }
321
+ } else {
322
+ onEditCompleted(value2);
323
+ }
216
324
  });
217
325
  }
218
326
  onChange(e);
219
327
  onChangeText(value2);
220
- },
221
- ...restProps
328
+ }
222
329
  }
223
330
  )
224
331
  ] });
225
- };
332
+ });
226
333
  var FormInput = forwardRef(function FormInput2({
227
334
  id,
228
335
  labelText,
@@ -232,19 +339,18 @@ var FormInput = forwardRef(function FormInput2({
232
339
  errorClassName,
233
340
  containerClassName,
234
341
  required,
342
+ disabled,
235
343
  ...restProps
236
344
  }, ref) {
237
345
  const input = /* @__PURE__ */ jsx3(
238
346
  "input",
239
347
  {
348
+ ...restProps,
240
349
  ref,
241
350
  id,
242
- ...restProps,
351
+ disabled,
243
352
  className: clsx2(
244
- {
245
- "focus:border-primary focus:ring-primary": !errorText,
246
- "focus:border-negative focus:ring-negative text-negative": !!errorText
247
- },
353
+ getInputClassName({ disabled, hasError: !!errorText }),
248
354
  className
249
355
  )
250
356
  }
@@ -262,12 +368,21 @@ var FormInput = forwardRef(function FormInput2({
262
368
  // src/components/user-action/Button.tsx
263
369
  import clsx3 from "clsx";
264
370
  import { jsx as jsx4, jsxs as jsxs2 } from "react/jsx-runtime";
371
+ var ButtonColorUtil = {
372
+ solid: ["primary", "secondary", "tertiary", "positive", "warning", "negative", "neutral"],
373
+ text: ["primary", "negative", "neutral"],
374
+ outline: ["primary"]
375
+ };
376
+ var IconButtonUtil = {
377
+ icon: [...ButtonColorUtil.solid, "transparent"]
378
+ };
265
379
  var paddingMapping = {
266
380
  small: "btn-sm",
267
381
  medium: "btn-md",
268
382
  large: "btn-lg"
269
383
  };
270
384
  var iconPaddingMapping = {
385
+ tiny: "icon-btn-xs",
271
386
  small: "icon-btn-sm",
272
387
  medium: "icon-btn-md",
273
388
  large: "icon-btn-lg"
@@ -361,7 +476,8 @@ var IconButton = ({
361
476
  positive: "bg-button-solid-positive-background text-button-solid-positive-text",
362
477
  warning: "bg-button-solid-warning-background text-button-solid-warning-text",
363
478
  negative: "bg-button-solid-negative-background text-button-solid-negative-text",
364
- neutral: "bg-button-solid-neutral-background text-button-solid-neutral-text"
479
+ neutral: "bg-button-solid-neutral-background text-button-solid-neutral-text",
480
+ transparent: "bg-transparent"
365
481
  }[color];
366
482
  return /* @__PURE__ */ jsx4(
367
483
  "button",
@@ -370,7 +486,9 @@ var IconButton = ({
370
486
  disabled: disabled || onClick === void 0,
371
487
  className: clsx3(
372
488
  {
373
- "text-disabled-text bg-disabled-background cursor-not-allowed": disabled,
489
+ "text-disabled-text bg-disabled-background cursor-not-allowed": disabled && color !== "transparent",
490
+ "text-disabled-text cursor-not-allowed opacity-70": disabled && color === "transparent",
491
+ "hover:bg-button-text-hover-background": !disabled && color === "transparent",
374
492
  [clsx3(colorClasses, "hover:brightness-90")]: !disabled
375
493
  },
376
494
  ButtonUtil.iconPaddingMapping[size],
@@ -383,7 +501,7 @@ var IconButton = ({
383
501
  };
384
502
 
385
503
  // src/hooks/useSearch.ts
386
- import { useEffect as useEffect5, useMemo, useState as useState5 } from "react";
504
+ import { useEffect as useEffect6, useMemo, useState as useState5 } from "react";
387
505
 
388
506
  // src/util/simpleSearch.ts
389
507
  var MultiSearchWithMapping = (search, objects, mapping) => {
@@ -404,7 +522,7 @@ var useSearch = ({
404
522
  }) => {
405
523
  const [items, setItems] = useState5(list);
406
524
  const [search, setSearch] = useState5(initialSearch);
407
- useEffect5(() => {
525
+ useEffect6(() => {
408
526
  setItems(list);
409
527
  }, [list]);
410
528
  const result = useMemo(
@@ -425,6 +543,7 @@ var useSearch = ({
425
543
  var formTranslation = {
426
544
  en: {
427
545
  all: "All",
546
+ apply: "Apply",
428
547
  back: "Back",
429
548
  cancel: "Cancel",
430
549
  change: "Change",
@@ -473,6 +592,7 @@ var formTranslation = {
473
592
  },
474
593
  de: {
475
594
  all: "Alle",
595
+ apply: "Anwenden",
476
596
  back: "Zur\xFCck",
477
597
  cancel: "Abbrechen",
478
598
  change: "\xC4ndern",
@@ -670,9 +790,9 @@ var ChipList = ({
670
790
  };
671
791
 
672
792
  // src/hooks/useOutsideClick.ts
673
- import { useEffect as useEffect6 } from "react";
793
+ import { useEffect as useEffect7 } from "react";
674
794
  var useOutsideClick = (refs, handler) => {
675
- useEffect6(() => {
795
+ useEffect7(() => {
676
796
  const listener = (event) => {
677
797
  if (event.target === null) return;
678
798
  if (refs.some((ref) => !ref.current || ref.current.contains(event.target))) {
@@ -827,7 +947,7 @@ var MultiSelectUncontrolled = ({
827
947
  ...props
828
948
  }) => {
829
949
  const [usedOptions, setUsedOptions] = useState6(options);
830
- useEffect7(() => {
950
+ useEffect8(() => {
831
951
  setUsedOptions(options);
832
952
  }, [options]);
833
953
  return /* @__PURE__ */ jsx8(