@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
@@ -96,12 +96,21 @@ import clsx2 from "clsx";
96
96
  // src/components/user-action/Button.tsx
97
97
  import clsx from "clsx";
98
98
  import { jsx as jsx2, jsxs } from "react/jsx-runtime";
99
+ var ButtonColorUtil = {
100
+ solid: ["primary", "secondary", "tertiary", "positive", "warning", "negative", "neutral"],
101
+ text: ["primary", "negative", "neutral"],
102
+ outline: ["primary"]
103
+ };
104
+ var IconButtonUtil = {
105
+ icon: [...ButtonColorUtil.solid, "transparent"]
106
+ };
99
107
  var paddingMapping = {
100
108
  small: "btn-sm",
101
109
  medium: "btn-md",
102
110
  large: "btn-lg"
103
111
  };
104
112
  var iconPaddingMapping = {
113
+ tiny: "icon-btn-xs",
105
114
  small: "icon-btn-sm",
106
115
  medium: "icon-btn-md",
107
116
  large: "icon-btn-lg"
@@ -139,7 +148,7 @@ var TextButton = ({
139
148
  className: clsx(
140
149
  {
141
150
  "text-disabled-text cursor-not-allowed": disabled,
142
- [clsx(colorClasses, "hover:bg-button-text-hover-background rounded-full")]: !disabled
151
+ [clsx(colorClasses, "hover:bg-button-text-hover-background")]: !disabled
143
152
  },
144
153
  ButtonUtil.paddingMapping[size],
145
154
  className
@@ -187,7 +196,8 @@ var IconButton = ({
187
196
  positive: "bg-button-solid-positive-background text-button-solid-positive-text",
188
197
  warning: "bg-button-solid-warning-background text-button-solid-warning-text",
189
198
  negative: "bg-button-solid-negative-background text-button-solid-negative-text",
190
- neutral: "bg-button-solid-neutral-background text-button-solid-neutral-text"
199
+ neutral: "bg-button-solid-neutral-background text-button-solid-neutral-text",
200
+ transparent: "bg-transparent"
191
201
  }[color];
192
202
  return /* @__PURE__ */ jsx2(
193
203
  "button",
@@ -196,7 +206,9 @@ var IconButton = ({
196
206
  disabled: disabled || onClick === void 0,
197
207
  className: clsx(
198
208
  {
199
- "text-disabled-text bg-disabled-background cursor-not-allowed": disabled,
209
+ "text-disabled-text bg-disabled-background cursor-not-allowed": disabled && color !== "transparent",
210
+ "text-disabled-text cursor-not-allowed opacity-70": disabled && color === "transparent",
211
+ "hover:bg-button-text-hover-background": !disabled && color === "transparent",
200
212
  [clsx(colorClasses, "hover:brightness-90")]: !disabled
201
213
  },
202
214
  ButtonUtil.iconPaddingMapping[size],
@@ -212,6 +224,7 @@ var IconButton = ({
212
224
  var formTranslation = {
213
225
  en: {
214
226
  all: "All",
227
+ apply: "Apply",
215
228
  back: "Back",
216
229
  cancel: "Cancel",
217
230
  change: "Change",
@@ -260,6 +273,7 @@ var formTranslation = {
260
273
  },
261
274
  de: {
262
275
  all: "Alle",
276
+ apply: "Anwenden",
263
277
  back: "Zur\xFCck",
264
278
  cancel: "Abbrechen",
265
279
  change: "\xC4ndern",
@@ -365,7 +379,7 @@ var PropertyBase = ({
365
379
 
366
380
  // src/components/user-action/Select.tsx
367
381
  import { ChevronDown, ChevronUp } from "lucide-react";
368
- import { useEffect as useEffect7, useRef as useRef2, useState as useState6 } from "react";
382
+ import { useEffect as useEffect8, useRef as useRef2, useState as useState6 } from "react";
369
383
  import clsx7 from "clsx";
370
384
 
371
385
  // src/components/user-action/Label.tsx
@@ -391,55 +405,147 @@ import { Search } from "lucide-react";
391
405
  import clsx5 from "clsx";
392
406
 
393
407
  // src/components/user-action/Input.tsx
394
- import { forwardRef, useEffect as useEffect4, useRef, useState as useState4 } from "react";
408
+ import { forwardRef, useEffect as useEffect5, useImperativeHandle, useRef, useState as useState4 } from "react";
395
409
  import clsx4 from "clsx";
396
410
 
397
- // src/hooks/useSaveDelay.ts
411
+ // src/hooks/useDelay.ts
398
412
  import { useEffect as useEffect3, useState as useState3 } from "react";
399
- function useSaveDelay(setNotificationStatus, delay) {
400
- const [updateTimer, setUpdateTimer] = useState3(void 0);
401
- const [notificationTimer, setNotificationTimer] = useState3(void 0);
402
- const restartTimer = (onSave) => {
403
- clearTimeout(updateTimer);
404
- setUpdateTimer(setTimeout(() => {
405
- onSave();
406
- setNotificationStatus(true);
407
- clearTimeout(notificationTimer);
408
- setNotificationTimer(setTimeout(() => {
409
- setNotificationStatus(false);
410
- clearTimeout(notificationTimer);
411
- }, delay));
412
- clearTimeout(updateTimer);
413
- }, delay));
413
+ var defaultOptions = {
414
+ delay: 3e3,
415
+ disabled: false
416
+ };
417
+ function useDelay(options) {
418
+ const [timer, setTimer] = useState3(void 0);
419
+ const { delay, disabled } = {
420
+ ...defaultOptions,
421
+ ...options
414
422
  };
415
- const clearUpdateTimer = (hasSaved = true) => {
416
- clearTimeout(updateTimer);
417
- if (hasSaved) {
418
- setNotificationStatus(true);
419
- clearTimeout(notificationTimer);
420
- setNotificationTimer(setTimeout(() => {
421
- setNotificationStatus(false);
422
- clearTimeout(notificationTimer);
423
- }, delay));
424
- } else {
425
- setNotificationStatus(false);
423
+ const restartTimer = (onDelayFinish) => {
424
+ if (disabled) {
425
+ return;
426
426
  }
427
+ clearTimeout(timer);
428
+ setTimer(setTimeout(() => {
429
+ onDelayFinish();
430
+ }, delay));
431
+ };
432
+ const clearTimer = () => {
433
+ clearTimeout(timer);
427
434
  };
428
435
  useEffect3(() => {
429
436
  return () => {
430
- clearTimeout(updateTimer);
431
- clearTimeout(notificationTimer);
437
+ clearTimeout(timer);
432
438
  };
433
- }, []);
434
- return { restartTimer, clearUpdateTimer };
439
+ }, [timer]);
440
+ useEffect3(() => {
441
+ if (disabled) {
442
+ clearTimeout(timer);
443
+ }
444
+ }, [disabled, timer]);
445
+ return { restartTimer, clearTimer };
435
446
  }
436
447
 
437
448
  // src/util/noop.ts
438
449
  var noop = () => void 0;
439
450
 
451
+ // src/hooks/useFocusManagement.ts
452
+ import { useCallback as useCallback2 } from "react";
453
+ function useFocusManagement() {
454
+ const getFocusableElements = useCallback2(() => {
455
+ return Array.from(
456
+ document.querySelectorAll(
457
+ 'input, button, select, textarea, a[href], [tabindex]:not([tabindex="-1"])'
458
+ )
459
+ ).filter(
460
+ (el) => el instanceof HTMLElement && !el.hasAttribute("disabled") && !el.hasAttribute("hidden") && el.tabIndex !== -1
461
+ );
462
+ }, []);
463
+ const getNextFocusElement = useCallback2(() => {
464
+ const elements = getFocusableElements();
465
+ if (elements.length === 0) {
466
+ return void 0;
467
+ }
468
+ let nextElement = elements[0];
469
+ if (document.activeElement instanceof HTMLElement) {
470
+ const currentIndex = elements.indexOf(document.activeElement);
471
+ nextElement = elements[(currentIndex + 1) % elements.length];
472
+ }
473
+ return nextElement;
474
+ }, [getFocusableElements]);
475
+ const focusNext = useCallback2(() => {
476
+ const nextElement = getNextFocusElement();
477
+ nextElement?.focus();
478
+ }, [getNextFocusElement]);
479
+ const getPreviousFocusElement = useCallback2(() => {
480
+ const elements = getFocusableElements();
481
+ if (elements.length === 0) {
482
+ return void 0;
483
+ }
484
+ let previousElement = elements[0];
485
+ if (document.activeElement instanceof HTMLElement) {
486
+ const currentIndex = elements.indexOf(document.activeElement);
487
+ if (currentIndex === 0) {
488
+ previousElement = elements[elements.length - 1];
489
+ } else {
490
+ previousElement = elements[currentIndex - 1];
491
+ }
492
+ }
493
+ return previousElement;
494
+ }, [getFocusableElements]);
495
+ const focusPrevious = useCallback2(() => {
496
+ const previousElement = getPreviousFocusElement();
497
+ if (previousElement) previousElement.focus();
498
+ }, [getPreviousFocusElement]);
499
+ return {
500
+ getFocusableElements,
501
+ getNextFocusElement,
502
+ getPreviousFocusElement,
503
+ focusNext,
504
+ focusPrevious
505
+ };
506
+ }
507
+
508
+ // src/hooks/useFocusOnceVisible.ts
509
+ import React, { useEffect as useEffect4 } from "react";
510
+ var useFocusOnceVisible = (ref, disable = false) => {
511
+ const [hasUsedFocus, setHasUsedFocus] = React.useState(false);
512
+ useEffect4(() => {
513
+ if (disable || hasUsedFocus) {
514
+ return;
515
+ }
516
+ const observer = new IntersectionObserver(([entry]) => {
517
+ if (entry.isIntersecting && !hasUsedFocus) {
518
+ ref.current?.focus();
519
+ setHasUsedFocus(hasUsedFocus);
520
+ }
521
+ }, {
522
+ threshold: 0.1
523
+ });
524
+ if (ref.current) {
525
+ observer.observe(ref.current);
526
+ }
527
+ return () => observer.disconnect();
528
+ }, [disable, hasUsedFocus, ref]);
529
+ };
530
+
440
531
  // src/components/user-action/Input.tsx
441
532
  import { jsx as jsx5, jsxs as jsxs3 } from "react/jsx-runtime";
442
- var Input = ({
533
+ var getInputClassName = ({ disabled = false, hasError = false }) => {
534
+ return clsx4(
535
+ "px-2 py-1.5 rounded-md border-2",
536
+ {
537
+ "bg-surface text-on-surface hover:border-primary focus:border-primary": !disabled && !hasError,
538
+ "bg-on-negative text-negative border-negative-border hover:border-negative-border-hover": !disabled && hasError,
539
+ "bg-disabled-background text-disabled-text border-disabled-border": disabled
540
+ }
541
+ );
542
+ };
543
+ var defaultEditCompleteOptions = {
544
+ onBlur: true,
545
+ afterDelay: true,
546
+ delay: 2500
547
+ };
548
+ var Input = forwardRef(function Input2({
443
549
  id,
444
550
  type = "text",
445
551
  value,
@@ -448,57 +554,72 @@ var Input = ({
448
554
  onChangeText = noop,
449
555
  onEditCompleted,
450
556
  className = "",
557
+ allowEnterComplete = true,
451
558
  expanded = true,
452
- autoFocus,
559
+ autoFocus = false,
453
560
  onBlur,
561
+ editCompleteOptions,
454
562
  containerClassName,
563
+ disabled,
455
564
  ...restProps
456
- }) => {
565
+ }, forwardedRef) {
566
+ const { onBlur: allowEditCompleteOnBlur, afterDelay, delay } = { ...defaultEditCompleteOptions, ...editCompleteOptions };
457
567
  const {
458
568
  restartTimer,
459
- clearUpdateTimer
460
- } = useSaveDelay(() => void 0, 3e3);
461
- const ref = useRef(null);
462
- useEffect4(() => {
463
- if (autoFocus) {
464
- ref.current?.focus();
569
+ clearTimer
570
+ } = useDelay({ delay, disabled: !afterDelay });
571
+ const innerRef = useRef(null);
572
+ const { focusNext } = useFocusManagement();
573
+ useFocusOnceVisible(innerRef, !autoFocus);
574
+ useImperativeHandle(forwardedRef, () => innerRef.current);
575
+ const handleKeyDown = (e) => {
576
+ if (e.key === "Enter" && !e.shiftKey) {
577
+ e.preventDefault();
578
+ innerRef.current?.blur();
579
+ focusNext();
465
580
  }
466
- }, [autoFocus]);
581
+ };
467
582
  return /* @__PURE__ */ jsxs3("div", { className: clsx4({ "w-full": expanded }, containerClassName), children: [
468
583
  label && /* @__PURE__ */ jsx5(Label, { ...label, htmlFor: id, className: clsx4("mb-1", label.className) }),
469
584
  /* @__PURE__ */ jsx5(
470
585
  "input",
471
586
  {
472
- ref,
587
+ ...restProps,
588
+ ref: innerRef,
473
589
  value,
474
590
  id,
475
591
  type,
476
- className,
592
+ disabled,
593
+ className: clsx4(getInputClassName({ disabled }), className),
594
+ onKeyDown: allowEnterComplete ? handleKeyDown : void 0,
477
595
  onBlur: (event) => {
478
- if (onBlur) {
479
- onBlur(event);
480
- }
481
- if (onEditCompleted) {
596
+ onBlur?.(event);
597
+ if (onEditCompleted && allowEditCompleteOnBlur) {
482
598
  onEditCompleted(event.target.value);
483
- clearUpdateTimer();
599
+ clearTimer();
484
600
  }
485
601
  },
486
602
  onChange: (e) => {
487
603
  const value2 = e.target.value;
488
604
  if (onEditCompleted) {
489
605
  restartTimer(() => {
490
- onEditCompleted(value2);
491
- clearUpdateTimer();
606
+ if (innerRef.current) {
607
+ innerRef.current.blur();
608
+ if (!allowEditCompleteOnBlur) {
609
+ onEditCompleted(value2);
610
+ }
611
+ } else {
612
+ onEditCompleted(value2);
613
+ }
492
614
  });
493
615
  }
494
616
  onChange(e);
495
617
  onChangeText(value2);
496
- },
497
- ...restProps
618
+ }
498
619
  }
499
620
  )
500
621
  ] });
501
- };
622
+ });
502
623
  var FormInput = forwardRef(function FormInput2({
503
624
  id,
504
625
  labelText,
@@ -508,19 +629,18 @@ var FormInput = forwardRef(function FormInput2({
508
629
  errorClassName,
509
630
  containerClassName,
510
631
  required,
632
+ disabled,
511
633
  ...restProps
512
634
  }, ref) {
513
635
  const input = /* @__PURE__ */ jsx5(
514
636
  "input",
515
637
  {
638
+ ...restProps,
516
639
  ref,
517
640
  id,
518
- ...restProps,
641
+ disabled,
519
642
  className: clsx4(
520
- {
521
- "focus:border-primary focus:ring-primary": !errorText,
522
- "focus:border-negative focus:ring-negative text-negative": !!errorText
523
- },
643
+ getInputClassName({ disabled, hasError: !!errorText }),
524
644
  className
525
645
  )
526
646
  }
@@ -536,7 +656,7 @@ var FormInput = forwardRef(function FormInput2({
536
656
  });
537
657
 
538
658
  // src/hooks/useSearch.ts
539
- import { useEffect as useEffect5, useMemo, useState as useState5 } from "react";
659
+ import { useEffect as useEffect6, useMemo, useState as useState5 } from "react";
540
660
 
541
661
  // src/util/simpleSearch.ts
542
662
  var MultiSearchWithMapping = (search, objects, mapping) => {
@@ -557,7 +677,7 @@ var useSearch = ({
557
677
  }) => {
558
678
  const [items, setItems] = useState5(list);
559
679
  const [search, setSearch] = useState5(initialSearch);
560
- useEffect5(() => {
680
+ useEffect6(() => {
561
681
  setItems(list);
562
682
  }, [list]);
563
683
  const result = useMemo(
@@ -658,9 +778,9 @@ var Tile = ({
658
778
  };
659
779
 
660
780
  // src/hooks/useOutsideClick.ts
661
- import { useEffect as useEffect6 } from "react";
781
+ import { useEffect as useEffect7 } from "react";
662
782
  var useOutsideClick = (refs, handler) => {
663
- useEffect6(() => {
783
+ useEffect7(() => {
664
784
  const listener = (event) => {
665
785
  if (event.target === null) return;
666
786
  if (refs.some((ref) => !ref.current || ref.current.contains(event.target))) {