@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
@@ -90,7 +90,7 @@ var useTranslation = (translations, overwriteTranslation = {}) => {
90
90
  };
91
91
 
92
92
  // src/components/user-action/MultiSelect.tsx
93
- import { useEffect as useEffect7, useRef as useRef2, useState as useState6 } from "react";
93
+ import { useEffect as useEffect8, useRef as useRef2, useState as useState6 } from "react";
94
94
  import { ChevronDown, ChevronUp } from "lucide-react";
95
95
  import clsx7 from "clsx";
96
96
 
@@ -117,55 +117,147 @@ import { Search } from "lucide-react";
117
117
  import clsx4 from "clsx";
118
118
 
119
119
  // src/components/user-action/Input.tsx
120
- import { forwardRef, useEffect as useEffect4, useRef, useState as useState4 } from "react";
120
+ import { forwardRef, useEffect as useEffect5, useImperativeHandle, useRef, useState as useState4 } from "react";
121
121
  import clsx2 from "clsx";
122
122
 
123
- // src/hooks/useSaveDelay.ts
123
+ // src/hooks/useDelay.ts
124
124
  import { useEffect as useEffect3, useState as useState3 } from "react";
125
- function useSaveDelay(setNotificationStatus, delay) {
126
- const [updateTimer, setUpdateTimer] = useState3(void 0);
127
- const [notificationTimer, setNotificationTimer] = useState3(void 0);
128
- const restartTimer = (onSave) => {
129
- clearTimeout(updateTimer);
130
- setUpdateTimer(setTimeout(() => {
131
- onSave();
132
- setNotificationStatus(true);
133
- clearTimeout(notificationTimer);
134
- setNotificationTimer(setTimeout(() => {
135
- setNotificationStatus(false);
136
- clearTimeout(notificationTimer);
137
- }, delay));
138
- clearTimeout(updateTimer);
139
- }, delay));
125
+ var defaultOptions = {
126
+ delay: 3e3,
127
+ disabled: false
128
+ };
129
+ function useDelay(options) {
130
+ const [timer, setTimer] = useState3(void 0);
131
+ const { delay, disabled } = {
132
+ ...defaultOptions,
133
+ ...options
140
134
  };
141
- const clearUpdateTimer = (hasSaved = true) => {
142
- clearTimeout(updateTimer);
143
- if (hasSaved) {
144
- setNotificationStatus(true);
145
- clearTimeout(notificationTimer);
146
- setNotificationTimer(setTimeout(() => {
147
- setNotificationStatus(false);
148
- clearTimeout(notificationTimer);
149
- }, delay));
150
- } else {
151
- setNotificationStatus(false);
135
+ const restartTimer = (onDelayFinish) => {
136
+ if (disabled) {
137
+ return;
152
138
  }
139
+ clearTimeout(timer);
140
+ setTimer(setTimeout(() => {
141
+ onDelayFinish();
142
+ }, delay));
143
+ };
144
+ const clearTimer = () => {
145
+ clearTimeout(timer);
153
146
  };
154
147
  useEffect3(() => {
155
148
  return () => {
156
- clearTimeout(updateTimer);
157
- clearTimeout(notificationTimer);
149
+ clearTimeout(timer);
158
150
  };
159
- }, []);
160
- return { restartTimer, clearUpdateTimer };
151
+ }, [timer]);
152
+ useEffect3(() => {
153
+ if (disabled) {
154
+ clearTimeout(timer);
155
+ }
156
+ }, [disabled, timer]);
157
+ return { restartTimer, clearTimer };
161
158
  }
162
159
 
163
160
  // src/util/noop.ts
164
161
  var noop = () => void 0;
165
162
 
163
+ // src/hooks/useFocusManagement.ts
164
+ import { useCallback as useCallback2 } from "react";
165
+ function useFocusManagement() {
166
+ const getFocusableElements = useCallback2(() => {
167
+ return Array.from(
168
+ document.querySelectorAll(
169
+ 'input, button, select, textarea, a[href], [tabindex]:not([tabindex="-1"])'
170
+ )
171
+ ).filter(
172
+ (el) => el instanceof HTMLElement && !el.hasAttribute("disabled") && !el.hasAttribute("hidden") && el.tabIndex !== -1
173
+ );
174
+ }, []);
175
+ const getNextFocusElement = useCallback2(() => {
176
+ const elements = getFocusableElements();
177
+ if (elements.length === 0) {
178
+ return void 0;
179
+ }
180
+ let nextElement = elements[0];
181
+ if (document.activeElement instanceof HTMLElement) {
182
+ const currentIndex = elements.indexOf(document.activeElement);
183
+ nextElement = elements[(currentIndex + 1) % elements.length];
184
+ }
185
+ return nextElement;
186
+ }, [getFocusableElements]);
187
+ const focusNext = useCallback2(() => {
188
+ const nextElement = getNextFocusElement();
189
+ nextElement?.focus();
190
+ }, [getNextFocusElement]);
191
+ const getPreviousFocusElement = useCallback2(() => {
192
+ const elements = getFocusableElements();
193
+ if (elements.length === 0) {
194
+ return void 0;
195
+ }
196
+ let previousElement = elements[0];
197
+ if (document.activeElement instanceof HTMLElement) {
198
+ const currentIndex = elements.indexOf(document.activeElement);
199
+ if (currentIndex === 0) {
200
+ previousElement = elements[elements.length - 1];
201
+ } else {
202
+ previousElement = elements[currentIndex - 1];
203
+ }
204
+ }
205
+ return previousElement;
206
+ }, [getFocusableElements]);
207
+ const focusPrevious = useCallback2(() => {
208
+ const previousElement = getPreviousFocusElement();
209
+ if (previousElement) previousElement.focus();
210
+ }, [getPreviousFocusElement]);
211
+ return {
212
+ getFocusableElements,
213
+ getNextFocusElement,
214
+ getPreviousFocusElement,
215
+ focusNext,
216
+ focusPrevious
217
+ };
218
+ }
219
+
220
+ // src/hooks/useFocusOnceVisible.ts
221
+ import React, { useEffect as useEffect4 } from "react";
222
+ var useFocusOnceVisible = (ref, disable = false) => {
223
+ const [hasUsedFocus, setHasUsedFocus] = React.useState(false);
224
+ useEffect4(() => {
225
+ if (disable || hasUsedFocus) {
226
+ return;
227
+ }
228
+ const observer = new IntersectionObserver(([entry]) => {
229
+ if (entry.isIntersecting && !hasUsedFocus) {
230
+ ref.current?.focus();
231
+ setHasUsedFocus(hasUsedFocus);
232
+ }
233
+ }, {
234
+ threshold: 0.1
235
+ });
236
+ if (ref.current) {
237
+ observer.observe(ref.current);
238
+ }
239
+ return () => observer.disconnect();
240
+ }, [disable, hasUsedFocus, ref]);
241
+ };
242
+
166
243
  // src/components/user-action/Input.tsx
167
244
  import { jsx as jsx3, jsxs } from "react/jsx-runtime";
168
- var Input = ({
245
+ var getInputClassName = ({ disabled = false, hasError = false }) => {
246
+ return clsx2(
247
+ "px-2 py-1.5 rounded-md border-2",
248
+ {
249
+ "bg-surface text-on-surface hover:border-primary focus:border-primary": !disabled && !hasError,
250
+ "bg-on-negative text-negative border-negative-border hover:border-negative-border-hover": !disabled && hasError,
251
+ "bg-disabled-background text-disabled-text border-disabled-border": disabled
252
+ }
253
+ );
254
+ };
255
+ var defaultEditCompleteOptions = {
256
+ onBlur: true,
257
+ afterDelay: true,
258
+ delay: 2500
259
+ };
260
+ var Input = forwardRef(function Input2({
169
261
  id,
170
262
  type = "text",
171
263
  value,
@@ -174,57 +266,72 @@ var Input = ({
174
266
  onChangeText = noop,
175
267
  onEditCompleted,
176
268
  className = "",
269
+ allowEnterComplete = true,
177
270
  expanded = true,
178
- autoFocus,
271
+ autoFocus = false,
179
272
  onBlur,
273
+ editCompleteOptions,
180
274
  containerClassName,
275
+ disabled,
181
276
  ...restProps
182
- }) => {
277
+ }, forwardedRef) {
278
+ const { onBlur: allowEditCompleteOnBlur, afterDelay, delay } = { ...defaultEditCompleteOptions, ...editCompleteOptions };
183
279
  const {
184
280
  restartTimer,
185
- clearUpdateTimer
186
- } = useSaveDelay(() => void 0, 3e3);
187
- const ref = useRef(null);
188
- useEffect4(() => {
189
- if (autoFocus) {
190
- ref.current?.focus();
281
+ clearTimer
282
+ } = useDelay({ delay, disabled: !afterDelay });
283
+ const innerRef = useRef(null);
284
+ const { focusNext } = useFocusManagement();
285
+ useFocusOnceVisible(innerRef, !autoFocus);
286
+ useImperativeHandle(forwardedRef, () => innerRef.current);
287
+ const handleKeyDown = (e) => {
288
+ if (e.key === "Enter" && !e.shiftKey) {
289
+ e.preventDefault();
290
+ innerRef.current?.blur();
291
+ focusNext();
191
292
  }
192
- }, [autoFocus]);
293
+ };
193
294
  return /* @__PURE__ */ jsxs("div", { className: clsx2({ "w-full": expanded }, containerClassName), children: [
194
295
  label && /* @__PURE__ */ jsx3(Label, { ...label, htmlFor: id, className: clsx2("mb-1", label.className) }),
195
296
  /* @__PURE__ */ jsx3(
196
297
  "input",
197
298
  {
198
- ref,
299
+ ...restProps,
300
+ ref: innerRef,
199
301
  value,
200
302
  id,
201
303
  type,
202
- className,
304
+ disabled,
305
+ className: clsx2(getInputClassName({ disabled }), className),
306
+ onKeyDown: allowEnterComplete ? handleKeyDown : void 0,
203
307
  onBlur: (event) => {
204
- if (onBlur) {
205
- onBlur(event);
206
- }
207
- if (onEditCompleted) {
308
+ onBlur?.(event);
309
+ if (onEditCompleted && allowEditCompleteOnBlur) {
208
310
  onEditCompleted(event.target.value);
209
- clearUpdateTimer();
311
+ clearTimer();
210
312
  }
211
313
  },
212
314
  onChange: (e) => {
213
315
  const value2 = e.target.value;
214
316
  if (onEditCompleted) {
215
317
  restartTimer(() => {
216
- onEditCompleted(value2);
217
- clearUpdateTimer();
318
+ if (innerRef.current) {
319
+ innerRef.current.blur();
320
+ if (!allowEditCompleteOnBlur) {
321
+ onEditCompleted(value2);
322
+ }
323
+ } else {
324
+ onEditCompleted(value2);
325
+ }
218
326
  });
219
327
  }
220
328
  onChange(e);
221
329
  onChangeText(value2);
222
- },
223
- ...restProps
330
+ }
224
331
  }
225
332
  )
226
333
  ] });
227
- };
334
+ });
228
335
  var FormInput = forwardRef(function FormInput2({
229
336
  id,
230
337
  labelText,
@@ -234,19 +341,18 @@ var FormInput = forwardRef(function FormInput2({
234
341
  errorClassName,
235
342
  containerClassName,
236
343
  required,
344
+ disabled,
237
345
  ...restProps
238
346
  }, ref) {
239
347
  const input = /* @__PURE__ */ jsx3(
240
348
  "input",
241
349
  {
350
+ ...restProps,
242
351
  ref,
243
352
  id,
244
- ...restProps,
353
+ disabled,
245
354
  className: clsx2(
246
- {
247
- "focus:border-primary focus:ring-primary": !errorText,
248
- "focus:border-negative focus:ring-negative text-negative": !!errorText
249
- },
355
+ getInputClassName({ disabled, hasError: !!errorText }),
250
356
  className
251
357
  )
252
358
  }
@@ -264,12 +370,21 @@ var FormInput = forwardRef(function FormInput2({
264
370
  // src/components/user-action/Button.tsx
265
371
  import clsx3 from "clsx";
266
372
  import { jsx as jsx4, jsxs as jsxs2 } from "react/jsx-runtime";
373
+ var ButtonColorUtil = {
374
+ solid: ["primary", "secondary", "tertiary", "positive", "warning", "negative", "neutral"],
375
+ text: ["primary", "negative", "neutral"],
376
+ outline: ["primary"]
377
+ };
378
+ var IconButtonUtil = {
379
+ icon: [...ButtonColorUtil.solid, "transparent"]
380
+ };
267
381
  var paddingMapping = {
268
382
  small: "btn-sm",
269
383
  medium: "btn-md",
270
384
  large: "btn-lg"
271
385
  };
272
386
  var iconPaddingMapping = {
387
+ tiny: "icon-btn-xs",
273
388
  small: "icon-btn-sm",
274
389
  medium: "icon-btn-md",
275
390
  large: "icon-btn-lg"
@@ -376,7 +491,7 @@ var TextButton = ({
376
491
  className: clsx3(
377
492
  {
378
493
  "text-disabled-text cursor-not-allowed": disabled,
379
- [clsx3(colorClasses, "hover:bg-button-text-hover-background rounded-full")]: !disabled
494
+ [clsx3(colorClasses, "hover:bg-button-text-hover-background")]: !disabled
380
495
  },
381
496
  ButtonUtil.paddingMapping[size],
382
497
  className
@@ -424,7 +539,8 @@ var IconButton = ({
424
539
  positive: "bg-button-solid-positive-background text-button-solid-positive-text",
425
540
  warning: "bg-button-solid-warning-background text-button-solid-warning-text",
426
541
  negative: "bg-button-solid-negative-background text-button-solid-negative-text",
427
- neutral: "bg-button-solid-neutral-background text-button-solid-neutral-text"
542
+ neutral: "bg-button-solid-neutral-background text-button-solid-neutral-text",
543
+ transparent: "bg-transparent"
428
544
  }[color];
429
545
  return /* @__PURE__ */ jsx4(
430
546
  "button",
@@ -433,7 +549,9 @@ var IconButton = ({
433
549
  disabled: disabled || onClick === void 0,
434
550
  className: clsx3(
435
551
  {
436
- "text-disabled-text bg-disabled-background cursor-not-allowed": disabled,
552
+ "text-disabled-text bg-disabled-background cursor-not-allowed": disabled && color !== "transparent",
553
+ "text-disabled-text cursor-not-allowed opacity-70": disabled && color === "transparent",
554
+ "hover:bg-button-text-hover-background": !disabled && color === "transparent",
437
555
  [clsx3(colorClasses, "hover:brightness-90")]: !disabled
438
556
  },
439
557
  ButtonUtil.iconPaddingMapping[size],
@@ -446,7 +564,7 @@ var IconButton = ({
446
564
  };
447
565
 
448
566
  // src/hooks/useSearch.ts
449
- import { useEffect as useEffect5, useMemo, useState as useState5 } from "react";
567
+ import { useEffect as useEffect6, useMemo, useState as useState5 } from "react";
450
568
 
451
569
  // src/util/simpleSearch.ts
452
570
  var MultiSearchWithMapping = (search, objects, mapping) => {
@@ -467,7 +585,7 @@ var useSearch = ({
467
585
  }) => {
468
586
  const [items, setItems] = useState5(list);
469
587
  const [search, setSearch] = useState5(initialSearch);
470
- useEffect5(() => {
588
+ useEffect6(() => {
471
589
  setItems(list);
472
590
  }, [list]);
473
591
  const result = useMemo(
@@ -488,6 +606,7 @@ var useSearch = ({
488
606
  var formTranslation = {
489
607
  en: {
490
608
  all: "All",
609
+ apply: "Apply",
491
610
  back: "Back",
492
611
  cancel: "Cancel",
493
612
  change: "Change",
@@ -536,6 +655,7 @@ var formTranslation = {
536
655
  },
537
656
  de: {
538
657
  all: "Alle",
658
+ apply: "Anwenden",
539
659
  back: "Zur\xFCck",
540
660
  cancel: "Abbrechen",
541
661
  change: "\xC4ndern",
@@ -733,9 +853,9 @@ var ChipList = ({
733
853
  };
734
854
 
735
855
  // src/hooks/useOutsideClick.ts
736
- import { useEffect as useEffect6 } from "react";
856
+ import { useEffect as useEffect7 } from "react";
737
857
  var useOutsideClick = (refs, handler) => {
738
- useEffect6(() => {
858
+ useEffect7(() => {
739
859
  const listener = (event) => {
740
860
  if (event.target === null) return;
741
861
  if (refs.some((ref) => !ref.current || ref.current.contains(event.target))) {