@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,6 +1,6 @@
1
1
  // src/components/user-action/Select.tsx
2
2
  import { ChevronDown, ChevronUp } from "lucide-react";
3
- import { useEffect as useEffect7, useRef as useRef2, useState as useState6 } from "react";
3
+ import { useEffect as useEffect8, useRef as useRef2, useState as useState6 } from "react";
4
4
  import clsx6 from "clsx";
5
5
 
6
6
  // src/components/user-action/Label.tsx
@@ -113,55 +113,147 @@ var useTranslation = (translations, overwriteTranslation = {}) => {
113
113
  };
114
114
 
115
115
  // src/components/user-action/Input.tsx
116
- import { forwardRef, useEffect as useEffect4, useRef, useState as useState4 } from "react";
116
+ import { forwardRef, useEffect as useEffect5, useImperativeHandle, useRef, useState as useState4 } from "react";
117
117
  import clsx2 from "clsx";
118
118
 
119
- // src/hooks/useSaveDelay.ts
119
+ // src/hooks/useDelay.ts
120
120
  import { useEffect as useEffect3, useState as useState3 } from "react";
121
- function useSaveDelay(setNotificationStatus, delay) {
122
- const [updateTimer, setUpdateTimer] = useState3(void 0);
123
- const [notificationTimer, setNotificationTimer] = useState3(void 0);
124
- const restartTimer = (onSave) => {
125
- clearTimeout(updateTimer);
126
- setUpdateTimer(setTimeout(() => {
127
- onSave();
128
- setNotificationStatus(true);
129
- clearTimeout(notificationTimer);
130
- setNotificationTimer(setTimeout(() => {
131
- setNotificationStatus(false);
132
- clearTimeout(notificationTimer);
133
- }, delay));
134
- clearTimeout(updateTimer);
135
- }, delay));
121
+ var defaultOptions = {
122
+ delay: 3e3,
123
+ disabled: false
124
+ };
125
+ function useDelay(options) {
126
+ const [timer, setTimer] = useState3(void 0);
127
+ const { delay, disabled } = {
128
+ ...defaultOptions,
129
+ ...options
136
130
  };
137
- const clearUpdateTimer = (hasSaved = true) => {
138
- clearTimeout(updateTimer);
139
- if (hasSaved) {
140
- setNotificationStatus(true);
141
- clearTimeout(notificationTimer);
142
- setNotificationTimer(setTimeout(() => {
143
- setNotificationStatus(false);
144
- clearTimeout(notificationTimer);
145
- }, delay));
146
- } else {
147
- setNotificationStatus(false);
131
+ const restartTimer = (onDelayFinish) => {
132
+ if (disabled) {
133
+ return;
148
134
  }
135
+ clearTimeout(timer);
136
+ setTimer(setTimeout(() => {
137
+ onDelayFinish();
138
+ }, delay));
139
+ };
140
+ const clearTimer = () => {
141
+ clearTimeout(timer);
149
142
  };
150
143
  useEffect3(() => {
151
144
  return () => {
152
- clearTimeout(updateTimer);
153
- clearTimeout(notificationTimer);
145
+ clearTimeout(timer);
154
146
  };
155
- }, []);
156
- return { restartTimer, clearUpdateTimer };
147
+ }, [timer]);
148
+ useEffect3(() => {
149
+ if (disabled) {
150
+ clearTimeout(timer);
151
+ }
152
+ }, [disabled, timer]);
153
+ return { restartTimer, clearTimer };
157
154
  }
158
155
 
159
156
  // src/util/noop.ts
160
157
  var noop = () => void 0;
161
158
 
159
+ // src/hooks/useFocusManagement.ts
160
+ import { useCallback as useCallback2 } from "react";
161
+ function useFocusManagement() {
162
+ const getFocusableElements = useCallback2(() => {
163
+ return Array.from(
164
+ document.querySelectorAll(
165
+ 'input, button, select, textarea, a[href], [tabindex]:not([tabindex="-1"])'
166
+ )
167
+ ).filter(
168
+ (el) => el instanceof HTMLElement && !el.hasAttribute("disabled") && !el.hasAttribute("hidden") && el.tabIndex !== -1
169
+ );
170
+ }, []);
171
+ const getNextFocusElement = useCallback2(() => {
172
+ const elements = getFocusableElements();
173
+ if (elements.length === 0) {
174
+ return void 0;
175
+ }
176
+ let nextElement = elements[0];
177
+ if (document.activeElement instanceof HTMLElement) {
178
+ const currentIndex = elements.indexOf(document.activeElement);
179
+ nextElement = elements[(currentIndex + 1) % elements.length];
180
+ }
181
+ return nextElement;
182
+ }, [getFocusableElements]);
183
+ const focusNext = useCallback2(() => {
184
+ const nextElement = getNextFocusElement();
185
+ nextElement?.focus();
186
+ }, [getNextFocusElement]);
187
+ const getPreviousFocusElement = useCallback2(() => {
188
+ const elements = getFocusableElements();
189
+ if (elements.length === 0) {
190
+ return void 0;
191
+ }
192
+ let previousElement = elements[0];
193
+ if (document.activeElement instanceof HTMLElement) {
194
+ const currentIndex = elements.indexOf(document.activeElement);
195
+ if (currentIndex === 0) {
196
+ previousElement = elements[elements.length - 1];
197
+ } else {
198
+ previousElement = elements[currentIndex - 1];
199
+ }
200
+ }
201
+ return previousElement;
202
+ }, [getFocusableElements]);
203
+ const focusPrevious = useCallback2(() => {
204
+ const previousElement = getPreviousFocusElement();
205
+ if (previousElement) previousElement.focus();
206
+ }, [getPreviousFocusElement]);
207
+ return {
208
+ getFocusableElements,
209
+ getNextFocusElement,
210
+ getPreviousFocusElement,
211
+ focusNext,
212
+ focusPrevious
213
+ };
214
+ }
215
+
216
+ // src/hooks/useFocusOnceVisible.ts
217
+ import React, { useEffect as useEffect4 } from "react";
218
+ var useFocusOnceVisible = (ref, disable = false) => {
219
+ const [hasUsedFocus, setHasUsedFocus] = React.useState(false);
220
+ useEffect4(() => {
221
+ if (disable || hasUsedFocus) {
222
+ return;
223
+ }
224
+ const observer = new IntersectionObserver(([entry]) => {
225
+ if (entry.isIntersecting && !hasUsedFocus) {
226
+ ref.current?.focus();
227
+ setHasUsedFocus(hasUsedFocus);
228
+ }
229
+ }, {
230
+ threshold: 0.1
231
+ });
232
+ if (ref.current) {
233
+ observer.observe(ref.current);
234
+ }
235
+ return () => observer.disconnect();
236
+ }, [disable, hasUsedFocus, ref]);
237
+ };
238
+
162
239
  // src/components/user-action/Input.tsx
163
240
  import { jsx as jsx3, jsxs } from "react/jsx-runtime";
164
- var Input = ({
241
+ var getInputClassName = ({ disabled = false, hasError = false }) => {
242
+ return clsx2(
243
+ "px-2 py-1.5 rounded-md border-2",
244
+ {
245
+ "bg-surface text-on-surface hover:border-primary focus:border-primary": !disabled && !hasError,
246
+ "bg-on-negative text-negative border-negative-border hover:border-negative-border-hover": !disabled && hasError,
247
+ "bg-disabled-background text-disabled-text border-disabled-border": disabled
248
+ }
249
+ );
250
+ };
251
+ var defaultEditCompleteOptions = {
252
+ onBlur: true,
253
+ afterDelay: true,
254
+ delay: 2500
255
+ };
256
+ var Input = forwardRef(function Input2({
165
257
  id,
166
258
  type = "text",
167
259
  value,
@@ -170,57 +262,72 @@ var Input = ({
170
262
  onChangeText = noop,
171
263
  onEditCompleted,
172
264
  className = "",
265
+ allowEnterComplete = true,
173
266
  expanded = true,
174
- autoFocus,
267
+ autoFocus = false,
175
268
  onBlur,
269
+ editCompleteOptions,
176
270
  containerClassName,
271
+ disabled,
177
272
  ...restProps
178
- }) => {
273
+ }, forwardedRef) {
274
+ const { onBlur: allowEditCompleteOnBlur, afterDelay, delay } = { ...defaultEditCompleteOptions, ...editCompleteOptions };
179
275
  const {
180
276
  restartTimer,
181
- clearUpdateTimer
182
- } = useSaveDelay(() => void 0, 3e3);
183
- const ref = useRef(null);
184
- useEffect4(() => {
185
- if (autoFocus) {
186
- ref.current?.focus();
277
+ clearTimer
278
+ } = useDelay({ delay, disabled: !afterDelay });
279
+ const innerRef = useRef(null);
280
+ const { focusNext } = useFocusManagement();
281
+ useFocusOnceVisible(innerRef, !autoFocus);
282
+ useImperativeHandle(forwardedRef, () => innerRef.current);
283
+ const handleKeyDown = (e) => {
284
+ if (e.key === "Enter" && !e.shiftKey) {
285
+ e.preventDefault();
286
+ innerRef.current?.blur();
287
+ focusNext();
187
288
  }
188
- }, [autoFocus]);
289
+ };
189
290
  return /* @__PURE__ */ jsxs("div", { className: clsx2({ "w-full": expanded }, containerClassName), children: [
190
291
  label && /* @__PURE__ */ jsx3(Label, { ...label, htmlFor: id, className: clsx2("mb-1", label.className) }),
191
292
  /* @__PURE__ */ jsx3(
192
293
  "input",
193
294
  {
194
- ref,
295
+ ...restProps,
296
+ ref: innerRef,
195
297
  value,
196
298
  id,
197
299
  type,
198
- className,
300
+ disabled,
301
+ className: clsx2(getInputClassName({ disabled }), className),
302
+ onKeyDown: allowEnterComplete ? handleKeyDown : void 0,
199
303
  onBlur: (event) => {
200
- if (onBlur) {
201
- onBlur(event);
202
- }
203
- if (onEditCompleted) {
304
+ onBlur?.(event);
305
+ if (onEditCompleted && allowEditCompleteOnBlur) {
204
306
  onEditCompleted(event.target.value);
205
- clearUpdateTimer();
307
+ clearTimer();
206
308
  }
207
309
  },
208
310
  onChange: (e) => {
209
311
  const value2 = e.target.value;
210
312
  if (onEditCompleted) {
211
313
  restartTimer(() => {
212
- onEditCompleted(value2);
213
- clearUpdateTimer();
314
+ if (innerRef.current) {
315
+ innerRef.current.blur();
316
+ if (!allowEditCompleteOnBlur) {
317
+ onEditCompleted(value2);
318
+ }
319
+ } else {
320
+ onEditCompleted(value2);
321
+ }
214
322
  });
215
323
  }
216
324
  onChange(e);
217
325
  onChangeText(value2);
218
- },
219
- ...restProps
326
+ }
220
327
  }
221
328
  )
222
329
  ] });
223
- };
330
+ });
224
331
  var FormInput = forwardRef(function FormInput2({
225
332
  id,
226
333
  labelText,
@@ -230,19 +337,18 @@ var FormInput = forwardRef(function FormInput2({
230
337
  errorClassName,
231
338
  containerClassName,
232
339
  required,
340
+ disabled,
233
341
  ...restProps
234
342
  }, ref) {
235
343
  const input = /* @__PURE__ */ jsx3(
236
344
  "input",
237
345
  {
346
+ ...restProps,
238
347
  ref,
239
348
  id,
240
- ...restProps,
349
+ disabled,
241
350
  className: clsx2(
242
- {
243
- "focus:border-primary focus:ring-primary": !errorText,
244
- "focus:border-negative focus:ring-negative text-negative": !!errorText
245
- },
351
+ getInputClassName({ disabled, hasError: !!errorText }),
246
352
  className
247
353
  )
248
354
  }
@@ -260,12 +366,21 @@ var FormInput = forwardRef(function FormInput2({
260
366
  // src/components/user-action/Button.tsx
261
367
  import clsx3 from "clsx";
262
368
  import { jsx as jsx4, jsxs as jsxs2 } from "react/jsx-runtime";
369
+ var ButtonColorUtil = {
370
+ solid: ["primary", "secondary", "tertiary", "positive", "warning", "negative", "neutral"],
371
+ text: ["primary", "negative", "neutral"],
372
+ outline: ["primary"]
373
+ };
374
+ var IconButtonUtil = {
375
+ icon: [...ButtonColorUtil.solid, "transparent"]
376
+ };
263
377
  var paddingMapping = {
264
378
  small: "btn-sm",
265
379
  medium: "btn-md",
266
380
  large: "btn-lg"
267
381
  };
268
382
  var iconPaddingMapping = {
383
+ tiny: "icon-btn-xs",
269
384
  small: "icon-btn-sm",
270
385
  medium: "icon-btn-md",
271
386
  large: "icon-btn-lg"
@@ -290,7 +405,8 @@ var IconButton = ({
290
405
  positive: "bg-button-solid-positive-background text-button-solid-positive-text",
291
406
  warning: "bg-button-solid-warning-background text-button-solid-warning-text",
292
407
  negative: "bg-button-solid-negative-background text-button-solid-negative-text",
293
- neutral: "bg-button-solid-neutral-background text-button-solid-neutral-text"
408
+ neutral: "bg-button-solid-neutral-background text-button-solid-neutral-text",
409
+ transparent: "bg-transparent"
294
410
  }[color];
295
411
  return /* @__PURE__ */ jsx4(
296
412
  "button",
@@ -299,7 +415,9 @@ var IconButton = ({
299
415
  disabled: disabled || onClick === void 0,
300
416
  className: clsx3(
301
417
  {
302
- "text-disabled-text bg-disabled-background cursor-not-allowed": disabled,
418
+ "text-disabled-text bg-disabled-background cursor-not-allowed": disabled && color !== "transparent",
419
+ "text-disabled-text cursor-not-allowed opacity-70": disabled && color === "transparent",
420
+ "hover:bg-button-text-hover-background": !disabled && color === "transparent",
303
421
  [clsx3(colorClasses, "hover:brightness-90")]: !disabled
304
422
  },
305
423
  ButtonUtil.iconPaddingMapping[size],
@@ -312,7 +430,7 @@ var IconButton = ({
312
430
  };
313
431
 
314
432
  // src/hooks/useSearch.ts
315
- import { useEffect as useEffect5, useMemo, useState as useState5 } from "react";
433
+ import { useEffect as useEffect6, useMemo, useState as useState5 } from "react";
316
434
 
317
435
  // src/util/simpleSearch.ts
318
436
  var MultiSearchWithMapping = (search, objects, mapping) => {
@@ -333,7 +451,7 @@ var useSearch = ({
333
451
  }) => {
334
452
  const [items, setItems] = useState5(list);
335
453
  const [search, setSearch] = useState5(initialSearch);
336
- useEffect5(() => {
454
+ useEffect6(() => {
337
455
  setItems(list);
338
456
  }, [list]);
339
457
  const result = useMemo(
@@ -354,6 +472,7 @@ var useSearch = ({
354
472
  var formTranslation = {
355
473
  en: {
356
474
  all: "All",
475
+ apply: "Apply",
357
476
  back: "Back",
358
477
  cancel: "Cancel",
359
478
  change: "Change",
@@ -402,6 +521,7 @@ var formTranslation = {
402
521
  },
403
522
  de: {
404
523
  all: "Alle",
524
+ apply: "Anwenden",
405
525
  back: "Zur\xFCck",
406
526
  cancel: "Abbrechen",
407
527
  change: "\xC4ndern",
@@ -534,9 +654,9 @@ var Tile = ({
534
654
  };
535
655
 
536
656
  // src/hooks/useOutsideClick.ts
537
- import { useEffect as useEffect6 } from "react";
657
+ import { useEffect as useEffect7 } from "react";
538
658
  var useOutsideClick = (refs, handler) => {
539
- useEffect6(() => {
659
+ useEffect7(() => {
540
660
  const listener = (event) => {
541
661
  if (event.target === null) return;
542
662
  if (refs.some((ref) => !ref.current || ref.current.contains(event.target))) {
@@ -640,7 +760,7 @@ var SelectUncontrolled = ({
640
760
  ...props
641
761
  }) => {
642
762
  const [selected, setSelected] = useState6(value);
643
- useEffect7(() => {
763
+ useEffect8(() => {
644
764
  if (options.find((options2) => options2.value === value)) {
645
765
  setSelected(value);
646
766
  }