@helpwave/hightide 0.1.5 → 0.1.7-alpha.1

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 (497) hide show
  1. package/dist/coloring/{shading.d.cts → shading.d.mts} +1 -1
  2. package/dist/coloring/shading.js +14 -3329
  3. package/dist/coloring/shading.js.map +1 -1
  4. package/dist/coloring/shading.mjs +47 -0
  5. package/dist/coloring/shading.mjs.map +1 -0
  6. package/dist/coloring/types.js +26 -2
  7. package/dist/coloring/types.js.map +1 -1
  8. package/dist/coloring/types.mjs +6 -0
  9. package/dist/coloring/{types.cjs.map → types.mjs.map} +1 -1
  10. package/dist/components/branding/HelpwaveBadge.js +59 -25
  11. package/dist/components/branding/HelpwaveBadge.js.map +1 -1
  12. package/dist/components/branding/HelpwaveBadge.mjs +122 -0
  13. package/dist/components/branding/HelpwaveBadge.mjs.map +1 -0
  14. package/dist/components/date/{DatePicker.d.cts → DatePicker.d.mts} +5 -5
  15. package/dist/components/date/DatePicker.js +117 -82
  16. package/dist/components/date/DatePicker.js.map +1 -1
  17. package/dist/components/date/{DatePicker.cjs → DatePicker.mjs} +83 -119
  18. package/dist/components/date/DatePicker.mjs.map +1 -0
  19. package/dist/components/date/{DayPicker.d.cts → DayPicker.d.mts} +1 -1
  20. package/dist/components/date/DayPicker.js +55 -18
  21. package/dist/components/date/DayPicker.js.map +1 -1
  22. package/dist/components/date/{DayPicker.cjs → DayPicker.mjs} +19 -57
  23. package/dist/components/date/DayPicker.mjs.map +1 -0
  24. package/dist/components/date/{TimeDisplay.d.cts → TimeDisplay.d.mts} +2 -2
  25. package/dist/components/date/TimeDisplay.js +35 -9
  26. package/dist/components/date/TimeDisplay.js.map +1 -1
  27. package/dist/components/date/{TimeDisplay.cjs → TimeDisplay.mjs} +10 -37
  28. package/dist/components/date/TimeDisplay.mjs.map +1 -0
  29. package/dist/components/date/TimePicker.js +57 -22
  30. package/dist/components/date/TimePicker.js.map +1 -1
  31. package/dist/components/date/{TimePicker.cjs → TimePicker.mjs} +23 -59
  32. package/dist/components/date/TimePicker.mjs.map +1 -0
  33. package/dist/components/date/{YearMonthPicker.d.cts → YearMonthPicker.d.mts} +1 -1
  34. package/dist/components/date/YearMonthPicker.d.ts +1 -1
  35. package/dist/components/date/YearMonthPicker.js +72 -37
  36. package/dist/components/date/YearMonthPicker.js.map +1 -1
  37. package/dist/components/date/{YearMonthPicker.cjs → YearMonthPicker.mjs} +38 -74
  38. package/dist/components/date/YearMonthPicker.mjs.map +1 -0
  39. package/dist/components/dialogs/{ConfirmDialog.d.cts → ConfirmDialog.d.mts} +4 -4
  40. package/dist/components/dialogs/ConfirmDialog.js +98 -62
  41. package/dist/components/dialogs/ConfirmDialog.js.map +1 -1
  42. package/dist/components/dialogs/{ConfirmDialog.cjs → ConfirmDialog.mjs} +63 -100
  43. package/dist/components/dialogs/ConfirmDialog.mjs.map +1 -0
  44. package/dist/components/icons-and-geometry/{Avatar.d.cts → Avatar.d.mts} +1 -5
  45. package/dist/components/icons-and-geometry/Avatar.d.ts +1 -5
  46. package/dist/components/icons-and-geometry/Avatar.js +48 -13
  47. package/dist/components/icons-and-geometry/Avatar.js.map +1 -1
  48. package/dist/components/icons-and-geometry/Avatar.mjs +81 -0
  49. package/dist/components/icons-and-geometry/{Avatar.cjs.map → Avatar.mjs.map} +1 -1
  50. package/dist/components/icons-and-geometry/Circle.js +40 -6
  51. package/dist/components/icons-and-geometry/Circle.js.map +1 -1
  52. package/dist/components/icons-and-geometry/Circle.mjs +27 -0
  53. package/dist/components/icons-and-geometry/{Circle.cjs.map → Circle.mjs.map} +1 -1
  54. package/dist/components/icons-and-geometry/Helpwave.js +38 -14
  55. package/dist/components/icons-and-geometry/Helpwave.js.map +1 -1
  56. package/dist/components/icons-and-geometry/Helpwave.mjs +75 -0
  57. package/dist/components/icons-and-geometry/{Helpwave.cjs.map → Helpwave.mjs.map} +1 -1
  58. package/dist/components/icons-and-geometry/Ring.js +74 -37
  59. package/dist/components/icons-and-geometry/Ring.js.map +1 -1
  60. package/dist/components/icons-and-geometry/{Ring.cjs → Ring.mjs} +38 -76
  61. package/dist/components/icons-and-geometry/{Ring.cjs.map → Ring.mjs.map} +1 -1
  62. package/dist/components/icons-and-geometry/Tag.js +28 -4
  63. package/dist/components/icons-and-geometry/Tag.js.map +1 -1
  64. package/dist/components/icons-and-geometry/Tag.mjs +22 -0
  65. package/dist/components/icons-and-geometry/{Tag.cjs.map → Tag.mjs.map} +1 -1
  66. package/dist/components/layout-and-navigation/BreadCrumb.js +195 -191
  67. package/dist/components/layout-and-navigation/BreadCrumb.js.map +1 -1
  68. package/dist/components/layout-and-navigation/{BreadCrumb.cjs → BreadCrumb.mjs} +191 -198
  69. package/dist/components/layout-and-navigation/{BreadCrumb.cjs.map → BreadCrumb.mjs.map} +1 -1
  70. package/dist/components/layout-and-navigation/Carousel.js +68 -34
  71. package/dist/components/layout-and-navigation/Carousel.js.map +1 -1
  72. package/dist/components/layout-and-navigation/{Carousel.cjs → Carousel.mjs} +35 -70
  73. package/dist/components/layout-and-navigation/{Carousel.cjs.map → Carousel.mjs.map} +1 -1
  74. package/dist/components/layout-and-navigation/Chip.js +43 -8
  75. package/dist/components/layout-and-navigation/Chip.js.map +1 -1
  76. package/dist/components/layout-and-navigation/Chip.mjs +69 -0
  77. package/dist/components/layout-and-navigation/{Chip.cjs.map → Chip.mjs.map} +1 -1
  78. package/dist/components/layout-and-navigation/DividerInserter.js +39 -5
  79. package/dist/components/layout-and-navigation/DividerInserter.js.map +1 -1
  80. package/dist/components/layout-and-navigation/DividerInserter.mjs +25 -0
  81. package/dist/components/layout-and-navigation/{DividerInserter.cjs.map → DividerInserter.mjs.map} +1 -1
  82. package/dist/components/layout-and-navigation/Expandable.js +52 -17
  83. package/dist/components/layout-and-navigation/Expandable.js.map +1 -1
  84. package/dist/components/layout-and-navigation/Expandable.mjs +81 -0
  85. package/dist/components/layout-and-navigation/Expandable.mjs.map +1 -0
  86. package/dist/components/layout-and-navigation/{FAQSection.d.cts → FAQSection.d.mts} +1 -1
  87. package/dist/components/layout-and-navigation/FAQSection.js +75 -41
  88. package/dist/components/layout-and-navigation/FAQSection.js.map +1 -1
  89. package/dist/components/layout-and-navigation/{FAQSection.cjs → FAQSection.mjs} +42 -77
  90. package/dist/components/layout-and-navigation/FAQSection.mjs.map +1 -0
  91. package/dist/components/layout-and-navigation/{MarkdownInterpreter.d.cts → MarkdownInterpreter.d.mts} +1 -1
  92. package/dist/components/layout-and-navigation/MarkdownInterpreter.d.ts +1 -1
  93. package/dist/components/layout-and-navigation/MarkdownInterpreter.js +43 -18
  94. package/dist/components/layout-and-navigation/MarkdownInterpreter.js.map +1 -1
  95. package/dist/components/layout-and-navigation/{MarkdownInterpreter.cjs → MarkdownInterpreter.mjs} +19 -45
  96. package/dist/components/layout-and-navigation/{MarkdownInterpreter.cjs.map → MarkdownInterpreter.mjs.map} +1 -1
  97. package/dist/components/layout-and-navigation/{Overlay.d.cts → Overlay.d.mts} +3 -3
  98. package/dist/components/layout-and-navigation/Overlay.d.ts +1 -1
  99. package/dist/components/layout-and-navigation/Overlay.js +91 -54
  100. package/dist/components/layout-and-navigation/Overlay.js.map +1 -1
  101. package/dist/components/layout-and-navigation/{Overlay.cjs → Overlay.mjs} +55 -93
  102. package/dist/components/layout-and-navigation/Overlay.mjs.map +1 -0
  103. package/dist/components/layout-and-navigation/{Pagination.d.cts → Pagination.d.mts} +2 -2
  104. package/dist/components/layout-and-navigation/Pagination.js +53 -19
  105. package/dist/components/layout-and-navigation/Pagination.js.map +1 -1
  106. package/dist/components/layout-and-navigation/Pagination.mjs +82 -0
  107. package/dist/components/layout-and-navigation/Pagination.mjs.map +1 -0
  108. package/dist/components/layout-and-navigation/{SearchableList.d.cts → SearchableList.d.mts} +2 -2
  109. package/dist/components/layout-and-navigation/SearchableList.js +76 -42
  110. package/dist/components/layout-and-navigation/SearchableList.js.map +1 -1
  111. package/dist/components/layout-and-navigation/SearchableList.mjs +252 -0
  112. package/dist/components/layout-and-navigation/SearchableList.mjs.map +1 -0
  113. package/dist/components/layout-and-navigation/{StepperBar.d.cts → StepperBar.d.mts} +2 -2
  114. package/dist/components/layout-and-navigation/StepperBar.js +69 -34
  115. package/dist/components/layout-and-navigation/StepperBar.js.map +1 -1
  116. package/dist/components/layout-and-navigation/{StepperBar.cjs → StepperBar.mjs} +35 -71
  117. package/dist/components/layout-and-navigation/StepperBar.mjs.map +1 -0
  118. package/dist/components/layout-and-navigation/{Table.d.cts → Table.d.mts} +4 -4
  119. package/dist/components/layout-and-navigation/Table.d.ts +3 -3
  120. package/dist/components/layout-and-navigation/Table.js +108 -65
  121. package/dist/components/layout-and-navigation/Table.js.map +1 -1
  122. package/dist/components/layout-and-navigation/{Table.cjs → Table.mjs} +66 -110
  123. package/dist/components/layout-and-navigation/Table.mjs.map +1 -0
  124. package/dist/components/layout-and-navigation/{TextImage.d.cts → TextImage.d.mts} +2 -2
  125. package/dist/components/layout-and-navigation/TextImage.js +54 -18
  126. package/dist/components/layout-and-navigation/TextImage.js.map +1 -1
  127. package/dist/components/layout-and-navigation/TextImage.mjs +101 -0
  128. package/dist/components/layout-and-navigation/TextImage.mjs.map +1 -0
  129. package/dist/components/layout-and-navigation/Tile.js +42 -8
  130. package/dist/components/layout-and-navigation/Tile.js.map +1 -1
  131. package/dist/components/layout-and-navigation/Tile.mjs +23 -0
  132. package/dist/components/layout-and-navigation/{Tile.cjs.map → Tile.mjs.map} +1 -1
  133. package/dist/components/layout-and-navigation/VerticalDivider.js +33 -9
  134. package/dist/components/layout-and-navigation/VerticalDivider.js.map +1 -1
  135. package/dist/components/layout-and-navigation/VerticalDivider.mjs +56 -0
  136. package/dist/components/layout-and-navigation/{VerticalDivider.cjs.map → VerticalDivider.mjs.map} +1 -1
  137. package/dist/components/loading-states/{ErrorComponent.d.cts → ErrorComponent.d.mts} +2 -2
  138. package/dist/components/loading-states/ErrorComponent.js +46 -12
  139. package/dist/components/loading-states/ErrorComponent.js.map +1 -1
  140. package/dist/components/loading-states/ErrorComponent.mjs +68 -0
  141. package/dist/components/loading-states/ErrorComponent.mjs.map +1 -0
  142. package/dist/components/loading-states/{LoadingAndErrorComponent.d.cts → LoadingAndErrorComponent.d.mts} +5 -5
  143. package/dist/components/loading-states/LoadingAndErrorComponent.d.ts +1 -1
  144. package/dist/components/loading-states/LoadingAndErrorComponent.js +68 -34
  145. package/dist/components/loading-states/LoadingAndErrorComponent.js.map +1 -1
  146. package/dist/components/loading-states/LoadingAndErrorComponent.mjs +194 -0
  147. package/dist/components/loading-states/LoadingAndErrorComponent.mjs.map +1 -0
  148. package/dist/components/loading-states/{LoadingAnimation.d.cts → LoadingAnimation.d.mts} +2 -2
  149. package/dist/components/loading-states/LoadingAnimation.js +59 -23
  150. package/dist/components/loading-states/LoadingAnimation.js.map +1 -1
  151. package/dist/components/loading-states/LoadingAnimation.mjs +139 -0
  152. package/dist/components/loading-states/LoadingAnimation.mjs.map +1 -0
  153. package/dist/components/loading-states/{LoadingButton.d.cts → LoadingButton.d.mts} +1 -1
  154. package/dist/components/loading-states/LoadingButton.js +62 -28
  155. package/dist/components/loading-states/LoadingButton.js.map +1 -1
  156. package/dist/components/loading-states/{LoadingButton.cjs → LoadingButton.mjs} +29 -64
  157. package/dist/components/loading-states/LoadingButton.mjs.map +1 -0
  158. package/dist/components/loading-states/ProgressIndicator.js +30 -6
  159. package/dist/components/loading-states/ProgressIndicator.js.map +1 -1
  160. package/dist/components/loading-states/ProgressIndicator.mjs +59 -0
  161. package/dist/components/loading-states/{ProgressIndicator.cjs.map → ProgressIndicator.mjs.map} +1 -1
  162. package/dist/components/modals/{ConfirmModal.d.cts → ConfirmModal.d.mts} +4 -4
  163. package/dist/components/modals/ConfirmModal.js +99 -63
  164. package/dist/components/modals/ConfirmModal.js.map +1 -1
  165. package/dist/components/modals/{ConfirmModal.cjs → ConfirmModal.mjs} +64 -101
  166. package/dist/components/modals/ConfirmModal.mjs.map +1 -0
  167. package/dist/components/modals/{DiscardChangesModal.d.cts → DiscardChangesModal.d.mts} +5 -5
  168. package/dist/components/modals/DiscardChangesModal.js +101 -65
  169. package/dist/components/modals/DiscardChangesModal.js.map +1 -1
  170. package/dist/components/modals/{DiscardChangesModal.cjs → DiscardChangesModal.mjs} +66 -103
  171. package/dist/components/modals/DiscardChangesModal.mjs.map +1 -0
  172. package/dist/components/modals/{InputModal.d.cts → InputModal.d.mts} +7 -7
  173. package/dist/components/modals/InputModal.js +124 -88
  174. package/dist/components/modals/InputModal.js.map +1 -1
  175. package/dist/components/modals/{InputModal.cjs → InputModal.mjs} +89 -126
  176. package/dist/components/modals/InputModal.mjs.map +1 -0
  177. package/dist/components/modals/{LanguageModal.d.cts → LanguageModal.d.mts} +3 -3
  178. package/dist/components/modals/LanguageModal.js +129 -93
  179. package/dist/components/modals/LanguageModal.js.map +1 -1
  180. package/dist/components/modals/{LanguageModal.cjs → LanguageModal.mjs} +94 -131
  181. package/dist/components/modals/LanguageModal.mjs.map +1 -0
  182. package/dist/components/modals/{ThemeModal.d.cts → ThemeModal.d.mts} +4 -4
  183. package/dist/components/modals/ThemeModal.js +133 -97
  184. package/dist/components/modals/ThemeModal.js.map +1 -1
  185. package/dist/components/modals/{ThemeModal.cjs → ThemeModal.mjs} +98 -135
  186. package/dist/components/modals/ThemeModal.mjs.map +1 -0
  187. package/dist/components/properties/{CheckboxProperty.d.cts → CheckboxProperty.d.mts} +3 -3
  188. package/dist/components/properties/CheckboxProperty.js +82 -48
  189. package/dist/components/properties/CheckboxProperty.js.map +1 -1
  190. package/dist/components/properties/{CheckboxProperty.cjs → CheckboxProperty.mjs} +49 -84
  191. package/dist/components/properties/CheckboxProperty.mjs.map +1 -0
  192. package/dist/components/properties/{DateProperty.d.cts → DateProperty.d.mts} +3 -3
  193. package/dist/components/properties/DateProperty.js +92 -58
  194. package/dist/components/properties/DateProperty.js.map +1 -1
  195. package/dist/components/properties/{DateProperty.cjs → DateProperty.mjs} +59 -94
  196. package/dist/components/properties/DateProperty.mjs.map +1 -0
  197. package/dist/components/properties/{MultiSelectProperty.d.cts → MultiSelectProperty.d.mts} +5 -5
  198. package/dist/components/properties/MultiSelectProperty.js +151 -117
  199. package/dist/components/properties/MultiSelectProperty.js.map +1 -1
  200. package/dist/components/properties/{MultiSelectProperty.cjs → MultiSelectProperty.mjs} +118 -153
  201. package/dist/components/properties/MultiSelectProperty.mjs.map +1 -0
  202. package/dist/components/properties/{NumberProperty.d.cts → NumberProperty.d.mts} +3 -3
  203. package/dist/components/properties/NumberProperty.js +93 -59
  204. package/dist/components/properties/NumberProperty.js.map +1 -1
  205. package/dist/components/properties/{NumberProperty.cjs → NumberProperty.mjs} +60 -95
  206. package/dist/components/properties/NumberProperty.mjs.map +1 -0
  207. package/dist/components/properties/{PropertyBase.d.cts → PropertyBase.d.mts} +2 -2
  208. package/dist/components/properties/PropertyBase.js +61 -27
  209. package/dist/components/properties/PropertyBase.js.map +1 -1
  210. package/dist/components/properties/{PropertyBase.cjs → PropertyBase.mjs} +28 -63
  211. package/dist/components/properties/{PropertyBase.cjs.map → PropertyBase.mjs.map} +1 -1
  212. package/dist/components/properties/{SelectProperty.d.cts → SelectProperty.d.mts} +5 -5
  213. package/dist/components/properties/SelectProperty.js +116 -82
  214. package/dist/components/properties/SelectProperty.js.map +1 -1
  215. package/dist/components/properties/{SelectProperty.cjs → SelectProperty.mjs} +83 -118
  216. package/dist/components/properties/SelectProperty.mjs.map +1 -0
  217. package/dist/components/properties/{TextProperty.d.cts → TextProperty.d.mts} +3 -3
  218. package/dist/components/properties/TextProperty.js +90 -56
  219. package/dist/components/properties/TextProperty.js.map +1 -1
  220. package/dist/components/properties/{TextProperty.cjs → TextProperty.mjs} +57 -92
  221. package/dist/components/properties/TextProperty.mjs.map +1 -0
  222. package/dist/components/user-action/Button.js +67 -28
  223. package/dist/components/user-action/Button.js.map +1 -1
  224. package/dist/components/user-action/{Button.cjs → Button.mjs} +29 -69
  225. package/dist/components/user-action/{Button.cjs.map → Button.mjs.map} +1 -1
  226. package/dist/components/user-action/{Checkbox.d.cts → Checkbox.d.mts} +1 -1
  227. package/dist/components/user-action/Checkbox.js +55 -20
  228. package/dist/components/user-action/Checkbox.js.map +1 -1
  229. package/dist/components/user-action/Checkbox.mjs +122 -0
  230. package/dist/components/user-action/{Checkbox.cjs.map → Checkbox.mjs.map} +1 -1
  231. package/dist/components/user-action/{DateAndTimePicker.d.cts → DateAndTimePicker.d.mts} +7 -7
  232. package/dist/components/user-action/DateAndTimePicker.js +140 -106
  233. package/dist/components/user-action/DateAndTimePicker.js.map +1 -1
  234. package/dist/components/user-action/{DateAndTimePicker.cjs → DateAndTimePicker.mjs} +107 -142
  235. package/dist/components/user-action/DateAndTimePicker.mjs.map +1 -0
  236. package/dist/components/user-action/{Input.d.cts → Input.d.mts} +1 -1
  237. package/dist/components/user-action/Input.js +62 -26
  238. package/dist/components/user-action/Input.js.map +1 -1
  239. package/dist/components/user-action/Input.mjs +186 -0
  240. package/dist/components/user-action/Input.mjs.map +1 -0
  241. package/dist/components/user-action/Label.js +39 -5
  242. package/dist/components/user-action/Label.js.map +1 -1
  243. package/dist/components/user-action/Label.mjs +21 -0
  244. package/dist/components/user-action/{Label.cjs.map → Label.mjs.map} +1 -1
  245. package/dist/components/user-action/Menu.js +54 -19
  246. package/dist/components/user-action/Menu.js.map +1 -1
  247. package/dist/components/user-action/Menu.mjs +127 -0
  248. package/dist/components/user-action/Menu.mjs.map +1 -0
  249. package/dist/components/user-action/{MultiSelect.d.cts → MultiSelect.d.mts} +3 -3
  250. package/dist/components/user-action/MultiSelect.js +114 -80
  251. package/dist/components/user-action/MultiSelect.js.map +1 -1
  252. package/dist/components/user-action/{MultiSelect.cjs → MultiSelect.mjs} +81 -116
  253. package/dist/components/user-action/MultiSelect.mjs.map +1 -0
  254. package/dist/components/user-action/ScrollPicker.js +49 -15
  255. package/dist/components/user-action/ScrollPicker.js.map +1 -1
  256. package/dist/components/user-action/{ScrollPicker.cjs → ScrollPicker.mjs} +16 -51
  257. package/dist/components/user-action/ScrollPicker.mjs.map +1 -0
  258. package/dist/components/user-action/{Select.d.cts → Select.d.mts} +2 -7
  259. package/dist/components/user-action/Select.d.ts +1 -6
  260. package/dist/components/user-action/Select.js +88 -54
  261. package/dist/components/user-action/Select.js.map +1 -1
  262. package/dist/components/user-action/{Select.cjs → Select.mjs} +52 -91
  263. package/dist/components/user-action/Select.mjs.map +1 -0
  264. package/dist/components/user-action/{Textarea.d.cts → Textarea.d.mts} +1 -1
  265. package/dist/components/user-action/Textarea.js +60 -25
  266. package/dist/components/user-action/Textarea.js.map +1 -1
  267. package/dist/components/user-action/Textarea.mjs +163 -0
  268. package/dist/components/user-action/Textarea.mjs.map +1 -0
  269. package/dist/components/user-action/ToggleableInput.js +61 -26
  270. package/dist/components/user-action/ToggleableInput.js.map +1 -1
  271. package/dist/components/user-action/ToggleableInput.mjs +156 -0
  272. package/dist/components/user-action/ToggleableInput.mjs.map +1 -0
  273. package/dist/components/user-action/Tooltip.js +41 -15
  274. package/dist/components/user-action/Tooltip.js.map +1 -1
  275. package/dist/components/user-action/{Tooltip.cjs → Tooltip.mjs} +16 -43
  276. package/dist/components/user-action/Tooltip.mjs.map +1 -0
  277. package/dist/hooks/useHoverState.js +31 -7
  278. package/dist/hooks/useHoverState.js.map +1 -1
  279. package/dist/hooks/useHoverState.mjs +47 -0
  280. package/dist/hooks/{useHoverState.cjs.map → useHoverState.mjs.map} +1 -1
  281. package/dist/hooks/useLocalStorage.js +31 -7
  282. package/dist/hooks/useLocalStorage.js.map +1 -1
  283. package/dist/hooks/useLocalStorage.mjs +58 -0
  284. package/dist/hooks/{useLocalStorage.cjs.map → useLocalStorage.mjs.map} +1 -1
  285. package/dist/hooks/useOutsideClick.js +28 -4
  286. package/dist/hooks/useOutsideClick.js.map +1 -1
  287. package/dist/hooks/useOutsideClick.mjs +23 -0
  288. package/dist/hooks/{useOutsideClick.cjs.map → useOutsideClick.mjs.map} +1 -1
  289. package/dist/hooks/useSaveDelay.js +30 -6
  290. package/dist/hooks/useSaveDelay.js.map +1 -1
  291. package/dist/hooks/useSaveDelay.mjs +43 -0
  292. package/dist/hooks/{useSaveDelay.cjs.map → useSaveDelay.mjs.map} +1 -1
  293. package/dist/{index.d.cts → index.d.mts} +78 -78
  294. package/dist/index.js +1028 -875
  295. package/dist/index.js.map +1 -1
  296. package/dist/{index.cjs → index.mjs} +876 -1028
  297. package/dist/index.mjs.map +1 -0
  298. package/dist/localization/{LanguageProvider.d.cts → LanguageProvider.d.mts} +1 -1
  299. package/dist/localization/LanguageProvider.js +43 -16
  300. package/dist/localization/LanguageProvider.js.map +1 -1
  301. package/dist/localization/{LanguageProvider.cjs → LanguageProvider.mjs} +17 -45
  302. package/dist/localization/LanguageProvider.mjs.map +1 -0
  303. package/dist/localization/{useTranslation.d.cts → useTranslation.d.mts} +1 -1
  304. package/dist/localization/useTranslation.js +33 -7
  305. package/dist/localization/useTranslation.js.map +1 -1
  306. package/dist/localization/useTranslation.mjs +42 -0
  307. package/dist/localization/useTranslation.mjs.map +1 -0
  308. package/dist/localization/util.js +26 -2
  309. package/dist/localization/util.js.map +1 -1
  310. package/dist/localization/util.mjs +16 -0
  311. package/dist/localization/{util.cjs.map → util.mjs.map} +1 -1
  312. package/dist/theming/{useTheme.d.cts → useTheme.d.mts} +2 -2
  313. package/dist/theming/useTheme.js +37 -10
  314. package/dist/theming/useTheme.js.map +1 -1
  315. package/dist/theming/useTheme.mjs +48 -0
  316. package/dist/theming/useTheme.mjs.map +1 -0
  317. package/dist/util/array.js +32 -2
  318. package/dist/util/array.js.map +1 -1
  319. package/dist/util/{array.cjs → array.mjs} +3 -34
  320. package/dist/util/{array.cjs.map → array.mjs.map} +1 -1
  321. package/dist/util/builder.js +26 -2
  322. package/dist/util/builder.js.map +1 -1
  323. package/dist/util/builder.mjs +9 -0
  324. package/dist/util/{builder.cjs.map → builder.mjs.map} +1 -1
  325. package/dist/util/date.js +39 -2
  326. package/dist/util/date.js.map +1 -1
  327. package/dist/util/{date.cjs → date.mjs} +3 -41
  328. package/dist/util/date.mjs.map +1 -0
  329. package/dist/util/easeFunctions.js +28 -2
  330. package/dist/util/easeFunctions.js.map +1 -1
  331. package/dist/util/easeFunctions.mjs +36 -0
  332. package/dist/util/easeFunctions.mjs.map +1 -0
  333. package/dist/util/emailValidation.js +26 -2
  334. package/dist/util/emailValidation.js.map +1 -1
  335. package/dist/util/emailValidation.mjs +8 -0
  336. package/dist/util/{emailValidation.cjs.map → emailValidation.mjs.map} +1 -1
  337. package/dist/util/loopingArray.js +26 -2
  338. package/dist/util/loopingArray.js.map +1 -1
  339. package/dist/util/{loopingArray.cjs → loopingArray.mjs} +3 -28
  340. package/dist/util/{loopingArray.cjs.map → loopingArray.mjs.map} +1 -1
  341. package/dist/util/math.js +26 -2
  342. package/dist/util/math.js.map +1 -1
  343. package/dist/util/math.mjs +8 -0
  344. package/dist/util/{math.cjs.map → math.mjs.map} +1 -1
  345. package/dist/util/news.d.mts +101 -0
  346. package/dist/util/news.d.ts +54 -54
  347. package/dist/util/news.js +39 -12
  348. package/dist/util/news.js.map +1 -1
  349. package/dist/util/news.mjs +49 -0
  350. package/dist/util/news.mjs.map +1 -0
  351. package/dist/util/noop.d.mts +3 -0
  352. package/dist/util/noop.d.ts +1 -1
  353. package/dist/util/noop.js +26 -2
  354. package/dist/util/noop.js.map +1 -1
  355. package/dist/util/noop.mjs +6 -0
  356. package/dist/util/noop.mjs.map +1 -0
  357. package/dist/util/simpleSearch.js +29 -2
  358. package/dist/util/simpleSearch.js.map +1 -1
  359. package/dist/util/simpleSearch.mjs +26 -0
  360. package/dist/util/{simpleSearch.cjs.map → simpleSearch.mjs.map} +1 -1
  361. package/dist/util/storage.js +27 -2
  362. package/dist/util/storage.js.map +1 -1
  363. package/dist/util/storage.mjs +38 -0
  364. package/dist/util/{storage.cjs.map → storage.mjs.map} +1 -1
  365. package/dist/util/types.js +17 -0
  366. package/dist/util/types.js.map +1 -1
  367. package/dist/util/types.mjs +1 -0
  368. package/dist/util/types.mjs.map +1 -0
  369. package/package.json +2 -3
  370. package/dist/coloring/shading.cjs +0 -3402
  371. package/dist/coloring/shading.cjs.map +0 -1
  372. package/dist/coloring/types.cjs +0 -31
  373. package/dist/components/branding/HelpwaveBadge.cjs +0 -157
  374. package/dist/components/branding/HelpwaveBadge.cjs.map +0 -1
  375. package/dist/components/date/DatePicker.cjs.map +0 -1
  376. package/dist/components/date/DayPicker.cjs.map +0 -1
  377. package/dist/components/date/TimeDisplay.cjs.map +0 -1
  378. package/dist/components/date/TimePicker.cjs.map +0 -1
  379. package/dist/components/date/YearMonthPicker.cjs.map +0 -1
  380. package/dist/components/dialogs/ConfirmDialog.cjs.map +0 -1
  381. package/dist/components/icons-and-geometry/Avatar.cjs +0 -121
  382. package/dist/components/icons-and-geometry/Circle.cjs +0 -62
  383. package/dist/components/icons-and-geometry/Helpwave.cjs +0 -100
  384. package/dist/components/icons-and-geometry/Tag.cjs +0 -47
  385. package/dist/components/layout-and-navigation/Chip.cjs +0 -105
  386. package/dist/components/layout-and-navigation/DividerInserter.cjs +0 -60
  387. package/dist/components/layout-and-navigation/Expandable.cjs +0 -117
  388. package/dist/components/layout-and-navigation/Expandable.cjs.map +0 -1
  389. package/dist/components/layout-and-navigation/FAQSection.cjs.map +0 -1
  390. package/dist/components/layout-and-navigation/Overlay.cjs.map +0 -1
  391. package/dist/components/layout-and-navigation/Pagination.cjs +0 -117
  392. package/dist/components/layout-and-navigation/Pagination.cjs.map +0 -1
  393. package/dist/components/layout-and-navigation/SearchableList.cjs +0 -287
  394. package/dist/components/layout-and-navigation/SearchableList.cjs.map +0 -1
  395. package/dist/components/layout-and-navigation/StepperBar.cjs.map +0 -1
  396. package/dist/components/layout-and-navigation/Table.cjs.map +0 -1
  397. package/dist/components/layout-and-navigation/TextImage.cjs +0 -138
  398. package/dist/components/layout-and-navigation/TextImage.cjs.map +0 -1
  399. package/dist/components/layout-and-navigation/Tile.cjs +0 -58
  400. package/dist/components/layout-and-navigation/VerticalDivider.cjs +0 -81
  401. package/dist/components/loading-states/ErrorComponent.cjs +0 -103
  402. package/dist/components/loading-states/ErrorComponent.cjs.map +0 -1
  403. package/dist/components/loading-states/LoadingAndErrorComponent.cjs +0 -229
  404. package/dist/components/loading-states/LoadingAndErrorComponent.cjs.map +0 -1
  405. package/dist/components/loading-states/LoadingAnimation.cjs +0 -176
  406. package/dist/components/loading-states/LoadingAnimation.cjs.map +0 -1
  407. package/dist/components/loading-states/LoadingButton.cjs.map +0 -1
  408. package/dist/components/loading-states/ProgressIndicator.cjs +0 -84
  409. package/dist/components/modals/ConfirmModal.cjs.map +0 -1
  410. package/dist/components/modals/DiscardChangesModal.cjs.map +0 -1
  411. package/dist/components/modals/InputModal.cjs.map +0 -1
  412. package/dist/components/modals/LanguageModal.cjs.map +0 -1
  413. package/dist/components/modals/ThemeModal.cjs.map +0 -1
  414. package/dist/components/properties/CheckboxProperty.cjs.map +0 -1
  415. package/dist/components/properties/DateProperty.cjs.map +0 -1
  416. package/dist/components/properties/MultiSelectProperty.cjs.map +0 -1
  417. package/dist/components/properties/NumberProperty.cjs.map +0 -1
  418. package/dist/components/properties/SelectProperty.cjs.map +0 -1
  419. package/dist/components/properties/TextProperty.cjs.map +0 -1
  420. package/dist/components/user-action/Checkbox.cjs +0 -158
  421. package/dist/components/user-action/DateAndTimePicker.cjs.map +0 -1
  422. package/dist/components/user-action/Input.cjs +0 -223
  423. package/dist/components/user-action/Input.cjs.map +0 -1
  424. package/dist/components/user-action/Label.cjs +0 -56
  425. package/dist/components/user-action/Menu.cjs +0 -163
  426. package/dist/components/user-action/Menu.cjs.map +0 -1
  427. package/dist/components/user-action/MultiSelect.cjs.map +0 -1
  428. package/dist/components/user-action/ScrollPicker.cjs.map +0 -1
  429. package/dist/components/user-action/Select.cjs.map +0 -1
  430. package/dist/components/user-action/Textarea.cjs +0 -199
  431. package/dist/components/user-action/Textarea.cjs.map +0 -1
  432. package/dist/components/user-action/ToggleableInput.cjs +0 -192
  433. package/dist/components/user-action/ToggleableInput.cjs.map +0 -1
  434. package/dist/components/user-action/Tooltip.cjs.map +0 -1
  435. package/dist/hooks/useHoverState.cjs +0 -72
  436. package/dist/hooks/useLocalStorage.cjs +0 -83
  437. package/dist/hooks/useOutsideClick.cjs +0 -48
  438. package/dist/hooks/useSaveDelay.cjs +0 -68
  439. package/dist/index.cjs.map +0 -1
  440. package/dist/localization/LanguageProvider.cjs.map +0 -1
  441. package/dist/localization/useTranslation.cjs +0 -69
  442. package/dist/localization/useTranslation.cjs.map +0 -1
  443. package/dist/localization/util.cjs +0 -41
  444. package/dist/theming/useTheme.cjs +0 -76
  445. package/dist/theming/useTheme.cjs.map +0 -1
  446. package/dist/util/builder.cjs +0 -34
  447. package/dist/util/date.cjs.map +0 -1
  448. package/dist/util/easeFunctions.cjs +0 -63
  449. package/dist/util/easeFunctions.cjs.map +0 -1
  450. package/dist/util/emailValidation.cjs +0 -33
  451. package/dist/util/math.cjs +0 -33
  452. package/dist/util/news.cjs +0 -77
  453. package/dist/util/news.cjs.map +0 -1
  454. package/dist/util/news.d.cts +0 -101
  455. package/dist/util/noop.cjs +0 -31
  456. package/dist/util/noop.cjs.map +0 -1
  457. package/dist/util/noop.d.cts +0 -3
  458. package/dist/util/simpleSearch.cjs +0 -54
  459. package/dist/util/storage.cjs +0 -64
  460. package/dist/util/types.cjs +0 -19
  461. package/dist/util/types.cjs.map +0 -1
  462. /package/dist/coloring/{types.d.cts → types.d.mts} +0 -0
  463. /package/dist/components/branding/{HelpwaveBadge.d.cts → HelpwaveBadge.d.mts} +0 -0
  464. /package/dist/components/date/{TimePicker.d.cts → TimePicker.d.mts} +0 -0
  465. /package/dist/components/icons-and-geometry/{Circle.d.cts → Circle.d.mts} +0 -0
  466. /package/dist/components/icons-and-geometry/{Helpwave.d.cts → Helpwave.d.mts} +0 -0
  467. /package/dist/components/icons-and-geometry/{Ring.d.cts → Ring.d.mts} +0 -0
  468. /package/dist/components/icons-and-geometry/{Tag.d.cts → Tag.d.mts} +0 -0
  469. /package/dist/components/layout-and-navigation/{BreadCrumb.d.cts → BreadCrumb.d.mts} +0 -0
  470. /package/dist/components/layout-and-navigation/{Carousel.d.cts → Carousel.d.mts} +0 -0
  471. /package/dist/components/layout-and-navigation/{Chip.d.cts → Chip.d.mts} +0 -0
  472. /package/dist/components/layout-and-navigation/{DividerInserter.d.cts → DividerInserter.d.mts} +0 -0
  473. /package/dist/components/layout-and-navigation/{Expandable.d.cts → Expandable.d.mts} +0 -0
  474. /package/dist/components/layout-and-navigation/{Tile.d.cts → Tile.d.mts} +0 -0
  475. /package/dist/components/layout-and-navigation/{VerticalDivider.d.cts → VerticalDivider.d.mts} +0 -0
  476. /package/dist/components/loading-states/{ProgressIndicator.d.cts → ProgressIndicator.d.mts} +0 -0
  477. /package/dist/components/user-action/{Button.d.cts → Button.d.mts} +0 -0
  478. /package/dist/components/user-action/{Label.d.cts → Label.d.mts} +0 -0
  479. /package/dist/components/user-action/{Menu.d.cts → Menu.d.mts} +0 -0
  480. /package/dist/components/user-action/{ScrollPicker.d.cts → ScrollPicker.d.mts} +0 -0
  481. /package/dist/components/user-action/{ToggleableInput.d.cts → ToggleableInput.d.mts} +0 -0
  482. /package/dist/components/user-action/{Tooltip.d.cts → Tooltip.d.mts} +0 -0
  483. /package/dist/hooks/{useHoverState.d.cts → useHoverState.d.mts} +0 -0
  484. /package/dist/hooks/{useLocalStorage.d.cts → useLocalStorage.d.mts} +0 -0
  485. /package/dist/hooks/{useOutsideClick.d.cts → useOutsideClick.d.mts} +0 -0
  486. /package/dist/hooks/{useSaveDelay.d.cts → useSaveDelay.d.mts} +0 -0
  487. /package/dist/localization/{util.d.cts → util.d.mts} +0 -0
  488. /package/dist/util/{array.d.cts → array.d.mts} +0 -0
  489. /package/dist/util/{builder.d.cts → builder.d.mts} +0 -0
  490. /package/dist/util/{date.d.cts → date.d.mts} +0 -0
  491. /package/dist/util/{easeFunctions.d.cts → easeFunctions.d.mts} +0 -0
  492. /package/dist/util/{emailValidation.d.cts → emailValidation.d.mts} +0 -0
  493. /package/dist/util/{loopingArray.d.cts → loopingArray.d.mts} +0 -0
  494. /package/dist/util/{math.d.cts → math.d.mts} +0 -0
  495. /package/dist/util/{simpleSearch.d.cts → simpleSearch.d.mts} +0 -0
  496. /package/dist/util/{storage.d.cts → storage.d.mts} +0 -0
  497. /package/dist/util/{types.d.cts → types.d.mts} +0 -0
@@ -1,49 +1,12 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
11
- };
12
- var __copyProps = (to, from, except, desc) => {
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (let key of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(to, key) && key !== except)
16
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
- }
18
- return to;
19
- };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
-
30
1
  // src/components/user-action/Select.tsx
31
- var Select_exports = {};
32
- __export(Select_exports, {
33
- SearchableSelect: () => SearchableSelect,
34
- Select: () => Select,
35
- SelectUncontrolled: () => SelectUncontrolled,
36
- default: () => Select_default
37
- });
38
- module.exports = __toCommonJS(Select_exports);
39
- var import_react3 = require("@headlessui/react");
40
- var import_lucide_react = require("lucide-react");
41
- var import_react4 = require("react");
42
- var import_clsx3 = __toESM(require("clsx"), 1);
2
+ import { Menu } from "@headlessui/react";
3
+ import { ChevronDown, ChevronUp, Search } from "lucide-react";
4
+ import { useEffect as useEffect3, useState as useState3 } from "react";
5
+ import clsx3 from "clsx";
43
6
 
44
7
  // src/components/user-action/Label.tsx
45
- var import_clsx = __toESM(require("clsx"), 1);
46
- var import_jsx_runtime = require("react/jsx-runtime");
8
+ import clsx from "clsx";
9
+ import { jsx } from "react/jsx-runtime";
47
10
  var styleMapping = {
48
11
  labelSmall: "textstyle-label-sm",
49
12
  labelMedium: "textstyle-label-md",
@@ -56,7 +19,7 @@ var Label = ({
56
19
  className,
57
20
  ...props
58
21
  }) => {
59
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("label", { ...props, className: (0, import_clsx.default)(styleMapping[labelType], className), children: children ? children : name });
22
+ return /* @__PURE__ */ jsx("label", { ...props, className: clsx(styleMapping[labelType], className), children: children ? children : name });
60
23
  };
61
24
 
62
25
  // src/util/simpleSearch.ts
@@ -68,14 +31,14 @@ var MultiSearchWithMapping = (search, objects, mapping) => {
68
31
  };
69
32
 
70
33
  // src/components/user-action/Input.tsx
71
- var import_react2 = require("react");
72
- var import_clsx2 = __toESM(require("clsx"), 1);
34
+ import { forwardRef, useEffect as useEffect2, useRef, useState as useState2 } from "react";
35
+ import clsx2 from "clsx";
73
36
 
74
37
  // src/hooks/useSaveDelay.ts
75
- var import_react = require("react");
38
+ import { useEffect, useState } from "react";
76
39
  function useSaveDelay(setNotificationStatus, delay) {
77
- const [updateTimer, setUpdateTimer] = (0, import_react.useState)(void 0);
78
- const [notificationTimer, setNotificationTimer] = (0, import_react.useState)(void 0);
40
+ const [updateTimer, setUpdateTimer] = useState(void 0);
41
+ const [notificationTimer, setNotificationTimer] = useState(void 0);
79
42
  const restartTimer = (onSave) => {
80
43
  clearTimeout(updateTimer);
81
44
  setUpdateTimer(setTimeout(() => {
@@ -102,7 +65,7 @@ function useSaveDelay(setNotificationStatus, delay) {
102
65
  setNotificationStatus(false);
103
66
  }
104
67
  };
105
- (0, import_react.useEffect)(() => {
68
+ useEffect(() => {
106
69
  return () => {
107
70
  clearTimeout(updateTimer);
108
71
  clearTimeout(notificationTimer);
@@ -115,7 +78,7 @@ function useSaveDelay(setNotificationStatus, delay) {
115
78
  var noop = () => void 0;
116
79
 
117
80
  // src/components/user-action/Input.tsx
118
- var import_jsx_runtime2 = require("react/jsx-runtime");
81
+ import { jsx as jsx2, jsxs } from "react/jsx-runtime";
119
82
  var Input = ({
120
83
  id,
121
84
  type = "text",
@@ -135,15 +98,15 @@ var Input = ({
135
98
  restartTimer,
136
99
  clearUpdateTimer
137
100
  } = useSaveDelay(() => void 0, 3e3);
138
- const ref = (0, import_react2.useRef)(null);
139
- (0, import_react2.useEffect)(() => {
101
+ const ref = useRef(null);
102
+ useEffect2(() => {
140
103
  if (autoFocus) {
141
104
  ref.current?.focus();
142
105
  }
143
106
  }, [autoFocus]);
144
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: (0, import_clsx2.default)({ "w-full": expanded }, containerClassName), children: [
145
- label && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Label, { ...label, htmlFor: id, className: (0, import_clsx2.default)("mb-1", label.className) }),
146
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
107
+ return /* @__PURE__ */ jsxs("div", { className: clsx2({ "w-full": expanded }, containerClassName), children: [
108
+ label && /* @__PURE__ */ jsx2(Label, { ...label, htmlFor: id, className: clsx2("mb-1", label.className) }),
109
+ /* @__PURE__ */ jsx2(
147
110
  "input",
148
111
  {
149
112
  ref,
@@ -176,7 +139,7 @@ var Input = ({
176
139
  )
177
140
  ] });
178
141
  };
179
- var FormInput = (0, import_react2.forwardRef)(function FormInput2({
142
+ var FormInput = forwardRef(function FormInput2({
180
143
  id,
181
144
  labelText,
182
145
  errorText,
@@ -187,13 +150,13 @@ var FormInput = (0, import_react2.forwardRef)(function FormInput2({
187
150
  required,
188
151
  ...restProps
189
152
  }, ref) {
190
- const input = /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
153
+ const input = /* @__PURE__ */ jsx2(
191
154
  "input",
192
155
  {
193
156
  ref,
194
157
  id,
195
158
  ...restProps,
196
- className: (0, import_clsx2.default)(
159
+ className: clsx2(
197
160
  {
198
161
  "focus:border-primary focus:ring-primary": !errorText,
199
162
  "focus:border-negative focus:ring-negative text-negative": !!errorText
@@ -202,18 +165,18 @@ var FormInput = (0, import_react2.forwardRef)(function FormInput2({
202
165
  )
203
166
  }
204
167
  );
205
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: (0, import_clsx2.default)("flex flex-col gap-y-1", containerClassName), children: [
206
- labelText && /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("label", { htmlFor: id, className: (0, import_clsx2.default)("textstyle-label-md", labelClassName), children: [
168
+ return /* @__PURE__ */ jsxs("div", { className: clsx2("flex flex-col gap-y-1", containerClassName), children: [
169
+ labelText && /* @__PURE__ */ jsxs("label", { htmlFor: id, className: clsx2("textstyle-label-md", labelClassName), children: [
207
170
  labelText,
208
- required && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { className: "text-primary font-bold", children: "*" })
171
+ required && /* @__PURE__ */ jsx2("span", { className: "text-primary font-bold", children: "*" })
209
172
  ] }),
210
173
  input,
211
- errorText && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("label", { htmlFor: id, className: (0, import_clsx2.default)("text-negative", errorClassName), children: errorText })
174
+ errorText && /* @__PURE__ */ jsx2("label", { htmlFor: id, className: clsx2("text-negative", errorClassName), children: errorText })
212
175
  ] });
213
176
  });
214
177
 
215
178
  // src/components/user-action/Select.tsx
216
- var import_jsx_runtime3 = require("react/jsx-runtime");
179
+ import { Fragment, jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
217
180
  var Select = ({
218
181
  value,
219
182
  label,
@@ -238,13 +201,13 @@ var Select = ({
238
201
  console.warn("The selected value is not found in the options list. This might be an error on your part or default behavior if it is complex data type on which === does not work. In case of the latter use selectedDisplayOverwrite to set your selected text or component");
239
202
  }
240
203
  const borderColor = "border-menu-border";
241
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: (0, import_clsx3.default)(className), children: [
242
- label && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Label, { ...label, labelType: label.labelType ?? "labelBig", className: (0, import_clsx3.default)("mb-1", label.className) }),
243
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react3.Menu, { as: "div", className: "relative text-menu-text", children: ({ open }) => /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
244
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
245
- import_react3.Menu.Button,
204
+ return /* @__PURE__ */ jsxs2("div", { className: clsx3(className), children: [
205
+ label && /* @__PURE__ */ jsx3(Label, { ...label, labelType: label.labelType ?? "labelBig", className: clsx3("mb-1", label.className) }),
206
+ /* @__PURE__ */ jsx3(Menu, { as: "div", className: "relative text-menu-text", children: ({ open }) => /* @__PURE__ */ jsxs2(Fragment, { children: [
207
+ /* @__PURE__ */ jsxs2(
208
+ Menu.Button,
246
209
  {
247
- className: (0, import_clsx3.default)(
210
+ className: clsx3(
248
211
  "inline-flex w-full justify-between items-center rounded-t-lg border-2 px-4 py-2 font-medium bg-menu-background text-menu-text",
249
212
  textColor,
250
213
  borderColor,
@@ -256,30 +219,30 @@ var Select = ({
256
219
  ),
257
220
  disabled: isDisabled,
258
221
  children: [
259
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { children: selectedDisplayOverwrite ?? selectedOption?.label ?? hintText }),
260
- open ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_lucide_react.ChevronUp, {}) : /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_lucide_react.ChevronDown, {})
222
+ /* @__PURE__ */ jsx3("span", { children: selectedDisplayOverwrite ?? selectedOption?.label ?? hintText }),
223
+ open ? /* @__PURE__ */ jsx3(ChevronUp, {}) : /* @__PURE__ */ jsx3(ChevronDown, {})
261
224
  ]
262
225
  }
263
226
  ),
264
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
265
- import_react3.Menu.Items,
227
+ /* @__PURE__ */ jsxs2(
228
+ Menu.Items,
266
229
  {
267
230
  className: "absolute w-full z-10 rounded-b-lg bg-menu-background text-menu-text shadow-lg max-h-[500px] overflow-y-auto",
268
231
  children: [
269
- (additionalItems ?? []).map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
232
+ (additionalItems ?? []).map((item, index) => /* @__PURE__ */ jsx3(
270
233
  "div",
271
234
  {
272
- className: (0, import_clsx3.default)(borderColor, "px-4 py-2 overflow-hidden whitespace-nowrap text-ellipsis border-2 border-t-0", {
235
+ className: clsx3(borderColor, "px-4 py-2 overflow-hidden whitespace-nowrap text-ellipsis border-2 border-t-0", {
273
236
  "border-b-0 rounded-b-lg": filteredOptions.length === 0 && index === (additionalItems?.length ?? 1) - 1
274
237
  }),
275
238
  children: item
276
239
  },
277
240
  `additionalItems${index}`
278
241
  )),
279
- filteredOptions.map((option, index) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react3.Menu.Item, { children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
242
+ filteredOptions.map((option, index) => /* @__PURE__ */ jsx3(Menu.Item, { children: /* @__PURE__ */ jsx3(
280
243
  "div",
281
244
  {
282
- className: (0, import_clsx3.default)(
245
+ className: clsx3(
283
246
  "px-4 py-2 overflow-hidden whitespace-nowrap text-ellipsis border-2 border-t-0 cursor-pointer",
284
247
  option.className,
285
248
  borderColor,
@@ -312,13 +275,13 @@ var SelectUncontrolled = ({
312
275
  hintText,
313
276
  ...props
314
277
  }) => {
315
- const [selected, setSelected] = (0, import_react4.useState)(value);
316
- (0, import_react4.useEffect)(() => {
278
+ const [selected, setSelected] = useState3(value);
279
+ useEffect3(() => {
317
280
  if (options.find((options2) => options2.value === value)) {
318
281
  setSelected(value);
319
282
  }
320
283
  }, [options, value]);
321
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
284
+ return /* @__PURE__ */ jsx3(
322
285
  Select,
323
286
  {
324
287
  value: selected,
@@ -338,26 +301,24 @@ var SearchableSelect = ({
338
301
  searchMapping,
339
302
  ...selectProps
340
303
  }) => {
341
- const [search, setSearch] = (0, import_react4.useState)("");
304
+ const [search, setSearch] = useState3("");
342
305
  const filteredOptions = MultiSearchWithMapping(search, options, searchMapping);
343
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
306
+ return /* @__PURE__ */ jsx3(
344
307
  Select,
345
308
  {
346
309
  value,
347
310
  options: filteredOptions,
348
- additionalItems: [/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "row gap-x-2 items-center", children: [
349
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Input, { autoFocus: true, value: search, onChangeText: setSearch }),
350
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_lucide_react.Search, {})
311
+ additionalItems: [/* @__PURE__ */ jsxs2("div", { className: "row gap-x-2 items-center", children: [
312
+ /* @__PURE__ */ jsx3(Input, { autoFocus: true, value: search, onChangeText: setSearch }),
313
+ /* @__PURE__ */ jsx3(Search, {})
351
314
  ] }, "selectSearch")],
352
315
  ...selectProps
353
316
  }
354
317
  );
355
318
  };
356
- var Select_default = { Select, SelectUncontrolled, SearchableSelect };
357
- // Annotate the CommonJS export names for ESM import in node:
358
- 0 && (module.exports = {
319
+ export {
359
320
  SearchableSelect,
360
321
  Select,
361
322
  SelectUncontrolled
362
- });
363
- //# sourceMappingURL=Select.cjs.map
323
+ };
324
+ //# sourceMappingURL=Select.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/user-action/Select.tsx","../../../src/components/user-action/Label.tsx","../../../src/util/simpleSearch.ts","../../../src/components/user-action/Input.tsx","../../../src/hooks/useSaveDelay.ts","../../../src/util/noop.ts"],"sourcesContent":["import { Menu } from '@headlessui/react'\nimport { ChevronDown, ChevronUp, Search } from 'lucide-react'\nimport type { ReactNode } from 'react'\nimport { useEffect, useState } from 'react'\nimport clsx from 'clsx'\nimport type { LabelProps } from './Label'\nimport { Label } from './Label'\nimport { MultiSearchWithMapping } from '../../util/simpleSearch'\nimport { Input } from './Input'\n\nexport type SelectOption<T> = {\n label: ReactNode,\n value: T,\n disabled?: boolean,\n className?: string,\n}\n\nexport type SelectProps<T> = {\n value?: T,\n label?: LabelProps,\n options: SelectOption<T>[],\n onChange: (value: T) => void,\n isHidingCurrentValue?: boolean,\n hintText?: string,\n showDisabledOptions?: boolean,\n className?: string,\n isDisabled?: boolean,\n textColor?: string,\n hoverColor?: string,\n /**\n * The items will be at the start of the select and aren't selectable\n */\n additionalItems?: ReactNode[],\n selectedDisplayOverwrite?: ReactNode,\n};\n\n/**\n * A Select Component for selecting form a list of options\n *\n * The State is managed by the parent\n */\nexport const Select = <T, >({\n value,\n label,\n options,\n onChange,\n isHidingCurrentValue = true,\n hintText = '',\n showDisabledOptions = true,\n isDisabled,\n className,\n textColor = 'text-menu-text',\n hoverColor = 'hover:brightness-90',\n additionalItems,\n selectedDisplayOverwrite,\n }: SelectProps<T>) => {\n // Notice: for more complex types this check here might need an additional compare method\n let filteredOptions = isHidingCurrentValue ? options.filter(option => option.value !== value) : options\n if (!showDisabledOptions) {\n filteredOptions = filteredOptions.filter(value => !value.disabled)\n }\n const selectedOption = options.find(option => option.value === value)\n if (value !== undefined && selectedOption === undefined && selectedDisplayOverwrite === undefined) {\n console.warn('The selected value is not found in the options list. This might be an error on your part or' +\n ' default behavior if it is complex data type on which === does not work. In case of the latter' +\n ' use selectedDisplayOverwrite to set your selected text or component')\n }\n\n const borderColor = 'border-menu-border'\n\n return (\n <div className={clsx(className)}>\n {label && (\n <Label {...label} labelType={label.labelType ?? 'labelBig'} className={clsx('mb-1', label.className)}/>\n )}\n <Menu as=\"div\" className=\"relative text-menu-text\">\n {({ open }) => (\n <>\n <Menu.Button\n className={clsx(\n 'inline-flex w-full justify-between items-center rounded-t-lg border-2 px-4 py-2 font-medium bg-menu-background text-menu-text',\n textColor, borderColor,\n {\n 'rounded-b-lg': !open,\n [hoverColor]: !isDisabled,\n 'bg-disabled-background cursor-not-allowed text-disabled': isDisabled\n }\n )}\n disabled={isDisabled}\n >\n <span>{selectedDisplayOverwrite ?? selectedOption?.label ?? hintText}</span>\n {open ? <ChevronUp/> : <ChevronDown/>}\n </Menu.Button>\n <Menu.Items\n className=\"absolute w-full z-10 rounded-b-lg bg-menu-background text-menu-text shadow-lg max-h-[500px] overflow-y-auto\"\n >\n {(additionalItems ?? []).map((item, index) => (\n <div key={`additionalItems${index}`}\n className={clsx(borderColor, 'px-4 py-2 overflow-hidden whitespace-nowrap text-ellipsis border-2 border-t-0', {\n 'border-b-0 rounded-b-lg': filteredOptions.length === 0 && index === (additionalItems?.length ?? 1) - 1,\n })}\n >\n {item}\n </div>\n ))}\n {filteredOptions.map((option, index) => (\n <Menu.Item key={`item${index}`}>\n {\n <div\n className={clsx('px-4 py-2 overflow-hidden whitespace-nowrap text-ellipsis border-2 border-t-0 cursor-pointer',\n option.className, borderColor, {\n 'brightness-90': option.value === value,\n 'brightness-95': index % 2 === 1,\n 'text-disabled bg-disabled-background cursor-not-allowed': !!option.disabled,\n 'bg-menu-background text-menu-text hover:brightness-90 cursor-pointer': !option.disabled,\n 'rounded-b-lg': index === filteredOptions.length - 1,\n })}\n onClick={() => {\n if (!option.disabled) {\n onChange(option.value)\n }\n }}\n >\n {option.label}\n </div>\n }\n </Menu.Item>\n ))}\n </Menu.Items>\n </>\n )}\n </Menu>\n </div>\n )\n}\n\nexport const SelectUncontrolled = <T, >({\n options, onChange, value, hintText, ...props\n }: SelectProps<T>) => {\n const [selected, setSelected] = useState(value)\n\n useEffect(() => {\n if (options.find(options => options.value === value)) {\n setSelected(value)\n }\n }, [options, value])\n\n return (\n <Select\n value={selected}\n options={options}\n onChange={value => {\n setSelected(value)\n onChange(value)\n }}\n hintText={hintText}\n {...props}\n />\n )\n}\n\nexport type SearchableSelectProps<T> = SelectProps<T> & {\n searchMapping: (value: SelectOption<T>) => string[],\n}\n\n/**\n * A Select where items can be searched\n */\nexport const SearchableSelect = <T, >({\n value,\n options,\n searchMapping,\n ...selectProps\n }: SearchableSelectProps<T>) => {\n const [search, setSearch] = useState<string>('')\n const filteredOptions = MultiSearchWithMapping(search, options, searchMapping)\n\n return (\n <Select\n value={value}\n options={filteredOptions}\n additionalItems={[(\n <div key=\"selectSearch\" className=\"row gap-x-2 items-center\">\n <Input autoFocus={true} value={search} onChangeText={setSearch}/>\n <Search/>\n </div>\n )]}\n {...selectProps}\n />\n )\n}","import type { LabelHTMLAttributes } from 'react'\nimport clsx from 'clsx'\n\nexport type LabelType = 'labelSmall' | 'labelMedium' | 'labelBig'\n\nconst styleMapping: Record<LabelType, string> = {\n labelSmall: 'textstyle-label-sm',\n labelMedium: 'textstyle-label-md',\n labelBig: 'textstyle-label-lg',\n}\n\nexport type LabelProps = {\n /** The text for the label */\n name?: string,\n /** The styling for the label */\n labelType?: LabelType,\n} & LabelHTMLAttributes<HTMLLabelElement>\n\n/**\n * A Label component\n */\nexport const Label = ({\n children,\n name,\n labelType = 'labelSmall',\n className,\n ...props\n }: LabelProps) => {\n return (\n <label {...props} className={clsx(styleMapping[labelType], className)}>\n {children ? children : name}\n </label>\n )\n}\n","/**\n * Finds all values matching the search values by first mapping the values to a string array and then checking each entry for matches.\n * Returns the list of all matches.\n *\n * @param search The list of search strings e.g. `[name, type]`\n *\n * @param objects The list of objects to be searched in\n *\n * @param mapping The mapping of objects to the string properties they fulfil\n *\n * @return The list of objects that match all search strings\n */\nexport const MultiSubjectSearchWithMapping = <T>(search: string[], objects: T[], mapping: (value: T) => (string | undefined)[]) => {\n return objects.filter(object => {\n const mappedSearchKeywords = mapping(object).map(value => value ? value.toLowerCase().trim() : undefined)\n return search.every(searchValue => !!mappedSearchKeywords.find(value => !!value && value.includes(searchValue.toLowerCase().trim())))\n })\n}\n\n/**\n * Finds all values matching the search value by first mapping the values to a string array and then checking each entry for matches.\n * Returns the list of all matches.\n *\n * @param search The search string e.g `name`\n *\n * @param objects The list of objects to be searched in\n *\n * @param mapping The mapping of objects to the string properties they fulfil\n *\n * @return The list of objects that match the search string\n */\nexport const MultiSearchWithMapping = <T>(search: string, objects: T[], mapping: (value: T) => string[]) => {\n return objects.filter(object => {\n const mappedSearchKeywords = mapping(object).map(value => value.toLowerCase().trim())\n return !!mappedSearchKeywords.find(value => value.includes(search.toLowerCase().trim()))\n })\n}\n\n/**\n * Finds all values matching the search value by first mapping the values to a string and returns the list of all matches.\n *\n * @param search The search string e.g `name`\n *\n * @param objects The list of objects to be searched in\n *\n * @param mapping The mapping of objects to a string that is compared to the search\n *\n * @return The list of objects that match the search string\n */\nexport const SimpleSearchWithMapping = <T>(search: string, objects: T[], mapping: (value: T) => string) => {\n return MultiSearchWithMapping(search, objects, value => [mapping(value)])\n}\n\n/**\n * Finds all values matching the search value and returns the list of all matches.\n *\n * @param search The search string e.g `name`\n *\n * @param objects The list of objects to be searched in\n *\n * @return The list of objects that match the search string\n */\nexport const SimpleSearch = (search: string, objects: string[]) => {\n return SimpleSearchWithMapping(search, objects, value => value)\n}\n","import React, { forwardRef, type InputHTMLAttributes, useEffect, useRef, useState } from 'react'\nimport clsx from 'clsx'\nimport { useSaveDelay } from '../../hooks/useSaveDelay'\nimport { noop } from '../../util/noop'\nimport type { LabelProps } from './Label'\nimport { Label } from './Label'\n\nexport type InputProps = {\n /**\n * used for the label's `for` attribute\n */\n label?: Omit<LabelProps, 'id'>,\n /**\n * Callback for when the input's value changes\n * This is pretty much required but made optional for the rare cases where it actually isn't need such as when used with disabled\n * That could be enforced through a union type but that seems a bit overkill\n * @default noop\n */\n onChangeText?: (text: string) => void,\n className?: string,\n onEditCompleted?: (text: string) => void,\n expanded?: boolean,\n containerClassName?: string,\n} & Omit<InputHTMLAttributes<HTMLInputElement>, 'label'>\n\n/**\n * A Component for inputting text or other information\n *\n * Its state is managed must be managed by the parent\n */\nconst Input = ({\n id,\n type = 'text',\n value,\n label,\n onChange = noop,\n onChangeText = noop,\n onEditCompleted,\n className = '',\n expanded = true,\n autoFocus,\n onBlur,\n containerClassName,\n ...restProps\n }: InputProps) => {\n const {\n restartTimer,\n clearUpdateTimer\n } = useSaveDelay(() => undefined, 3000)\n const ref = useRef<HTMLInputElement>(null)\n\n useEffect(() => {\n if(autoFocus) {\n ref.current?.focus()\n }\n }, [autoFocus])\n\n return (\n <div className={clsx({ 'w-full': expanded }, containerClassName)}>\n {label && <Label {...label} htmlFor={id} className={clsx('mb-1', label.className)}/>}\n <input\n ref={ref}\n value={value}\n id={id}\n type={type}\n className={className}\n onBlur={event => {\n if (onBlur) {\n onBlur(event)\n }\n if (onEditCompleted) {\n onEditCompleted(event.target.value)\n clearUpdateTimer()\n }\n }}\n onChange={e => {\n const value = e.target.value\n if (onEditCompleted) {\n restartTimer(() => {\n onEditCompleted(value)\n clearUpdateTimer()\n })\n }\n onChange(e)\n onChangeText(value)\n }}\n {...restProps}\n />\n </div>\n )\n}\n\ntype InputUncontrolledProps = Omit<InputProps, 'value'> & {\n /**\n * @default ''\n */\n defaultValue?: string,\n}\n\n/**\n * A Component for inputting text or other information\n *\n * Its state is managed by the component itself\n */\nconst InputUncontrolled = ({\n defaultValue = '',\n onChangeText = noop,\n ...props\n }: InputUncontrolledProps) => {\n const [value, setValue] = useState(defaultValue)\n\n return (\n <Input\n {...props}\n value={value}\n onChangeText={text => {\n setValue(text)\n onChangeText(text)\n }}\n />\n )\n}\n\nexport type FormInputProps = InputHTMLAttributes<HTMLInputElement> & {\n id: string,\n labelText?: string,\n errorText?: string,\n labelClassName?: string,\n errorClassName?: string,\n containerClassName?: string,\n}\n\nconst FormInput = forwardRef<HTMLInputElement, FormInputProps>(function FormInput({\n id,\n labelText,\n errorText,\n className,\n labelClassName,\n errorClassName,\n containerClassName,\n required,\n ...restProps\n }, ref) {\n const input = (\n <input\n ref={ref}\n id={id}\n {...restProps}\n className={clsx(\n {\n 'focus:border-primary focus:ring-primary': !errorText,\n 'focus:border-negative focus:ring-negative text-negative': !!errorText,\n },\n className\n )}\n />\n )\n\n return (\n <div className={clsx('flex flex-col gap-y-1', containerClassName)}>\n {labelText && (\n <label htmlFor={id} className={clsx('textstyle-label-md', labelClassName)}>\n {labelText}\n {required && <span className=\"text-primary font-bold\">*</span>}\n </label>\n )}\n {input}\n {errorText && <label htmlFor={id} className={clsx('text-negative', errorClassName)}>{errorText}</label>}\n </div>\n )\n})\n\nexport {\n InputUncontrolled,\n Input,\n FormInput\n}\n","import { useEffect, useState } from 'react'\n\nexport function useSaveDelay(setNotificationStatus: (isShowing: boolean) => void, delay: number) {\n const [updateTimer, setUpdateTimer] = useState<NodeJS.Timeout | undefined>(undefined)\n const [notificationTimer, setNotificationTimer] = useState<NodeJS.Timeout | undefined>(undefined)\n\n const restartTimer = (onSave: () => void) => {\n clearTimeout(updateTimer)\n setUpdateTimer(setTimeout(() => {\n onSave()\n setNotificationStatus(true)\n // Show Saved Notification for fade animation duration\n clearTimeout(notificationTimer)\n setNotificationTimer(setTimeout(() => {\n setNotificationStatus(false)\n clearTimeout(notificationTimer)\n }, delay))\n clearTimeout(updateTimer)\n }, delay))\n }\n\n const clearUpdateTimer = (hasSaved = true) => {\n clearTimeout(updateTimer)\n if (hasSaved) {\n setNotificationStatus(true)\n clearTimeout(notificationTimer)\n setNotificationTimer(setTimeout(() => {\n setNotificationStatus(false)\n clearTimeout(notificationTimer)\n }, delay))\n } else {\n setNotificationStatus(false)\n }\n }\n\n useEffect(() => {\n return () => {\n clearTimeout(updateTimer)\n clearTimeout(notificationTimer)\n }\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n return { restartTimer, clearUpdateTimer }\n}","export const noop = () => undefined\n"],"mappings":"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","names":["useEffect","useState","clsx","useEffect","useState","clsx","jsx","useEffect","clsx","value","FormInput","jsx","clsx","jsx","jsxs","value","clsx","useState","useEffect","options"]}
@@ -1,6 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { TextareaHTMLAttributes } from 'react';
3
- import { LabelProps } from './Label.cjs';
3
+ import { LabelProps } from './Label.mjs';
4
4
 
5
5
  type TextareaProps = {
6
6
  /** Outside the area */
@@ -1,12 +1,46 @@
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
+
1
29
  // src/components/user-action/Textarea.tsx
2
- import { useEffect as useEffect2, useState as useState2 } from "react";
3
- import clsx2 from "clsx";
30
+ var Textarea_exports = {};
31
+ __export(Textarea_exports, {
32
+ Textarea: () => Textarea,
33
+ TextareaUncontrolled: () => TextareaUncontrolled
34
+ });
35
+ module.exports = __toCommonJS(Textarea_exports);
36
+ var import_react2 = require("react");
37
+ var import_clsx2 = __toESM(require("clsx"));
4
38
 
5
39
  // src/hooks/useSaveDelay.ts
6
- import { useEffect, useState } from "react";
40
+ var import_react = require("react");
7
41
  function useSaveDelay(setNotificationStatus, delay) {
8
- const [updateTimer, setUpdateTimer] = useState(void 0);
9
- const [notificationTimer, setNotificationTimer] = useState(void 0);
42
+ const [updateTimer, setUpdateTimer] = (0, import_react.useState)(void 0);
43
+ const [notificationTimer, setNotificationTimer] = (0, import_react.useState)(void 0);
10
44
  const restartTimer = (onSave) => {
11
45
  clearTimeout(updateTimer);
12
46
  setUpdateTimer(setTimeout(() => {
@@ -33,7 +67,7 @@ function useSaveDelay(setNotificationStatus, delay) {
33
67
  setNotificationStatus(false);
34
68
  }
35
69
  };
36
- useEffect(() => {
70
+ (0, import_react.useEffect)(() => {
37
71
  return () => {
38
72
  clearTimeout(updateTimer);
39
73
  clearTimeout(notificationTimer);
@@ -46,8 +80,8 @@ function useSaveDelay(setNotificationStatus, delay) {
46
80
  var noop = () => void 0;
47
81
 
48
82
  // src/components/user-action/Label.tsx
49
- import clsx from "clsx";
50
- import { jsx } from "react/jsx-runtime";
83
+ var import_clsx = __toESM(require("clsx"));
84
+ var import_jsx_runtime = require("react/jsx-runtime");
51
85
  var styleMapping = {
52
86
  labelSmall: "textstyle-label-sm",
53
87
  labelMedium: "textstyle-label-md",
@@ -60,11 +94,11 @@ var Label = ({
60
94
  className,
61
95
  ...props
62
96
  }) => {
63
- return /* @__PURE__ */ jsx("label", { ...props, className: clsx(styleMapping[labelType], className), children: children ? children : name });
97
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("label", { ...props, className: (0, import_clsx.default)(styleMapping[labelType], className), children: children ? children : name });
64
98
  };
65
99
 
66
100
  // src/components/user-action/Textarea.tsx
67
- import { jsx as jsx2, jsxs } from "react/jsx-runtime";
101
+ var import_jsx_runtime2 = require("react/jsx-runtime");
68
102
  var Textarea = ({
69
103
  label,
70
104
  headline,
@@ -79,33 +113,33 @@ var Textarea = ({
79
113
  className,
80
114
  ...props
81
115
  }) => {
82
- const [hasFocus, setHasFocus] = useState2(false);
116
+ const [hasFocus, setHasFocus] = (0, import_react2.useState)(false);
83
117
  const { restartTimer, clearUpdateTimer } = useSaveDelay(() => void 0, 3e3);
84
118
  const onEditCompletedWrapper = (text) => {
85
119
  onEditCompleted(text);
86
120
  clearUpdateTimer();
87
121
  };
88
- return /* @__PURE__ */ jsxs("div", { className: "w-full", children: [
89
- label && /* @__PURE__ */ jsx2(
122
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "w-full", children: [
123
+ label && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
90
124
  Label,
91
125
  {
92
126
  ...label,
93
127
  htmlFor: id,
94
- className: clsx2("mb-1", label.className),
128
+ className: (0, import_clsx2.default)("mb-1", label.className),
95
129
  labelType: label.labelType ?? "labelSmall"
96
130
  }
97
131
  ),
98
- /* @__PURE__ */ jsxs(
132
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
99
133
  "div",
100
134
  {
101
- className: `${clsx2(" bg-surface text-on-surface focus-within:border-primary relative", { "shadow border-2 border-gray-300 hover:border-primary rounded-lg": defaultStyle })}`,
135
+ className: `${(0, import_clsx2.default)(" bg-surface text-on-surface focus-within:border-primary relative", { "shadow border-2 border-gray-300 hover:border-primary rounded-lg": defaultStyle })}`,
102
136
  children: [
103
- headline && /* @__PURE__ */ jsx2("span", { className: "mx-3 mt-3 block text-gray-700 font-bold", children: headline }),
104
- /* @__PURE__ */ jsx2(
137
+ headline && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { className: "mx-3 mt-3 block text-gray-700 font-bold", children: headline }),
138
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
105
139
  "textarea",
106
140
  {
107
141
  id,
108
- className: clsx2("pt-0 px-3 border-transparent focus:border-transparent focus:ring-0 appearance-none border w-full leading-tight focus:outline-none", {
142
+ className: (0, import_clsx2.default)("pt-0 px-3 border-transparent focus:border-transparent focus:ring-0 appearance-none border w-full leading-tight focus:outline-none", {
109
143
  "resize-none": !resizable,
110
144
  "h-32": defaultStyle,
111
145
  "mt-3": !headline
@@ -132,7 +166,7 @@ var Textarea = ({
132
166
  ]
133
167
  }
134
168
  ),
135
- hasFocus && disclaimer && /* @__PURE__ */ jsx2("label", { className: "text-negative", children: disclaimer })
169
+ hasFocus && disclaimer && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("label", { className: "text-negative", children: disclaimer })
136
170
  ] });
137
171
  };
138
172
  var TextareaUncontrolled = ({
@@ -140,11 +174,11 @@ var TextareaUncontrolled = ({
140
174
  onChangeText = noop,
141
175
  ...props
142
176
  }) => {
143
- const [text, setText] = useState2(value);
144
- useEffect2(() => {
177
+ const [text, setText] = (0, import_react2.useState)(value);
178
+ (0, import_react2.useEffect)(() => {
145
179
  setText(value);
146
180
  }, [value]);
147
- return /* @__PURE__ */ jsx2(
181
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
148
182
  Textarea,
149
183
  {
150
184
  ...props,
@@ -156,8 +190,9 @@ var TextareaUncontrolled = ({
156
190
  }
157
191
  );
158
192
  };
159
- export {
193
+ // Annotate the CommonJS export names for ESM import in node:
194
+ 0 && (module.exports = {
160
195
  Textarea,
161
196
  TextareaUncontrolled
162
- };
197
+ });
163
198
  //# sourceMappingURL=Textarea.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/user-action/Textarea.tsx","../../../src/hooks/useSaveDelay.ts","../../../src/util/noop.ts","../../../src/components/user-action/Label.tsx"],"sourcesContent":["import type { TextareaHTMLAttributes } from 'react'\nimport { useEffect, useState } from 'react'\nimport clsx from 'clsx'\nimport { useSaveDelay } from '@/hooks/useSaveDelay'\nimport { noop } from '@/util/noop'\nimport type { LabelProps } from './Label'\nimport { Label } from './Label'\n\nexport type TextareaProps = {\n /** Outside the area */\n label?: Omit<LabelProps, 'id'>,\n /** Inside the area */\n headline?: string,\n value?: string,\n resizable?: boolean,\n onChangeText?: (text: string) => void,\n disclaimer?: string,\n onEditCompleted?: (text: string) => void,\n defaultStyle?: boolean,\n} & Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, 'value'>\n\n/**\n * A Textarea component for inputting longer texts\n *\n * The State is managed by the parent\n */\nexport const Textarea = ({\n label,\n headline,\n id,\n resizable = false,\n onChange = noop,\n onChangeText = noop,\n disclaimer,\n onBlur = noop,\n onEditCompleted = noop,\n defaultStyle = true,\n className,\n ...props\n }: TextareaProps) => {\n const [hasFocus, setHasFocus] = useState(false)\n const { restartTimer, clearUpdateTimer } = useSaveDelay(() => undefined, 3000)\n\n const onEditCompletedWrapper = (text: string) => {\n onEditCompleted(text)\n clearUpdateTimer()\n }\n\n return (\n <div className=\"w-full\">\n {label && (\n <Label {...label} htmlFor={id} className={clsx('mb-1', label.className)}\n labelType={label.labelType ?? 'labelSmall'}/>\n )}\n <div\n className={`${clsx(' bg-surface text-on-surface focus-within:border-primary relative', { 'shadow border-2 border-gray-300 hover:border-primary rounded-lg': defaultStyle })}`}>\n {headline && (\n <span className=\"mx-3 mt-3 block text-gray-700 font-bold\">\n {headline}\n </span>\n )}\n <textarea\n id={id}\n className={clsx('pt-0 px-3 border-transparent focus:border-transparent focus:ring-0 appearance-none border w-full leading-tight focus:outline-none', {\n 'resize-none': !resizable,\n 'h-32': defaultStyle,\n 'mt-3': !headline\n }, className)}\n onChange={(event) => {\n const value = event.target.value\n restartTimer(() => {\n onEditCompletedWrapper(value)\n })\n onChange(event)\n onChangeText(value)\n }}\n onFocus={() => {\n setHasFocus(true)\n }}\n onBlur={(event) => {\n onBlur(event)\n onEditCompletedWrapper(event.target.value)\n setHasFocus(false)\n }}\n {...props}\n >\n </textarea>\n </div>\n {(hasFocus && disclaimer) && (\n <label className=\"text-negative\">\n {disclaimer}\n </label>\n )}\n </div>\n )\n}\n\n/**\n * A Textarea component that is not controlled by its parent\n */\nexport const TextareaUncontrolled = ({\n value = '',\n onChangeText = noop,\n ...props\n }: TextareaProps) => {\n const [text, setText] = useState<string>(value)\n\n useEffect(() => {\n setText(value)\n }, [value])\n\n return (\n <Textarea\n {...props}\n value={text}\n onChangeText={text => {\n setText(text)\n onChangeText(text)\n }}\n />\n )\n}","import { useEffect, useState } from 'react'\n\nexport function useSaveDelay(setNotificationStatus: (isShowing: boolean) => void, delay: number) {\n const [updateTimer, setUpdateTimer] = useState<NodeJS.Timeout | undefined>(undefined)\n const [notificationTimer, setNotificationTimer] = useState<NodeJS.Timeout | undefined>(undefined)\n\n const restartTimer = (onSave: () => void) => {\n clearTimeout(updateTimer)\n setUpdateTimer(setTimeout(() => {\n onSave()\n setNotificationStatus(true)\n // Show Saved Notification for fade animation duration\n clearTimeout(notificationTimer)\n setNotificationTimer(setTimeout(() => {\n setNotificationStatus(false)\n clearTimeout(notificationTimer)\n }, delay))\n clearTimeout(updateTimer)\n }, delay))\n }\n\n const clearUpdateTimer = (hasSaved = true) => {\n clearTimeout(updateTimer)\n if (hasSaved) {\n setNotificationStatus(true)\n clearTimeout(notificationTimer)\n setNotificationTimer(setTimeout(() => {\n setNotificationStatus(false)\n clearTimeout(notificationTimer)\n }, delay))\n } else {\n setNotificationStatus(false)\n }\n }\n\n useEffect(() => {\n return () => {\n clearTimeout(updateTimer)\n clearTimeout(notificationTimer)\n }\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n return { restartTimer, clearUpdateTimer }\n}","export const noop = () => undefined\n","import type { LabelHTMLAttributes } from 'react'\nimport clsx from 'clsx'\n\nexport type LabelType = 'labelSmall' | 'labelMedium' | 'labelBig'\n\nconst styleMapping: Record<LabelType, string> = {\n labelSmall: 'textstyle-label-sm',\n labelMedium: 'textstyle-label-md',\n labelBig: 'textstyle-label-lg',\n}\n\nexport type LabelProps = {\n /** The text for the label */\n name?: string,\n /** The styling for the label */\n labelType?: LabelType,\n} & LabelHTMLAttributes<HTMLLabelElement>\n\n/**\n * A Label component\n */\nexport const Label = ({\n children,\n name,\n labelType = 'labelSmall',\n className,\n ...props\n }: LabelProps) => {\n return (\n <label {...props} className={clsx(styleMapping[labelType], className)}>\n {children ? children : name}\n </label>\n )\n}\n"],"mappings":"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","names":["useEffect","useState","clsx","jsx","useState","clsx","useEffect","text"]}
1
+ {"version":3,"sources":["../../../src/components/user-action/Textarea.tsx","../../../src/hooks/useSaveDelay.ts","../../../src/util/noop.ts","../../../src/components/user-action/Label.tsx"],"sourcesContent":["import type { TextareaHTMLAttributes } from 'react'\nimport { useEffect, useState } from 'react'\nimport clsx from 'clsx'\nimport { useSaveDelay } from '../../hooks/useSaveDelay'\nimport { noop } from '../../util/noop'\nimport type { LabelProps } from './Label'\nimport { Label } from './Label'\n\nexport type TextareaProps = {\n /** Outside the area */\n label?: Omit<LabelProps, 'id'>,\n /** Inside the area */\n headline?: string,\n value?: string,\n resizable?: boolean,\n onChangeText?: (text: string) => void,\n disclaimer?: string,\n onEditCompleted?: (text: string) => void,\n defaultStyle?: boolean,\n} & Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, 'value'>\n\n/**\n * A Textarea component for inputting longer texts\n *\n * The State is managed by the parent\n */\nexport const Textarea = ({\n label,\n headline,\n id,\n resizable = false,\n onChange = noop,\n onChangeText = noop,\n disclaimer,\n onBlur = noop,\n onEditCompleted = noop,\n defaultStyle = true,\n className,\n ...props\n }: TextareaProps) => {\n const [hasFocus, setHasFocus] = useState(false)\n const { restartTimer, clearUpdateTimer } = useSaveDelay(() => undefined, 3000)\n\n const onEditCompletedWrapper = (text: string) => {\n onEditCompleted(text)\n clearUpdateTimer()\n }\n\n return (\n <div className=\"w-full\">\n {label && (\n <Label {...label} htmlFor={id} className={clsx('mb-1', label.className)}\n labelType={label.labelType ?? 'labelSmall'}/>\n )}\n <div\n className={`${clsx(' bg-surface text-on-surface focus-within:border-primary relative', { 'shadow border-2 border-gray-300 hover:border-primary rounded-lg': defaultStyle })}`}>\n {headline && (\n <span className=\"mx-3 mt-3 block text-gray-700 font-bold\">\n {headline}\n </span>\n )}\n <textarea\n id={id}\n className={clsx('pt-0 px-3 border-transparent focus:border-transparent focus:ring-0 appearance-none border w-full leading-tight focus:outline-none', {\n 'resize-none': !resizable,\n 'h-32': defaultStyle,\n 'mt-3': !headline\n }, className)}\n onChange={(event) => {\n const value = event.target.value\n restartTimer(() => {\n onEditCompletedWrapper(value)\n })\n onChange(event)\n onChangeText(value)\n }}\n onFocus={() => {\n setHasFocus(true)\n }}\n onBlur={(event) => {\n onBlur(event)\n onEditCompletedWrapper(event.target.value)\n setHasFocus(false)\n }}\n {...props}\n >\n </textarea>\n </div>\n {(hasFocus && disclaimer) && (\n <label className=\"text-negative\">\n {disclaimer}\n </label>\n )}\n </div>\n )\n}\n\n/**\n * A Textarea component that is not controlled by its parent\n */\nexport const TextareaUncontrolled = ({\n value = '',\n onChangeText = noop,\n ...props\n }: TextareaProps) => {\n const [text, setText] = useState<string>(value)\n\n useEffect(() => {\n setText(value)\n }, [value])\n\n return (\n <Textarea\n {...props}\n value={text}\n onChangeText={text => {\n setText(text)\n onChangeText(text)\n }}\n />\n )\n}","import { useEffect, useState } from 'react'\n\nexport function useSaveDelay(setNotificationStatus: (isShowing: boolean) => void, delay: number) {\n const [updateTimer, setUpdateTimer] = useState<NodeJS.Timeout | undefined>(undefined)\n const [notificationTimer, setNotificationTimer] = useState<NodeJS.Timeout | undefined>(undefined)\n\n const restartTimer = (onSave: () => void) => {\n clearTimeout(updateTimer)\n setUpdateTimer(setTimeout(() => {\n onSave()\n setNotificationStatus(true)\n // Show Saved Notification for fade animation duration\n clearTimeout(notificationTimer)\n setNotificationTimer(setTimeout(() => {\n setNotificationStatus(false)\n clearTimeout(notificationTimer)\n }, delay))\n clearTimeout(updateTimer)\n }, delay))\n }\n\n const clearUpdateTimer = (hasSaved = true) => {\n clearTimeout(updateTimer)\n if (hasSaved) {\n setNotificationStatus(true)\n clearTimeout(notificationTimer)\n setNotificationTimer(setTimeout(() => {\n setNotificationStatus(false)\n clearTimeout(notificationTimer)\n }, delay))\n } else {\n setNotificationStatus(false)\n }\n }\n\n useEffect(() => {\n return () => {\n clearTimeout(updateTimer)\n clearTimeout(notificationTimer)\n }\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n return { restartTimer, clearUpdateTimer }\n}","export const noop = () => undefined\n","import type { LabelHTMLAttributes } from 'react'\nimport clsx from 'clsx'\n\nexport type LabelType = 'labelSmall' | 'labelMedium' | 'labelBig'\n\nconst styleMapping: Record<LabelType, string> = {\n labelSmall: 'textstyle-label-sm',\n labelMedium: 'textstyle-label-md',\n labelBig: 'textstyle-label-lg',\n}\n\nexport type LabelProps = {\n /** The text for the label */\n name?: string,\n /** The styling for the label */\n labelType?: LabelType,\n} & LabelHTMLAttributes<HTMLLabelElement>\n\n/**\n * A Label component\n */\nexport const Label = ({\n children,\n name,\n labelType = 'labelSmall',\n className,\n ...props\n }: LabelProps) => {\n return (\n <label {...props} className={clsx(styleMapping[labelType], className)}>\n {children ? children : name}\n </label>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,IAAAA,gBAAoC;AACpC,IAAAC,eAAiB;;;ACFjB,mBAAoC;AAE7B,SAAS,aAAa,uBAAqD,OAAe;AAC/F,QAAM,CAAC,aAAa,cAAc,QAAI,uBAAqC,MAAS;AACpF,QAAM,CAAC,mBAAmB,oBAAoB,QAAI,uBAAqC,MAAS;AAEhG,QAAM,eAAe,CAAC,WAAuB;AAC3C,iBAAa,WAAW;AACxB,mBAAe,WAAW,MAAM;AAC9B,aAAO;AACP,4BAAsB,IAAI;AAE1B,mBAAa,iBAAiB;AAC9B,2BAAqB,WAAW,MAAM;AACpC,8BAAsB,KAAK;AAC3B,qBAAa,iBAAiB;AAAA,MAChC,GAAG,KAAK,CAAC;AACT,mBAAa,WAAW;AAAA,IAC1B,GAAG,KAAK,CAAC;AAAA,EACX;AAEA,QAAM,mBAAmB,CAAC,WAAW,SAAS;AAC5C,iBAAa,WAAW;AACxB,QAAI,UAAU;AACZ,4BAAsB,IAAI;AAC1B,mBAAa,iBAAiB;AAC9B,2BAAqB,WAAW,MAAM;AACpC,8BAAsB,KAAK;AAC3B,qBAAa,iBAAiB;AAAA,MAChC,GAAG,KAAK,CAAC;AAAA,IACX,OAAO;AACL,4BAAsB,KAAK;AAAA,IAC7B;AAAA,EACF;AAEA,8BAAU,MAAM;AACd,WAAO,MAAM;AACX,mBAAa,WAAW;AACxB,mBAAa,iBAAiB;AAAA,IAChC;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,SAAO,EAAE,cAAc,iBAAiB;AAC1C;;;AC3CO,IAAM,OAAO,MAAM;;;ACC1B,kBAAiB;AA4Bb;AAxBJ,IAAM,eAA0C;AAAA,EAC9C,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,UAAU;AACZ;AAYO,IAAM,QAAQ,CAAC;AAAA,EACE;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA,GAAG;AACL,MAAkB;AACtC,SACE,4CAAC,WAAO,GAAG,OAAO,eAAW,YAAAC,SAAK,aAAa,SAAS,GAAG,SAAS,GACjE,qBAAW,WAAW,MACzB;AAEJ;;;AHkBQ,IAAAC,sBAAA;AAzBD,IAAM,WAAW,CAAC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,eAAe;AAAA,EACf;AAAA,EACA,SAAS;AAAA,EACT,kBAAkB;AAAA,EAClB,eAAe;AAAA,EACf;AAAA,EACA,GAAG;AACL,MAAqB;AAC5C,QAAM,CAAC,UAAU,WAAW,QAAI,wBAAS,KAAK;AAC9C,QAAM,EAAE,cAAc,iBAAiB,IAAI,aAAa,MAAM,QAAW,GAAI;AAE7E,QAAM,yBAAyB,CAAC,SAAiB;AAC/C,oBAAgB,IAAI;AACpB,qBAAiB;AAAA,EACnB;AAEA,SACE,8CAAC,SAAI,WAAU,UACZ;AAAA,aACC;AAAA,MAAC;AAAA;AAAA,QAAO,GAAG;AAAA,QAAO,SAAS;AAAA,QAAI,eAAW,aAAAC,SAAK,QAAQ,MAAM,SAAS;AAAA,QAC/D,WAAW,MAAM,aAAa;AAAA;AAAA,IAAa;AAAA,IAEpD;AAAA,MAAC;AAAA;AAAA,QACC,WAAW,OAAG,aAAAA,SAAK,oEAAoE,EAAE,mEAAmE,aAAa,CAAC,CAAC;AAAA,QAC1K;AAAA,sBACC,6CAAC,UAAK,WAAU,2CACb,oBACH;AAAA,UAEF;AAAA,YAAC;AAAA;AAAA,cACC;AAAA,cACA,eAAW,aAAAA,SAAK,qIAAqI;AAAA,gBACnJ,eAAe,CAAC;AAAA,gBAChB,QAAQ;AAAA,gBACR,QAAQ,CAAC;AAAA,cACX,GAAG,SAAS;AAAA,cACZ,UAAU,CAAC,UAAU;AACnB,sBAAM,QAAQ,MAAM,OAAO;AAC3B,6BAAa,MAAM;AACjB,yCAAuB,KAAK;AAAA,gBAC9B,CAAC;AACD,yBAAS,KAAK;AACd,6BAAa,KAAK;AAAA,cACpB;AAAA,cACA,SAAS,MAAM;AACb,4BAAY,IAAI;AAAA,cAClB;AAAA,cACA,QAAQ,CAAC,UAAU;AACjB,uBAAO,KAAK;AACZ,uCAAuB,MAAM,OAAO,KAAK;AACzC,4BAAY,KAAK;AAAA,cACnB;AAAA,cACC,GAAG;AAAA;AAAA,UAER;AAAA;AAAA;AAAA,IACA;AAAA,IACE,YAAY,cACZ,6CAAC,WAAM,WAAU,iBACd,sBACH;AAAA,KAEJ;AAEJ;AAKO,IAAM,uBAAuB,CAAC;AAAA,EACE,QAAQ;AAAA,EACR,eAAe;AAAA,EACf,GAAG;AACL,MAAqB;AACxD,QAAM,CAAC,MAAM,OAAO,QAAI,wBAAiB,KAAK;AAE9C,+BAAU,MAAM;AACd,YAAQ,KAAK;AAAA,EACf,GAAG,CAAC,KAAK,CAAC;AAEV,SACE;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ,OAAO;AAAA,MACP,cAAc,CAAAC,UAAQ;AACpB,gBAAQA,KAAI;AACZ,qBAAaA,KAAI;AAAA,MACnB;AAAA;AAAA,EACF;AAEJ;","names":["import_react","import_clsx","clsx","import_jsx_runtime","clsx","text"]}