@helpwave/hightide 0.0.18 → 0.1.0

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 (655) hide show
  1. package/README.md +21 -2
  2. package/dist/coloring/shading.cjs +556 -0
  3. package/dist/coloring/shading.cjs.map +1 -0
  4. package/dist/coloring/{shading.d.mts → shading.d.cts} +1 -1
  5. package/dist/coloring/shading.js +476 -37
  6. package/dist/coloring/shading.js.map +1 -1
  7. package/dist/coloring/types.cjs +31 -0
  8. package/dist/coloring/{types.mjs.map → types.cjs.map} +1 -1
  9. package/dist/coloring/types.js +2 -27
  10. package/dist/coloring/types.js.map +1 -1
  11. package/dist/components/{HelpwaveBadge.js → branding/HelpwaveBadge.cjs} +65 -33
  12. package/dist/components/branding/HelpwaveBadge.cjs.map +1 -0
  13. package/dist/components/branding/HelpwaveBadge.js +123 -0
  14. package/dist/components/branding/HelpwaveBadge.js.map +1 -0
  15. package/dist/components/date/{DatePicker.mjs → DatePicker.cjs} +158 -94
  16. package/dist/components/date/DatePicker.cjs.map +1 -0
  17. package/dist/components/date/{DatePicker.d.mts → DatePicker.d.cts} +7 -8
  18. package/dist/components/date/DatePicker.d.ts +4 -5
  19. package/dist/components/date/DatePicker.js +121 -129
  20. package/dist/components/date/DatePicker.js.map +1 -1
  21. package/dist/components/date/{DayPicker.mjs → DayPicker.cjs} +77 -24
  22. package/dist/components/date/DayPicker.cjs.map +1 -0
  23. package/dist/components/date/{DayPicker.d.mts → DayPicker.d.cts} +3 -3
  24. package/dist/components/date/DayPicker.d.ts +2 -2
  25. package/dist/components/date/DayPicker.js +38 -61
  26. package/dist/components/date/DayPicker.js.map +1 -1
  27. package/dist/components/{TimeDisplay.js → date/TimeDisplay.cjs} +24 -9
  28. package/dist/components/date/TimeDisplay.cjs.map +1 -0
  29. package/dist/components/{TimeDisplay.d.mts → date/TimeDisplay.d.cts} +2 -3
  30. package/dist/components/{TimeDisplay.d.ts → date/TimeDisplay.d.ts} +2 -3
  31. package/dist/components/{TimeDisplay.mjs → date/TimeDisplay.js} +23 -8
  32. package/dist/components/date/TimeDisplay.js.map +1 -0
  33. package/dist/components/date/{TimePicker.mjs → TimePicker.cjs} +62 -26
  34. package/dist/components/date/TimePicker.cjs.map +1 -0
  35. package/dist/components/date/{TimePicker.d.mts → TimePicker.d.cts} +2 -2
  36. package/dist/components/date/TimePicker.d.ts +2 -2
  37. package/dist/components/date/TimePicker.js +25 -61
  38. package/dist/components/date/TimePicker.js.map +1 -1
  39. package/dist/components/date/{YearMonthPicker.mjs → YearMonthPicker.cjs} +93 -42
  40. package/dist/components/date/YearMonthPicker.cjs.map +1 -0
  41. package/dist/components/date/{YearMonthPicker.d.mts → YearMonthPicker.d.cts} +2 -2
  42. package/dist/components/date/YearMonthPicker.d.ts +2 -2
  43. package/dist/components/date/YearMonthPicker.js +56 -77
  44. package/dist/components/date/YearMonthPicker.js.map +1 -1
  45. package/dist/components/{AvatarGroup.js → icons-and-geometry/Avatar.cjs} +23 -19
  46. package/dist/components/icons-and-geometry/Avatar.cjs.map +1 -0
  47. package/dist/components/icons-and-geometry/Avatar.d.cts +30 -0
  48. package/dist/components/icons-and-geometry/Avatar.d.ts +30 -0
  49. package/dist/components/{AvatarGroup.mjs → icons-and-geometry/Avatar.js} +13 -10
  50. package/dist/components/icons-and-geometry/Avatar.js.map +1 -0
  51. package/dist/components/{Circle.js → icons-and-geometry/Circle.cjs} +3 -3
  52. package/dist/components/icons-and-geometry/Circle.cjs.map +1 -0
  53. package/dist/components/{Circle.mjs → icons-and-geometry/Circle.js} +2 -2
  54. package/dist/components/icons-and-geometry/Circle.js.map +1 -0
  55. package/dist/components/{icons/Helpwave.js → icons-and-geometry/Helpwave.cjs} +38 -6
  56. package/dist/components/icons-and-geometry/Helpwave.cjs.map +1 -0
  57. package/dist/components/icons-and-geometry/Helpwave.js +75 -0
  58. package/dist/components/icons-and-geometry/Helpwave.js.map +1 -0
  59. package/dist/components/{Ring.js → icons-and-geometry/Ring.cjs} +6 -6
  60. package/dist/components/icons-and-geometry/Ring.cjs.map +1 -0
  61. package/dist/components/{Ring.mjs → icons-and-geometry/Ring.js} +4 -4
  62. package/dist/components/icons-and-geometry/Ring.js.map +1 -0
  63. package/dist/components/{icons/Tag.js → icons-and-geometry/Tag.cjs} +3 -3
  64. package/dist/components/icons-and-geometry/Tag.cjs.map +1 -0
  65. package/dist/components/{icons/Tag.mjs → icons-and-geometry/Tag.js} +2 -2
  66. package/dist/components/icons-and-geometry/Tag.js.map +1 -0
  67. package/dist/components/{BreadCrumb.js → layout-and-navigation/BreadCrumb.cjs} +12 -5
  68. package/dist/components/layout-and-navigation/BreadCrumb.cjs.map +1 -0
  69. package/dist/components/{BreadCrumb.mjs → layout-and-navigation/BreadCrumb.js} +10 -3
  70. package/dist/components/layout-and-navigation/BreadCrumb.js.map +1 -0
  71. package/dist/components/{layout/Carousel.js → layout-and-navigation/Carousel.cjs} +4 -4
  72. package/dist/components/layout-and-navigation/Carousel.cjs.map +1 -0
  73. package/dist/components/{layout/Carousel.mjs → layout-and-navigation/Carousel.js} +4 -4
  74. package/dist/components/layout-and-navigation/Carousel.js.map +1 -0
  75. package/dist/components/{ChipList.js → layout-and-navigation/Chip.cjs} +6 -6
  76. package/dist/components/layout-and-navigation/Chip.cjs.map +1 -0
  77. package/dist/components/{ChipList.mjs → layout-and-navigation/Chip.js} +2 -2
  78. package/dist/components/layout-and-navigation/Chip.js.map +1 -0
  79. package/dist/components/{layout/DividerInserter.js → layout-and-navigation/DividerInserter.cjs} +3 -3
  80. package/dist/components/layout-and-navigation/DividerInserter.cjs.map +1 -0
  81. package/dist/components/{layout/DividerInserter.mjs → layout-and-navigation/DividerInserter.js} +2 -2
  82. package/dist/components/layout-and-navigation/DividerInserter.js.map +1 -0
  83. package/dist/components/{Expandable.js → layout-and-navigation/Expandable.cjs} +3 -3
  84. package/dist/components/layout-and-navigation/Expandable.cjs.map +1 -0
  85. package/dist/components/{Expandable.mjs → layout-and-navigation/Expandable.js} +2 -2
  86. package/dist/components/layout-and-navigation/Expandable.js.map +1 -0
  87. package/dist/components/{layout/FAQSection.js → layout-and-navigation/FAQSection.cjs} +7 -7
  88. package/dist/components/layout-and-navigation/FAQSection.cjs.map +1 -0
  89. package/dist/components/{layout/FAQSection.d.mts → layout-and-navigation/FAQSection.d.cts} +1 -1
  90. package/dist/components/{layout → layout-and-navigation}/FAQSection.d.ts +1 -1
  91. package/dist/components/{layout/FAQSection.mjs → layout-and-navigation/FAQSection.js} +5 -5
  92. package/dist/components/layout-and-navigation/FAQSection.js.map +1 -0
  93. package/dist/components/{MarkdownInterpreter.js → layout-and-navigation/MarkdownInterpreter.cjs} +2 -2
  94. package/dist/components/layout-and-navigation/MarkdownInterpreter.cjs.map +1 -0
  95. package/dist/components/{MarkdownInterpreter.mjs → layout-and-navigation/MarkdownInterpreter.js} +2 -2
  96. package/dist/components/layout-and-navigation/MarkdownInterpreter.js.map +1 -0
  97. package/dist/components/layout-and-navigation/Overlay.cjs +467 -0
  98. package/dist/components/layout-and-navigation/Overlay.cjs.map +1 -0
  99. package/dist/components/layout-and-navigation/Overlay.d.cts +63 -0
  100. package/dist/components/layout-and-navigation/Overlay.d.ts +63 -0
  101. package/dist/components/layout-and-navigation/Overlay.js +429 -0
  102. package/dist/components/layout-and-navigation/Overlay.js.map +1 -0
  103. package/dist/components/{Pagination.js → layout-and-navigation/Pagination.cjs} +25 -10
  104. package/dist/components/layout-and-navigation/Pagination.cjs.map +1 -0
  105. package/dist/components/{Pagination.d.mts → layout-and-navigation/Pagination.d.cts} +2 -3
  106. package/dist/components/{Pagination.d.ts → layout-and-navigation/Pagination.d.ts} +2 -3
  107. package/dist/components/{Pagination.mjs → layout-and-navigation/Pagination.js} +25 -10
  108. package/dist/components/layout-and-navigation/Pagination.js.map +1 -0
  109. package/dist/components/{SearchableList.js → layout-and-navigation/SearchableList.cjs} +51 -34
  110. package/dist/components/layout-and-navigation/SearchableList.cjs.map +1 -0
  111. package/dist/components/{SearchableList.d.mts → layout-and-navigation/SearchableList.d.cts} +2 -2
  112. package/dist/components/{SearchableList.d.ts → layout-and-navigation/SearchableList.d.ts} +2 -2
  113. package/dist/components/{SearchableList.mjs → layout-and-navigation/SearchableList.js} +52 -40
  114. package/dist/components/layout-and-navigation/SearchableList.js.map +1 -0
  115. package/dist/components/{StepperBar.js → layout-and-navigation/StepperBar.cjs} +42 -16
  116. package/dist/components/layout-and-navigation/StepperBar.cjs.map +1 -0
  117. package/dist/components/{StepperBar.d.mts → layout-and-navigation/StepperBar.d.cts} +2 -3
  118. package/dist/components/{StepperBar.d.ts → layout-and-navigation/StepperBar.d.ts} +2 -3
  119. package/dist/components/{StepperBar.mjs → layout-and-navigation/StepperBar.js} +40 -14
  120. package/dist/components/layout-and-navigation/StepperBar.js.map +1 -0
  121. package/dist/components/{Table.js → layout-and-navigation/Table.cjs} +176 -40
  122. package/dist/components/layout-and-navigation/Table.cjs.map +1 -0
  123. package/dist/components/{Table.d.mts → layout-and-navigation/Table.d.cts} +10 -1
  124. package/dist/components/{Table.d.ts → layout-and-navigation/Table.d.ts} +10 -1
  125. package/dist/components/{Table.mjs → layout-and-navigation/Table.js} +175 -40
  126. package/dist/components/layout-and-navigation/Table.js.map +1 -0
  127. package/dist/components/{TextImage.js → layout-and-navigation/TextImage.cjs} +25 -10
  128. package/dist/components/layout-and-navigation/TextImage.cjs.map +1 -0
  129. package/dist/components/{TextImage.d.mts → layout-and-navigation/TextImage.d.cts} +2 -3
  130. package/dist/components/{TextImage.d.ts → layout-and-navigation/TextImage.d.ts} +2 -3
  131. package/dist/components/{TextImage.mjs → layout-and-navigation/TextImage.js} +23 -8
  132. package/dist/components/layout-and-navigation/TextImage.js.map +1 -0
  133. package/dist/components/{layout/Tile.js → layout-and-navigation/Tile.cjs} +4 -4
  134. package/dist/components/layout-and-navigation/Tile.cjs.map +1 -0
  135. package/dist/components/{layout/Tile.mjs → layout-and-navigation/Tile.js} +2 -2
  136. package/dist/components/layout-and-navigation/Tile.js.map +1 -0
  137. package/dist/components/{VerticalDivider.js → layout-and-navigation/VerticalDivider.cjs} +2 -2
  138. package/dist/components/layout-and-navigation/VerticalDivider.cjs.map +1 -0
  139. package/dist/components/{VerticalDivider.mjs → layout-and-navigation/VerticalDivider.js} +2 -2
  140. package/dist/components/layout-and-navigation/VerticalDivider.js.map +1 -0
  141. package/dist/components/{ErrorComponent.js → loading-states/ErrorComponent.cjs} +25 -10
  142. package/dist/components/loading-states/ErrorComponent.cjs.map +1 -0
  143. package/dist/components/{ErrorComponent.d.mts → loading-states/ErrorComponent.d.cts} +2 -3
  144. package/dist/components/{ErrorComponent.d.ts → loading-states/ErrorComponent.d.ts} +2 -3
  145. package/dist/components/{ErrorComponent.mjs → loading-states/ErrorComponent.js} +24 -9
  146. package/dist/components/loading-states/ErrorComponent.js.map +1 -0
  147. package/dist/components/{LoadingAndErrorComponent.js → loading-states/LoadingAndErrorComponent.cjs} +67 -18
  148. package/dist/components/loading-states/LoadingAndErrorComponent.cjs.map +1 -0
  149. package/dist/components/{LoadingAndErrorComponent.d.mts → loading-states/LoadingAndErrorComponent.d.cts} +6 -6
  150. package/dist/components/{LoadingAndErrorComponent.d.ts → loading-states/LoadingAndErrorComponent.d.ts} +4 -4
  151. package/dist/components/{LoadingAndErrorComponent.mjs → loading-states/LoadingAndErrorComponent.js} +66 -17
  152. package/dist/components/loading-states/LoadingAndErrorComponent.js.map +1 -0
  153. package/dist/components/{LoadingAnimation.js → loading-states/LoadingAnimation.cjs} +64 -15
  154. package/dist/components/loading-states/LoadingAnimation.cjs.map +1 -0
  155. package/dist/components/{LoadingAnimation.d.mts → loading-states/LoadingAnimation.d.cts} +2 -3
  156. package/dist/components/{LoadingAnimation.d.ts → loading-states/LoadingAnimation.d.ts} +2 -3
  157. package/dist/components/{LoadingAnimation.mjs → loading-states/LoadingAnimation.js} +63 -14
  158. package/dist/components/loading-states/LoadingAnimation.js.map +1 -0
  159. package/dist/components/{LoadingButton.js → loading-states/LoadingButton.cjs} +101 -58
  160. package/dist/components/loading-states/LoadingButton.cjs.map +1 -0
  161. package/dist/components/{LoadingButton.d.mts → loading-states/LoadingButton.d.cts} +1 -1
  162. package/dist/components/{LoadingButton.d.ts → loading-states/LoadingButton.d.ts} +1 -1
  163. package/dist/components/{LoadingButton.mjs → loading-states/LoadingButton.js} +100 -57
  164. package/dist/components/loading-states/LoadingButton.js.map +1 -0
  165. package/dist/components/{ProgressIndicator.js → loading-states/ProgressIndicator.cjs} +2 -2
  166. package/dist/components/loading-states/ProgressIndicator.cjs.map +1 -0
  167. package/dist/components/{ProgressIndicator.mjs → loading-states/ProgressIndicator.js} +2 -2
  168. package/dist/components/loading-states/ProgressIndicator.js.map +1 -0
  169. package/dist/components/modals/ConfirmDialog.cjs +353 -0
  170. package/dist/components/modals/ConfirmDialog.cjs.map +1 -0
  171. package/dist/components/modals/{ConfirmDialog.d.mts → ConfirmDialog.d.cts} +6 -6
  172. package/dist/components/modals/ConfirmDialog.d.ts +6 -6
  173. package/dist/components/modals/ConfirmDialog.js +157 -266
  174. package/dist/components/modals/ConfirmDialog.js.map +1 -1
  175. package/dist/components/modals/{DiscardChangesDialog.js → DiscardChangesModal.cjs} +213 -117
  176. package/dist/components/modals/DiscardChangesModal.cjs.map +1 -0
  177. package/dist/components/modals/DiscardChangesModal.d.cts +23 -0
  178. package/dist/components/modals/DiscardChangesModal.d.ts +23 -0
  179. package/dist/components/modals/{DiscardChangesDialog.mjs → DiscardChangesModal.js} +202 -106
  180. package/dist/components/modals/DiscardChangesModal.js.map +1 -0
  181. package/dist/components/modals/InputModal.cjs +533 -0
  182. package/dist/components/modals/InputModal.cjs.map +1 -0
  183. package/dist/components/modals/{InputModal.d.mts → InputModal.d.cts} +7 -7
  184. package/dist/components/modals/InputModal.d.ts +6 -6
  185. package/dist/components/modals/InputModal.js +197 -299
  186. package/dist/components/modals/InputModal.js.map +1 -1
  187. package/dist/components/modals/LanguageModal.cjs +667 -0
  188. package/dist/components/modals/LanguageModal.cjs.map +1 -0
  189. package/dist/components/modals/LanguageModal.d.cts +20 -0
  190. package/dist/components/modals/LanguageModal.d.ts +7 -8
  191. package/dist/components/modals/LanguageModal.js +308 -204
  192. package/dist/components/modals/LanguageModal.js.map +1 -1
  193. package/dist/components/modals/ThemeModal.cjs +694 -0
  194. package/dist/components/modals/ThemeModal.cjs.map +1 -0
  195. package/dist/components/modals/ThemeModal.d.cts +21 -0
  196. package/dist/components/modals/ThemeModal.d.ts +21 -0
  197. package/dist/components/modals/ThemeModal.js +657 -0
  198. package/dist/components/modals/ThemeModal.js.map +1 -0
  199. package/dist/components/properties/CheckboxProperty.cjs +362 -0
  200. package/dist/components/properties/CheckboxProperty.cjs.map +1 -0
  201. package/dist/components/properties/{CheckboxProperty.d.mts → CheckboxProperty.d.cts} +3 -3
  202. package/dist/components/properties/CheckboxProperty.d.ts +2 -2
  203. package/dist/components/properties/CheckboxProperty.js +94 -93
  204. package/dist/components/properties/CheckboxProperty.js.map +1 -1
  205. package/dist/components/properties/DateProperty.cjs +451 -0
  206. package/dist/components/properties/DateProperty.cjs.map +1 -0
  207. package/dist/components/properties/{DateProperty.d.mts → DateProperty.d.cts} +3 -3
  208. package/dist/components/properties/DateProperty.d.ts +2 -2
  209. package/dist/components/properties/DateProperty.js +110 -116
  210. package/dist/components/properties/DateProperty.js.map +1 -1
  211. package/dist/components/properties/{MultiSelectProperty.mjs → MultiSelectProperty.cjs} +216 -155
  212. package/dist/components/properties/MultiSelectProperty.cjs.map +1 -0
  213. package/dist/components/properties/{MultiSelectProperty.d.mts → MultiSelectProperty.d.cts} +5 -5
  214. package/dist/components/properties/MultiSelectProperty.d.ts +4 -4
  215. package/dist/components/properties/MultiSelectProperty.js +180 -184
  216. package/dist/components/properties/MultiSelectProperty.js.map +1 -1
  217. package/dist/components/properties/NumberProperty.cjs +459 -0
  218. package/dist/components/properties/NumberProperty.cjs.map +1 -0
  219. package/dist/components/properties/{NumberProperty.d.mts → NumberProperty.d.cts} +3 -3
  220. package/dist/components/properties/NumberProperty.d.ts +2 -2
  221. package/dist/components/properties/NumberProperty.js +109 -116
  222. package/dist/components/properties/NumberProperty.js.map +1 -1
  223. package/dist/components/properties/PropertyBase.cjs +223 -0
  224. package/dist/components/properties/PropertyBase.cjs.map +1 -0
  225. package/dist/components/properties/{PropertyBase.d.mts → PropertyBase.d.cts} +2 -2
  226. package/dist/components/properties/PropertyBase.d.ts +2 -2
  227. package/dist/components/properties/PropertyBase.js +60 -69
  228. package/dist/components/properties/PropertyBase.js.map +1 -1
  229. package/dist/components/properties/{SelectProperty.mjs → SelectProperty.cjs} +251 -199
  230. package/dist/components/properties/SelectProperty.cjs.map +1 -0
  231. package/dist/components/properties/{SelectProperty.d.mts → SelectProperty.d.cts} +5 -6
  232. package/dist/components/properties/SelectProperty.d.ts +4 -5
  233. package/dist/components/properties/SelectProperty.js +215 -228
  234. package/dist/components/properties/SelectProperty.js.map +1 -1
  235. package/dist/components/properties/TextProperty.cjs +428 -0
  236. package/dist/components/properties/TextProperty.cjs.map +1 -0
  237. package/dist/components/properties/{TextProperty.d.mts → TextProperty.d.cts} +3 -3
  238. package/dist/components/properties/TextProperty.d.ts +2 -2
  239. package/dist/components/properties/TextProperty.js +134 -121
  240. package/dist/components/properties/TextProperty.js.map +1 -1
  241. package/dist/components/{Button.js → user-action/Button.cjs} +70 -12
  242. package/dist/components/user-action/Button.cjs.map +1 -0
  243. package/dist/components/{Button.d.mts → user-action/Button.d.cts} +32 -5
  244. package/dist/components/{Button.d.ts → user-action/Button.d.ts} +32 -5
  245. package/dist/components/{Button.mjs → user-action/Button.js} +66 -10
  246. package/dist/components/user-action/Button.js.map +1 -0
  247. package/dist/components/{user-input/Checkbox.js → user-action/Checkbox.cjs} +26 -16
  248. package/dist/components/user-action/Checkbox.cjs.map +1 -0
  249. package/dist/components/{user-input/Checkbox.d.mts → user-action/Checkbox.d.cts} +5 -5
  250. package/dist/components/{user-input → user-action}/Checkbox.d.ts +4 -4
  251. package/dist/components/{user-input/Checkbox.mjs → user-action/Checkbox.js} +24 -14
  252. package/dist/components/user-action/Checkbox.js.map +1 -0
  253. package/dist/components/{user-input/DateAndTimePicker.js → user-action/DateAndTimePicker.cjs} +51 -23
  254. package/dist/components/user-action/DateAndTimePicker.cjs.map +1 -0
  255. package/dist/components/{user-input/DateAndTimePicker.d.mts → user-action/DateAndTimePicker.d.cts} +7 -8
  256. package/dist/components/{user-input → user-action}/DateAndTimePicker.d.ts +2 -3
  257. package/dist/components/{user-input/DateAndTimePicker.mjs → user-action/DateAndTimePicker.js} +44 -16
  258. package/dist/components/user-action/DateAndTimePicker.js.map +1 -0
  259. package/dist/components/{user-input/Input.js → user-action/Input.cjs} +35 -34
  260. package/dist/components/user-action/Input.cjs.map +1 -0
  261. package/dist/components/{user-input/Input.d.mts → user-action/Input.d.cts} +9 -16
  262. package/dist/components/{user-input → user-action}/Input.d.ts +8 -15
  263. package/dist/components/{user-input/Input.mjs → user-action/Input.js} +35 -39
  264. package/dist/components/user-action/Input.js.map +1 -0
  265. package/dist/components/{user-input/Label.js → user-action/Label.cjs} +15 -3
  266. package/dist/components/user-action/Label.cjs.map +1 -0
  267. package/dist/components/{user-input/Label.d.mts → user-action/Label.d.cts} +1 -1
  268. package/dist/components/{user-input → user-action}/Label.d.ts +1 -1
  269. package/dist/components/{user-input/Label.mjs → user-action/Label.js} +5 -3
  270. package/dist/components/user-action/Label.js.map +1 -0
  271. package/dist/components/{user-input/Menu.js → user-action/Menu.cjs} +4 -4
  272. package/dist/components/user-action/Menu.cjs.map +1 -0
  273. package/dist/components/{user-input/Menu.mjs → user-action/Menu.js} +3 -3
  274. package/dist/components/user-action/Menu.js.map +1 -0
  275. package/dist/components/{user-input/MultiSelect.js → user-action/MultiSelect.cjs} +76 -51
  276. package/dist/components/user-action/MultiSelect.cjs.map +1 -0
  277. package/dist/components/{user-input/MultiSelect.d.mts → user-action/MultiSelect.d.cts} +3 -3
  278. package/dist/components/{user-input → user-action}/MultiSelect.d.ts +2 -2
  279. package/dist/components/{user-input/MultiSelect.mjs → user-action/MultiSelect.js} +75 -55
  280. package/dist/components/user-action/MultiSelect.js.map +1 -0
  281. package/dist/components/{user-input/ScrollPicker.js → user-action/ScrollPicker.cjs} +4 -4
  282. package/dist/components/user-action/ScrollPicker.cjs.map +1 -0
  283. package/dist/components/{user-input/ScrollPicker.mjs → user-action/ScrollPicker.js} +3 -3
  284. package/dist/components/user-action/ScrollPicker.js.map +1 -0
  285. package/dist/components/{user-input/SearchableSelect.js → user-action/Select.cjs} +181 -152
  286. package/dist/components/user-action/Select.cjs.map +1 -0
  287. package/dist/components/user-action/Select.d.cts +49 -0
  288. package/dist/components/user-action/Select.d.ts +49 -0
  289. package/dist/components/{user-input/SearchableSelect.mjs → user-action/Select.js} +167 -145
  290. package/dist/components/user-action/Select.js.map +1 -0
  291. package/dist/components/{user-input/Textarea.js → user-action/Textarea.cjs} +80 -35
  292. package/dist/components/user-action/Textarea.cjs.map +1 -0
  293. package/dist/components/user-action/Textarea.d.cts +28 -0
  294. package/dist/components/{user-input → user-action}/Textarea.d.ts +9 -5
  295. package/dist/components/user-action/Textarea.js +163 -0
  296. package/dist/components/user-action/Textarea.js.map +1 -0
  297. package/dist/components/{user-input/ToggleableInput.js → user-action/ToggleableInput.cjs} +9 -15
  298. package/dist/components/user-action/ToggleableInput.cjs.map +1 -0
  299. package/dist/components/{user-input/ToggleableInput.mjs → user-action/ToggleableInput.js} +8 -14
  300. package/dist/components/user-action/ToggleableInput.js.map +1 -0
  301. package/dist/components/{Tooltip.js → user-action/Tooltip.cjs} +13 -9
  302. package/dist/components/user-action/Tooltip.cjs.map +1 -0
  303. package/dist/components/{Tooltip.d.mts → user-action/Tooltip.d.cts} +1 -1
  304. package/dist/components/{Tooltip.d.ts → user-action/Tooltip.d.ts} +1 -1
  305. package/dist/components/{Tooltip.mjs → user-action/Tooltip.js} +12 -8
  306. package/dist/components/user-action/Tooltip.js.map +1 -0
  307. package/dist/css/globals.css +178 -126
  308. package/dist/css/uncompiled/globals.css +65 -29
  309. package/dist/hooks/useHoverState.cjs +72 -0
  310. package/dist/hooks/{useHoverState.mjs.map → useHoverState.cjs.map} +1 -1
  311. package/dist/hooks/useHoverState.js +7 -32
  312. package/dist/hooks/useHoverState.js.map +1 -1
  313. package/dist/hooks/useLocalStorage.cjs +83 -0
  314. package/dist/hooks/useLocalStorage.cjs.map +1 -0
  315. package/dist/hooks/useLocalStorage.js +9 -34
  316. package/dist/hooks/useLocalStorage.js.map +1 -1
  317. package/dist/hooks/useOutsideClick.cjs +48 -0
  318. package/dist/hooks/{useOutsideClick.mjs.map → useOutsideClick.cjs.map} +1 -1
  319. package/dist/hooks/useOutsideClick.js +4 -29
  320. package/dist/hooks/useOutsideClick.js.map +1 -1
  321. package/dist/hooks/useSaveDelay.cjs +68 -0
  322. package/dist/hooks/{useSaveDelay.mjs.map → useSaveDelay.cjs.map} +1 -1
  323. package/dist/hooks/useSaveDelay.js +6 -31
  324. package/dist/hooks/useSaveDelay.js.map +1 -1
  325. package/dist/{index.mjs → index.cjs} +4008 -3882
  326. package/dist/index.cjs.map +1 -0
  327. package/dist/index.d.cts +82 -0
  328. package/dist/index.d.ts +49 -55
  329. package/dist/index.js +3825 -4056
  330. package/dist/index.js.map +1 -1
  331. package/dist/{hooks/useLanguage.js → localization/LanguageProvider.cjs} +30 -26
  332. package/dist/localization/LanguageProvider.cjs.map +1 -0
  333. package/dist/localization/LanguageProvider.d.cts +18 -0
  334. package/dist/localization/LanguageProvider.d.ts +18 -0
  335. package/dist/{hooks/useLanguage.mjs → localization/LanguageProvider.js} +26 -19
  336. package/dist/localization/LanguageProvider.js.map +1 -0
  337. package/dist/{hooks/useTranslation.js → localization/useTranslation.cjs} +23 -8
  338. package/dist/localization/useTranslation.cjs.map +1 -0
  339. package/dist/{hooks/useTranslation.d.mts → localization/useTranslation.d.cts} +5 -7
  340. package/dist/{hooks → localization}/useTranslation.d.ts +5 -7
  341. package/dist/{hooks/useTranslation.mjs → localization/useTranslation.js} +22 -7
  342. package/dist/localization/useTranslation.js.map +1 -0
  343. package/dist/localization/util.cjs +41 -0
  344. package/dist/localization/util.cjs.map +1 -0
  345. package/dist/localization/util.d.cts +18 -0
  346. package/dist/localization/util.d.ts +18 -0
  347. package/dist/localization/util.js +16 -0
  348. package/dist/localization/util.js.map +1 -0
  349. package/dist/{hooks/useTheme.js → theming/useTheme.cjs} +19 -11
  350. package/dist/theming/useTheme.cjs.map +1 -0
  351. package/dist/{hooks/useTheme.d.mts → theming/useTheme.d.cts} +9 -5
  352. package/dist/{hooks → theming}/useTheme.d.ts +9 -5
  353. package/dist/{hooks/useTheme.mjs → theming/useTheme.js} +15 -7
  354. package/dist/theming/useTheme.js.map +1 -0
  355. package/dist/util/{array.mjs → array.cjs} +34 -3
  356. package/dist/util/array.cjs.map +1 -0
  357. package/dist/util/array.js +2 -33
  358. package/dist/util/array.js.map +1 -1
  359. package/dist/util/builder.cjs +34 -0
  360. package/dist/util/{builder.mjs.map → builder.cjs.map} +1 -1
  361. package/dist/util/builder.js +2 -27
  362. package/dist/util/builder.js.map +1 -1
  363. package/dist/util/{date.mjs → date.cjs} +41 -3
  364. package/dist/util/date.cjs.map +1 -0
  365. package/dist/util/date.js +2 -40
  366. package/dist/util/date.js.map +1 -1
  367. package/dist/util/easeFunctions.cjs +63 -0
  368. package/dist/util/easeFunctions.cjs.map +1 -0
  369. package/dist/util/easeFunctions.js +2 -29
  370. package/dist/util/easeFunctions.js.map +1 -1
  371. package/dist/util/emailValidation.cjs +33 -0
  372. package/dist/util/{emailValidation.mjs.map → emailValidation.cjs.map} +1 -1
  373. package/dist/util/emailValidation.js +2 -27
  374. package/dist/util/emailValidation.js.map +1 -1
  375. package/dist/util/{loopingArray.mjs → loopingArray.cjs} +28 -3
  376. package/dist/util/{loopingArray.mjs.map → loopingArray.cjs.map} +1 -1
  377. package/dist/util/loopingArray.js +2 -27
  378. package/dist/util/loopingArray.js.map +1 -1
  379. package/dist/util/math.cjs +33 -0
  380. package/dist/util/{math.mjs.map → math.cjs.map} +1 -1
  381. package/dist/util/math.js +2 -27
  382. package/dist/util/math.js.map +1 -1
  383. package/dist/util/news.cjs +77 -0
  384. package/dist/util/news.cjs.map +1 -0
  385. package/dist/util/{news.d.mts → news.d.cts} +11 -13
  386. package/dist/util/news.d.ts +11 -13
  387. package/dist/util/news.js +22 -49
  388. package/dist/util/news.js.map +1 -1
  389. package/dist/util/noop.cjs +31 -0
  390. package/dist/util/noop.cjs.map +1 -0
  391. package/dist/util/noop.js +2 -27
  392. package/dist/util/noop.js.map +1 -1
  393. package/dist/util/simpleSearch.cjs +54 -0
  394. package/dist/util/simpleSearch.cjs.map +1 -0
  395. package/dist/util/simpleSearch.js +2 -30
  396. package/dist/util/simpleSearch.js.map +1 -1
  397. package/dist/util/storage.cjs +64 -0
  398. package/dist/util/storage.cjs.map +1 -0
  399. package/dist/util/storage.js +2 -28
  400. package/dist/util/storage.js.map +1 -1
  401. package/dist/util/types.cjs +19 -0
  402. package/dist/util/types.cjs.map +1 -0
  403. package/dist/util/types.js +0 -18
  404. package/dist/util/types.js.map +1 -1
  405. package/package.json +9 -12
  406. package/dist/coloring/shading.mjs +0 -47
  407. package/dist/coloring/shading.mjs.map +0 -1
  408. package/dist/coloring/types.mjs +0 -6
  409. package/dist/components/Avatar.d.mts +0 -17
  410. package/dist/components/Avatar.d.ts +0 -17
  411. package/dist/components/Avatar.js +0 -85
  412. package/dist/components/Avatar.js.map +0 -1
  413. package/dist/components/Avatar.mjs +0 -48
  414. package/dist/components/Avatar.mjs.map +0 -1
  415. package/dist/components/AvatarGroup.d.mts +0 -14
  416. package/dist/components/AvatarGroup.d.ts +0 -14
  417. package/dist/components/AvatarGroup.js.map +0 -1
  418. package/dist/components/AvatarGroup.mjs.map +0 -1
  419. package/dist/components/BreadCrumb.js.map +0 -1
  420. package/dist/components/BreadCrumb.mjs.map +0 -1
  421. package/dist/components/Button.js.map +0 -1
  422. package/dist/components/Button.mjs.map +0 -1
  423. package/dist/components/ChipList.js.map +0 -1
  424. package/dist/components/ChipList.mjs.map +0 -1
  425. package/dist/components/Circle.js.map +0 -1
  426. package/dist/components/Circle.mjs.map +0 -1
  427. package/dist/components/ErrorComponent.js.map +0 -1
  428. package/dist/components/ErrorComponent.mjs.map +0 -1
  429. package/dist/components/Expandable.js.map +0 -1
  430. package/dist/components/Expandable.mjs.map +0 -1
  431. package/dist/components/HelpwaveBadge.js.map +0 -1
  432. package/dist/components/HelpwaveBadge.mjs +0 -91
  433. package/dist/components/HelpwaveBadge.mjs.map +0 -1
  434. package/dist/components/HideableContentSection.d.mts +0 -14
  435. package/dist/components/HideableContentSection.d.ts +0 -14
  436. package/dist/components/HideableContentSection.js +0 -70
  437. package/dist/components/HideableContentSection.js.map +0 -1
  438. package/dist/components/HideableContentSection.mjs +0 -35
  439. package/dist/components/HideableContentSection.mjs.map +0 -1
  440. package/dist/components/InputGroup.d.mts +0 -17
  441. package/dist/components/InputGroup.d.ts +0 -17
  442. package/dist/components/InputGroup.js +0 -97
  443. package/dist/components/InputGroup.js.map +0 -1
  444. package/dist/components/InputGroup.mjs +0 -62
  445. package/dist/components/InputGroup.mjs.map +0 -1
  446. package/dist/components/LoadingAndErrorComponent.js.map +0 -1
  447. package/dist/components/LoadingAndErrorComponent.mjs.map +0 -1
  448. package/dist/components/LoadingAnimation.js.map +0 -1
  449. package/dist/components/LoadingAnimation.mjs.map +0 -1
  450. package/dist/components/LoadingButton.js.map +0 -1
  451. package/dist/components/LoadingButton.mjs.map +0 -1
  452. package/dist/components/MarkdownInterpreter.js.map +0 -1
  453. package/dist/components/MarkdownInterpreter.mjs.map +0 -1
  454. package/dist/components/Pagination.js.map +0 -1
  455. package/dist/components/Pagination.mjs.map +0 -1
  456. package/dist/components/Profile.d.mts +0 -31
  457. package/dist/components/Profile.d.ts +0 -31
  458. package/dist/components/Profile.js +0 -197
  459. package/dist/components/Profile.js.map +0 -1
  460. package/dist/components/Profile.mjs +0 -162
  461. package/dist/components/Profile.mjs.map +0 -1
  462. package/dist/components/ProgressIndicator.js.map +0 -1
  463. package/dist/components/ProgressIndicator.mjs.map +0 -1
  464. package/dist/components/Ring.js.map +0 -1
  465. package/dist/components/Ring.mjs.map +0 -1
  466. package/dist/components/SearchableList.js.map +0 -1
  467. package/dist/components/SearchableList.mjs.map +0 -1
  468. package/dist/components/SortButton.d.mts +0 -15
  469. package/dist/components/SortButton.d.ts +0 -15
  470. package/dist/components/SortButton.js +0 -132
  471. package/dist/components/SortButton.js.map +0 -1
  472. package/dist/components/SortButton.mjs +0 -97
  473. package/dist/components/SortButton.mjs.map +0 -1
  474. package/dist/components/StepperBar.js.map +0 -1
  475. package/dist/components/StepperBar.mjs.map +0 -1
  476. package/dist/components/Table.js.map +0 -1
  477. package/dist/components/Table.mjs.map +0 -1
  478. package/dist/components/TechRadar.d.mts +0 -39
  479. package/dist/components/TechRadar.d.ts +0 -39
  480. package/dist/components/TechRadar.js +0 -243
  481. package/dist/components/TechRadar.js.map +0 -1
  482. package/dist/components/TechRadar.mjs +0 -208
  483. package/dist/components/TechRadar.mjs.map +0 -1
  484. package/dist/components/TextImage.js.map +0 -1
  485. package/dist/components/TextImage.mjs.map +0 -1
  486. package/dist/components/TimeDisplay.js.map +0 -1
  487. package/dist/components/TimeDisplay.mjs.map +0 -1
  488. package/dist/components/Tooltip.js.map +0 -1
  489. package/dist/components/Tooltip.mjs.map +0 -1
  490. package/dist/components/VerticalDivider.js.map +0 -1
  491. package/dist/components/VerticalDivider.mjs.map +0 -1
  492. package/dist/components/date/DatePicker.mjs.map +0 -1
  493. package/dist/components/date/DayPicker.mjs.map +0 -1
  494. package/dist/components/date/TimePicker.mjs.map +0 -1
  495. package/dist/components/date/YearMonthPicker.mjs.map +0 -1
  496. package/dist/components/icons/Helpwave.js.map +0 -1
  497. package/dist/components/icons/Helpwave.mjs +0 -43
  498. package/dist/components/icons/Helpwave.mjs.map +0 -1
  499. package/dist/components/icons/Tag.js.map +0 -1
  500. package/dist/components/icons/Tag.mjs.map +0 -1
  501. package/dist/components/layout/Carousel.js.map +0 -1
  502. package/dist/components/layout/Carousel.mjs.map +0 -1
  503. package/dist/components/layout/DividerInserter.js.map +0 -1
  504. package/dist/components/layout/DividerInserter.mjs.map +0 -1
  505. package/dist/components/layout/FAQSection.js.map +0 -1
  506. package/dist/components/layout/FAQSection.mjs.map +0 -1
  507. package/dist/components/layout/Tile.js.map +0 -1
  508. package/dist/components/layout/Tile.mjs.map +0 -1
  509. package/dist/components/modals/ConfirmDialog.mjs +0 -388
  510. package/dist/components/modals/ConfirmDialog.mjs.map +0 -1
  511. package/dist/components/modals/DiscardChangesDialog.d.mts +0 -23
  512. package/dist/components/modals/DiscardChangesDialog.d.ts +0 -23
  513. package/dist/components/modals/DiscardChangesDialog.js.map +0 -1
  514. package/dist/components/modals/DiscardChangesDialog.mjs.map +0 -1
  515. package/dist/components/modals/InputModal.mjs +0 -566
  516. package/dist/components/modals/InputModal.mjs.map +0 -1
  517. package/dist/components/modals/LanguageModal.d.mts +0 -21
  518. package/dist/components/modals/LanguageModal.mjs +0 -489
  519. package/dist/components/modals/LanguageModal.mjs.map +0 -1
  520. package/dist/components/modals/Modal.d.mts +0 -43
  521. package/dist/components/modals/Modal.d.ts +0 -43
  522. package/dist/components/modals/Modal.js +0 -286
  523. package/dist/components/modals/Modal.js.map +0 -1
  524. package/dist/components/modals/Modal.mjs +0 -249
  525. package/dist/components/modals/Modal.mjs.map +0 -1
  526. package/dist/components/modals/ModalRegister.d.mts +0 -16
  527. package/dist/components/modals/ModalRegister.d.ts +0 -16
  528. package/dist/components/modals/ModalRegister.js +0 -63
  529. package/dist/components/modals/ModalRegister.js.map +0 -1
  530. package/dist/components/modals/ModalRegister.mjs +0 -37
  531. package/dist/components/modals/ModalRegister.mjs.map +0 -1
  532. package/dist/components/properties/CheckboxProperty.mjs +0 -291
  533. package/dist/components/properties/CheckboxProperty.mjs.map +0 -1
  534. package/dist/components/properties/DateProperty.mjs +0 -392
  535. package/dist/components/properties/DateProperty.mjs.map +0 -1
  536. package/dist/components/properties/MultiSelectProperty.mjs.map +0 -1
  537. package/dist/components/properties/NumberProperty.mjs +0 -401
  538. package/dist/components/properties/NumberProperty.mjs.map +0 -1
  539. package/dist/components/properties/PropertyBase.mjs +0 -162
  540. package/dist/components/properties/PropertyBase.mjs.map +0 -1
  541. package/dist/components/properties/SelectProperty.mjs.map +0 -1
  542. package/dist/components/properties/TextProperty.mjs +0 -345
  543. package/dist/components/properties/TextProperty.mjs.map +0 -1
  544. package/dist/components/user-input/Checkbox.js.map +0 -1
  545. package/dist/components/user-input/Checkbox.mjs.map +0 -1
  546. package/dist/components/user-input/DateAndTimePicker.js.map +0 -1
  547. package/dist/components/user-input/DateAndTimePicker.mjs.map +0 -1
  548. package/dist/components/user-input/Input.js.map +0 -1
  549. package/dist/components/user-input/Input.mjs.map +0 -1
  550. package/dist/components/user-input/Label.js.map +0 -1
  551. package/dist/components/user-input/Label.mjs.map +0 -1
  552. package/dist/components/user-input/Menu.js.map +0 -1
  553. package/dist/components/user-input/Menu.mjs.map +0 -1
  554. package/dist/components/user-input/MultiSelect.js.map +0 -1
  555. package/dist/components/user-input/MultiSelect.mjs.map +0 -1
  556. package/dist/components/user-input/ScrollPicker.js.map +0 -1
  557. package/dist/components/user-input/ScrollPicker.mjs.map +0 -1
  558. package/dist/components/user-input/SearchableSelect.d.mts +0 -14
  559. package/dist/components/user-input/SearchableSelect.d.ts +0 -14
  560. package/dist/components/user-input/SearchableSelect.js.map +0 -1
  561. package/dist/components/user-input/SearchableSelect.mjs.map +0 -1
  562. package/dist/components/user-input/Select.d.mts +0 -36
  563. package/dist/components/user-input/Select.d.ts +0 -36
  564. package/dist/components/user-input/Select.js +0 -153
  565. package/dist/components/user-input/Select.js.map +0 -1
  566. package/dist/components/user-input/Select.mjs +0 -118
  567. package/dist/components/user-input/Select.mjs.map +0 -1
  568. package/dist/components/user-input/Textarea.d.mts +0 -24
  569. package/dist/components/user-input/Textarea.js.map +0 -1
  570. package/dist/components/user-input/Textarea.mjs +0 -119
  571. package/dist/components/user-input/Textarea.mjs.map +0 -1
  572. package/dist/components/user-input/ToggleableInput.js.map +0 -1
  573. package/dist/components/user-input/ToggleableInput.mjs.map +0 -1
  574. package/dist/hooks/useHoverState.mjs +0 -47
  575. package/dist/hooks/useLanguage.d.mts +0 -21
  576. package/dist/hooks/useLanguage.d.ts +0 -21
  577. package/dist/hooks/useLanguage.js.map +0 -1
  578. package/dist/hooks/useLanguage.mjs.map +0 -1
  579. package/dist/hooks/useLocalStorage.mjs +0 -58
  580. package/dist/hooks/useLocalStorage.mjs.map +0 -1
  581. package/dist/hooks/useOutsideClick.mjs +0 -23
  582. package/dist/hooks/useSaveDelay.mjs +0 -43
  583. package/dist/hooks/useTheme.js.map +0 -1
  584. package/dist/hooks/useTheme.mjs.map +0 -1
  585. package/dist/hooks/useTranslation.js.map +0 -1
  586. package/dist/hooks/useTranslation.mjs.map +0 -1
  587. package/dist/index.d.mts +0 -88
  588. package/dist/index.mjs.map +0 -1
  589. package/dist/util/array.mjs.map +0 -1
  590. package/dist/util/builder.mjs +0 -9
  591. package/dist/util/date.mjs.map +0 -1
  592. package/dist/util/easeFunctions.mjs +0 -36
  593. package/dist/util/easeFunctions.mjs.map +0 -1
  594. package/dist/util/emailValidation.mjs +0 -8
  595. package/dist/util/math.mjs +0 -8
  596. package/dist/util/news.mjs +0 -48
  597. package/dist/util/news.mjs.map +0 -1
  598. package/dist/util/noop.mjs +0 -6
  599. package/dist/util/noop.mjs.map +0 -1
  600. package/dist/util/simpleSearch.mjs +0 -26
  601. package/dist/util/simpleSearch.mjs.map +0 -1
  602. package/dist/util/storage.mjs +0 -38
  603. package/dist/util/storage.mjs.map +0 -1
  604. package/dist/util/types.mjs +0 -1
  605. package/dist/util/types.mjs.map +0 -1
  606. /package/dist/coloring/{types.d.mts → types.d.cts} +0 -0
  607. /package/dist/components/{HelpwaveBadge.d.mts → branding/HelpwaveBadge.d.cts} +0 -0
  608. /package/dist/components/{HelpwaveBadge.d.ts → branding/HelpwaveBadge.d.ts} +0 -0
  609. /package/dist/components/{Circle.d.mts → icons-and-geometry/Circle.d.cts} +0 -0
  610. /package/dist/components/{Circle.d.ts → icons-and-geometry/Circle.d.ts} +0 -0
  611. /package/dist/components/{icons/Helpwave.d.mts → icons-and-geometry/Helpwave.d.cts} +0 -0
  612. /package/dist/components/{icons → icons-and-geometry}/Helpwave.d.ts +0 -0
  613. /package/dist/components/{Ring.d.mts → icons-and-geometry/Ring.d.cts} +0 -0
  614. /package/dist/components/{Ring.d.ts → icons-and-geometry/Ring.d.ts} +0 -0
  615. /package/dist/components/{icons/Tag.d.mts → icons-and-geometry/Tag.d.cts} +0 -0
  616. /package/dist/components/{icons → icons-and-geometry}/Tag.d.ts +0 -0
  617. /package/dist/components/{BreadCrumb.d.mts → layout-and-navigation/BreadCrumb.d.cts} +0 -0
  618. /package/dist/components/{BreadCrumb.d.ts → layout-and-navigation/BreadCrumb.d.ts} +0 -0
  619. /package/dist/components/{layout/Carousel.d.mts → layout-and-navigation/Carousel.d.cts} +0 -0
  620. /package/dist/components/{layout → layout-and-navigation}/Carousel.d.ts +0 -0
  621. /package/dist/components/{ChipList.d.mts → layout-and-navigation/Chip.d.cts} +0 -0
  622. /package/dist/components/{ChipList.d.ts → layout-and-navigation/Chip.d.ts} +0 -0
  623. /package/dist/components/{layout/DividerInserter.d.mts → layout-and-navigation/DividerInserter.d.cts} +0 -0
  624. /package/dist/components/{layout → layout-and-navigation}/DividerInserter.d.ts +0 -0
  625. /package/dist/components/{Expandable.d.mts → layout-and-navigation/Expandable.d.cts} +0 -0
  626. /package/dist/components/{Expandable.d.ts → layout-and-navigation/Expandable.d.ts} +0 -0
  627. /package/dist/components/{MarkdownInterpreter.d.mts → layout-and-navigation/MarkdownInterpreter.d.cts} +0 -0
  628. /package/dist/components/{MarkdownInterpreter.d.ts → layout-and-navigation/MarkdownInterpreter.d.ts} +0 -0
  629. /package/dist/components/{layout/Tile.d.mts → layout-and-navigation/Tile.d.cts} +0 -0
  630. /package/dist/components/{layout → layout-and-navigation}/Tile.d.ts +0 -0
  631. /package/dist/components/{VerticalDivider.d.mts → layout-and-navigation/VerticalDivider.d.cts} +0 -0
  632. /package/dist/components/{VerticalDivider.d.ts → layout-and-navigation/VerticalDivider.d.ts} +0 -0
  633. /package/dist/components/{ProgressIndicator.d.mts → loading-states/ProgressIndicator.d.cts} +0 -0
  634. /package/dist/components/{ProgressIndicator.d.ts → loading-states/ProgressIndicator.d.ts} +0 -0
  635. /package/dist/components/{user-input/Menu.d.mts → user-action/Menu.d.cts} +0 -0
  636. /package/dist/components/{user-input → user-action}/Menu.d.ts +0 -0
  637. /package/dist/components/{user-input/ScrollPicker.d.mts → user-action/ScrollPicker.d.cts} +0 -0
  638. /package/dist/components/{user-input → user-action}/ScrollPicker.d.ts +0 -0
  639. /package/dist/components/{user-input/ToggleableInput.d.mts → user-action/ToggleableInput.d.cts} +0 -0
  640. /package/dist/components/{user-input → user-action}/ToggleableInput.d.ts +0 -0
  641. /package/dist/hooks/{useHoverState.d.mts → useHoverState.d.cts} +0 -0
  642. /package/dist/hooks/{useLocalStorage.d.mts → useLocalStorage.d.cts} +0 -0
  643. /package/dist/hooks/{useOutsideClick.d.mts → useOutsideClick.d.cts} +0 -0
  644. /package/dist/hooks/{useSaveDelay.d.mts → useSaveDelay.d.cts} +0 -0
  645. /package/dist/util/{array.d.mts → array.d.cts} +0 -0
  646. /package/dist/util/{builder.d.mts → builder.d.cts} +0 -0
  647. /package/dist/util/{date.d.mts → date.d.cts} +0 -0
  648. /package/dist/util/{easeFunctions.d.mts → easeFunctions.d.cts} +0 -0
  649. /package/dist/util/{emailValidation.d.mts → emailValidation.d.cts} +0 -0
  650. /package/dist/util/{loopingArray.d.mts → loopingArray.d.cts} +0 -0
  651. /package/dist/util/{math.d.mts → math.d.cts} +0 -0
  652. /package/dist/util/{noop.d.mts → noop.d.cts} +0 -0
  653. /package/dist/util/{simpleSearch.d.mts → simpleSearch.d.cts} +0 -0
  654. /package/dist/util/{storage.d.mts → storage.d.cts} +0 -0
  655. /package/dist/util/{types.d.mts → types.d.cts} +0 -0
@@ -1,91 +0,0 @@
1
- // src/components/HelpwaveBadge.tsx
2
- import clsx3 from "clsx";
3
-
4
- // src/components/icons/Helpwave.tsx
5
- import { clsx } from "clsx";
6
- import { jsx, jsxs } from "react/jsx-runtime";
7
- var Helpwave = ({
8
- color = "currentColor",
9
- animate = "none",
10
- size = 64,
11
- ...props
12
- }) => {
13
- const isLoadingAnimation = animate === "loading";
14
- let svgAnimationKey = "";
15
- if (animate === "pulse") {
16
- svgAnimationKey = "animate-pulse";
17
- } else if (animate === "bounce") {
18
- svgAnimationKey = "animate-bounce";
19
- }
20
- if (size < 0) {
21
- console.error("size cannot be less than 0");
22
- size = 64;
23
- }
24
- return /* @__PURE__ */ jsx(
25
- "svg",
26
- {
27
- width: size,
28
- height: size,
29
- viewBox: "0 0 888 888",
30
- fill: "none",
31
- strokeLinecap: "round",
32
- strokeWidth: 48,
33
- ...props,
34
- children: /* @__PURE__ */ jsxs("g", { className: clsx(svgAnimationKey), children: [
35
- /* @__PURE__ */ jsx("path", { className: clsx({ "animate-wave-big-left-up": isLoadingAnimation }), d: "M144 543.235C144 423.259 232.164 326 340.92 326", stroke: color, strokeDasharray: "1000" }),
36
- /* @__PURE__ */ jsx("path", { className: clsx({ "animate-wave-big-right-down": isLoadingAnimation }), d: "M537.84 544.104C429.084 544.104 340.92 446.844 340.92 326.869", stroke: color, strokeDasharray: "1000" }),
37
- /* @__PURE__ */ jsx("path", { className: clsx({ "animate-wave-small-left-up": isLoadingAnimation }), d: "M462.223 518.035C462.223 432.133 525.348 362.495 603.217 362.495", stroke: color, strokeDasharray: "1000" }),
38
- /* @__PURE__ */ jsx("path", { className: clsx({ "animate-wave-small-right-down": isLoadingAnimation }), d: "M745.001 519.773C666.696 519.773 603.218 450.136 603.218 364.233", stroke: color, strokeDasharray: "1000" })
39
- ] })
40
- }
41
- );
42
- };
43
-
44
- // src/components/layout/Tile.tsx
45
- import Image from "next/image";
46
- import clsx2 from "clsx";
47
- import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
48
- var Tile = ({
49
- title,
50
- description,
51
- prefix,
52
- suffix,
53
- className
54
- }) => {
55
- return /* @__PURE__ */ jsxs2("div", { className: clsx2("row gap-x-4 w-full items-center", className), children: [
56
- prefix,
57
- /* @__PURE__ */ jsxs2("div", { className: "col w-full", children: [
58
- /* @__PURE__ */ jsx2("span", { className: clsx2(title.className), children: title.value }),
59
- !!description && /* @__PURE__ */ jsx2("span", { className: clsx2(description.className ?? "textstyle-description"), children: description.value })
60
- ] }),
61
- suffix
62
- ] });
63
- };
64
-
65
- // src/components/HelpwaveBadge.tsx
66
- import { jsx as jsx3 } from "react/jsx-runtime";
67
- var HelpwaveBadge = ({
68
- size = "small",
69
- title = "helpwave",
70
- className = ""
71
- }) => {
72
- const iconSize = size === "small" ? 24 : 64;
73
- return /* @__PURE__ */ jsx3(
74
- Tile,
75
- {
76
- prefix: /* @__PURE__ */ jsx3(Helpwave, { size: iconSize }),
77
- title: { value: title, className: size === "small" ? "textstyle-title-lg text-base" : "textstyle-title-xl" },
78
- className: clsx3(
79
- {
80
- "px-2 py-1 rounded-md": size === "small",
81
- "px-4 py-1 rounded-md": size === "large"
82
- },
83
- className
84
- )
85
- }
86
- );
87
- };
88
- export {
89
- HelpwaveBadge
90
- };
91
- //# sourceMappingURL=HelpwaveBadge.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/components/HelpwaveBadge.tsx","../../src/components/icons/Helpwave.tsx","../../src/components/layout/Tile.tsx"],"sourcesContent":["import clsx from 'clsx'\nimport { Helpwave } from './icons/Helpwave'\nimport { Tile } from './layout/Tile'\n\ntype Size = 'small' | 'large'\n\nexport type HelpwaveBadgeProps = {\n size?: Size,\n title?: string,\n className?: string,\n}\n\n/**\n * A Badge with the helpwave logo and the helpwave name\n */\nexport const HelpwaveBadge = ({\n size = 'small',\n title = 'helpwave',\n className = ''\n}: HelpwaveBadgeProps) => {\n const iconSize: number = size === 'small' ? 24 : 64\n\n return (\n <Tile\n prefix={(<Helpwave size={iconSize} />)}\n title={{ value: title, className: size === 'small' ? 'textstyle-title-lg text-base' : 'textstyle-title-xl' }}\n className={clsx(\n {\n 'px-2 py-1 rounded-md': size === 'small',\n 'px-4 py-1 rounded-md': size === 'large',\n }, className\n)}\n />\n )\n}\n","import type { SVGProps } from 'react'\nimport { clsx } from 'clsx'\n\nexport type HelpwaveProps = SVGProps<SVGSVGElement> & {\n color?: string,\n animate?: 'none' | 'loading' | 'pulse' | 'bounce',\n size?: number,\n}\n\n/**\n * The helpwave loading spinner based on the svg logo.\n */\nexport const Helpwave = ({\n color = 'currentColor',\n animate = 'none',\n size = 64,\n ...props\n}: HelpwaveProps) => {\n const isLoadingAnimation = animate === 'loading'\n let svgAnimationKey = ''\n\n if (animate === 'pulse') {\n svgAnimationKey = 'animate-pulse'\n } else if (animate === 'bounce') {\n svgAnimationKey = 'animate-bounce'\n }\n\n if (size < 0) {\n console.error('size cannot be less than 0')\n size = 64\n }\n\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 888 888\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeWidth={48}\n {...props}\n >\n <g className={clsx(svgAnimationKey)}>\n <path className={clsx({ 'animate-wave-big-left-up': isLoadingAnimation })} d=\"M144 543.235C144 423.259 232.164 326 340.92 326\" stroke={color} strokeDasharray=\"1000\" />\n <path className={clsx({ 'animate-wave-big-right-down': isLoadingAnimation })} d=\"M537.84 544.104C429.084 544.104 340.92 446.844 340.92 326.869\" stroke={color} strokeDasharray=\"1000\" />\n <path className={clsx({ 'animate-wave-small-left-up': isLoadingAnimation })} d=\"M462.223 518.035C462.223 432.133 525.348 362.495 603.217 362.495\" stroke={color} strokeDasharray=\"1000\" />\n <path className={clsx({ 'animate-wave-small-right-down': isLoadingAnimation })} d=\"M745.001 519.773C666.696 519.773 603.218 450.136 603.218 364.233\" stroke={color} strokeDasharray=\"1000\" />\n </g>\n </svg>\n )\n}\n","import type { ReactNode } from 'react'\nimport Image from 'next/image'\nimport clsx from 'clsx'\n\nexport type TileProps = {\n title: { value: string, className?: string },\n description?: { value: string, className?: string },\n prefix?: ReactNode,\n suffix?: ReactNode,\n className?: string,\n}\n\n/**\n * A component for creating a tile similar to the flutter ListTile\n */\nexport const Tile = ({\n title,\n description,\n prefix,\n suffix,\n className\n}: TileProps) => {\n return (\n <div className={clsx('row gap-x-4 w-full items-center', className)}>\n {prefix}\n <div className=\"col w-full\">\n <span className={clsx(title.className)}>{title.value}</span>\n {!!description &&\n <span className={clsx(description.className ?? 'textstyle-description')}>{description.value}</span>}\n </div>\n {suffix}\n </div>\n )\n}\n\ntype ImageLocation = 'prefix' | 'suffix'\ntype ImageSize = {\n width: number,\n height: number,\n}\n\nexport type TileWithImageProps = Omit<TileProps, 'suffix' | 'prefix'> & {\n url: string,\n imageLocation?: ImageLocation,\n imageSize?: ImageSize,\n imageClassName?: string,\n}\n\n/**\n * A Tile with an image as prefix or suffix\n */\nexport const TileWithImage = ({\n url,\n imageLocation = 'prefix',\n imageSize = { width: 24, height: 24 },\n imageClassName = '',\n ...tileProps\n}: TileWithImageProps) => {\n const image = <Image src={url} alt=\"\" {...imageSize} className={clsx(imageClassName)}/>\n return (\n <Tile\n {...tileProps}\n prefix={imageLocation === 'prefix' ? image : undefined}\n suffix={imageLocation === 'suffix' ? image : undefined}\n />\n )\n}\n"],"mappings":";AAAA,OAAOA,WAAU;;;ACCjB,SAAS,YAAY;AAyCf,SACE,KADF;AA9BC,IAAM,WAAW,CAAC;AAAA,EACvB,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,OAAO;AAAA,EACP,GAAG;AACL,MAAqB;AACnB,QAAM,qBAAqB,YAAY;AACvC,MAAI,kBAAkB;AAEtB,MAAI,YAAY,SAAS;AACvB,sBAAkB;AAAA,EACpB,WAAW,YAAY,UAAU;AAC/B,sBAAkB;AAAA,EACpB;AAEA,MAAI,OAAO,GAAG;AACZ,YAAQ,MAAM,4BAA4B;AAC1C,WAAO;AAAA,EACT;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,eAAc;AAAA,MACd,aAAa;AAAA,MACZ,GAAG;AAAA,MAEJ,+BAAC,OAAE,WAAW,KAAK,eAAe,GAChC;AAAA,4BAAC,UAAK,WAAW,KAAK,EAAE,4BAA4B,mBAAmB,CAAC,GAAG,GAAE,mDAAkD,QAAQ,OAAO,iBAAgB,QAAO;AAAA,QACrK,oBAAC,UAAK,WAAW,KAAK,EAAE,+BAA+B,mBAAmB,CAAC,GAAG,GAAE,iEAAgE,QAAQ,OAAO,iBAAgB,QAAO;AAAA,QACtL,oBAAC,UAAK,WAAW,KAAK,EAAE,8BAA8B,mBAAmB,CAAC,GAAG,GAAE,oEAAmE,QAAQ,OAAO,iBAAgB,QAAO;AAAA,QACxL,oBAAC,UAAK,WAAW,KAAK,EAAE,iCAAiC,mBAAmB,CAAC,GAAG,GAAE,oEAAmE,QAAQ,OAAO,iBAAgB,QAAO;AAAA,SAC7L;AAAA;AAAA,EACF;AAEJ;;;ACjDA,OAAO,WAAW;AAClB,OAAOC,WAAU;AAuBX,SACE,OAAAC,MADF,QAAAC,aAAA;AAVC,IAAM,OAAO,CAAC;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAiB;AACf,SACE,gBAAAA,MAAC,SAAI,WAAWF,MAAK,mCAAmC,SAAS,GAC9D;AAAA;AAAA,IACD,gBAAAE,MAAC,SAAI,WAAU,cACb;AAAA,sBAAAD,KAAC,UAAK,WAAWD,MAAK,MAAM,SAAS,GAAI,gBAAM,OAAM;AAAA,MACpD,CAAC,CAAC,eACD,gBAAAC,KAAC,UAAK,WAAWD,MAAK,YAAY,aAAa,uBAAuB,GAAI,sBAAY,OAAM;AAAA,OAChG;AAAA,IACC;AAAA,KACH;AAEJ;;;AFTe,gBAAAG,YAAA;AATR,IAAM,gBAAgB,CAAC;AAAA,EAC5B,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,YAAY;AACd,MAA0B;AACxB,QAAM,WAAmB,SAAS,UAAU,KAAK;AAEjD,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,QAAS,gBAAAA,KAAC,YAAS,MAAM,UAAU;AAAA,MACnC,OAAO,EAAE,OAAO,OAAO,WAAW,SAAS,UAAU,iCAAiC,qBAAqB;AAAA,MAC3G,WAAWC;AAAA,QACT;AAAA,UACE,wBAAwB,SAAS;AAAA,UACjC,wBAAwB,SAAS;AAAA,QACnC;AAAA,QAAG;AAAA,MACX;AAAA;AAAA,EACI;AAEJ;","names":["clsx","clsx","jsx","jsxs","jsx","clsx"]}
@@ -1,14 +0,0 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { PropsWithChildren, ReactNode } from 'react';
3
-
4
- type HideableContentSectionProps = PropsWithChildren & {
5
- initiallyOpen?: boolean;
6
- disabled: boolean;
7
- header: ReactNode;
8
- };
9
- /**
10
- * A Component to hide and show
11
- */
12
- declare const HideableContentSection: ({ initiallyOpen, disabled, children, header }: HideableContentSectionProps) => react_jsx_runtime.JSX.Element;
13
-
14
- export { HideableContentSection, type HideableContentSectionProps };
@@ -1,14 +0,0 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { PropsWithChildren, ReactNode } from 'react';
3
-
4
- type HideableContentSectionProps = PropsWithChildren & {
5
- initiallyOpen?: boolean;
6
- disabled: boolean;
7
- header: ReactNode;
8
- };
9
- /**
10
- * A Component to hide and show
11
- */
12
- declare const HideableContentSection: ({ initiallyOpen, disabled, children, header }: HideableContentSectionProps) => react_jsx_runtime.JSX.Element;
13
-
14
- export { HideableContentSection, type HideableContentSectionProps };
@@ -1,70 +0,0 @@
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
- // src/components/HideableContentSection.tsx
31
- var HideableContentSection_exports = {};
32
- __export(HideableContentSection_exports, {
33
- HideableContentSection: () => HideableContentSection
34
- });
35
- module.exports = __toCommonJS(HideableContentSection_exports);
36
- var import_react = require("react");
37
- var import_lucide_react = require("lucide-react");
38
- var import_clsx = __toESM(require("clsx"));
39
- var import_jsx_runtime = require("react/jsx-runtime");
40
- var HideableContentSection = ({
41
- initiallyOpen = true,
42
- disabled,
43
- children,
44
- header
45
- }) => {
46
- const [open, setOpen] = (0, import_react.useState)(initiallyOpen);
47
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "col", children: [
48
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
49
- "div",
50
- {
51
- className: (0, import_clsx.default)("row justify-between items-center", { "cursor-pointer": !disabled }),
52
- onClick: () => {
53
- if (!disabled) {
54
- setOpen(!open);
55
- }
56
- },
57
- children: [
58
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { children: header }),
59
- !disabled && (open ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.ChevronUp, {}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.ChevronDown, {}))
60
- ]
61
- }
62
- ),
63
- open && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { children })
64
- ] });
65
- };
66
- // Annotate the CommonJS export names for ESM import in node:
67
- 0 && (module.exports = {
68
- HideableContentSection
69
- });
70
- //# sourceMappingURL=HideableContentSection.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/components/HideableContentSection.tsx"],"sourcesContent":["import { useState, type PropsWithChildren, type ReactNode } from 'react'\nimport { ChevronDown, ChevronUp } from 'lucide-react'\nimport clsx from 'clsx'\n\nexport type HideableContentSectionProps = PropsWithChildren & {\n initiallyOpen?: boolean,\n disabled: boolean,\n header: ReactNode,\n}\n\n/**\n * A Component to hide and show\n */\nexport const HideableContentSection = ({\n initiallyOpen = true,\n disabled,\n children,\n header\n}: HideableContentSectionProps) => {\n const [open, setOpen] = useState(initiallyOpen)\n return (\n <div className=\"col\">\n <div\n className={clsx('row justify-between items-center', { 'cursor-pointer': !disabled })}\n onClick={() => {\n if (!disabled) {\n setOpen(!open)\n }\n }}\n >\n <div>\n {header}\n </div>\n {!disabled && (open ? <ChevronUp/> : <ChevronDown/>)}\n </div>\n {open && (\n <div>\n {children}\n </div>\n )}\n </div>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAiE;AACjE,0BAAuC;AACvC,kBAAiB;AAoBX;AATC,IAAM,yBAAyB,CAAC;AAAA,EACrC,gBAAgB;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AACF,MAAmC;AACjC,QAAM,CAAC,MAAM,OAAO,QAAI,uBAAS,aAAa;AAC9C,SACE,6CAAC,SAAI,WAAU,OACb;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,eAAW,YAAAA,SAAK,oCAAoC,EAAE,kBAAkB,CAAC,SAAS,CAAC;AAAA,QACnF,SAAS,MAAM;AACb,cAAI,CAAC,UAAU;AACb,oBAAQ,CAAC,IAAI;AAAA,UACf;AAAA,QACF;AAAA,QAEA;AAAA,sDAAC,SACE,kBACH;AAAA,UACC,CAAC,aAAa,OAAO,4CAAC,iCAAS,IAAK,4CAAC,mCAAW;AAAA;AAAA;AAAA,IACnD;AAAA,IACC,QACC,4CAAC,SACE,UACH;AAAA,KAEJ;AAEJ;","names":["clsx"]}
@@ -1,35 +0,0 @@
1
- // src/components/HideableContentSection.tsx
2
- import { useState } from "react";
3
- import { ChevronDown, ChevronUp } from "lucide-react";
4
- import clsx from "clsx";
5
- import { jsx, jsxs } from "react/jsx-runtime";
6
- var HideableContentSection = ({
7
- initiallyOpen = true,
8
- disabled,
9
- children,
10
- header
11
- }) => {
12
- const [open, setOpen] = useState(initiallyOpen);
13
- return /* @__PURE__ */ jsxs("div", { className: "col", children: [
14
- /* @__PURE__ */ jsxs(
15
- "div",
16
- {
17
- className: clsx("row justify-between items-center", { "cursor-pointer": !disabled }),
18
- onClick: () => {
19
- if (!disabled) {
20
- setOpen(!open);
21
- }
22
- },
23
- children: [
24
- /* @__PURE__ */ jsx("div", { children: header }),
25
- !disabled && (open ? /* @__PURE__ */ jsx(ChevronUp, {}) : /* @__PURE__ */ jsx(ChevronDown, {}))
26
- ]
27
- }
28
- ),
29
- open && /* @__PURE__ */ jsx("div", { children })
30
- ] });
31
- };
32
- export {
33
- HideableContentSection
34
- };
35
- //# sourceMappingURL=HideableContentSection.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/components/HideableContentSection.tsx"],"sourcesContent":["import { useState, type PropsWithChildren, type ReactNode } from 'react'\nimport { ChevronDown, ChevronUp } from 'lucide-react'\nimport clsx from 'clsx'\n\nexport type HideableContentSectionProps = PropsWithChildren & {\n initiallyOpen?: boolean,\n disabled: boolean,\n header: ReactNode,\n}\n\n/**\n * A Component to hide and show\n */\nexport const HideableContentSection = ({\n initiallyOpen = true,\n disabled,\n children,\n header\n}: HideableContentSectionProps) => {\n const [open, setOpen] = useState(initiallyOpen)\n return (\n <div className=\"col\">\n <div\n className={clsx('row justify-between items-center', { 'cursor-pointer': !disabled })}\n onClick={() => {\n if (!disabled) {\n setOpen(!open)\n }\n }}\n >\n <div>\n {header}\n </div>\n {!disabled && (open ? <ChevronUp/> : <ChevronDown/>)}\n </div>\n {open && (\n <div>\n {children}\n </div>\n )}\n </div>\n )\n}\n"],"mappings":";AAAA,SAAS,gBAAwD;AACjE,SAAS,aAAa,iBAAiB;AACvC,OAAO,UAAU;AAoBX,SAQE,KARF;AATC,IAAM,yBAAyB,CAAC;AAAA,EACrC,gBAAgB;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AACF,MAAmC;AACjC,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,aAAa;AAC9C,SACE,qBAAC,SAAI,WAAU,OACb;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,WAAW,KAAK,oCAAoC,EAAE,kBAAkB,CAAC,SAAS,CAAC;AAAA,QACnF,SAAS,MAAM;AACb,cAAI,CAAC,UAAU;AACb,oBAAQ,CAAC,IAAI;AAAA,UACf;AAAA,QACF;AAAA,QAEA;AAAA,8BAAC,SACE,kBACH;AAAA,UACC,CAAC,aAAa,OAAO,oBAAC,aAAS,IAAK,oBAAC,eAAW;AAAA;AAAA;AAAA,IACnD;AAAA,IACC,QACC,oBAAC,SACE,UACH;AAAA,KAEJ;AAEJ;","names":[]}
@@ -1,17 +0,0 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { PropsWithChildren } from 'react';
3
-
4
- type InputGroupProps = PropsWithChildren<{
5
- title: string;
6
- expanded?: boolean;
7
- isExpandable?: boolean;
8
- disabled?: boolean;
9
- onChange?: (value: boolean) => void;
10
- className?: string;
11
- }>;
12
- /**
13
- * A Component for layouting inputs in an expandable group
14
- */
15
- declare const InputGroup: ({ children, title, expanded, isExpandable, disabled, onChange, className, }: InputGroupProps) => react_jsx_runtime.JSX.Element;
16
-
17
- export { InputGroup, type InputGroupProps };
@@ -1,17 +0,0 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { PropsWithChildren } from 'react';
3
-
4
- type InputGroupProps = PropsWithChildren<{
5
- title: string;
6
- expanded?: boolean;
7
- isExpandable?: boolean;
8
- disabled?: boolean;
9
- onChange?: (value: boolean) => void;
10
- className?: string;
11
- }>;
12
- /**
13
- * A Component for layouting inputs in an expandable group
14
- */
15
- declare const InputGroup: ({ children, title, expanded, isExpandable, disabled, onChange, className, }: InputGroupProps) => react_jsx_runtime.JSX.Element;
16
-
17
- export { InputGroup, type InputGroupProps };
@@ -1,97 +0,0 @@
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
- // src/components/InputGroup.tsx
31
- var InputGroup_exports = {};
32
- __export(InputGroup_exports, {
33
- InputGroup: () => InputGroup
34
- });
35
- module.exports = __toCommonJS(InputGroup_exports);
36
- var import_react = require("react");
37
- var import_lucide_react = require("lucide-react");
38
- var import_clsx = __toESM(require("clsx"));
39
-
40
- // src/util/noop.ts
41
- var noop = () => void 0;
42
-
43
- // src/components/InputGroup.tsx
44
- var import_jsx_runtime = require("react/jsx-runtime");
45
- var InputGroup = ({
46
- children,
47
- title,
48
- expanded = true,
49
- isExpandable = true,
50
- disabled = false,
51
- onChange = noop,
52
- className = ""
53
- }) => {
54
- const [isExpanded, setIsExpanded] = (0, import_react.useState)(expanded);
55
- (0, import_react.useEffect)(() => {
56
- setIsExpanded(expanded);
57
- }, [expanded]);
58
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: (0, import_clsx.default)("col gap-y-4 p-4 bg-white rounded-xl", className), children: [
59
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
60
- "div",
61
- {
62
- className: (0, import_clsx.default)(
63
- "row justify-between items-center",
64
- {
65
- "cursor-pointer": isExpandable && !disabled,
66
- "cursor-not-allowed": disabled
67
- },
68
- {
69
- "text-primary": !disabled,
70
- "text-primary/40": disabled
71
- }
72
- ),
73
- onClick: () => {
74
- if (!isExpandable) {
75
- return;
76
- }
77
- const updatedIsExpanded = !isExpanded;
78
- onChange(updatedIsExpanded);
79
- setIsExpanded(updatedIsExpanded);
80
- },
81
- children: [
82
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "textstyle-title-md", children: title }),
83
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: (0, import_clsx.default)("rounded-full text-white w-6 h-6", {
84
- "bg-primary": isExpandable && !disabled || expanded,
85
- "bg-primary/40": disabled
86
- }), children: isExpanded ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.ChevronUp, { className: "-translate-y-[1px]", size: 24 }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.ChevronDown, { className: "translate-y-[1px]", size: 24 }) })
87
- ]
88
- }
89
- ),
90
- isExpanded && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "col gap-y-2 h-full", children })
91
- ] });
92
- };
93
- // Annotate the CommonJS export names for ESM import in node:
94
- 0 && (module.exports = {
95
- InputGroup
96
- });
97
- //# sourceMappingURL=InputGroup.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/components/InputGroup.tsx","../../src/util/noop.ts"],"sourcesContent":["import type { PropsWithChildren } from 'react'\nimport { useEffect, useState } from 'react'\nimport { ChevronDown, ChevronUp } from 'lucide-react'\nimport clsx from 'clsx'\nimport { noop } from '../util/noop'\n\nexport type InputGroupProps = PropsWithChildren<{\n title: string,\n expanded?: boolean,\n isExpandable?: boolean,\n disabled?: boolean,\n onChange?: (value: boolean) => void,\n className?: string,\n}>\n\n/**\n * A Component for layouting inputs in an expandable group\n */\nexport const InputGroup = ({\n children,\n title,\n expanded = true,\n isExpandable = true,\n disabled = false,\n onChange = noop,\n className = '',\n}: InputGroupProps) => {\n const [isExpanded, setIsExpanded] = useState<boolean>(expanded)\n\n useEffect(() => {\n setIsExpanded(expanded)\n }, [expanded])\n\n return (\n <div className={clsx('col gap-y-4 p-4 bg-white rounded-xl', className)}>\n <div\n className={clsx('row justify-between items-center', {\n 'cursor-pointer': isExpandable && !disabled,\n 'cursor-not-allowed': disabled,\n },\n {\n 'text-primary': !disabled,\n 'text-primary/40': disabled\n })}\n onClick={() => {\n if (!isExpandable) {\n return\n }\n const updatedIsExpanded = !isExpanded\n onChange(updatedIsExpanded)\n setIsExpanded(updatedIsExpanded)\n }}\n >\n <span className=\"textstyle-title-md\">{title}</span>\n <div className={clsx('rounded-full text-white w-6 h-6', {\n 'bg-primary': (isExpandable && !disabled) || expanded,\n 'bg-primary/40': disabled,\n })}>\n {isExpanded\n ? <ChevronUp className=\"-translate-y-[1px]\" size={24}/>\n : <ChevronDown className=\"translate-y-[1px]\" size={24}/>\n }\n </div>\n </div>\n {isExpanded && (\n <div className=\"col gap-y-2 h-full\">\n {children}\n </div>\n )}\n </div>\n )\n}\n","export const noop = () => undefined\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,mBAAoC;AACpC,0BAAuC;AACvC,kBAAiB;;;ACHV,IAAM,OAAO,MAAM;;;ADmCpB;AAjBC,IAAM,aAAa,CAAC;AAAA,EACzB;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,eAAe;AAAA,EACf,WAAW;AAAA,EACX,WAAW;AAAA,EACX,YAAY;AACd,MAAuB;AACrB,QAAM,CAAC,YAAY,aAAa,QAAI,uBAAkB,QAAQ;AAE9D,8BAAU,MAAM;AACd,kBAAc,QAAQ;AAAA,EACxB,GAAG,CAAC,QAAQ,CAAC;AAEb,SACE,6CAAC,SAAI,eAAW,YAAAA,SAAK,uCAAuC,SAAS,GACnE;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,eAAW,YAAAA;AAAA,UAAK;AAAA,UAAoC;AAAA,YAClD,kBAAkB,gBAAgB,CAAC;AAAA,YACnC,sBAAsB;AAAA,UACxB;AAAA,UACA;AAAA,YACE,gBAAgB,CAAC;AAAA,YACjB,mBAAmB;AAAA,UACrB;AAAA,QAAC;AAAA,QACD,SAAS,MAAM;AACb,cAAI,CAAC,cAAc;AACjB;AAAA,UACF;AACA,gBAAM,oBAAoB,CAAC;AAC3B,mBAAS,iBAAiB;AAC1B,wBAAc,iBAAiB;AAAA,QACjC;AAAA,QAEA;AAAA,sDAAC,UAAK,WAAU,sBAAsB,iBAAM;AAAA,UAC5C,4CAAC,SAAI,eAAW,YAAAA,SAAK,mCAAmC;AAAA,YACtD,cAAe,gBAAgB,CAAC,YAAa;AAAA,YAC7C,iBAAiB;AAAA,UACnB,CAAC,GACE,uBACG,4CAAC,iCAAU,WAAU,sBAAqB,MAAM,IAAG,IACnD,4CAAC,mCAAY,WAAU,qBAAoB,MAAM,IAAG,GAE1D;AAAA;AAAA;AAAA,IACF;AAAA,IACC,cACC,4CAAC,SAAI,WAAU,sBACZ,UACH;AAAA,KAEJ;AAEJ;","names":["clsx"]}
@@ -1,62 +0,0 @@
1
- // src/components/InputGroup.tsx
2
- import { useEffect, useState } from "react";
3
- import { ChevronDown, ChevronUp } from "lucide-react";
4
- import clsx from "clsx";
5
-
6
- // src/util/noop.ts
7
- var noop = () => void 0;
8
-
9
- // src/components/InputGroup.tsx
10
- import { jsx, jsxs } from "react/jsx-runtime";
11
- var InputGroup = ({
12
- children,
13
- title,
14
- expanded = true,
15
- isExpandable = true,
16
- disabled = false,
17
- onChange = noop,
18
- className = ""
19
- }) => {
20
- const [isExpanded, setIsExpanded] = useState(expanded);
21
- useEffect(() => {
22
- setIsExpanded(expanded);
23
- }, [expanded]);
24
- return /* @__PURE__ */ jsxs("div", { className: clsx("col gap-y-4 p-4 bg-white rounded-xl", className), children: [
25
- /* @__PURE__ */ jsxs(
26
- "div",
27
- {
28
- className: clsx(
29
- "row justify-between items-center",
30
- {
31
- "cursor-pointer": isExpandable && !disabled,
32
- "cursor-not-allowed": disabled
33
- },
34
- {
35
- "text-primary": !disabled,
36
- "text-primary/40": disabled
37
- }
38
- ),
39
- onClick: () => {
40
- if (!isExpandable) {
41
- return;
42
- }
43
- const updatedIsExpanded = !isExpanded;
44
- onChange(updatedIsExpanded);
45
- setIsExpanded(updatedIsExpanded);
46
- },
47
- children: [
48
- /* @__PURE__ */ jsx("span", { className: "textstyle-title-md", children: title }),
49
- /* @__PURE__ */ jsx("div", { className: clsx("rounded-full text-white w-6 h-6", {
50
- "bg-primary": isExpandable && !disabled || expanded,
51
- "bg-primary/40": disabled
52
- }), children: isExpanded ? /* @__PURE__ */ jsx(ChevronUp, { className: "-translate-y-[1px]", size: 24 }) : /* @__PURE__ */ jsx(ChevronDown, { className: "translate-y-[1px]", size: 24 }) })
53
- ]
54
- }
55
- ),
56
- isExpanded && /* @__PURE__ */ jsx("div", { className: "col gap-y-2 h-full", children })
57
- ] });
58
- };
59
- export {
60
- InputGroup
61
- };
62
- //# sourceMappingURL=InputGroup.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/components/InputGroup.tsx","../../src/util/noop.ts"],"sourcesContent":["import type { PropsWithChildren } from 'react'\nimport { useEffect, useState } from 'react'\nimport { ChevronDown, ChevronUp } from 'lucide-react'\nimport clsx from 'clsx'\nimport { noop } from '../util/noop'\n\nexport type InputGroupProps = PropsWithChildren<{\n title: string,\n expanded?: boolean,\n isExpandable?: boolean,\n disabled?: boolean,\n onChange?: (value: boolean) => void,\n className?: string,\n}>\n\n/**\n * A Component for layouting inputs in an expandable group\n */\nexport const InputGroup = ({\n children,\n title,\n expanded = true,\n isExpandable = true,\n disabled = false,\n onChange = noop,\n className = '',\n}: InputGroupProps) => {\n const [isExpanded, setIsExpanded] = useState<boolean>(expanded)\n\n useEffect(() => {\n setIsExpanded(expanded)\n }, [expanded])\n\n return (\n <div className={clsx('col gap-y-4 p-4 bg-white rounded-xl', className)}>\n <div\n className={clsx('row justify-between items-center', {\n 'cursor-pointer': isExpandable && !disabled,\n 'cursor-not-allowed': disabled,\n },\n {\n 'text-primary': !disabled,\n 'text-primary/40': disabled\n })}\n onClick={() => {\n if (!isExpandable) {\n return\n }\n const updatedIsExpanded = !isExpanded\n onChange(updatedIsExpanded)\n setIsExpanded(updatedIsExpanded)\n }}\n >\n <span className=\"textstyle-title-md\">{title}</span>\n <div className={clsx('rounded-full text-white w-6 h-6', {\n 'bg-primary': (isExpandable && !disabled) || expanded,\n 'bg-primary/40': disabled,\n })}>\n {isExpanded\n ? <ChevronUp className=\"-translate-y-[1px]\" size={24}/>\n : <ChevronDown className=\"translate-y-[1px]\" size={24}/>\n }\n </div>\n </div>\n {isExpanded && (\n <div className=\"col gap-y-2 h-full\">\n {children}\n </div>\n )}\n </div>\n )\n}\n","export const noop = () => undefined\n"],"mappings":";AACA,SAAS,WAAW,gBAAgB;AACpC,SAAS,aAAa,iBAAiB;AACvC,OAAO,UAAU;;;ACHV,IAAM,OAAO,MAAM;;;ADmCpB,SAkBE,KAlBF;AAjBC,IAAM,aAAa,CAAC;AAAA,EACzB;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,eAAe;AAAA,EACf,WAAW;AAAA,EACX,WAAW;AAAA,EACX,YAAY;AACd,MAAuB;AACrB,QAAM,CAAC,YAAY,aAAa,IAAI,SAAkB,QAAQ;AAE9D,YAAU,MAAM;AACd,kBAAc,QAAQ;AAAA,EACxB,GAAG,CAAC,QAAQ,CAAC;AAEb,SACE,qBAAC,SAAI,WAAW,KAAK,uCAAuC,SAAS,GACnE;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,UAAK;AAAA,UAAoC;AAAA,YAClD,kBAAkB,gBAAgB,CAAC;AAAA,YACnC,sBAAsB;AAAA,UACxB;AAAA,UACA;AAAA,YACE,gBAAgB,CAAC;AAAA,YACjB,mBAAmB;AAAA,UACrB;AAAA,QAAC;AAAA,QACD,SAAS,MAAM;AACb,cAAI,CAAC,cAAc;AACjB;AAAA,UACF;AACA,gBAAM,oBAAoB,CAAC;AAC3B,mBAAS,iBAAiB;AAC1B,wBAAc,iBAAiB;AAAA,QACjC;AAAA,QAEA;AAAA,8BAAC,UAAK,WAAU,sBAAsB,iBAAM;AAAA,UAC5C,oBAAC,SAAI,WAAW,KAAK,mCAAmC;AAAA,YACtD,cAAe,gBAAgB,CAAC,YAAa;AAAA,YAC7C,iBAAiB;AAAA,UACnB,CAAC,GACE,uBACG,oBAAC,aAAU,WAAU,sBAAqB,MAAM,IAAG,IACnD,oBAAC,eAAY,WAAU,qBAAoB,MAAM,IAAG,GAE1D;AAAA;AAAA;AAAA,IACF;AAAA,IACC,cACC,oBAAC,SAAI,WAAU,sBACZ,UACH;AAAA,KAEJ;AAEJ;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/components/LoadingAndErrorComponent.tsx","../../src/hooks/useLanguage.tsx","../../src/hooks/useLocalStorage.tsx","../../src/hooks/useTranslation.ts","../../src/components/icons/Helpwave.tsx","../../src/components/LoadingAnimation.tsx","../../src/components/ErrorComponent.tsx"],"sourcesContent":["import type { PropsWithChildren } from 'react'\nimport { useState } from 'react'\nimport type { LoadingAnimationProps } from './LoadingAnimation'\nimport type { ErrorComponentProps } from './ErrorComponent'\nimport { LoadingAnimation } from './LoadingAnimation'\nimport { ErrorComponent } from './ErrorComponent'\n\nexport type LoadingAndErrorComponentProps = PropsWithChildren<{\n isLoading?: boolean,\n hasError?: boolean,\n loadingProps?: LoadingAnimationProps,\n errorProps?: ErrorComponentProps,\n /**\n * in milliseconds\n */\n minimumLoadingDuration?: number,\n}>\n\n/**\n * A Component that shows the Error and Loading animation, when appropriate and the children otherwise\n */\nexport const LoadingAndErrorComponent = ({\n children,\n isLoading = false,\n hasError = false,\n errorProps,\n loadingProps,\n minimumLoadingDuration\n}: LoadingAndErrorComponentProps) => {\n const [isInMinimumLoading, setIsInMinimumLoading] = useState(false)\n const [hasUsedMinimumLoading, setHasUsedMinimumLoading] = useState(false)\n if (minimumLoadingDuration && !isInMinimumLoading && !hasUsedMinimumLoading) {\n setIsInMinimumLoading(true)\n setTimeout(() => {\n setIsInMinimumLoading(false)\n setHasUsedMinimumLoading(true)\n }, minimumLoadingDuration)\n }\n\n if (isLoading || (minimumLoadingDuration && isInMinimumLoading)) {\n return <LoadingAnimation {...loadingProps}/>\n }\n if (hasError) {\n return <ErrorComponent {...errorProps}/>\n }\n return children\n}\n","import type { Dispatch, PropsWithChildren, SetStateAction } from 'react'\nimport { createContext, useContext, useEffect, useState } from 'react'\nimport { useLocalStorage } from './useLocalStorage'\n\nexport const languages = ['en', 'de'] as const\nexport type Languages = typeof languages[number]\nexport const languagesLocalNames: Record<Languages, string> = {\n en: 'English',\n de: 'Deutsch',\n}\n\nexport const DEFAULT_LANGUAGE = 'en'\n\nexport type LanguageContextValue = {\n language: Languages,\n setLanguage: Dispatch<SetStateAction<Languages>>,\n}\n\nexport const LanguageContext = createContext<LanguageContextValue>({ language: DEFAULT_LANGUAGE, setLanguage: (v) => v })\n\nexport const useLanguage = () => useContext(LanguageContext)\n\nexport const useLocale = (overWriteLanguage?: Languages) => {\n const { language } = useLanguage()\n const mapping: Record<Languages, string> = {\n en: 'en-US',\n de: 'de-DE'\n }\n return mapping[overWriteLanguage ?? language]\n}\n\ntype ProvideLanguageProps = {\n initialLanguage?: Languages,\n}\n\nexport const ProvideLanguage = ({ initialLanguage, children }: PropsWithChildren<ProvideLanguageProps>) => {\n const [language, setLanguage] = useState<Languages>(initialLanguage ?? DEFAULT_LANGUAGE)\n const [storedLanguage, setStoredLanguage] = useLocalStorage<Languages>('language', initialLanguage ?? DEFAULT_LANGUAGE)\n\n useEffect(() => {\n if(language !== initialLanguage && initialLanguage){\n console.warn('LanguageProvider initial state changed: Prefer using useLanguages\\'s setLanguage instead')\n setLanguage(initialLanguage)\n }\n }, [initialLanguage]) // eslint-disable-line react-hooks/exhaustive-deps\n\n useEffect(() => {\n // TODO set locale of html tag here as well\n setStoredLanguage(language)\n }, [language, setStoredLanguage])\n\n useEffect(() => {\n if (storedLanguage !== null) {\n setLanguage(storedLanguage)\n return\n }\n\n const languagesToTestAgainst = Object.values(languages)\n\n const matchingBrowserLanguages = window.navigator.languages\n .map(language => languagesToTestAgainst.find((test) => language === test || language.split('-')[0] === test))\n .filter(entry => entry !== undefined)\n\n if (matchingBrowserLanguages.length === 0) return\n\n const firstMatch = matchingBrowserLanguages[0] as Languages\n setLanguage(firstMatch)\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n return (\n <LanguageContext.Provider value={{\n language,\n setLanguage\n }}>\n {children}\n </LanguageContext.Provider>\n )\n}\n","import type { Dispatch, SetStateAction } from 'react'\nimport { useCallback, useEffect, useState } from 'react'\nimport { LocalStorageService } from '../util/storage'\n\ntype SetValue<T> = Dispatch<SetStateAction<T>>\nexport const useLocalStorage = <T, >(key: string, initValue: T): [T, SetValue<T>] => {\n const get = useCallback((): T => {\n if (typeof window === 'undefined') {\n return initValue\n }\n const storageService = new LocalStorageService()\n const value = storageService.get<T>(key)\n return value || initValue\n }, [initValue, key])\n\n const [storedValue, setStoredValue] = useState<T>(get)\n\n const setValue: SetValue<T> = useCallback(value => {\n const newValue = value instanceof Function ? value(storedValue) : value\n const storageService = new LocalStorageService()\n storageService.set(key, value)\n\n setStoredValue(newValue)\n }, [storedValue, setStoredValue, key])\n\n useEffect(() => {\n setStoredValue(get())\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n return [storedValue, setValue]\n}","import type { Languages } from './useLanguage'\nimport { useLanguage } from './useLanguage'\n\nexport type Translation<T> = Record<Languages, T>\n\ntype OverwriteTranslationType<Translation extends Record<string, unknown>> = {\n language?: Languages,\n translation?: Partial<Record<Languages, Partial<Translation>>>,\n}\n\n/**\n * Adds the `language` prop to the component props.\n *\n * @param Translation the type of the translation object\n *\n * @param Props the type of the component props, defaults to `Record<string, never>`,\n * if you don't expect any other props other than `language` and get an\n * error when using your component (because it uses `forwardRef` etc.)\n * you can try out `Record<string, unknown>`, this might resolve your\n * problem as `SomeType & never` is still `never` but `SomeType & unknown`\n * is `SomeType` which means that adding back props (like `ref` etc.)\n * works properly\n */\nexport type PropsForTranslation<\n Translation extends Record<string, unknown>,\n Props = Record<string, never>\n> = Props & {\n overwriteTranslation?: OverwriteTranslationType<Translation>,\n};\n\nexport const useTranslation = <Translation extends Record<string, unknown>>(\n defaults: Record<Languages, Translation>,\n translationOverwrite: OverwriteTranslationType<Translation> = {}\n) : Translation => {\n const { language: languageProp, translation: overwrite } = translationOverwrite\n const { language: inferredLanguage } = useLanguage()\n const usedLanguage = languageProp ?? inferredLanguage\n let defaultValues: Translation = defaults[usedLanguage]\n if (overwrite && overwrite[usedLanguage]) {\n defaultValues = { ...defaultValues, ...overwrite[usedLanguage] }\n }\n return defaultValues\n}\n","import type { SVGProps } from 'react'\nimport { clsx } from 'clsx'\n\nexport type HelpwaveProps = SVGProps<SVGSVGElement> & {\n color?: string,\n animate?: 'none' | 'loading' | 'pulse' | 'bounce',\n size?: number,\n}\n\n/**\n * The helpwave loading spinner based on the svg logo.\n */\nexport const Helpwave = ({\n color = 'currentColor',\n animate = 'none',\n size = 64,\n ...props\n}: HelpwaveProps) => {\n const isLoadingAnimation = animate === 'loading'\n let svgAnimationKey = ''\n\n if (animate === 'pulse') {\n svgAnimationKey = 'animate-pulse'\n } else if (animate === 'bounce') {\n svgAnimationKey = 'animate-bounce'\n }\n\n if (size < 0) {\n console.error('size cannot be less than 0')\n size = 64\n }\n\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 888 888\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeWidth={48}\n {...props}\n >\n <g className={clsx(svgAnimationKey)}>\n <path className={clsx({ 'animate-wave-big-left-up': isLoadingAnimation })} d=\"M144 543.235C144 423.259 232.164 326 340.92 326\" stroke={color} strokeDasharray=\"1000\" />\n <path className={clsx({ 'animate-wave-big-right-down': isLoadingAnimation })} d=\"M537.84 544.104C429.084 544.104 340.92 446.844 340.92 326.869\" stroke={color} strokeDasharray=\"1000\" />\n <path className={clsx({ 'animate-wave-small-left-up': isLoadingAnimation })} d=\"M462.223 518.035C462.223 432.133 525.348 362.495 603.217 362.495\" stroke={color} strokeDasharray=\"1000\" />\n <path className={clsx({ 'animate-wave-small-right-down': isLoadingAnimation })} d=\"M745.001 519.773C666.696 519.773 603.218 450.136 603.218 364.233\" stroke={color} strokeDasharray=\"1000\" />\n </g>\n </svg>\n )\n}\n","import type { Languages } from '../hooks/useLanguage'\nimport type { PropsForTranslation } from '../hooks/useTranslation'\nimport { useTranslation } from '../hooks/useTranslation'\nimport { Helpwave } from './icons/Helpwave'\nimport clsx from 'clsx'\n\ntype LoadingAnimationTranslation = {\n loading: string,\n}\n\nconst defaultLoadingAnimationTranslation: Record<Languages, LoadingAnimationTranslation> = {\n en: {\n loading: 'Loading data'\n },\n de: {\n loading: 'Lade Daten'\n }\n}\n\nexport type LoadingAnimationProps = {\n loadingText?: string,\n classname?: string,\n}\n\n/**\n * A Component to show when loading data\n */\nexport const LoadingAnimation = ({\n overwriteTranslation,\n loadingText,\n classname\n}: PropsForTranslation<LoadingAnimationTranslation, LoadingAnimationProps>) => {\n const translation = useTranslation(defaultLoadingAnimationTranslation, overwriteTranslation)\n return (\n <div className={clsx('col items-center justify-center w-full h-24', classname)}>\n <Helpwave animate=\"loading\" />\n {loadingText ?? `${translation.loading}...`}\n </div>\n )\n}\n","import { AlertOctagon } from 'lucide-react'\nimport type { Languages } from '../hooks/useLanguage'\nimport type { PropsForTranslation } from '../hooks/useTranslation'\nimport { useTranslation } from '../hooks/useTranslation'\nimport clsx from 'clsx'\n\ntype ErrorComponentTranslation = {\n errorOccurred: string,\n}\n\nconst defaultErrorComponentTranslation: Record<Languages, ErrorComponentTranslation> = {\n en: {\n errorOccurred: 'An error occurred'\n },\n de: {\n errorOccurred: 'Ein Fehler ist aufgetreten'\n }\n}\n\nexport type ErrorComponentProps = {\n errorText?: string,\n classname?: string,\n}\n\n/**\n * The Component to show when an error occurred\n */\nexport const ErrorComponent = ({\n overwriteTranslation,\n errorText,\n classname\n}: PropsForTranslation<ErrorComponentTranslation, ErrorComponentProps>) => {\n const translation = useTranslation(defaultErrorComponentTranslation, overwriteTranslation)\n return (\n <div className={clsx('col items-center justify-center gap-y-4 w-full h-24', classname)}>\n <AlertOctagon size={64} className=\"text-warning\"/>\n {errorText ?? `${translation.errorOccurred} :(`}\n </div>\n )\n}\n"],"mappings":"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","names":["import_react","import_react","import_jsx_runtime","import_clsx","import_jsx_runtime","clsx","import_clsx","import_jsx_runtime","clsx","import_jsx_runtime"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/components/LoadingAndErrorComponent.tsx","../../src/hooks/useLanguage.tsx","../../src/hooks/useLocalStorage.tsx","../../src/hooks/useTranslation.ts","../../src/components/icons/Helpwave.tsx","../../src/components/LoadingAnimation.tsx","../../src/components/ErrorComponent.tsx"],"sourcesContent":["import type { PropsWithChildren } from 'react'\nimport { useState } from 'react'\nimport type { LoadingAnimationProps } from './LoadingAnimation'\nimport type { ErrorComponentProps } from './ErrorComponent'\nimport { LoadingAnimation } from './LoadingAnimation'\nimport { ErrorComponent } from './ErrorComponent'\n\nexport type LoadingAndErrorComponentProps = PropsWithChildren<{\n isLoading?: boolean,\n hasError?: boolean,\n loadingProps?: LoadingAnimationProps,\n errorProps?: ErrorComponentProps,\n /**\n * in milliseconds\n */\n minimumLoadingDuration?: number,\n}>\n\n/**\n * A Component that shows the Error and Loading animation, when appropriate and the children otherwise\n */\nexport const LoadingAndErrorComponent = ({\n children,\n isLoading = false,\n hasError = false,\n errorProps,\n loadingProps,\n minimumLoadingDuration\n}: LoadingAndErrorComponentProps) => {\n const [isInMinimumLoading, setIsInMinimumLoading] = useState(false)\n const [hasUsedMinimumLoading, setHasUsedMinimumLoading] = useState(false)\n if (minimumLoadingDuration && !isInMinimumLoading && !hasUsedMinimumLoading) {\n setIsInMinimumLoading(true)\n setTimeout(() => {\n setIsInMinimumLoading(false)\n setHasUsedMinimumLoading(true)\n }, minimumLoadingDuration)\n }\n\n if (isLoading || (minimumLoadingDuration && isInMinimumLoading)) {\n return <LoadingAnimation {...loadingProps}/>\n }\n if (hasError) {\n return <ErrorComponent {...errorProps}/>\n }\n return children\n}\n","import type { Dispatch, PropsWithChildren, SetStateAction } from 'react'\nimport { createContext, useContext, useEffect, useState } from 'react'\nimport { useLocalStorage } from './useLocalStorage'\n\nexport const languages = ['en', 'de'] as const\nexport type Languages = typeof languages[number]\nexport const languagesLocalNames: Record<Languages, string> = {\n en: 'English',\n de: 'Deutsch',\n}\n\nexport const DEFAULT_LANGUAGE = 'en'\n\nexport type LanguageContextValue = {\n language: Languages,\n setLanguage: Dispatch<SetStateAction<Languages>>,\n}\n\nexport const LanguageContext = createContext<LanguageContextValue>({ language: DEFAULT_LANGUAGE, setLanguage: (v) => v })\n\nexport const useLanguage = () => useContext(LanguageContext)\n\nexport const useLocale = (overWriteLanguage?: Languages) => {\n const { language } = useLanguage()\n const mapping: Record<Languages, string> = {\n en: 'en-US',\n de: 'de-DE'\n }\n return mapping[overWriteLanguage ?? language]\n}\n\ntype ProvideLanguageProps = {\n initialLanguage?: Languages,\n}\n\nexport const ProvideLanguage = ({ initialLanguage, children }: PropsWithChildren<ProvideLanguageProps>) => {\n const [language, setLanguage] = useState<Languages>(initialLanguage ?? DEFAULT_LANGUAGE)\n const [storedLanguage, setStoredLanguage] = useLocalStorage<Languages>('language', initialLanguage ?? DEFAULT_LANGUAGE)\n\n useEffect(() => {\n if(language !== initialLanguage && initialLanguage){\n console.warn('LanguageProvider initial state changed: Prefer using useLanguages\\'s setLanguage instead')\n setLanguage(initialLanguage)\n }\n }, [initialLanguage]) // eslint-disable-line react-hooks/exhaustive-deps\n\n useEffect(() => {\n // TODO set locale of html tag here as well\n setStoredLanguage(language)\n }, [language, setStoredLanguage])\n\n useEffect(() => {\n if (storedLanguage !== null) {\n setLanguage(storedLanguage)\n return\n }\n\n const languagesToTestAgainst = Object.values(languages)\n\n const matchingBrowserLanguages = window.navigator.languages\n .map(language => languagesToTestAgainst.find((test) => language === test || language.split('-')[0] === test))\n .filter(entry => entry !== undefined)\n\n if (matchingBrowserLanguages.length === 0) return\n\n const firstMatch = matchingBrowserLanguages[0] as Languages\n setLanguage(firstMatch)\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n return (\n <LanguageContext.Provider value={{\n language,\n setLanguage\n }}>\n {children}\n </LanguageContext.Provider>\n )\n}\n","import type { Dispatch, SetStateAction } from 'react'\nimport { useCallback, useEffect, useState } from 'react'\nimport { LocalStorageService } from '../util/storage'\n\ntype SetValue<T> = Dispatch<SetStateAction<T>>\nexport const useLocalStorage = <T, >(key: string, initValue: T): [T, SetValue<T>] => {\n const get = useCallback((): T => {\n if (typeof window === 'undefined') {\n return initValue\n }\n const storageService = new LocalStorageService()\n const value = storageService.get<T>(key)\n return value || initValue\n }, [initValue, key])\n\n const [storedValue, setStoredValue] = useState<T>(get)\n\n const setValue: SetValue<T> = useCallback(value => {\n const newValue = value instanceof Function ? value(storedValue) : value\n const storageService = new LocalStorageService()\n storageService.set(key, value)\n\n setStoredValue(newValue)\n }, [storedValue, setStoredValue, key])\n\n useEffect(() => {\n setStoredValue(get())\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n return [storedValue, setValue]\n}","import type { Languages } from './useLanguage'\nimport { useLanguage } from './useLanguage'\n\nexport type Translation<T> = Record<Languages, T>\n\ntype OverwriteTranslationType<Translation extends Record<string, unknown>> = {\n language?: Languages,\n translation?: Partial<Record<Languages, Partial<Translation>>>,\n}\n\n/**\n * Adds the `language` prop to the component props.\n *\n * @param Translation the type of the translation object\n *\n * @param Props the type of the component props, defaults to `Record<string, never>`,\n * if you don't expect any other props other than `language` and get an\n * error when using your component (because it uses `forwardRef` etc.)\n * you can try out `Record<string, unknown>`, this might resolve your\n * problem as `SomeType & never` is still `never` but `SomeType & unknown`\n * is `SomeType` which means that adding back props (like `ref` etc.)\n * works properly\n */\nexport type PropsForTranslation<\n Translation extends Record<string, unknown>,\n Props = Record<string, never>\n> = Props & {\n overwriteTranslation?: OverwriteTranslationType<Translation>,\n};\n\nexport const useTranslation = <Translation extends Record<string, unknown>>(\n defaults: Record<Languages, Translation>,\n translationOverwrite: OverwriteTranslationType<Translation> = {}\n) : Translation => {\n const { language: languageProp, translation: overwrite } = translationOverwrite\n const { language: inferredLanguage } = useLanguage()\n const usedLanguage = languageProp ?? inferredLanguage\n let defaultValues: Translation = defaults[usedLanguage]\n if (overwrite && overwrite[usedLanguage]) {\n defaultValues = { ...defaultValues, ...overwrite[usedLanguage] }\n }\n return defaultValues\n}\n","import type { SVGProps } from 'react'\nimport { clsx } from 'clsx'\n\nexport type HelpwaveProps = SVGProps<SVGSVGElement> & {\n color?: string,\n animate?: 'none' | 'loading' | 'pulse' | 'bounce',\n size?: number,\n}\n\n/**\n * The helpwave loading spinner based on the svg logo.\n */\nexport const Helpwave = ({\n color = 'currentColor',\n animate = 'none',\n size = 64,\n ...props\n}: HelpwaveProps) => {\n const isLoadingAnimation = animate === 'loading'\n let svgAnimationKey = ''\n\n if (animate === 'pulse') {\n svgAnimationKey = 'animate-pulse'\n } else if (animate === 'bounce') {\n svgAnimationKey = 'animate-bounce'\n }\n\n if (size < 0) {\n console.error('size cannot be less than 0')\n size = 64\n }\n\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 888 888\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeWidth={48}\n {...props}\n >\n <g className={clsx(svgAnimationKey)}>\n <path className={clsx({ 'animate-wave-big-left-up': isLoadingAnimation })} d=\"M144 543.235C144 423.259 232.164 326 340.92 326\" stroke={color} strokeDasharray=\"1000\" />\n <path className={clsx({ 'animate-wave-big-right-down': isLoadingAnimation })} d=\"M537.84 544.104C429.084 544.104 340.92 446.844 340.92 326.869\" stroke={color} strokeDasharray=\"1000\" />\n <path className={clsx({ 'animate-wave-small-left-up': isLoadingAnimation })} d=\"M462.223 518.035C462.223 432.133 525.348 362.495 603.217 362.495\" stroke={color} strokeDasharray=\"1000\" />\n <path className={clsx({ 'animate-wave-small-right-down': isLoadingAnimation })} d=\"M745.001 519.773C666.696 519.773 603.218 450.136 603.218 364.233\" stroke={color} strokeDasharray=\"1000\" />\n </g>\n </svg>\n )\n}\n","import type { Languages } from '../hooks/useLanguage'\nimport type { PropsForTranslation } from '../hooks/useTranslation'\nimport { useTranslation } from '../hooks/useTranslation'\nimport { Helpwave } from './icons/Helpwave'\nimport clsx from 'clsx'\n\ntype LoadingAnimationTranslation = {\n loading: string,\n}\n\nconst defaultLoadingAnimationTranslation: Record<Languages, LoadingAnimationTranslation> = {\n en: {\n loading: 'Loading data'\n },\n de: {\n loading: 'Lade Daten'\n }\n}\n\nexport type LoadingAnimationProps = {\n loadingText?: string,\n classname?: string,\n}\n\n/**\n * A Component to show when loading data\n */\nexport const LoadingAnimation = ({\n overwriteTranslation,\n loadingText,\n classname\n}: PropsForTranslation<LoadingAnimationTranslation, LoadingAnimationProps>) => {\n const translation = useTranslation(defaultLoadingAnimationTranslation, overwriteTranslation)\n return (\n <div className={clsx('col items-center justify-center w-full h-24', classname)}>\n <Helpwave animate=\"loading\" />\n {loadingText ?? `${translation.loading}...`}\n </div>\n )\n}\n","import { AlertOctagon } from 'lucide-react'\nimport type { Languages } from '../hooks/useLanguage'\nimport type { PropsForTranslation } from '../hooks/useTranslation'\nimport { useTranslation } from '../hooks/useTranslation'\nimport clsx from 'clsx'\n\ntype ErrorComponentTranslation = {\n errorOccurred: string,\n}\n\nconst defaultErrorComponentTranslation: Record<Languages, ErrorComponentTranslation> = {\n en: {\n errorOccurred: 'An error occurred'\n },\n de: {\n errorOccurred: 'Ein Fehler ist aufgetreten'\n }\n}\n\nexport type ErrorComponentProps = {\n errorText?: string,\n classname?: string,\n}\n\n/**\n * The Component to show when an error occurred\n */\nexport const ErrorComponent = ({\n overwriteTranslation,\n errorText,\n classname\n}: PropsForTranslation<ErrorComponentTranslation, ErrorComponentProps>) => {\n const translation = useTranslation(defaultErrorComponentTranslation, overwriteTranslation)\n return (\n <div className={clsx('col items-center justify-center gap-y-4 w-full h-24', classname)}>\n <AlertOctagon size={64} className=\"text-warning\"/>\n {errorText ?? `${translation.errorOccurred} :(`}\n </div>\n )\n}\n"],"mappings":"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","names":["useState","useEffect","useState","jsx","clsx","jsx","jsxs","clsx","jsx","jsxs","jsx","useState"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/components/LoadingAnimation.tsx","../../src/hooks/useLanguage.tsx","../../src/hooks/useLocalStorage.tsx","../../src/hooks/useTranslation.ts","../../src/components/icons/Helpwave.tsx"],"sourcesContent":["import type { Languages } from '../hooks/useLanguage'\nimport type { PropsForTranslation } from '../hooks/useTranslation'\nimport { useTranslation } from '../hooks/useTranslation'\nimport { Helpwave } from './icons/Helpwave'\nimport clsx from 'clsx'\n\ntype LoadingAnimationTranslation = {\n loading: string,\n}\n\nconst defaultLoadingAnimationTranslation: Record<Languages, LoadingAnimationTranslation> = {\n en: {\n loading: 'Loading data'\n },\n de: {\n loading: 'Lade Daten'\n }\n}\n\nexport type LoadingAnimationProps = {\n loadingText?: string,\n classname?: string,\n}\n\n/**\n * A Component to show when loading data\n */\nexport const LoadingAnimation = ({\n overwriteTranslation,\n loadingText,\n classname\n}: PropsForTranslation<LoadingAnimationTranslation, LoadingAnimationProps>) => {\n const translation = useTranslation(defaultLoadingAnimationTranslation, overwriteTranslation)\n return (\n <div className={clsx('col items-center justify-center w-full h-24', classname)}>\n <Helpwave animate=\"loading\" />\n {loadingText ?? `${translation.loading}...`}\n </div>\n )\n}\n","import type { Dispatch, PropsWithChildren, SetStateAction } from 'react'\nimport { createContext, useContext, useEffect, useState } from 'react'\nimport { useLocalStorage } from './useLocalStorage'\n\nexport const languages = ['en', 'de'] as const\nexport type Languages = typeof languages[number]\nexport const languagesLocalNames: Record<Languages, string> = {\n en: 'English',\n de: 'Deutsch',\n}\n\nexport const DEFAULT_LANGUAGE = 'en'\n\nexport type LanguageContextValue = {\n language: Languages,\n setLanguage: Dispatch<SetStateAction<Languages>>,\n}\n\nexport const LanguageContext = createContext<LanguageContextValue>({ language: DEFAULT_LANGUAGE, setLanguage: (v) => v })\n\nexport const useLanguage = () => useContext(LanguageContext)\n\nexport const useLocale = (overWriteLanguage?: Languages) => {\n const { language } = useLanguage()\n const mapping: Record<Languages, string> = {\n en: 'en-US',\n de: 'de-DE'\n }\n return mapping[overWriteLanguage ?? language]\n}\n\ntype ProvideLanguageProps = {\n initialLanguage?: Languages,\n}\n\nexport const ProvideLanguage = ({ initialLanguage, children }: PropsWithChildren<ProvideLanguageProps>) => {\n const [language, setLanguage] = useState<Languages>(initialLanguage ?? DEFAULT_LANGUAGE)\n const [storedLanguage, setStoredLanguage] = useLocalStorage<Languages>('language', initialLanguage ?? DEFAULT_LANGUAGE)\n\n useEffect(() => {\n if(language !== initialLanguage && initialLanguage){\n console.warn('LanguageProvider initial state changed: Prefer using useLanguages\\'s setLanguage instead')\n setLanguage(initialLanguage)\n }\n }, [initialLanguage]) // eslint-disable-line react-hooks/exhaustive-deps\n\n useEffect(() => {\n // TODO set locale of html tag here as well\n setStoredLanguage(language)\n }, [language, setStoredLanguage])\n\n useEffect(() => {\n if (storedLanguage !== null) {\n setLanguage(storedLanguage)\n return\n }\n\n const languagesToTestAgainst = Object.values(languages)\n\n const matchingBrowserLanguages = window.navigator.languages\n .map(language => languagesToTestAgainst.find((test) => language === test || language.split('-')[0] === test))\n .filter(entry => entry !== undefined)\n\n if (matchingBrowserLanguages.length === 0) return\n\n const firstMatch = matchingBrowserLanguages[0] as Languages\n setLanguage(firstMatch)\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n return (\n <LanguageContext.Provider value={{\n language,\n setLanguage\n }}>\n {children}\n </LanguageContext.Provider>\n )\n}\n","import type { Dispatch, SetStateAction } from 'react'\nimport { useCallback, useEffect, useState } from 'react'\nimport { LocalStorageService } from '../util/storage'\n\ntype SetValue<T> = Dispatch<SetStateAction<T>>\nexport const useLocalStorage = <T, >(key: string, initValue: T): [T, SetValue<T>] => {\n const get = useCallback((): T => {\n if (typeof window === 'undefined') {\n return initValue\n }\n const storageService = new LocalStorageService()\n const value = storageService.get<T>(key)\n return value || initValue\n }, [initValue, key])\n\n const [storedValue, setStoredValue] = useState<T>(get)\n\n const setValue: SetValue<T> = useCallback(value => {\n const newValue = value instanceof Function ? value(storedValue) : value\n const storageService = new LocalStorageService()\n storageService.set(key, value)\n\n setStoredValue(newValue)\n }, [storedValue, setStoredValue, key])\n\n useEffect(() => {\n setStoredValue(get())\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n return [storedValue, setValue]\n}","import type { Languages } from './useLanguage'\nimport { useLanguage } from './useLanguage'\n\nexport type Translation<T> = Record<Languages, T>\n\ntype OverwriteTranslationType<Translation extends Record<string, unknown>> = {\n language?: Languages,\n translation?: Partial<Record<Languages, Partial<Translation>>>,\n}\n\n/**\n * Adds the `language` prop to the component props.\n *\n * @param Translation the type of the translation object\n *\n * @param Props the type of the component props, defaults to `Record<string, never>`,\n * if you don't expect any other props other than `language` and get an\n * error when using your component (because it uses `forwardRef` etc.)\n * you can try out `Record<string, unknown>`, this might resolve your\n * problem as `SomeType & never` is still `never` but `SomeType & unknown`\n * is `SomeType` which means that adding back props (like `ref` etc.)\n * works properly\n */\nexport type PropsForTranslation<\n Translation extends Record<string, unknown>,\n Props = Record<string, never>\n> = Props & {\n overwriteTranslation?: OverwriteTranslationType<Translation>,\n};\n\nexport const useTranslation = <Translation extends Record<string, unknown>>(\n defaults: Record<Languages, Translation>,\n translationOverwrite: OverwriteTranslationType<Translation> = {}\n) : Translation => {\n const { language: languageProp, translation: overwrite } = translationOverwrite\n const { language: inferredLanguage } = useLanguage()\n const usedLanguage = languageProp ?? inferredLanguage\n let defaultValues: Translation = defaults[usedLanguage]\n if (overwrite && overwrite[usedLanguage]) {\n defaultValues = { ...defaultValues, ...overwrite[usedLanguage] }\n }\n return defaultValues\n}\n","import type { SVGProps } from 'react'\nimport { clsx } from 'clsx'\n\nexport type HelpwaveProps = SVGProps<SVGSVGElement> & {\n color?: string,\n animate?: 'none' | 'loading' | 'pulse' | 'bounce',\n size?: number,\n}\n\n/**\n * The helpwave loading spinner based on the svg logo.\n */\nexport const Helpwave = ({\n color = 'currentColor',\n animate = 'none',\n size = 64,\n ...props\n}: HelpwaveProps) => {\n const isLoadingAnimation = animate === 'loading'\n let svgAnimationKey = ''\n\n if (animate === 'pulse') {\n svgAnimationKey = 'animate-pulse'\n } else if (animate === 'bounce') {\n svgAnimationKey = 'animate-bounce'\n }\n\n if (size < 0) {\n console.error('size cannot be less than 0')\n size = 64\n }\n\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 888 888\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeWidth={48}\n {...props}\n >\n <g className={clsx(svgAnimationKey)}>\n <path className={clsx({ 'animate-wave-big-left-up': isLoadingAnimation })} d=\"M144 543.235C144 423.259 232.164 326 340.92 326\" stroke={color} strokeDasharray=\"1000\" />\n <path className={clsx({ 'animate-wave-big-right-down': isLoadingAnimation })} d=\"M537.84 544.104C429.084 544.104 340.92 446.844 340.92 326.869\" stroke={color} strokeDasharray=\"1000\" />\n <path className={clsx({ 'animate-wave-small-left-up': isLoadingAnimation })} d=\"M462.223 518.035C462.223 432.133 525.348 362.495 603.217 362.495\" stroke={color} strokeDasharray=\"1000\" />\n <path className={clsx({ 'animate-wave-small-right-down': isLoadingAnimation })} d=\"M745.001 519.773C666.696 519.773 603.218 450.136 603.218 364.233\" stroke={color} strokeDasharray=\"1000\" />\n </g>\n </svg>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACCA,IAAAA,gBAA+D;;;ACA/D,mBAAiD;;;ADqE7C;AA3DG,IAAM,mBAAmB;AAOzB,IAAM,sBAAkB,6BAAoC,EAAE,UAAU,kBAAkB,aAAa,CAAC,MAAM,EAAE,CAAC;AAEjH,IAAM,cAAc,UAAM,0BAAW,eAAe;;;AEUpD,IAAM,iBAAiB,CAC5B,UACA,uBAA8D,CAAC,MAC9C;AACjB,QAAM,EAAE,UAAU,cAAc,aAAa,UAAU,IAAI;AAC3D,QAAM,EAAE,UAAU,iBAAiB,IAAI,YAAY;AACnD,QAAM,eAAe,gBAAgB;AACrC,MAAI,gBAA6B,SAAS,YAAY;AACtD,MAAI,aAAa,UAAU,YAAY,GAAG;AACxC,oBAAgB,EAAE,GAAG,eAAe,GAAG,UAAU,YAAY,EAAE;AAAA,EACjE;AACA,SAAO;AACT;;;ACzCA,kBAAqB;AAyCf,IAAAC,sBAAA;AA9BC,IAAM,WAAW,CAAC;AAAA,EACvB,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,OAAO;AAAA,EACP,GAAG;AACL,MAAqB;AACnB,QAAM,qBAAqB,YAAY;AACvC,MAAI,kBAAkB;AAEtB,MAAI,YAAY,SAAS;AACvB,sBAAkB;AAAA,EACpB,WAAW,YAAY,UAAU;AAC/B,sBAAkB;AAAA,EACpB;AAEA,MAAI,OAAO,GAAG;AACZ,YAAQ,MAAM,4BAA4B;AAC1C,WAAO;AAAA,EACT;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,eAAc;AAAA,MACd,aAAa;AAAA,MACZ,GAAG;AAAA,MAEJ,wDAAC,OAAE,eAAW,kBAAK,eAAe,GAChC;AAAA,qDAAC,UAAK,eAAW,kBAAK,EAAE,4BAA4B,mBAAmB,CAAC,GAAG,GAAE,mDAAkD,QAAQ,OAAO,iBAAgB,QAAO;AAAA,QACrK,6CAAC,UAAK,eAAW,kBAAK,EAAE,+BAA+B,mBAAmB,CAAC,GAAG,GAAE,iEAAgE,QAAQ,OAAO,iBAAgB,QAAO;AAAA,QACtL,6CAAC,UAAK,eAAW,kBAAK,EAAE,8BAA8B,mBAAmB,CAAC,GAAG,GAAE,oEAAmE,QAAQ,OAAO,iBAAgB,QAAO;AAAA,QACxL,6CAAC,UAAK,eAAW,kBAAK,EAAE,iCAAiC,mBAAmB,CAAC,GAAG,GAAE,oEAAmE,QAAQ,OAAO,iBAAgB,QAAO;AAAA,SAC7L;AAAA;AAAA,EACF;AAEJ;;;AJ9CA,IAAAC,eAAiB;AA8Bb,IAAAC,sBAAA;AAxBJ,IAAM,qCAAqF;AAAA,EACzF,IAAI;AAAA,IACF,SAAS;AAAA,EACX;AAAA,EACA,IAAI;AAAA,IACF,SAAS;AAAA,EACX;AACF;AAUO,IAAM,mBAAmB,CAAC;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AACF,MAA+E;AAC7E,QAAM,cAAc,eAAe,oCAAoC,oBAAoB;AAC3F,SACE,8CAAC,SAAI,eAAW,aAAAC,SAAK,+CAA+C,SAAS,GAC3E;AAAA,iDAAC,YAAS,SAAQ,WAAU;AAAA,IAC3B,eAAe,GAAG,YAAY,OAAO;AAAA,KACxC;AAEJ;","names":["import_react","import_jsx_runtime","import_clsx","import_jsx_runtime","clsx"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/hooks/useLanguage.tsx","../../src/hooks/useLocalStorage.tsx","../../src/hooks/useTranslation.ts","../../src/components/icons/Helpwave.tsx","../../src/components/LoadingAnimation.tsx"],"sourcesContent":["import type { Dispatch, PropsWithChildren, SetStateAction } from 'react'\nimport { createContext, useContext, useEffect, useState } from 'react'\nimport { useLocalStorage } from './useLocalStorage'\n\nexport const languages = ['en', 'de'] as const\nexport type Languages = typeof languages[number]\nexport const languagesLocalNames: Record<Languages, string> = {\n en: 'English',\n de: 'Deutsch',\n}\n\nexport const DEFAULT_LANGUAGE = 'en'\n\nexport type LanguageContextValue = {\n language: Languages,\n setLanguage: Dispatch<SetStateAction<Languages>>,\n}\n\nexport const LanguageContext = createContext<LanguageContextValue>({ language: DEFAULT_LANGUAGE, setLanguage: (v) => v })\n\nexport const useLanguage = () => useContext(LanguageContext)\n\nexport const useLocale = (overWriteLanguage?: Languages) => {\n const { language } = useLanguage()\n const mapping: Record<Languages, string> = {\n en: 'en-US',\n de: 'de-DE'\n }\n return mapping[overWriteLanguage ?? language]\n}\n\ntype ProvideLanguageProps = {\n initialLanguage?: Languages,\n}\n\nexport const ProvideLanguage = ({ initialLanguage, children }: PropsWithChildren<ProvideLanguageProps>) => {\n const [language, setLanguage] = useState<Languages>(initialLanguage ?? DEFAULT_LANGUAGE)\n const [storedLanguage, setStoredLanguage] = useLocalStorage<Languages>('language', initialLanguage ?? DEFAULT_LANGUAGE)\n\n useEffect(() => {\n if(language !== initialLanguage && initialLanguage){\n console.warn('LanguageProvider initial state changed: Prefer using useLanguages\\'s setLanguage instead')\n setLanguage(initialLanguage)\n }\n }, [initialLanguage]) // eslint-disable-line react-hooks/exhaustive-deps\n\n useEffect(() => {\n // TODO set locale of html tag here as well\n setStoredLanguage(language)\n }, [language, setStoredLanguage])\n\n useEffect(() => {\n if (storedLanguage !== null) {\n setLanguage(storedLanguage)\n return\n }\n\n const languagesToTestAgainst = Object.values(languages)\n\n const matchingBrowserLanguages = window.navigator.languages\n .map(language => languagesToTestAgainst.find((test) => language === test || language.split('-')[0] === test))\n .filter(entry => entry !== undefined)\n\n if (matchingBrowserLanguages.length === 0) return\n\n const firstMatch = matchingBrowserLanguages[0] as Languages\n setLanguage(firstMatch)\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n return (\n <LanguageContext.Provider value={{\n language,\n setLanguage\n }}>\n {children}\n </LanguageContext.Provider>\n )\n}\n","import type { Dispatch, SetStateAction } from 'react'\nimport { useCallback, useEffect, useState } from 'react'\nimport { LocalStorageService } from '../util/storage'\n\ntype SetValue<T> = Dispatch<SetStateAction<T>>\nexport const useLocalStorage = <T, >(key: string, initValue: T): [T, SetValue<T>] => {\n const get = useCallback((): T => {\n if (typeof window === 'undefined') {\n return initValue\n }\n const storageService = new LocalStorageService()\n const value = storageService.get<T>(key)\n return value || initValue\n }, [initValue, key])\n\n const [storedValue, setStoredValue] = useState<T>(get)\n\n const setValue: SetValue<T> = useCallback(value => {\n const newValue = value instanceof Function ? value(storedValue) : value\n const storageService = new LocalStorageService()\n storageService.set(key, value)\n\n setStoredValue(newValue)\n }, [storedValue, setStoredValue, key])\n\n useEffect(() => {\n setStoredValue(get())\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n return [storedValue, setValue]\n}","import type { Languages } from './useLanguage'\nimport { useLanguage } from './useLanguage'\n\nexport type Translation<T> = Record<Languages, T>\n\ntype OverwriteTranslationType<Translation extends Record<string, unknown>> = {\n language?: Languages,\n translation?: Partial<Record<Languages, Partial<Translation>>>,\n}\n\n/**\n * Adds the `language` prop to the component props.\n *\n * @param Translation the type of the translation object\n *\n * @param Props the type of the component props, defaults to `Record<string, never>`,\n * if you don't expect any other props other than `language` and get an\n * error when using your component (because it uses `forwardRef` etc.)\n * you can try out `Record<string, unknown>`, this might resolve your\n * problem as `SomeType & never` is still `never` but `SomeType & unknown`\n * is `SomeType` which means that adding back props (like `ref` etc.)\n * works properly\n */\nexport type PropsForTranslation<\n Translation extends Record<string, unknown>,\n Props = Record<string, never>\n> = Props & {\n overwriteTranslation?: OverwriteTranslationType<Translation>,\n};\n\nexport const useTranslation = <Translation extends Record<string, unknown>>(\n defaults: Record<Languages, Translation>,\n translationOverwrite: OverwriteTranslationType<Translation> = {}\n) : Translation => {\n const { language: languageProp, translation: overwrite } = translationOverwrite\n const { language: inferredLanguage } = useLanguage()\n const usedLanguage = languageProp ?? inferredLanguage\n let defaultValues: Translation = defaults[usedLanguage]\n if (overwrite && overwrite[usedLanguage]) {\n defaultValues = { ...defaultValues, ...overwrite[usedLanguage] }\n }\n return defaultValues\n}\n","import type { SVGProps } from 'react'\nimport { clsx } from 'clsx'\n\nexport type HelpwaveProps = SVGProps<SVGSVGElement> & {\n color?: string,\n animate?: 'none' | 'loading' | 'pulse' | 'bounce',\n size?: number,\n}\n\n/**\n * The helpwave loading spinner based on the svg logo.\n */\nexport const Helpwave = ({\n color = 'currentColor',\n animate = 'none',\n size = 64,\n ...props\n}: HelpwaveProps) => {\n const isLoadingAnimation = animate === 'loading'\n let svgAnimationKey = ''\n\n if (animate === 'pulse') {\n svgAnimationKey = 'animate-pulse'\n } else if (animate === 'bounce') {\n svgAnimationKey = 'animate-bounce'\n }\n\n if (size < 0) {\n console.error('size cannot be less than 0')\n size = 64\n }\n\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 888 888\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeWidth={48}\n {...props}\n >\n <g className={clsx(svgAnimationKey)}>\n <path className={clsx({ 'animate-wave-big-left-up': isLoadingAnimation })} d=\"M144 543.235C144 423.259 232.164 326 340.92 326\" stroke={color} strokeDasharray=\"1000\" />\n <path className={clsx({ 'animate-wave-big-right-down': isLoadingAnimation })} d=\"M537.84 544.104C429.084 544.104 340.92 446.844 340.92 326.869\" stroke={color} strokeDasharray=\"1000\" />\n <path className={clsx({ 'animate-wave-small-left-up': isLoadingAnimation })} d=\"M462.223 518.035C462.223 432.133 525.348 362.495 603.217 362.495\" stroke={color} strokeDasharray=\"1000\" />\n <path className={clsx({ 'animate-wave-small-right-down': isLoadingAnimation })} d=\"M745.001 519.773C666.696 519.773 603.218 450.136 603.218 364.233\" stroke={color} strokeDasharray=\"1000\" />\n </g>\n </svg>\n )\n}\n","import type { Languages } from '../hooks/useLanguage'\nimport type { PropsForTranslation } from '../hooks/useTranslation'\nimport { useTranslation } from '../hooks/useTranslation'\nimport { Helpwave } from './icons/Helpwave'\nimport clsx from 'clsx'\n\ntype LoadingAnimationTranslation = {\n loading: string,\n}\n\nconst defaultLoadingAnimationTranslation: Record<Languages, LoadingAnimationTranslation> = {\n en: {\n loading: 'Loading data'\n },\n de: {\n loading: 'Lade Daten'\n }\n}\n\nexport type LoadingAnimationProps = {\n loadingText?: string,\n classname?: string,\n}\n\n/**\n * A Component to show when loading data\n */\nexport const LoadingAnimation = ({\n overwriteTranslation,\n loadingText,\n classname\n}: PropsForTranslation<LoadingAnimationTranslation, LoadingAnimationProps>) => {\n const translation = useTranslation(defaultLoadingAnimationTranslation, overwriteTranslation)\n return (\n <div className={clsx('col items-center justify-center w-full h-24', classname)}>\n <Helpwave animate=\"loading\" />\n {loadingText ?? `${translation.loading}...`}\n </div>\n )\n}\n"],"mappings":";AACA,SAAS,eAAe,YAAY,aAAAA,YAAW,YAAAC,iBAAgB;;;ACA/D,SAAS,aAAa,WAAW,gBAAgB;;;ADqE7C;AA3DG,IAAM,mBAAmB;AAOzB,IAAM,kBAAkB,cAAoC,EAAE,UAAU,kBAAkB,aAAa,CAAC,MAAM,EAAE,CAAC;AAEjH,IAAM,cAAc,MAAM,WAAW,eAAe;;;AEUpD,IAAM,iBAAiB,CAC5B,UACA,uBAA8D,CAAC,MAC9C;AACjB,QAAM,EAAE,UAAU,cAAc,aAAa,UAAU,IAAI;AAC3D,QAAM,EAAE,UAAU,iBAAiB,IAAI,YAAY;AACnD,QAAM,eAAe,gBAAgB;AACrC,MAAI,gBAA6B,SAAS,YAAY;AACtD,MAAI,aAAa,UAAU,YAAY,GAAG;AACxC,oBAAgB,EAAE,GAAG,eAAe,GAAG,UAAU,YAAY,EAAE;AAAA,EACjE;AACA,SAAO;AACT;;;ACzCA,SAAS,YAAY;AAyCf,SACE,OAAAC,MADF;AA9BC,IAAM,WAAW,CAAC;AAAA,EACvB,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,OAAO;AAAA,EACP,GAAG;AACL,MAAqB;AACnB,QAAM,qBAAqB,YAAY;AACvC,MAAI,kBAAkB;AAEtB,MAAI,YAAY,SAAS;AACvB,sBAAkB;AAAA,EACpB,WAAW,YAAY,UAAU;AAC/B,sBAAkB;AAAA,EACpB;AAEA,MAAI,OAAO,GAAG;AACZ,YAAQ,MAAM,4BAA4B;AAC1C,WAAO;AAAA,EACT;AAEA,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,eAAc;AAAA,MACd,aAAa;AAAA,MACZ,GAAG;AAAA,MAEJ,+BAAC,OAAE,WAAW,KAAK,eAAe,GAChC;AAAA,wBAAAA,KAAC,UAAK,WAAW,KAAK,EAAE,4BAA4B,mBAAmB,CAAC,GAAG,GAAE,mDAAkD,QAAQ,OAAO,iBAAgB,QAAO;AAAA,QACrK,gBAAAA,KAAC,UAAK,WAAW,KAAK,EAAE,+BAA+B,mBAAmB,CAAC,GAAG,GAAE,iEAAgE,QAAQ,OAAO,iBAAgB,QAAO;AAAA,QACtL,gBAAAA,KAAC,UAAK,WAAW,KAAK,EAAE,8BAA8B,mBAAmB,CAAC,GAAG,GAAE,oEAAmE,QAAQ,OAAO,iBAAgB,QAAO;AAAA,QACxL,gBAAAA,KAAC,UAAK,WAAW,KAAK,EAAE,iCAAiC,mBAAmB,CAAC,GAAG,GAAE,oEAAmE,QAAQ,OAAO,iBAAgB,QAAO;AAAA,SAC7L;AAAA;AAAA,EACF;AAEJ;;;AC9CA,OAAOC,WAAU;AA8Bb,SACE,OAAAC,MADF,QAAAC,aAAA;AAxBJ,IAAM,qCAAqF;AAAA,EACzF,IAAI;AAAA,IACF,SAAS;AAAA,EACX;AAAA,EACA,IAAI;AAAA,IACF,SAAS;AAAA,EACX;AACF;AAUO,IAAM,mBAAmB,CAAC;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AACF,MAA+E;AAC7E,QAAM,cAAc,eAAe,oCAAoC,oBAAoB;AAC3F,SACE,gBAAAA,MAAC,SAAI,WAAWF,MAAK,+CAA+C,SAAS,GAC3E;AAAA,oBAAAC,KAAC,YAAS,SAAQ,WAAU;AAAA,IAC3B,eAAe,GAAG,YAAY,OAAO;AAAA,KACxC;AAEJ;","names":["useEffect","useState","jsx","clsx","jsx","jsxs"]}