@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
@@ -0,0 +1,888 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+
29
+ // src/components/table/TableFilterButton.tsx
30
+ var TableFilterButton_exports = {};
31
+ __export(TableFilterButton_exports, {
32
+ TableFilterButton: () => TableFilterButton
33
+ });
34
+ module.exports = __toCommonJS(TableFilterButton_exports);
35
+
36
+ // src/components/user-action/Button.tsx
37
+ var import_clsx = __toESM(require("clsx"));
38
+ var import_jsx_runtime = require("react/jsx-runtime");
39
+ var ButtonColorUtil = {
40
+ solid: ["primary", "secondary", "tertiary", "positive", "warning", "negative", "neutral"],
41
+ text: ["primary", "negative", "neutral"],
42
+ outline: ["primary"]
43
+ };
44
+ var IconButtonUtil = {
45
+ icon: [...ButtonColorUtil.solid, "transparent"]
46
+ };
47
+ var paddingMapping = {
48
+ small: "btn-sm",
49
+ medium: "btn-md",
50
+ large: "btn-lg"
51
+ };
52
+ var iconPaddingMapping = {
53
+ tiny: "icon-btn-xs",
54
+ small: "icon-btn-sm",
55
+ medium: "icon-btn-md",
56
+ large: "icon-btn-lg"
57
+ };
58
+ var ButtonUtil = {
59
+ paddingMapping,
60
+ iconPaddingMapping
61
+ };
62
+ var SolidButton = ({
63
+ children,
64
+ disabled = false,
65
+ color = "primary",
66
+ size = "medium",
67
+ startIcon,
68
+ endIcon,
69
+ onClick,
70
+ className,
71
+ ...restProps
72
+ }) => {
73
+ const colorClasses = {
74
+ primary: "bg-button-solid-primary-background text-button-solid-primary-text",
75
+ secondary: "bg-button-solid-secondary-background text-button-solid-secondary-text",
76
+ tertiary: "bg-button-solid-tertiary-background text-button-solid-tertiary-text",
77
+ positive: "bg-button-solid-positive-background text-button-solid-positive-text",
78
+ warning: "bg-button-solid-warning-background text-button-solid-warning-text",
79
+ negative: "bg-button-solid-negative-background text-button-solid-negative-text",
80
+ neutral: "bg-button-solid-neutral-background text-button-solid-neutral-text"
81
+ }[color];
82
+ const iconColorClasses = {
83
+ primary: "text-button-solid-primary-icon",
84
+ secondary: "text-button-solid-secondary-icon",
85
+ tertiary: "text-button-solid-tertiary-icon",
86
+ positive: "text-button-solid-positive-icon",
87
+ warning: "text-button-solid-warning-icon",
88
+ negative: "text-button-solid-negative-icon",
89
+ neutral: "text-button-solid-neutral-icon"
90
+ }[color];
91
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
92
+ "button",
93
+ {
94
+ onClick: disabled ? void 0 : onClick,
95
+ disabled: disabled || onClick === void 0,
96
+ className: (0, import_clsx.default)(
97
+ {
98
+ "text-disabled-text bg-disabled-background cursor-not-allowed": disabled,
99
+ [(0, import_clsx.default)(colorClasses, "hover:brightness-90")]: !disabled
100
+ },
101
+ ButtonUtil.paddingMapping[size],
102
+ className
103
+ ),
104
+ ...restProps,
105
+ children: [
106
+ startIcon && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
107
+ "span",
108
+ {
109
+ className: (0, import_clsx.default)({
110
+ [iconColorClasses]: !disabled,
111
+ [`text-disabled-icon`]: disabled
112
+ }),
113
+ children: startIcon
114
+ }
115
+ ),
116
+ children,
117
+ endIcon && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
118
+ "span",
119
+ {
120
+ className: (0, import_clsx.default)({
121
+ [iconColorClasses]: !disabled,
122
+ [`text-disabled-icon`]: disabled
123
+ }),
124
+ children: endIcon
125
+ }
126
+ )
127
+ ]
128
+ }
129
+ );
130
+ };
131
+ var IconButton = ({
132
+ children,
133
+ disabled = false,
134
+ color = "primary",
135
+ size = "medium",
136
+ onClick,
137
+ className,
138
+ ...restProps
139
+ }) => {
140
+ const colorClasses = {
141
+ primary: "bg-button-solid-primary-background text-button-solid-primary-text",
142
+ secondary: "bg-button-solid-secondary-background text-button-solid-secondary-text",
143
+ tertiary: "bg-button-solid-tertiary-background text-button-solid-tertiary-text",
144
+ positive: "bg-button-solid-positive-background text-button-solid-positive-text",
145
+ warning: "bg-button-solid-warning-background text-button-solid-warning-text",
146
+ negative: "bg-button-solid-negative-background text-button-solid-negative-text",
147
+ neutral: "bg-button-solid-neutral-background text-button-solid-neutral-text",
148
+ transparent: "bg-transparent"
149
+ }[color];
150
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
151
+ "button",
152
+ {
153
+ onClick: disabled ? void 0 : onClick,
154
+ disabled: disabled || onClick === void 0,
155
+ className: (0, import_clsx.default)(
156
+ {
157
+ "text-disabled-text bg-disabled-background cursor-not-allowed": disabled && color !== "transparent",
158
+ "text-disabled-text cursor-not-allowed opacity-70": disabled && color === "transparent",
159
+ "hover:bg-button-text-hover-background": !disabled && color === "transparent",
160
+ [(0, import_clsx.default)(colorClasses, "hover:brightness-90")]: !disabled
161
+ },
162
+ ButtonUtil.iconPaddingMapping[size],
163
+ className
164
+ ),
165
+ ...restProps,
166
+ children
167
+ }
168
+ );
169
+ };
170
+
171
+ // src/components/user-action/Input.tsx
172
+ var import_react4 = require("react");
173
+ var import_clsx3 = __toESM(require("clsx"));
174
+
175
+ // src/hooks/useDelay.ts
176
+ var import_react = require("react");
177
+ var defaultOptions = {
178
+ delay: 3e3,
179
+ disabled: false
180
+ };
181
+ function useDelay(options) {
182
+ const [timer, setTimer] = (0, import_react.useState)(void 0);
183
+ const { delay, disabled } = {
184
+ ...defaultOptions,
185
+ ...options
186
+ };
187
+ const restartTimer = (onDelayFinish) => {
188
+ if (disabled) {
189
+ return;
190
+ }
191
+ clearTimeout(timer);
192
+ setTimer(setTimeout(() => {
193
+ onDelayFinish();
194
+ }, delay));
195
+ };
196
+ const clearTimer = () => {
197
+ clearTimeout(timer);
198
+ };
199
+ (0, import_react.useEffect)(() => {
200
+ return () => {
201
+ clearTimeout(timer);
202
+ };
203
+ }, [timer]);
204
+ (0, import_react.useEffect)(() => {
205
+ if (disabled) {
206
+ clearTimeout(timer);
207
+ }
208
+ }, [disabled, timer]);
209
+ return { restartTimer, clearTimer };
210
+ }
211
+
212
+ // src/util/noop.ts
213
+ var noop = () => void 0;
214
+
215
+ // src/components/user-action/Label.tsx
216
+ var import_clsx2 = __toESM(require("clsx"));
217
+ var import_jsx_runtime2 = require("react/jsx-runtime");
218
+ var styleMapping = {
219
+ labelSmall: "textstyle-label-sm",
220
+ labelMedium: "textstyle-label-md",
221
+ labelBig: "textstyle-label-lg"
222
+ };
223
+ var Label = ({
224
+ children,
225
+ name,
226
+ labelType = "labelSmall",
227
+ className,
228
+ ...props
229
+ }) => {
230
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("label", { ...props, className: (0, import_clsx2.default)(styleMapping[labelType], className), children: children ? children : name });
231
+ };
232
+
233
+ // src/hooks/useFocusManagement.ts
234
+ var import_react2 = require("react");
235
+ function useFocusManagement() {
236
+ const getFocusableElements = (0, import_react2.useCallback)(() => {
237
+ return Array.from(
238
+ document.querySelectorAll(
239
+ 'input, button, select, textarea, a[href], [tabindex]:not([tabindex="-1"])'
240
+ )
241
+ ).filter(
242
+ (el) => el instanceof HTMLElement && !el.hasAttribute("disabled") && !el.hasAttribute("hidden") && el.tabIndex !== -1
243
+ );
244
+ }, []);
245
+ const getNextFocusElement = (0, import_react2.useCallback)(() => {
246
+ const elements = getFocusableElements();
247
+ if (elements.length === 0) {
248
+ return void 0;
249
+ }
250
+ let nextElement = elements[0];
251
+ if (document.activeElement instanceof HTMLElement) {
252
+ const currentIndex = elements.indexOf(document.activeElement);
253
+ nextElement = elements[(currentIndex + 1) % elements.length];
254
+ }
255
+ return nextElement;
256
+ }, [getFocusableElements]);
257
+ const focusNext = (0, import_react2.useCallback)(() => {
258
+ const nextElement = getNextFocusElement();
259
+ nextElement?.focus();
260
+ }, [getNextFocusElement]);
261
+ const getPreviousFocusElement = (0, import_react2.useCallback)(() => {
262
+ const elements = getFocusableElements();
263
+ if (elements.length === 0) {
264
+ return void 0;
265
+ }
266
+ let previousElement = elements[0];
267
+ if (document.activeElement instanceof HTMLElement) {
268
+ const currentIndex = elements.indexOf(document.activeElement);
269
+ if (currentIndex === 0) {
270
+ previousElement = elements[elements.length - 1];
271
+ } else {
272
+ previousElement = elements[currentIndex - 1];
273
+ }
274
+ }
275
+ return previousElement;
276
+ }, [getFocusableElements]);
277
+ const focusPrevious = (0, import_react2.useCallback)(() => {
278
+ const previousElement = getPreviousFocusElement();
279
+ if (previousElement) previousElement.focus();
280
+ }, [getPreviousFocusElement]);
281
+ return {
282
+ getFocusableElements,
283
+ getNextFocusElement,
284
+ getPreviousFocusElement,
285
+ focusNext,
286
+ focusPrevious
287
+ };
288
+ }
289
+
290
+ // src/hooks/useFocusOnceVisible.ts
291
+ var import_react3 = __toESM(require("react"));
292
+ var useFocusOnceVisible = (ref, disable = false) => {
293
+ const [hasUsedFocus, setHasUsedFocus] = import_react3.default.useState(false);
294
+ (0, import_react3.useEffect)(() => {
295
+ if (disable || hasUsedFocus) {
296
+ return;
297
+ }
298
+ const observer = new IntersectionObserver(([entry]) => {
299
+ if (entry.isIntersecting && !hasUsedFocus) {
300
+ ref.current?.focus();
301
+ setHasUsedFocus(hasUsedFocus);
302
+ }
303
+ }, {
304
+ threshold: 0.1
305
+ });
306
+ if (ref.current) {
307
+ observer.observe(ref.current);
308
+ }
309
+ return () => observer.disconnect();
310
+ }, [disable, hasUsedFocus, ref]);
311
+ };
312
+
313
+ // src/components/user-action/Input.tsx
314
+ var import_jsx_runtime3 = require("react/jsx-runtime");
315
+ var getInputClassName = ({ disabled = false, hasError = false }) => {
316
+ return (0, import_clsx3.default)(
317
+ "px-2 py-1.5 rounded-md border-2",
318
+ {
319
+ "bg-surface text-on-surface hover:border-primary focus:border-primary": !disabled && !hasError,
320
+ "bg-on-negative text-negative border-negative-border hover:border-negative-border-hover": !disabled && hasError,
321
+ "bg-disabled-background text-disabled-text border-disabled-border": disabled
322
+ }
323
+ );
324
+ };
325
+ var defaultEditCompleteOptions = {
326
+ onBlur: true,
327
+ afterDelay: true,
328
+ delay: 2500
329
+ };
330
+ var Input = (0, import_react4.forwardRef)(function Input2({
331
+ id,
332
+ type = "text",
333
+ value,
334
+ label,
335
+ onChange = noop,
336
+ onChangeText = noop,
337
+ onEditCompleted,
338
+ className = "",
339
+ allowEnterComplete = true,
340
+ expanded = true,
341
+ autoFocus = false,
342
+ onBlur,
343
+ editCompleteOptions,
344
+ containerClassName,
345
+ disabled,
346
+ ...restProps
347
+ }, forwardedRef) {
348
+ const { onBlur: allowEditCompleteOnBlur, afterDelay, delay } = { ...defaultEditCompleteOptions, ...editCompleteOptions };
349
+ const {
350
+ restartTimer,
351
+ clearTimer
352
+ } = useDelay({ delay, disabled: !afterDelay });
353
+ const innerRef = (0, import_react4.useRef)(null);
354
+ const { focusNext } = useFocusManagement();
355
+ useFocusOnceVisible(innerRef, !autoFocus);
356
+ (0, import_react4.useImperativeHandle)(forwardedRef, () => innerRef.current);
357
+ const handleKeyDown = (e) => {
358
+ if (e.key === "Enter" && !e.shiftKey) {
359
+ e.preventDefault();
360
+ innerRef.current?.blur();
361
+ focusNext();
362
+ }
363
+ };
364
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: (0, import_clsx3.default)({ "w-full": expanded }, containerClassName), children: [
365
+ label && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Label, { ...label, htmlFor: id, className: (0, import_clsx3.default)("mb-1", label.className) }),
366
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
367
+ "input",
368
+ {
369
+ ...restProps,
370
+ ref: innerRef,
371
+ value,
372
+ id,
373
+ type,
374
+ disabled,
375
+ className: (0, import_clsx3.default)(getInputClassName({ disabled }), className),
376
+ onKeyDown: allowEnterComplete ? handleKeyDown : void 0,
377
+ onBlur: (event) => {
378
+ onBlur?.(event);
379
+ if (onEditCompleted && allowEditCompleteOnBlur) {
380
+ onEditCompleted(event.target.value);
381
+ clearTimer();
382
+ }
383
+ },
384
+ onChange: (e) => {
385
+ const value2 = e.target.value;
386
+ if (onEditCompleted) {
387
+ restartTimer(() => {
388
+ if (innerRef.current) {
389
+ innerRef.current.blur();
390
+ if (!allowEditCompleteOnBlur) {
391
+ onEditCompleted(value2);
392
+ }
393
+ } else {
394
+ onEditCompleted(value2);
395
+ }
396
+ });
397
+ }
398
+ onChange(e);
399
+ onChangeText(value2);
400
+ }
401
+ }
402
+ )
403
+ ] });
404
+ });
405
+ var FormInput = (0, import_react4.forwardRef)(function FormInput2({
406
+ id,
407
+ labelText,
408
+ errorText,
409
+ className,
410
+ labelClassName,
411
+ errorClassName,
412
+ containerClassName,
413
+ required,
414
+ disabled,
415
+ ...restProps
416
+ }, ref) {
417
+ const input = /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
418
+ "input",
419
+ {
420
+ ...restProps,
421
+ ref,
422
+ id,
423
+ disabled,
424
+ className: (0, import_clsx3.default)(
425
+ getInputClassName({ disabled, hasError: !!errorText }),
426
+ className
427
+ )
428
+ }
429
+ );
430
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: (0, import_clsx3.default)("flex flex-col gap-y-1", containerClassName), children: [
431
+ labelText && /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("label", { htmlFor: id, className: (0, import_clsx3.default)("textstyle-label-md", labelClassName), children: [
432
+ labelText,
433
+ required && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "text-primary font-bold", children: "*" })
434
+ ] }),
435
+ input,
436
+ errorText && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("label", { htmlFor: id, className: (0, import_clsx3.default)("text-negative", errorClassName), children: errorText })
437
+ ] });
438
+ });
439
+
440
+ // src/components/table/TableFilterButton.tsx
441
+ var import_lucide_react = require("lucide-react");
442
+
443
+ // src/components/user-action/Menu.tsx
444
+ var import_react7 = require("react");
445
+ var import_clsx4 = __toESM(require("clsx"));
446
+
447
+ // src/hooks/useOutsideClick.ts
448
+ var import_react5 = require("react");
449
+ var useOutsideClick = (refs, handler) => {
450
+ (0, import_react5.useEffect)(() => {
451
+ const listener = (event) => {
452
+ if (event.target === null) return;
453
+ if (refs.some((ref) => !ref.current || ref.current.contains(event.target))) {
454
+ return;
455
+ }
456
+ handler();
457
+ };
458
+ document.addEventListener("mousedown", listener);
459
+ document.addEventListener("touchstart", listener);
460
+ return () => {
461
+ document.removeEventListener("mousedown", listener);
462
+ document.removeEventListener("touchstart", listener);
463
+ };
464
+ }, [refs, handler]);
465
+ };
466
+
467
+ // src/hooks/useHoverState.ts
468
+ var import_react6 = require("react");
469
+ var defaultUseHoverStateProps = {
470
+ closingDelay: 200,
471
+ isDisabled: false
472
+ };
473
+ var useHoverState = (props = void 0) => {
474
+ const { closingDelay, isDisabled } = { ...defaultUseHoverStateProps, ...props };
475
+ const [isHovered, setIsHovered] = (0, import_react6.useState)(false);
476
+ const [timer, setTimer] = (0, import_react6.useState)();
477
+ const onMouseEnter = () => {
478
+ if (isDisabled) {
479
+ return;
480
+ }
481
+ clearTimeout(timer);
482
+ setIsHovered(true);
483
+ };
484
+ const onMouseLeave = () => {
485
+ if (isDisabled) {
486
+ return;
487
+ }
488
+ setTimer(setTimeout(() => {
489
+ setIsHovered(false);
490
+ }, closingDelay));
491
+ };
492
+ (0, import_react6.useEffect)(() => {
493
+ if (timer) {
494
+ return () => {
495
+ clearTimeout(timer);
496
+ };
497
+ }
498
+ });
499
+ (0, import_react6.useEffect)(() => {
500
+ if (timer) {
501
+ clearTimeout(timer);
502
+ }
503
+ }, [isDisabled]);
504
+ return {
505
+ isHovered,
506
+ setIsHovered,
507
+ handlers: { onMouseEnter, onMouseLeave }
508
+ };
509
+ };
510
+
511
+ // src/util/PropsWithFunctionChildren.ts
512
+ var resolve = (children, bag) => {
513
+ if (typeof children === "function") {
514
+ return children(bag);
515
+ }
516
+ return children ?? void 0;
517
+ };
518
+ var BagFunctionUtil = {
519
+ resolve
520
+ };
521
+
522
+ // src/components/user-action/Menu.tsx
523
+ var import_jsx_runtime4 = require("react/jsx-runtime");
524
+ var Menu = ({
525
+ trigger,
526
+ children,
527
+ alignment = "tl",
528
+ showOnHover = false,
529
+ menuClassName = ""
530
+ }) => {
531
+ const { isHovered: isOpen, setIsHovered: setIsOpen, handlers } = useHoverState({ isDisabled: !showOnHover });
532
+ const triggerRef = (0, import_react7.useRef)(null);
533
+ const menuRef = (0, import_react7.useRef)(null);
534
+ useOutsideClick([triggerRef, menuRef], () => setIsOpen(false));
535
+ const bag = { isOpen, close: () => setIsOpen(false) };
536
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
537
+ "div",
538
+ {
539
+ className: "relative",
540
+ ...handlers,
541
+ children: [
542
+ trigger(() => setIsOpen(!isOpen), triggerRef),
543
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
544
+ "div",
545
+ {
546
+ ref: menuRef,
547
+ onClick: (e) => e.stopPropagation(),
548
+ className: (0, import_clsx4.default)(
549
+ "absolute top-full mt-1 min-w-40 rounded-lg bg-menu-background text-menu-text shadow-around-lg z-10",
550
+ {
551
+ "top-0": alignment[0] === "t",
552
+ "bottom-0": alignment[0] === "b",
553
+ "left-0": alignment[1] === "l",
554
+ "right-0": alignment[1] === "r",
555
+ "hidden": !isOpen
556
+ },
557
+ menuClassName
558
+ ),
559
+ children: BagFunctionUtil.resolve(children, bag)
560
+ }
561
+ )
562
+ ]
563
+ }
564
+ );
565
+ };
566
+
567
+ // src/localization/LanguageProvider.tsx
568
+ var import_react9 = require("react");
569
+
570
+ // src/hooks/useLocalStorage.ts
571
+ var import_react8 = require("react");
572
+
573
+ // src/localization/util.ts
574
+ var languages = ["en", "de"];
575
+ var languagesLocalNames = {
576
+ en: "English",
577
+ de: "Deutsch"
578
+ };
579
+ var DEFAULT_LANGUAGE = "en";
580
+ var LanguageUtil = {
581
+ languages,
582
+ DEFAULT_LANGUAGE,
583
+ languagesLocalNames
584
+ };
585
+
586
+ // src/localization/LanguageProvider.tsx
587
+ var import_jsx_runtime5 = require("react/jsx-runtime");
588
+ var LanguageContext = (0, import_react9.createContext)({
589
+ language: LanguageUtil.DEFAULT_LANGUAGE,
590
+ setLanguage: (v) => v
591
+ });
592
+ var useLanguage = () => (0, import_react9.useContext)(LanguageContext);
593
+
594
+ // src/localization/useTranslation.ts
595
+ var TranslationPluralCount = {
596
+ zero: 0,
597
+ one: 1,
598
+ two: 2,
599
+ few: 3,
600
+ many: 11,
601
+ other: -1
602
+ };
603
+ var useTranslation = (translations, overwriteTranslation = {}) => {
604
+ const { language: languageProp, translation: overwrite } = overwriteTranslation;
605
+ const { language: inferredLanguage } = useLanguage();
606
+ const usedLanguage = languageProp ?? inferredLanguage;
607
+ const usedTranslations = [...translations];
608
+ if (overwrite) {
609
+ usedTranslations.push(overwrite);
610
+ }
611
+ return (key, options) => {
612
+ const { count, replacements } = { ...{ count: 0, replacements: {} }, ...options };
613
+ try {
614
+ for (let i = translations.length - 1; i >= 0; i--) {
615
+ const translation = translations[i];
616
+ const localizedTranslation = translation[usedLanguage];
617
+ if (!localizedTranslation) {
618
+ continue;
619
+ }
620
+ const value = localizedTranslation[key];
621
+ if (!value) {
622
+ continue;
623
+ }
624
+ let forProcessing;
625
+ if (typeof value !== "string") {
626
+ if (count === TranslationPluralCount.zero && value?.zero) {
627
+ forProcessing = value.zero;
628
+ } else if (count === TranslationPluralCount.one && value?.one) {
629
+ forProcessing = value.one;
630
+ } else if (count === TranslationPluralCount.two && value?.two) {
631
+ forProcessing = value.two;
632
+ } else if (TranslationPluralCount.few <= count && count < TranslationPluralCount.many && value?.few) {
633
+ forProcessing = value.few;
634
+ } else if (count > TranslationPluralCount.many && value?.many) {
635
+ forProcessing = value.many;
636
+ } else {
637
+ forProcessing = value.other;
638
+ }
639
+ } else {
640
+ forProcessing = value;
641
+ }
642
+ forProcessing = forProcessing.replace(/\{\{(\w+)}}/g, (_, placeholder) => {
643
+ return replacements[placeholder] ?? `{{key:${placeholder}}}`;
644
+ });
645
+ return forProcessing;
646
+ }
647
+ } catch (e) {
648
+ console.error(e);
649
+ }
650
+ return `{{${usedLanguage}:${key}}}`;
651
+ };
652
+ };
653
+
654
+ // src/localization/defaults/form.ts
655
+ var formTranslation = {
656
+ en: {
657
+ all: "All",
658
+ apply: "Apply",
659
+ back: "Back",
660
+ cancel: "Cancel",
661
+ change: "Change",
662
+ clear: "Clear",
663
+ close: "Close",
664
+ confirm: "Confirm",
665
+ decline: "Decline",
666
+ delete: "Delete",
667
+ discard: "Discard",
668
+ discardChanges: "Discard Changes",
669
+ done: "Done",
670
+ edit: "Edit",
671
+ enterText: "Enter text here",
672
+ error: "Error",
673
+ exit: "Exit",
674
+ fieldRequiredError: "This field is required.",
675
+ invalidEmailError: "Please enter a valid email address.",
676
+ less: "Less",
677
+ loading: "Loading",
678
+ maxLengthError: "Maximum length exceeded.",
679
+ minLengthError: "Minimum length not met.",
680
+ more: "More",
681
+ next: "Next",
682
+ no: "No",
683
+ none: "None",
684
+ of: "of",
685
+ optional: "Optional",
686
+ pleaseWait: "Please wait...",
687
+ previous: "Previous",
688
+ remove: "Remove",
689
+ required: "Required",
690
+ reset: "Reset",
691
+ save: "Save",
692
+ search: "Search",
693
+ select: "Select",
694
+ selectOption: "Select an option",
695
+ show: "Show",
696
+ showMore: "Show more",
697
+ showLess: "Show less",
698
+ submit: "Submit",
699
+ success: "Success",
700
+ update: "Update",
701
+ unsavedChanges: "Unsaved Changes",
702
+ unsavedChangesSaveQuestion: "Do you want to save your changes?",
703
+ yes: "Yes"
704
+ },
705
+ de: {
706
+ all: "Alle",
707
+ apply: "Anwenden",
708
+ back: "Zur\xFCck",
709
+ cancel: "Abbrechen",
710
+ change: "\xC4ndern",
711
+ clear: "L\xF6schen",
712
+ close: "Schlie\xDFen",
713
+ confirm: "Best\xE4tigen",
714
+ decline: "Ablehnen",
715
+ delete: "L\xF6schen",
716
+ discard: "Verwerfen",
717
+ discardChanges: "\xC4nderungen Verwerfen",
718
+ done: "Fertig",
719
+ edit: "Bearbeiten",
720
+ enterText: "Text hier eingeben",
721
+ error: "Fehler",
722
+ exit: "Beenden",
723
+ fieldRequiredError: "Dieses Feld ist erforderlich.",
724
+ invalidEmailError: "Bitte geben Sie eine g\xFCltige E-Mail-Adresse ein.",
725
+ less: "Weniger",
726
+ loading: "L\xE4dt",
727
+ maxLengthError: "Maximale L\xE4nge \xFCberschritten.",
728
+ minLengthError: "Mindestl\xE4nge nicht erreicht.",
729
+ more: "Mehr",
730
+ next: "Weiter",
731
+ no: "Nein",
732
+ none: "Nichts",
733
+ of: "von",
734
+ optional: "Optional",
735
+ pleaseWait: "Bitte warten...",
736
+ previous: "Vorherige",
737
+ remove: "Entfernen",
738
+ required: "Erforderlich",
739
+ reset: "Zur\xFCcksetzen",
740
+ save: "Speichern",
741
+ search: "Suche",
742
+ select: "Select",
743
+ selectOption: "Option ausw\xE4hlen",
744
+ show: "Anzeigen",
745
+ showMore: "Mehr anzeigen",
746
+ showLess: "Weniger anzeigen",
747
+ submit: "Abschicken",
748
+ success: "Erfolg",
749
+ update: "Update",
750
+ unsavedChanges: "Ungespeicherte \xC4nderungen",
751
+ unsavedChangesSaveQuestion: "M\xF6chtest du die \xC4nderungen speichern?",
752
+ yes: "Ja"
753
+ }
754
+ };
755
+
756
+ // src/components/table/TableFilterButton.tsx
757
+ var import_react10 = require("react");
758
+ var import_jsx_runtime6 = require("react/jsx-runtime");
759
+ var defaultTableFilterTranslation = {
760
+ en: {
761
+ filter: "Filter",
762
+ min: "Min",
763
+ max: "Max",
764
+ startDate: "Start",
765
+ endDate: "End",
766
+ text: "Text..."
767
+ },
768
+ de: {
769
+ filter: "Filter",
770
+ min: "Min",
771
+ max: "Max",
772
+ startDate: "Start",
773
+ endDate: "Ende",
774
+ text: "Text..."
775
+ }
776
+ };
777
+ var TableFilterButton = ({
778
+ filterType,
779
+ column
780
+ }) => {
781
+ const translation = useTranslation([formTranslation, defaultTableFilterTranslation]);
782
+ const columnFilterValue = column.getFilterValue();
783
+ const [filterValue, setFilterValue] = (0, import_react10.useState)(columnFilterValue);
784
+ const hasFilter = !!filterValue;
785
+ (0, import_react10.useEffect)(() => {
786
+ setFilterValue(columnFilterValue);
787
+ }, [columnFilterValue]);
788
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
789
+ Menu,
790
+ {
791
+ trigger: (onClick, ref) => /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { ref, className: "relative", children: [
792
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(IconButton, { color: "neutral", size: "tiny", onClick, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_lucide_react.FilterIcon, {}) }),
793
+ hasFilter && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
794
+ "div",
795
+ {
796
+ className: "absolute top-0.5 right-0.5 w-2 h-2 rounded-full bg-primary pointer-events-none",
797
+ "aria-hidden": true
798
+ }
799
+ )
800
+ ] }),
801
+ children: ({ close }) => /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "col gap-y-1 p-2 items-start font-normal text-menu-text", children: [
802
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("h4", { className: "textstyle-title-sm", children: translation("filter") }),
803
+ filterType === "text" && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
804
+ Input,
805
+ {
806
+ value: filterValue ?? "",
807
+ autoFocus: true,
808
+ placeholder: translation("text"),
809
+ onChangeText: setFilterValue,
810
+ className: "h-10"
811
+ }
812
+ ),
813
+ filterType === "range" && /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "row gap-x-2 items-center", children: [
814
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
815
+ Input,
816
+ {
817
+ value: filterValue?.[0] ?? "",
818
+ type: "number",
819
+ placeholder: translation("min"),
820
+ onChangeText: (text) => {
821
+ const num = Number(text);
822
+ setFilterValue((old) => [num, old?.[1]]);
823
+ },
824
+ className: "h-10 input-indicator-hidden w-40"
825
+ }
826
+ ),
827
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "font-bold", children: "-" }),
828
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
829
+ Input,
830
+ {
831
+ value: filterValue?.[1] ?? "",
832
+ type: "number",
833
+ placeholder: translation("max"),
834
+ onChangeText: (text) => {
835
+ const num = Number(text);
836
+ setFilterValue((old) => [old?.[0], num]);
837
+ },
838
+ className: "h-10 input-indicator-hidden w-40"
839
+ }
840
+ )
841
+ ] }),
842
+ filterType === "dateRange" && /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
843
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
844
+ Input,
845
+ {
846
+ value: filterValue?.[0] ? filterValue?.[0].toISOString().slice(0, 16) : "",
847
+ type: "datetime-local",
848
+ placeholder: translation("startDate"),
849
+ onChangeText: (text) => {
850
+ const value = new Date(text);
851
+ setFilterValue((old) => [value, old?.[1]]);
852
+ },
853
+ className: "h-10 w-50"
854
+ }
855
+ ),
856
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
857
+ Input,
858
+ {
859
+ value: filterValue?.[1] ? filterValue?.[1].toISOString().slice(0, 16) : "",
860
+ type: "datetime-local",
861
+ placeholder: translation("endDate"),
862
+ onChangeText: (text) => {
863
+ const value = new Date(text);
864
+ setFilterValue((old) => [old?.[0], value]);
865
+ },
866
+ className: "h-10 w-50"
867
+ }
868
+ )
869
+ ] }),
870
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "row justify-end w-full", children: [
871
+ hasFilter && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(SolidButton, { color: "negative", size: "small", onClick: () => {
872
+ column.setFilterValue(void 0);
873
+ close();
874
+ }, children: translation("remove") }),
875
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(SolidButton, { size: "small", onClick: () => {
876
+ column.setFilterValue(filterValue);
877
+ close();
878
+ }, children: translation("apply") })
879
+ ] })
880
+ ] })
881
+ }
882
+ );
883
+ };
884
+ // Annotate the CommonJS export names for ESM import in node:
885
+ 0 && (module.exports = {
886
+ TableFilterButton
887
+ });
888
+ //# sourceMappingURL=TableFilterButton.js.map