@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
@@ -87,7 +87,7 @@ var useTranslation = (translations, overwriteTranslation = {}) => {
87
87
 
88
88
  // src/components/user-action/Select.tsx
89
89
  import { ChevronDown, ChevronUp } from "lucide-react";
90
- import { useEffect as useEffect7, useRef as useRef2, useState as useState6 } from "react";
90
+ import { useEffect as useEffect8, useRef as useRef2, useState as useState6 } from "react";
91
91
  import clsx6 from "clsx";
92
92
 
93
93
  // src/components/user-action/Label.tsx
@@ -113,55 +113,147 @@ import { Search } from "lucide-react";
113
113
  import clsx4 from "clsx";
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"
@@ -359,7 +474,8 @@ var IconButton = ({
359
474
  positive: "bg-button-solid-positive-background text-button-solid-positive-text",
360
475
  warning: "bg-button-solid-warning-background text-button-solid-warning-text",
361
476
  negative: "bg-button-solid-negative-background text-button-solid-negative-text",
362
- neutral: "bg-button-solid-neutral-background text-button-solid-neutral-text"
477
+ neutral: "bg-button-solid-neutral-background text-button-solid-neutral-text",
478
+ transparent: "bg-transparent"
363
479
  }[color];
364
480
  return /* @__PURE__ */ jsx4(
365
481
  "button",
@@ -368,7 +484,9 @@ var IconButton = ({
368
484
  disabled: disabled || onClick === void 0,
369
485
  className: clsx3(
370
486
  {
371
- "text-disabled-text bg-disabled-background cursor-not-allowed": disabled,
487
+ "text-disabled-text bg-disabled-background cursor-not-allowed": disabled && color !== "transparent",
488
+ "text-disabled-text cursor-not-allowed opacity-70": disabled && color === "transparent",
489
+ "hover:bg-button-text-hover-background": !disabled && color === "transparent",
372
490
  [clsx3(colorClasses, "hover:brightness-90")]: !disabled
373
491
  },
374
492
  ButtonUtil.iconPaddingMapping[size],
@@ -381,7 +499,7 @@ var IconButton = ({
381
499
  };
382
500
 
383
501
  // src/hooks/useSearch.ts
384
- import { useEffect as useEffect5, useMemo, useState as useState5 } from "react";
502
+ import { useEffect as useEffect6, useMemo, useState as useState5 } from "react";
385
503
 
386
504
  // src/util/simpleSearch.ts
387
505
  var MultiSearchWithMapping = (search, objects, mapping) => {
@@ -402,7 +520,7 @@ var useSearch = ({
402
520
  }) => {
403
521
  const [items, setItems] = useState5(list);
404
522
  const [search, setSearch] = useState5(initialSearch);
405
- useEffect5(() => {
523
+ useEffect6(() => {
406
524
  setItems(list);
407
525
  }, [list]);
408
526
  const result = useMemo(
@@ -423,6 +541,7 @@ var useSearch = ({
423
541
  var formTranslation = {
424
542
  en: {
425
543
  all: "All",
544
+ apply: "Apply",
426
545
  back: "Back",
427
546
  cancel: "Cancel",
428
547
  change: "Change",
@@ -471,6 +590,7 @@ var formTranslation = {
471
590
  },
472
591
  de: {
473
592
  all: "Alle",
593
+ apply: "Anwenden",
474
594
  back: "Zur\xFCck",
475
595
  cancel: "Abbrechen",
476
596
  change: "\xC4ndern",
@@ -603,9 +723,9 @@ var Tile = ({
603
723
  };
604
724
 
605
725
  // src/hooks/useOutsideClick.ts
606
- import { useEffect as useEffect6 } from "react";
726
+ import { useEffect as useEffect7 } from "react";
607
727
  var useOutsideClick = (refs, handler) => {
608
- useEffect6(() => {
728
+ useEffect7(() => {
609
729
  const listener = (event) => {
610
730
  if (event.target === null) return;
611
731
  if (refs.some((ref) => !ref.current || ref.current.contains(event.target))) {
@@ -703,12 +823,12 @@ var Select = ({
703
823
  };
704
824
 
705
825
  // src/components/layout-and-navigation/Overlay.tsx
706
- import { useEffect as useEffect9, useRef as useRef3, useState as useState8 } from "react";
826
+ import { useEffect as useEffect10, useRef as useRef3, useState as useState8 } from "react";
707
827
  import ReactDOM from "react-dom";
708
828
  import clsx8 from "clsx";
709
829
 
710
830
  // src/hooks/useHoverState.ts
711
- import { useEffect as useEffect8, useState as useState7 } from "react";
831
+ import { useEffect as useEffect9, useState as useState7 } from "react";
712
832
  var defaultUseHoverStateProps = {
713
833
  closingDelay: 200,
714
834
  isDisabled: false
@@ -732,14 +852,14 @@ var useHoverState = (props = void 0) => {
732
852
  setIsHovered(false);
733
853
  }, closingDelay));
734
854
  };
735
- useEffect8(() => {
855
+ useEffect9(() => {
736
856
  if (timer) {
737
857
  return () => {
738
858
  clearTimeout(timer);
739
859
  };
740
860
  }
741
861
  });
742
- useEffect8(() => {
862
+ useEffect9(() => {
743
863
  if (timer) {
744
864
  clearTimeout(timer);
745
865
  }
@@ -827,7 +947,7 @@ var Overlay = ({
827
947
  backgroundClassName
828
948
  }) => {
829
949
  const [root, setRoot] = useState8();
830
- useEffect9(() => {
950
+ useEffect10(() => {
831
951
  setRoot(document.body);
832
952
  }, []);
833
953
  if (!root || !isOpen) return null;
@@ -890,7 +1010,7 @@ var Modal = ({
890
1010
  headerProps
891
1011
  }) => {
892
1012
  const ref = useRef3(null);
893
- useEffect9(() => {
1013
+ useEffect10(() => {
894
1014
  if (!isOpen) return;
895
1015
  const modal = ref.current;
896
1016
  if (!modal) {
@@ -955,7 +1075,7 @@ var Modal = ({
955
1075
  };
956
1076
 
957
1077
  // src/theming/useTheme.tsx
958
- import { createContext as createContext2, useContext as useContext2, useEffect as useEffect10, useState as useState9 } from "react";
1078
+ import { createContext as createContext2, useContext as useContext2, useEffect as useEffect11, useState as useState9 } from "react";
959
1079
  import { jsx as jsx10 } from "react/jsx-runtime";
960
1080
  var themes = ["light", "dark"];
961
1081
  var defaultThemeTypeTranslation = {