@helpwave/hightide 0.0.19 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (665) hide show
  1. package/README.md +21 -2
  2. package/dist/coloring/shading.cjs +562 -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 +482 -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/dialogs/ConfirmDialog.cjs +509 -0
  46. package/dist/components/dialogs/ConfirmDialog.cjs.map +1 -0
  47. package/dist/components/dialogs/ConfirmDialog.d.cts +37 -0
  48. package/dist/components/dialogs/ConfirmDialog.d.ts +37 -0
  49. package/dist/components/dialogs/ConfirmDialog.js +472 -0
  50. package/dist/components/dialogs/ConfirmDialog.js.map +1 -0
  51. package/dist/components/{AvatarGroup.js → icons-and-geometry/Avatar.cjs} +23 -19
  52. package/dist/components/icons-and-geometry/Avatar.cjs.map +1 -0
  53. package/dist/components/icons-and-geometry/Avatar.d.cts +30 -0
  54. package/dist/components/icons-and-geometry/Avatar.d.ts +30 -0
  55. package/dist/components/{AvatarGroup.mjs → icons-and-geometry/Avatar.js} +13 -10
  56. package/dist/components/icons-and-geometry/Avatar.js.map +1 -0
  57. package/dist/components/{Circle.js → icons-and-geometry/Circle.cjs} +3 -3
  58. package/dist/components/icons-and-geometry/Circle.cjs.map +1 -0
  59. package/dist/components/{Circle.mjs → icons-and-geometry/Circle.js} +2 -2
  60. package/dist/components/icons-and-geometry/Circle.js.map +1 -0
  61. package/dist/components/{icons/Helpwave.js → icons-and-geometry/Helpwave.cjs} +38 -6
  62. package/dist/components/icons-and-geometry/Helpwave.cjs.map +1 -0
  63. package/dist/components/icons-and-geometry/Helpwave.js +75 -0
  64. package/dist/components/icons-and-geometry/Helpwave.js.map +1 -0
  65. package/dist/components/{Ring.js → icons-and-geometry/Ring.cjs} +6 -6
  66. package/dist/components/icons-and-geometry/Ring.cjs.map +1 -0
  67. package/dist/components/{Ring.mjs → icons-and-geometry/Ring.js} +4 -4
  68. package/dist/components/icons-and-geometry/Ring.js.map +1 -0
  69. package/dist/components/{icons/Tag.js → icons-and-geometry/Tag.cjs} +3 -3
  70. package/dist/components/icons-and-geometry/Tag.cjs.map +1 -0
  71. package/dist/components/{icons/Tag.mjs → icons-and-geometry/Tag.js} +2 -2
  72. package/dist/components/icons-and-geometry/Tag.js.map +1 -0
  73. package/dist/components/{BreadCrumb.js → layout-and-navigation/BreadCrumb.cjs} +12 -5
  74. package/dist/components/layout-and-navigation/BreadCrumb.cjs.map +1 -0
  75. package/dist/components/{BreadCrumb.mjs → layout-and-navigation/BreadCrumb.js} +10 -3
  76. package/dist/components/layout-and-navigation/BreadCrumb.js.map +1 -0
  77. package/dist/components/{layout/Carousel.js → layout-and-navigation/Carousel.cjs} +4 -4
  78. package/dist/components/layout-and-navigation/Carousel.cjs.map +1 -0
  79. package/dist/components/{layout/Carousel.mjs → layout-and-navigation/Carousel.js} +4 -4
  80. package/dist/components/layout-and-navigation/Carousel.js.map +1 -0
  81. package/dist/components/{ChipList.js → layout-and-navigation/Chip.cjs} +6 -6
  82. package/dist/components/layout-and-navigation/Chip.cjs.map +1 -0
  83. package/dist/components/{ChipList.mjs → layout-and-navigation/Chip.js} +2 -2
  84. package/dist/components/layout-and-navigation/Chip.js.map +1 -0
  85. package/dist/components/{layout/DividerInserter.js → layout-and-navigation/DividerInserter.cjs} +3 -3
  86. package/dist/components/layout-and-navigation/DividerInserter.cjs.map +1 -0
  87. package/dist/components/{layout/DividerInserter.mjs → layout-and-navigation/DividerInserter.js} +2 -2
  88. package/dist/components/layout-and-navigation/DividerInserter.js.map +1 -0
  89. package/dist/components/{Expandable.js → layout-and-navigation/Expandable.cjs} +3 -3
  90. package/dist/components/layout-and-navigation/Expandable.cjs.map +1 -0
  91. package/dist/components/{Expandable.mjs → layout-and-navigation/Expandable.js} +2 -2
  92. package/dist/components/layout-and-navigation/Expandable.js.map +1 -0
  93. package/dist/components/{layout/FAQSection.js → layout-and-navigation/FAQSection.cjs} +7 -7
  94. package/dist/components/layout-and-navigation/FAQSection.cjs.map +1 -0
  95. package/dist/components/{layout/FAQSection.d.mts → layout-and-navigation/FAQSection.d.cts} +1 -1
  96. package/dist/components/{layout → layout-and-navigation}/FAQSection.d.ts +1 -1
  97. package/dist/components/{layout/FAQSection.mjs → layout-and-navigation/FAQSection.js} +5 -5
  98. package/dist/components/layout-and-navigation/FAQSection.js.map +1 -0
  99. package/dist/components/{MarkdownInterpreter.js → layout-and-navigation/MarkdownInterpreter.cjs} +2 -2
  100. package/dist/components/layout-and-navigation/MarkdownInterpreter.cjs.map +1 -0
  101. package/dist/components/{MarkdownInterpreter.mjs → layout-and-navigation/MarkdownInterpreter.js} +2 -2
  102. package/dist/components/layout-and-navigation/MarkdownInterpreter.js.map +1 -0
  103. package/dist/components/layout-and-navigation/Overlay.cjs +460 -0
  104. package/dist/components/layout-and-navigation/Overlay.cjs.map +1 -0
  105. package/dist/components/layout-and-navigation/Overlay.d.cts +68 -0
  106. package/dist/components/layout-and-navigation/Overlay.d.ts +68 -0
  107. package/dist/components/layout-and-navigation/Overlay.js +422 -0
  108. package/dist/components/layout-and-navigation/Overlay.js.map +1 -0
  109. package/dist/components/{Pagination.js → layout-and-navigation/Pagination.cjs} +25 -10
  110. package/dist/components/layout-and-navigation/Pagination.cjs.map +1 -0
  111. package/dist/components/{Pagination.d.mts → layout-and-navigation/Pagination.d.cts} +2 -3
  112. package/dist/components/{Pagination.d.ts → layout-and-navigation/Pagination.d.ts} +2 -3
  113. package/dist/components/{Pagination.mjs → layout-and-navigation/Pagination.js} +25 -10
  114. package/dist/components/layout-and-navigation/Pagination.js.map +1 -0
  115. package/dist/components/{SearchableList.js → layout-and-navigation/SearchableList.cjs} +51 -34
  116. package/dist/components/layout-and-navigation/SearchableList.cjs.map +1 -0
  117. package/dist/components/{SearchableList.d.mts → layout-and-navigation/SearchableList.d.cts} +2 -2
  118. package/dist/components/{SearchableList.d.ts → layout-and-navigation/SearchableList.d.ts} +2 -2
  119. package/dist/components/{SearchableList.mjs → layout-and-navigation/SearchableList.js} +52 -40
  120. package/dist/components/layout-and-navigation/SearchableList.js.map +1 -0
  121. package/dist/components/{StepperBar.js → layout-and-navigation/StepperBar.cjs} +42 -16
  122. package/dist/components/layout-and-navigation/StepperBar.cjs.map +1 -0
  123. package/dist/components/{StepperBar.d.mts → layout-and-navigation/StepperBar.d.cts} +2 -3
  124. package/dist/components/{StepperBar.d.ts → layout-and-navigation/StepperBar.d.ts} +2 -3
  125. package/dist/components/{StepperBar.mjs → layout-and-navigation/StepperBar.js} +40 -14
  126. package/dist/components/layout-and-navigation/StepperBar.js.map +1 -0
  127. package/dist/components/{Table.js → layout-and-navigation/Table.cjs} +176 -40
  128. package/dist/components/layout-and-navigation/Table.cjs.map +1 -0
  129. package/dist/components/{Table.d.mts → layout-and-navigation/Table.d.cts} +10 -1
  130. package/dist/components/{Table.d.ts → layout-and-navigation/Table.d.ts} +10 -1
  131. package/dist/components/{Table.mjs → layout-and-navigation/Table.js} +175 -40
  132. package/dist/components/layout-and-navigation/Table.js.map +1 -0
  133. package/dist/components/{TextImage.js → layout-and-navigation/TextImage.cjs} +25 -10
  134. package/dist/components/layout-and-navigation/TextImage.cjs.map +1 -0
  135. package/dist/components/{TextImage.d.mts → layout-and-navigation/TextImage.d.cts} +2 -3
  136. package/dist/components/{TextImage.d.ts → layout-and-navigation/TextImage.d.ts} +2 -3
  137. package/dist/components/{TextImage.mjs → layout-and-navigation/TextImage.js} +23 -8
  138. package/dist/components/layout-and-navigation/TextImage.js.map +1 -0
  139. package/dist/components/{layout/Tile.js → layout-and-navigation/Tile.cjs} +4 -4
  140. package/dist/components/layout-and-navigation/Tile.cjs.map +1 -0
  141. package/dist/components/{layout/Tile.mjs → layout-and-navigation/Tile.js} +2 -2
  142. package/dist/components/layout-and-navigation/Tile.js.map +1 -0
  143. package/dist/components/{VerticalDivider.js → layout-and-navigation/VerticalDivider.cjs} +2 -2
  144. package/dist/components/layout-and-navigation/VerticalDivider.cjs.map +1 -0
  145. package/dist/components/{VerticalDivider.mjs → layout-and-navigation/VerticalDivider.js} +2 -2
  146. package/dist/components/layout-and-navigation/VerticalDivider.js.map +1 -0
  147. package/dist/components/{ErrorComponent.js → loading-states/ErrorComponent.cjs} +25 -10
  148. package/dist/components/loading-states/ErrorComponent.cjs.map +1 -0
  149. package/dist/components/{ErrorComponent.d.mts → loading-states/ErrorComponent.d.cts} +2 -3
  150. package/dist/components/{ErrorComponent.d.ts → loading-states/ErrorComponent.d.ts} +2 -3
  151. package/dist/components/{ErrorComponent.mjs → loading-states/ErrorComponent.js} +24 -9
  152. package/dist/components/loading-states/ErrorComponent.js.map +1 -0
  153. package/dist/components/{LoadingAndErrorComponent.js → loading-states/LoadingAndErrorComponent.cjs} +67 -18
  154. package/dist/components/loading-states/LoadingAndErrorComponent.cjs.map +1 -0
  155. package/dist/components/{LoadingAndErrorComponent.d.mts → loading-states/LoadingAndErrorComponent.d.cts} +6 -6
  156. package/dist/components/{LoadingAndErrorComponent.d.ts → loading-states/LoadingAndErrorComponent.d.ts} +4 -4
  157. package/dist/components/{LoadingAndErrorComponent.mjs → loading-states/LoadingAndErrorComponent.js} +66 -17
  158. package/dist/components/loading-states/LoadingAndErrorComponent.js.map +1 -0
  159. package/dist/components/{LoadingAnimation.js → loading-states/LoadingAnimation.cjs} +64 -15
  160. package/dist/components/loading-states/LoadingAnimation.cjs.map +1 -0
  161. package/dist/components/{LoadingAnimation.d.mts → loading-states/LoadingAnimation.d.cts} +2 -3
  162. package/dist/components/{LoadingAnimation.d.ts → loading-states/LoadingAnimation.d.ts} +2 -3
  163. package/dist/components/{LoadingAnimation.mjs → loading-states/LoadingAnimation.js} +63 -14
  164. package/dist/components/loading-states/LoadingAnimation.js.map +1 -0
  165. package/dist/components/{LoadingButton.js → loading-states/LoadingButton.cjs} +101 -58
  166. package/dist/components/loading-states/LoadingButton.cjs.map +1 -0
  167. package/dist/components/{LoadingButton.d.mts → loading-states/LoadingButton.d.cts} +1 -1
  168. package/dist/components/{LoadingButton.d.ts → loading-states/LoadingButton.d.ts} +1 -1
  169. package/dist/components/{LoadingButton.mjs → loading-states/LoadingButton.js} +100 -57
  170. package/dist/components/loading-states/LoadingButton.js.map +1 -0
  171. package/dist/components/{ProgressIndicator.js → loading-states/ProgressIndicator.cjs} +2 -2
  172. package/dist/components/loading-states/ProgressIndicator.cjs.map +1 -0
  173. package/dist/components/{ProgressIndicator.mjs → loading-states/ProgressIndicator.js} +2 -2
  174. package/dist/components/loading-states/ProgressIndicator.js.map +1 -0
  175. package/dist/components/modals/{ConfirmDialog.js → ConfirmModal.cjs} +214 -117
  176. package/dist/components/modals/ConfirmModal.cjs.map +1 -0
  177. package/dist/components/modals/ConfirmModal.d.cts +36 -0
  178. package/dist/components/modals/ConfirmModal.d.ts +36 -0
  179. package/dist/components/modals/{ConfirmDialog.mjs → ConfirmModal.js} +203 -106
  180. package/dist/components/modals/ConfirmModal.js.map +1 -0
  181. package/dist/components/modals/DiscardChangesModal.cjs +570 -0
  182. package/dist/components/modals/DiscardChangesModal.cjs.map +1 -0
  183. package/dist/components/modals/DiscardChangesModal.d.cts +25 -0
  184. package/dist/components/modals/DiscardChangesModal.d.ts +25 -0
  185. package/dist/components/modals/DiscardChangesModal.js +533 -0
  186. package/dist/components/modals/DiscardChangesModal.js.map +1 -0
  187. package/dist/components/modals/InputModal.cjs +689 -0
  188. package/dist/components/modals/InputModal.cjs.map +1 -0
  189. package/dist/components/modals/{InputModal.d.mts → InputModal.d.cts} +7 -7
  190. package/dist/components/modals/InputModal.d.ts +7 -7
  191. package/dist/components/modals/InputModal.js +273 -221
  192. package/dist/components/modals/InputModal.js.map +1 -1
  193. package/dist/components/modals/LanguageModal.cjs +667 -0
  194. package/dist/components/modals/LanguageModal.cjs.map +1 -0
  195. package/dist/components/modals/LanguageModal.d.cts +20 -0
  196. package/dist/components/modals/LanguageModal.d.ts +7 -8
  197. package/dist/components/modals/LanguageModal.js +308 -206
  198. package/dist/components/modals/LanguageModal.js.map +1 -1
  199. package/dist/components/modals/ThemeModal.cjs +694 -0
  200. package/dist/components/modals/ThemeModal.cjs.map +1 -0
  201. package/dist/components/modals/ThemeModal.d.cts +21 -0
  202. package/dist/components/modals/ThemeModal.d.ts +21 -0
  203. package/dist/components/modals/ThemeModal.js +657 -0
  204. package/dist/components/modals/ThemeModal.js.map +1 -0
  205. package/dist/components/properties/CheckboxProperty.cjs +362 -0
  206. package/dist/components/properties/CheckboxProperty.cjs.map +1 -0
  207. package/dist/components/properties/{CheckboxProperty.d.mts → CheckboxProperty.d.cts} +3 -3
  208. package/dist/components/properties/CheckboxProperty.d.ts +2 -2
  209. package/dist/components/properties/CheckboxProperty.js +94 -93
  210. package/dist/components/properties/CheckboxProperty.js.map +1 -1
  211. package/dist/components/properties/DateProperty.cjs +451 -0
  212. package/dist/components/properties/DateProperty.cjs.map +1 -0
  213. package/dist/components/properties/{DateProperty.d.mts → DateProperty.d.cts} +3 -3
  214. package/dist/components/properties/DateProperty.d.ts +2 -2
  215. package/dist/components/properties/DateProperty.js +110 -116
  216. package/dist/components/properties/DateProperty.js.map +1 -1
  217. package/dist/components/properties/{MultiSelectProperty.mjs → MultiSelectProperty.cjs} +216 -155
  218. package/dist/components/properties/MultiSelectProperty.cjs.map +1 -0
  219. package/dist/components/properties/{MultiSelectProperty.d.mts → MultiSelectProperty.d.cts} +5 -5
  220. package/dist/components/properties/MultiSelectProperty.d.ts +4 -4
  221. package/dist/components/properties/MultiSelectProperty.js +180 -184
  222. package/dist/components/properties/MultiSelectProperty.js.map +1 -1
  223. package/dist/components/properties/NumberProperty.cjs +459 -0
  224. package/dist/components/properties/NumberProperty.cjs.map +1 -0
  225. package/dist/components/properties/{NumberProperty.d.mts → NumberProperty.d.cts} +3 -3
  226. package/dist/components/properties/NumberProperty.d.ts +2 -2
  227. package/dist/components/properties/NumberProperty.js +109 -116
  228. package/dist/components/properties/NumberProperty.js.map +1 -1
  229. package/dist/components/properties/PropertyBase.cjs +223 -0
  230. package/dist/components/properties/PropertyBase.cjs.map +1 -0
  231. package/dist/components/properties/{PropertyBase.d.mts → PropertyBase.d.cts} +2 -2
  232. package/dist/components/properties/PropertyBase.d.ts +2 -2
  233. package/dist/components/properties/PropertyBase.js +60 -69
  234. package/dist/components/properties/PropertyBase.js.map +1 -1
  235. package/dist/components/properties/{SelectProperty.mjs → SelectProperty.cjs} +251 -199
  236. package/dist/components/properties/SelectProperty.cjs.map +1 -0
  237. package/dist/components/properties/{SelectProperty.d.mts → SelectProperty.d.cts} +5 -6
  238. package/dist/components/properties/SelectProperty.d.ts +4 -5
  239. package/dist/components/properties/SelectProperty.js +215 -228
  240. package/dist/components/properties/SelectProperty.js.map +1 -1
  241. package/dist/components/properties/TextProperty.cjs +428 -0
  242. package/dist/components/properties/TextProperty.cjs.map +1 -0
  243. package/dist/components/properties/{TextProperty.d.mts → TextProperty.d.cts} +3 -3
  244. package/dist/components/properties/TextProperty.d.ts +2 -2
  245. package/dist/components/properties/TextProperty.js +134 -121
  246. package/dist/components/properties/TextProperty.js.map +1 -1
  247. package/dist/components/{Button.js → user-action/Button.cjs} +70 -12
  248. package/dist/components/user-action/Button.cjs.map +1 -0
  249. package/dist/components/{Button.d.mts → user-action/Button.d.cts} +32 -5
  250. package/dist/components/{Button.d.ts → user-action/Button.d.ts} +32 -5
  251. package/dist/components/{Button.mjs → user-action/Button.js} +66 -10
  252. package/dist/components/user-action/Button.js.map +1 -0
  253. package/dist/components/{user-input/Checkbox.js → user-action/Checkbox.cjs} +26 -16
  254. package/dist/components/user-action/Checkbox.cjs.map +1 -0
  255. package/dist/components/{user-input/Checkbox.d.mts → user-action/Checkbox.d.cts} +5 -5
  256. package/dist/components/{user-input → user-action}/Checkbox.d.ts +4 -4
  257. package/dist/components/{user-input/Checkbox.mjs → user-action/Checkbox.js} +24 -14
  258. package/dist/components/user-action/Checkbox.js.map +1 -0
  259. package/dist/components/{user-input/DateAndTimePicker.js → user-action/DateAndTimePicker.cjs} +51 -23
  260. package/dist/components/user-action/DateAndTimePicker.cjs.map +1 -0
  261. package/dist/components/{user-input/DateAndTimePicker.d.mts → user-action/DateAndTimePicker.d.cts} +7 -8
  262. package/dist/components/{user-input → user-action}/DateAndTimePicker.d.ts +2 -3
  263. package/dist/components/{user-input/DateAndTimePicker.mjs → user-action/DateAndTimePicker.js} +44 -16
  264. package/dist/components/user-action/DateAndTimePicker.js.map +1 -0
  265. package/dist/components/{user-input/Input.js → user-action/Input.cjs} +35 -34
  266. package/dist/components/user-action/Input.cjs.map +1 -0
  267. package/dist/components/{user-input/Input.d.mts → user-action/Input.d.cts} +9 -16
  268. package/dist/components/{user-input → user-action}/Input.d.ts +8 -15
  269. package/dist/components/{user-input/Input.mjs → user-action/Input.js} +35 -39
  270. package/dist/components/user-action/Input.js.map +1 -0
  271. package/dist/components/{user-input/Label.js → user-action/Label.cjs} +15 -3
  272. package/dist/components/user-action/Label.cjs.map +1 -0
  273. package/dist/components/{user-input/Label.d.mts → user-action/Label.d.cts} +1 -1
  274. package/dist/components/{user-input → user-action}/Label.d.ts +1 -1
  275. package/dist/components/{user-input/Label.mjs → user-action/Label.js} +5 -3
  276. package/dist/components/user-action/Label.js.map +1 -0
  277. package/dist/components/{user-input/Menu.js → user-action/Menu.cjs} +4 -4
  278. package/dist/components/user-action/Menu.cjs.map +1 -0
  279. package/dist/components/{user-input/Menu.mjs → user-action/Menu.js} +3 -3
  280. package/dist/components/user-action/Menu.js.map +1 -0
  281. package/dist/components/{user-input/MultiSelect.js → user-action/MultiSelect.cjs} +76 -51
  282. package/dist/components/user-action/MultiSelect.cjs.map +1 -0
  283. package/dist/components/{user-input/MultiSelect.d.mts → user-action/MultiSelect.d.cts} +3 -3
  284. package/dist/components/{user-input → user-action}/MultiSelect.d.ts +2 -2
  285. package/dist/components/{user-input/MultiSelect.mjs → user-action/MultiSelect.js} +75 -55
  286. package/dist/components/user-action/MultiSelect.js.map +1 -0
  287. package/dist/components/{user-input/ScrollPicker.js → user-action/ScrollPicker.cjs} +4 -4
  288. package/dist/components/user-action/ScrollPicker.cjs.map +1 -0
  289. package/dist/components/{user-input/ScrollPicker.mjs → user-action/ScrollPicker.js} +3 -3
  290. package/dist/components/user-action/ScrollPicker.js.map +1 -0
  291. package/dist/components/{user-input/SearchableSelect.js → user-action/Select.cjs} +181 -152
  292. package/dist/components/user-action/Select.cjs.map +1 -0
  293. package/dist/components/user-action/Select.d.cts +49 -0
  294. package/dist/components/user-action/Select.d.ts +49 -0
  295. package/dist/components/{user-input/SearchableSelect.mjs → user-action/Select.js} +167 -145
  296. package/dist/components/user-action/Select.js.map +1 -0
  297. package/dist/components/{user-input/Textarea.js → user-action/Textarea.cjs} +80 -35
  298. package/dist/components/user-action/Textarea.cjs.map +1 -0
  299. package/dist/components/user-action/Textarea.d.cts +28 -0
  300. package/dist/components/{user-input → user-action}/Textarea.d.ts +9 -5
  301. package/dist/components/user-action/Textarea.js +163 -0
  302. package/dist/components/user-action/Textarea.js.map +1 -0
  303. package/dist/components/{user-input/ToggleableInput.js → user-action/ToggleableInput.cjs} +9 -15
  304. package/dist/components/user-action/ToggleableInput.cjs.map +1 -0
  305. package/dist/components/{user-input/ToggleableInput.mjs → user-action/ToggleableInput.js} +8 -14
  306. package/dist/components/user-action/ToggleableInput.js.map +1 -0
  307. package/dist/components/{Tooltip.js → user-action/Tooltip.cjs} +13 -9
  308. package/dist/components/user-action/Tooltip.cjs.map +1 -0
  309. package/dist/components/{Tooltip.d.mts → user-action/Tooltip.d.cts} +1 -1
  310. package/dist/components/{Tooltip.d.ts → user-action/Tooltip.d.ts} +1 -1
  311. package/dist/components/{Tooltip.mjs → user-action/Tooltip.js} +12 -8
  312. package/dist/components/user-action/Tooltip.js.map +1 -0
  313. package/dist/css/globals.css +185 -129
  314. package/dist/css/uncompiled/globals.css +71 -32
  315. package/dist/hooks/useHoverState.cjs +72 -0
  316. package/dist/hooks/{useHoverState.mjs.map → useHoverState.cjs.map} +1 -1
  317. package/dist/hooks/useHoverState.js +7 -32
  318. package/dist/hooks/useHoverState.js.map +1 -1
  319. package/dist/hooks/useLocalStorage.cjs +83 -0
  320. package/dist/hooks/useLocalStorage.cjs.map +1 -0
  321. package/dist/hooks/useLocalStorage.js +9 -34
  322. package/dist/hooks/useLocalStorage.js.map +1 -1
  323. package/dist/hooks/useOutsideClick.cjs +48 -0
  324. package/dist/hooks/{useOutsideClick.mjs.map → useOutsideClick.cjs.map} +1 -1
  325. package/dist/hooks/useOutsideClick.js +4 -29
  326. package/dist/hooks/useOutsideClick.js.map +1 -1
  327. package/dist/hooks/useSaveDelay.cjs +68 -0
  328. package/dist/hooks/{useSaveDelay.mjs.map → useSaveDelay.cjs.map} +1 -1
  329. package/dist/hooks/useSaveDelay.js +6 -31
  330. package/dist/hooks/useSaveDelay.js.map +1 -1
  331. package/dist/{index.mjs → index.cjs} +4042 -3867
  332. package/dist/index.cjs.map +1 -0
  333. package/dist/index.d.cts +83 -0
  334. package/dist/index.d.ts +51 -56
  335. package/dist/index.js +3858 -4041
  336. package/dist/index.js.map +1 -1
  337. package/dist/{hooks/useLanguage.js → localization/LanguageProvider.cjs} +30 -26
  338. package/dist/localization/LanguageProvider.cjs.map +1 -0
  339. package/dist/localization/LanguageProvider.d.cts +18 -0
  340. package/dist/localization/LanguageProvider.d.ts +18 -0
  341. package/dist/{hooks/useLanguage.mjs → localization/LanguageProvider.js} +26 -19
  342. package/dist/localization/LanguageProvider.js.map +1 -0
  343. package/dist/{hooks/useTranslation.js → localization/useTranslation.cjs} +23 -8
  344. package/dist/localization/useTranslation.cjs.map +1 -0
  345. package/dist/{hooks/useTranslation.d.mts → localization/useTranslation.d.cts} +5 -7
  346. package/dist/{hooks → localization}/useTranslation.d.ts +5 -7
  347. package/dist/{hooks/useTranslation.mjs → localization/useTranslation.js} +22 -7
  348. package/dist/localization/useTranslation.js.map +1 -0
  349. package/dist/localization/util.cjs +41 -0
  350. package/dist/localization/util.cjs.map +1 -0
  351. package/dist/localization/util.d.cts +18 -0
  352. package/dist/localization/util.d.ts +18 -0
  353. package/dist/localization/util.js +16 -0
  354. package/dist/localization/util.js.map +1 -0
  355. package/dist/{hooks/useTheme.js → theming/useTheme.cjs} +19 -11
  356. package/dist/theming/useTheme.cjs.map +1 -0
  357. package/dist/{hooks/useTheme.d.mts → theming/useTheme.d.cts} +9 -5
  358. package/dist/{hooks → theming}/useTheme.d.ts +9 -5
  359. package/dist/{hooks/useTheme.mjs → theming/useTheme.js} +15 -7
  360. package/dist/theming/useTheme.js.map +1 -0
  361. package/dist/util/{array.mjs → array.cjs} +34 -3
  362. package/dist/util/array.cjs.map +1 -0
  363. package/dist/util/array.js +2 -33
  364. package/dist/util/array.js.map +1 -1
  365. package/dist/util/builder.cjs +34 -0
  366. package/dist/util/{builder.mjs.map → builder.cjs.map} +1 -1
  367. package/dist/util/builder.js +2 -27
  368. package/dist/util/builder.js.map +1 -1
  369. package/dist/util/{date.mjs → date.cjs} +41 -3
  370. package/dist/util/date.cjs.map +1 -0
  371. package/dist/util/date.js +2 -40
  372. package/dist/util/date.js.map +1 -1
  373. package/dist/util/easeFunctions.cjs +63 -0
  374. package/dist/util/easeFunctions.cjs.map +1 -0
  375. package/dist/util/easeFunctions.js +2 -29
  376. package/dist/util/easeFunctions.js.map +1 -1
  377. package/dist/util/emailValidation.cjs +33 -0
  378. package/dist/util/{emailValidation.mjs.map → emailValidation.cjs.map} +1 -1
  379. package/dist/util/emailValidation.js +2 -27
  380. package/dist/util/emailValidation.js.map +1 -1
  381. package/dist/util/{loopingArray.mjs → loopingArray.cjs} +28 -3
  382. package/dist/util/{loopingArray.mjs.map → loopingArray.cjs.map} +1 -1
  383. package/dist/util/loopingArray.js +2 -27
  384. package/dist/util/loopingArray.js.map +1 -1
  385. package/dist/util/math.cjs +33 -0
  386. package/dist/util/{math.mjs.map → math.cjs.map} +1 -1
  387. package/dist/util/math.js +2 -27
  388. package/dist/util/math.js.map +1 -1
  389. package/dist/util/news.cjs +77 -0
  390. package/dist/util/news.cjs.map +1 -0
  391. package/dist/util/{news.d.mts → news.d.cts} +11 -13
  392. package/dist/util/news.d.ts +11 -13
  393. package/dist/util/news.js +22 -49
  394. package/dist/util/news.js.map +1 -1
  395. package/dist/util/noop.cjs +31 -0
  396. package/dist/util/noop.cjs.map +1 -0
  397. package/dist/util/noop.js +2 -27
  398. package/dist/util/noop.js.map +1 -1
  399. package/dist/util/simpleSearch.cjs +54 -0
  400. package/dist/util/simpleSearch.cjs.map +1 -0
  401. package/dist/util/simpleSearch.js +2 -30
  402. package/dist/util/simpleSearch.js.map +1 -1
  403. package/dist/util/storage.cjs +64 -0
  404. package/dist/util/storage.cjs.map +1 -0
  405. package/dist/util/storage.js +2 -28
  406. package/dist/util/storage.js.map +1 -1
  407. package/dist/util/types.cjs +19 -0
  408. package/dist/util/types.cjs.map +1 -0
  409. package/dist/util/types.js +0 -18
  410. package/dist/util/types.js.map +1 -1
  411. package/package.json +9 -12
  412. package/dist/coloring/shading.mjs +0 -47
  413. package/dist/coloring/shading.mjs.map +0 -1
  414. package/dist/coloring/types.mjs +0 -6
  415. package/dist/components/Avatar.d.mts +0 -17
  416. package/dist/components/Avatar.d.ts +0 -17
  417. package/dist/components/Avatar.js +0 -85
  418. package/dist/components/Avatar.js.map +0 -1
  419. package/dist/components/Avatar.mjs +0 -48
  420. package/dist/components/Avatar.mjs.map +0 -1
  421. package/dist/components/AvatarGroup.d.mts +0 -14
  422. package/dist/components/AvatarGroup.d.ts +0 -14
  423. package/dist/components/AvatarGroup.js.map +0 -1
  424. package/dist/components/AvatarGroup.mjs.map +0 -1
  425. package/dist/components/BreadCrumb.js.map +0 -1
  426. package/dist/components/BreadCrumb.mjs.map +0 -1
  427. package/dist/components/Button.js.map +0 -1
  428. package/dist/components/Button.mjs.map +0 -1
  429. package/dist/components/ChipList.js.map +0 -1
  430. package/dist/components/ChipList.mjs.map +0 -1
  431. package/dist/components/Circle.js.map +0 -1
  432. package/dist/components/Circle.mjs.map +0 -1
  433. package/dist/components/ErrorComponent.js.map +0 -1
  434. package/dist/components/ErrorComponent.mjs.map +0 -1
  435. package/dist/components/Expandable.js.map +0 -1
  436. package/dist/components/Expandable.mjs.map +0 -1
  437. package/dist/components/HelpwaveBadge.js.map +0 -1
  438. package/dist/components/HelpwaveBadge.mjs +0 -91
  439. package/dist/components/HelpwaveBadge.mjs.map +0 -1
  440. package/dist/components/HideableContentSection.d.mts +0 -14
  441. package/dist/components/HideableContentSection.d.ts +0 -14
  442. package/dist/components/HideableContentSection.js +0 -70
  443. package/dist/components/HideableContentSection.js.map +0 -1
  444. package/dist/components/HideableContentSection.mjs +0 -35
  445. package/dist/components/HideableContentSection.mjs.map +0 -1
  446. package/dist/components/InputGroup.d.mts +0 -17
  447. package/dist/components/InputGroup.d.ts +0 -17
  448. package/dist/components/InputGroup.js +0 -97
  449. package/dist/components/InputGroup.js.map +0 -1
  450. package/dist/components/InputGroup.mjs +0 -62
  451. package/dist/components/InputGroup.mjs.map +0 -1
  452. package/dist/components/LoadingAndErrorComponent.js.map +0 -1
  453. package/dist/components/LoadingAndErrorComponent.mjs.map +0 -1
  454. package/dist/components/LoadingAnimation.js.map +0 -1
  455. package/dist/components/LoadingAnimation.mjs.map +0 -1
  456. package/dist/components/LoadingButton.js.map +0 -1
  457. package/dist/components/LoadingButton.mjs.map +0 -1
  458. package/dist/components/MarkdownInterpreter.js.map +0 -1
  459. package/dist/components/MarkdownInterpreter.mjs.map +0 -1
  460. package/dist/components/Pagination.js.map +0 -1
  461. package/dist/components/Pagination.mjs.map +0 -1
  462. package/dist/components/Profile.d.mts +0 -31
  463. package/dist/components/Profile.d.ts +0 -31
  464. package/dist/components/Profile.js +0 -197
  465. package/dist/components/Profile.js.map +0 -1
  466. package/dist/components/Profile.mjs +0 -162
  467. package/dist/components/Profile.mjs.map +0 -1
  468. package/dist/components/ProgressIndicator.js.map +0 -1
  469. package/dist/components/ProgressIndicator.mjs.map +0 -1
  470. package/dist/components/Ring.js.map +0 -1
  471. package/dist/components/Ring.mjs.map +0 -1
  472. package/dist/components/SearchableList.js.map +0 -1
  473. package/dist/components/SearchableList.mjs.map +0 -1
  474. package/dist/components/SortButton.d.mts +0 -15
  475. package/dist/components/SortButton.d.ts +0 -15
  476. package/dist/components/SortButton.js +0 -132
  477. package/dist/components/SortButton.js.map +0 -1
  478. package/dist/components/SortButton.mjs +0 -97
  479. package/dist/components/SortButton.mjs.map +0 -1
  480. package/dist/components/StepperBar.js.map +0 -1
  481. package/dist/components/StepperBar.mjs.map +0 -1
  482. package/dist/components/Table.js.map +0 -1
  483. package/dist/components/Table.mjs.map +0 -1
  484. package/dist/components/TechRadar.d.mts +0 -39
  485. package/dist/components/TechRadar.d.ts +0 -39
  486. package/dist/components/TechRadar.js +0 -243
  487. package/dist/components/TechRadar.js.map +0 -1
  488. package/dist/components/TechRadar.mjs +0 -208
  489. package/dist/components/TechRadar.mjs.map +0 -1
  490. package/dist/components/TextImage.js.map +0 -1
  491. package/dist/components/TextImage.mjs.map +0 -1
  492. package/dist/components/TimeDisplay.js.map +0 -1
  493. package/dist/components/TimeDisplay.mjs.map +0 -1
  494. package/dist/components/Tooltip.js.map +0 -1
  495. package/dist/components/Tooltip.mjs.map +0 -1
  496. package/dist/components/VerticalDivider.js.map +0 -1
  497. package/dist/components/VerticalDivider.mjs.map +0 -1
  498. package/dist/components/date/DatePicker.mjs.map +0 -1
  499. package/dist/components/date/DayPicker.mjs.map +0 -1
  500. package/dist/components/date/TimePicker.mjs.map +0 -1
  501. package/dist/components/date/YearMonthPicker.mjs.map +0 -1
  502. package/dist/components/icons/Helpwave.js.map +0 -1
  503. package/dist/components/icons/Helpwave.mjs +0 -43
  504. package/dist/components/icons/Helpwave.mjs.map +0 -1
  505. package/dist/components/icons/Tag.js.map +0 -1
  506. package/dist/components/icons/Tag.mjs.map +0 -1
  507. package/dist/components/layout/Carousel.js.map +0 -1
  508. package/dist/components/layout/Carousel.mjs.map +0 -1
  509. package/dist/components/layout/DividerInserter.js.map +0 -1
  510. package/dist/components/layout/DividerInserter.mjs.map +0 -1
  511. package/dist/components/layout/FAQSection.js.map +0 -1
  512. package/dist/components/layout/FAQSection.mjs.map +0 -1
  513. package/dist/components/layout/Tile.js.map +0 -1
  514. package/dist/components/layout/Tile.mjs.map +0 -1
  515. package/dist/components/modals/ConfirmDialog.d.mts +0 -38
  516. package/dist/components/modals/ConfirmDialog.d.ts +0 -38
  517. package/dist/components/modals/ConfirmDialog.js.map +0 -1
  518. package/dist/components/modals/ConfirmDialog.mjs.map +0 -1
  519. package/dist/components/modals/DiscardChangesDialog.d.mts +0 -23
  520. package/dist/components/modals/DiscardChangesDialog.d.ts +0 -23
  521. package/dist/components/modals/DiscardChangesDialog.js +0 -409
  522. package/dist/components/modals/DiscardChangesDialog.js.map +0 -1
  523. package/dist/components/modals/DiscardChangesDialog.mjs +0 -372
  524. package/dist/components/modals/DiscardChangesDialog.mjs.map +0 -1
  525. package/dist/components/modals/InputModal.mjs +0 -568
  526. package/dist/components/modals/InputModal.mjs.map +0 -1
  527. package/dist/components/modals/LanguageModal.d.mts +0 -21
  528. package/dist/components/modals/LanguageModal.mjs +0 -491
  529. package/dist/components/modals/LanguageModal.mjs.map +0 -1
  530. package/dist/components/modals/Modal.d.mts +0 -43
  531. package/dist/components/modals/Modal.d.ts +0 -43
  532. package/dist/components/modals/Modal.js +0 -288
  533. package/dist/components/modals/Modal.js.map +0 -1
  534. package/dist/components/modals/Modal.mjs +0 -251
  535. package/dist/components/modals/Modal.mjs.map +0 -1
  536. package/dist/components/modals/ModalRegister.d.mts +0 -16
  537. package/dist/components/modals/ModalRegister.d.ts +0 -16
  538. package/dist/components/modals/ModalRegister.js +0 -63
  539. package/dist/components/modals/ModalRegister.js.map +0 -1
  540. package/dist/components/modals/ModalRegister.mjs +0 -37
  541. package/dist/components/modals/ModalRegister.mjs.map +0 -1
  542. package/dist/components/properties/CheckboxProperty.mjs +0 -291
  543. package/dist/components/properties/CheckboxProperty.mjs.map +0 -1
  544. package/dist/components/properties/DateProperty.mjs +0 -392
  545. package/dist/components/properties/DateProperty.mjs.map +0 -1
  546. package/dist/components/properties/MultiSelectProperty.mjs.map +0 -1
  547. package/dist/components/properties/NumberProperty.mjs +0 -401
  548. package/dist/components/properties/NumberProperty.mjs.map +0 -1
  549. package/dist/components/properties/PropertyBase.mjs +0 -162
  550. package/dist/components/properties/PropertyBase.mjs.map +0 -1
  551. package/dist/components/properties/SelectProperty.mjs.map +0 -1
  552. package/dist/components/properties/TextProperty.mjs +0 -345
  553. package/dist/components/properties/TextProperty.mjs.map +0 -1
  554. package/dist/components/user-input/Checkbox.js.map +0 -1
  555. package/dist/components/user-input/Checkbox.mjs.map +0 -1
  556. package/dist/components/user-input/DateAndTimePicker.js.map +0 -1
  557. package/dist/components/user-input/DateAndTimePicker.mjs.map +0 -1
  558. package/dist/components/user-input/Input.js.map +0 -1
  559. package/dist/components/user-input/Input.mjs.map +0 -1
  560. package/dist/components/user-input/Label.js.map +0 -1
  561. package/dist/components/user-input/Label.mjs.map +0 -1
  562. package/dist/components/user-input/Menu.js.map +0 -1
  563. package/dist/components/user-input/Menu.mjs.map +0 -1
  564. package/dist/components/user-input/MultiSelect.js.map +0 -1
  565. package/dist/components/user-input/MultiSelect.mjs.map +0 -1
  566. package/dist/components/user-input/ScrollPicker.js.map +0 -1
  567. package/dist/components/user-input/ScrollPicker.mjs.map +0 -1
  568. package/dist/components/user-input/SearchableSelect.d.mts +0 -14
  569. package/dist/components/user-input/SearchableSelect.d.ts +0 -14
  570. package/dist/components/user-input/SearchableSelect.js.map +0 -1
  571. package/dist/components/user-input/SearchableSelect.mjs.map +0 -1
  572. package/dist/components/user-input/Select.d.mts +0 -36
  573. package/dist/components/user-input/Select.d.ts +0 -36
  574. package/dist/components/user-input/Select.js +0 -153
  575. package/dist/components/user-input/Select.js.map +0 -1
  576. package/dist/components/user-input/Select.mjs +0 -118
  577. package/dist/components/user-input/Select.mjs.map +0 -1
  578. package/dist/components/user-input/Textarea.d.mts +0 -24
  579. package/dist/components/user-input/Textarea.js.map +0 -1
  580. package/dist/components/user-input/Textarea.mjs +0 -119
  581. package/dist/components/user-input/Textarea.mjs.map +0 -1
  582. package/dist/components/user-input/ToggleableInput.js.map +0 -1
  583. package/dist/components/user-input/ToggleableInput.mjs.map +0 -1
  584. package/dist/hooks/useHoverState.mjs +0 -47
  585. package/dist/hooks/useLanguage.d.mts +0 -21
  586. package/dist/hooks/useLanguage.d.ts +0 -21
  587. package/dist/hooks/useLanguage.js.map +0 -1
  588. package/dist/hooks/useLanguage.mjs.map +0 -1
  589. package/dist/hooks/useLocalStorage.mjs +0 -58
  590. package/dist/hooks/useLocalStorage.mjs.map +0 -1
  591. package/dist/hooks/useOutsideClick.mjs +0 -23
  592. package/dist/hooks/useSaveDelay.mjs +0 -43
  593. package/dist/hooks/useTheme.js.map +0 -1
  594. package/dist/hooks/useTheme.mjs.map +0 -1
  595. package/dist/hooks/useTranslation.js.map +0 -1
  596. package/dist/hooks/useTranslation.mjs.map +0 -1
  597. package/dist/index.d.mts +0 -88
  598. package/dist/index.mjs.map +0 -1
  599. package/dist/util/array.mjs.map +0 -1
  600. package/dist/util/builder.mjs +0 -9
  601. package/dist/util/date.mjs.map +0 -1
  602. package/dist/util/easeFunctions.mjs +0 -36
  603. package/dist/util/easeFunctions.mjs.map +0 -1
  604. package/dist/util/emailValidation.mjs +0 -8
  605. package/dist/util/math.mjs +0 -8
  606. package/dist/util/news.mjs +0 -48
  607. package/dist/util/news.mjs.map +0 -1
  608. package/dist/util/noop.mjs +0 -6
  609. package/dist/util/noop.mjs.map +0 -1
  610. package/dist/util/simpleSearch.mjs +0 -26
  611. package/dist/util/simpleSearch.mjs.map +0 -1
  612. package/dist/util/storage.mjs +0 -38
  613. package/dist/util/storage.mjs.map +0 -1
  614. package/dist/util/types.mjs +0 -1
  615. package/dist/util/types.mjs.map +0 -1
  616. /package/dist/coloring/{types.d.mts → types.d.cts} +0 -0
  617. /package/dist/components/{HelpwaveBadge.d.mts → branding/HelpwaveBadge.d.cts} +0 -0
  618. /package/dist/components/{HelpwaveBadge.d.ts → branding/HelpwaveBadge.d.ts} +0 -0
  619. /package/dist/components/{Circle.d.mts → icons-and-geometry/Circle.d.cts} +0 -0
  620. /package/dist/components/{Circle.d.ts → icons-and-geometry/Circle.d.ts} +0 -0
  621. /package/dist/components/{icons/Helpwave.d.mts → icons-and-geometry/Helpwave.d.cts} +0 -0
  622. /package/dist/components/{icons → icons-and-geometry}/Helpwave.d.ts +0 -0
  623. /package/dist/components/{Ring.d.mts → icons-and-geometry/Ring.d.cts} +0 -0
  624. /package/dist/components/{Ring.d.ts → icons-and-geometry/Ring.d.ts} +0 -0
  625. /package/dist/components/{icons/Tag.d.mts → icons-and-geometry/Tag.d.cts} +0 -0
  626. /package/dist/components/{icons → icons-and-geometry}/Tag.d.ts +0 -0
  627. /package/dist/components/{BreadCrumb.d.mts → layout-and-navigation/BreadCrumb.d.cts} +0 -0
  628. /package/dist/components/{BreadCrumb.d.ts → layout-and-navigation/BreadCrumb.d.ts} +0 -0
  629. /package/dist/components/{layout/Carousel.d.mts → layout-and-navigation/Carousel.d.cts} +0 -0
  630. /package/dist/components/{layout → layout-and-navigation}/Carousel.d.ts +0 -0
  631. /package/dist/components/{ChipList.d.mts → layout-and-navigation/Chip.d.cts} +0 -0
  632. /package/dist/components/{ChipList.d.ts → layout-and-navigation/Chip.d.ts} +0 -0
  633. /package/dist/components/{layout/DividerInserter.d.mts → layout-and-navigation/DividerInserter.d.cts} +0 -0
  634. /package/dist/components/{layout → layout-and-navigation}/DividerInserter.d.ts +0 -0
  635. /package/dist/components/{Expandable.d.mts → layout-and-navigation/Expandable.d.cts} +0 -0
  636. /package/dist/components/{Expandable.d.ts → layout-and-navigation/Expandable.d.ts} +0 -0
  637. /package/dist/components/{MarkdownInterpreter.d.mts → layout-and-navigation/MarkdownInterpreter.d.cts} +0 -0
  638. /package/dist/components/{MarkdownInterpreter.d.ts → layout-and-navigation/MarkdownInterpreter.d.ts} +0 -0
  639. /package/dist/components/{layout/Tile.d.mts → layout-and-navigation/Tile.d.cts} +0 -0
  640. /package/dist/components/{layout → layout-and-navigation}/Tile.d.ts +0 -0
  641. /package/dist/components/{VerticalDivider.d.mts → layout-and-navigation/VerticalDivider.d.cts} +0 -0
  642. /package/dist/components/{VerticalDivider.d.ts → layout-and-navigation/VerticalDivider.d.ts} +0 -0
  643. /package/dist/components/{ProgressIndicator.d.mts → loading-states/ProgressIndicator.d.cts} +0 -0
  644. /package/dist/components/{ProgressIndicator.d.ts → loading-states/ProgressIndicator.d.ts} +0 -0
  645. /package/dist/components/{user-input/Menu.d.mts → user-action/Menu.d.cts} +0 -0
  646. /package/dist/components/{user-input → user-action}/Menu.d.ts +0 -0
  647. /package/dist/components/{user-input/ScrollPicker.d.mts → user-action/ScrollPicker.d.cts} +0 -0
  648. /package/dist/components/{user-input → user-action}/ScrollPicker.d.ts +0 -0
  649. /package/dist/components/{user-input/ToggleableInput.d.mts → user-action/ToggleableInput.d.cts} +0 -0
  650. /package/dist/components/{user-input → user-action}/ToggleableInput.d.ts +0 -0
  651. /package/dist/hooks/{useHoverState.d.mts → useHoverState.d.cts} +0 -0
  652. /package/dist/hooks/{useLocalStorage.d.mts → useLocalStorage.d.cts} +0 -0
  653. /package/dist/hooks/{useOutsideClick.d.mts → useOutsideClick.d.cts} +0 -0
  654. /package/dist/hooks/{useSaveDelay.d.mts → useSaveDelay.d.cts} +0 -0
  655. /package/dist/util/{array.d.mts → array.d.cts} +0 -0
  656. /package/dist/util/{builder.d.mts → builder.d.cts} +0 -0
  657. /package/dist/util/{date.d.mts → date.d.cts} +0 -0
  658. /package/dist/util/{easeFunctions.d.mts → easeFunctions.d.cts} +0 -0
  659. /package/dist/util/{emailValidation.d.mts → emailValidation.d.cts} +0 -0
  660. /package/dist/util/{loopingArray.d.mts → loopingArray.d.cts} +0 -0
  661. /package/dist/util/{math.d.mts → math.d.cts} +0 -0
  662. /package/dist/util/{noop.d.mts → noop.d.cts} +0 -0
  663. /package/dist/util/{simpleSearch.d.mts → simpleSearch.d.cts} +0 -0
  664. /package/dist/util/{storage.d.mts → storage.d.cts} +0 -0
  665. /package/dist/util/{types.d.mts → types.d.cts} +0 -0
@@ -1,243 +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/TechRadar.tsx
31
- var TechRadar_exports = {};
32
- __export(TechRadar_exports, {
33
- TechRadar: () => TechRadar
34
- });
35
- module.exports = __toCommonJS(TechRadar_exports);
36
- var import_react = require("react");
37
- var import_script = __toESM(require("next/script"));
38
- var import_jsx_runtime = require("react/jsx-runtime");
39
- var helpwaveTechRadar = {
40
- date: /* @__PURE__ */ new Date("1/28/2024"),
41
- config: {
42
- colors: {
43
- background: "#fff",
44
- grid: "#dddde0",
45
- inactive: "#ddd"
46
- },
47
- title: "helpwave Tech-Radar",
48
- quadrants: [
49
- { name: "Languages" },
50
- { name: "Language dependencies" },
51
- { name: "Infrastructure" },
52
- { name: "Datastores" }
53
- ],
54
- rings: [
55
- { name: "ADOPT", color: "#5ba300" },
56
- { name: "TRIAL", color: "#009eb0" },
57
- { name: "ASSESS", color: "#c7ba00" },
58
- { name: "HOLD", color: "#e09b96" }
59
- ],
60
- print_layout: true,
61
- links_in_new_tabs: true
62
- },
63
- entries: [
64
- // Languages
65
- {
66
- label: "Golang",
67
- active: true,
68
- quadrant: 0,
69
- ring: 0,
70
- moved: 0
71
- },
72
- {
73
- label: "Python",
74
- active: true,
75
- quadrant: 0,
76
- ring: 2,
77
- moved: 0
78
- },
79
- {
80
- label: "TypeScript",
81
- active: true,
82
- quadrant: 0,
83
- ring: 0,
84
- moved: 0
85
- },
86
- {
87
- label: "Dart",
88
- active: true,
89
- quadrant: 0,
90
- ring: 0,
91
- moved: 0
92
- },
93
- // Language dependencies
94
- {
95
- label: "Dapr",
96
- link: "https://dapr.io/",
97
- active: true,
98
- quadrant: 1,
99
- ring: 0,
100
- moved: 0
101
- },
102
- {
103
- label: "GORM",
104
- active: true,
105
- quadrant: 1,
106
- ring: 3,
107
- moved: -1
108
- },
109
- {
110
- label: "SQLc",
111
- active: true,
112
- quadrant: 1,
113
- ring: 0,
114
- moved: 1
115
- },
116
- {
117
- label: "Flutter",
118
- active: true,
119
- quadrant: 1,
120
- ring: 0,
121
- moved: 0
122
- },
123
- {
124
- label: "Next.js",
125
- active: true,
126
- quadrant: 1,
127
- ring: 0,
128
- moved: 0
129
- },
130
- // Infrastructure
131
- {
132
- label: "Docker",
133
- active: true,
134
- quadrant: 2,
135
- ring: 0,
136
- moved: 0
137
- },
138
- {
139
- label: "Kubernetes",
140
- active: true,
141
- quadrant: 2,
142
- ring: 2,
143
- moved: 1
144
- },
145
- {
146
- label: "gRPC",
147
- active: true,
148
- quadrant: 2,
149
- ring: 0,
150
- moved: 0
151
- },
152
- {
153
- label: "APISIX",
154
- active: true,
155
- quadrant: 2,
156
- ring: 0,
157
- moved: 0
158
- },
159
- {
160
- label: "GitHub Actions",
161
- active: true,
162
- quadrant: 2,
163
- ring: 0,
164
- moved: 0
165
- },
166
- {
167
- label: "devenv",
168
- active: true,
169
- quadrant: 2,
170
- ring: 1,
171
- moved: 0
172
- },
173
- // Datastores
174
- {
175
- label: "PostgreSQL",
176
- active: true,
177
- quadrant: 3,
178
- ring: 0,
179
- moved: 0
180
- },
181
- {
182
- label: "Redis",
183
- active: true,
184
- quadrant: 3,
185
- ring: 0,
186
- moved: 0
187
- },
188
- {
189
- label: "EventStoreDB",
190
- active: true,
191
- quadrant: 3,
192
- ring: 1,
193
- moved: 0
194
- }
195
- ]
196
- };
197
- var TechRadar = ({
198
- date = helpwaveTechRadar.date,
199
- config = helpwaveTechRadar.config,
200
- entries = helpwaveTechRadar.entries
201
- }) => {
202
- const [isD3Loaded, setIsD3Loaded] = (0, import_react.useState)(false);
203
- const [isRadarLoaded, setIsRadarLoaded] = (0, import_react.useState)(false);
204
- const dateString = date.toLocaleDateString("en-US", { year: "numeric", month: "numeric", day: "numeric" });
205
- (0, import_react.useEffect)(() => {
206
- if (!isD3Loaded || !isRadarLoaded) return;
207
- d3.select("svg#radar").select("*").remove();
208
- radar_visualization({
209
- svg_id: "radar",
210
- width: 1500,
211
- height: 1e3,
212
- date: dateString,
213
- entries,
214
- ...config
215
- });
216
- }, [isD3Loaded, isRadarLoaded, config, entries]);
217
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
218
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
219
- import_script.default,
220
- {
221
- src: "https://cdn.helpwave.de/js/d3.v4.min.js",
222
- onLoad: () => {
223
- setIsD3Loaded(true);
224
- }
225
- }
226
- ),
227
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
228
- import_script.default,
229
- {
230
- src: "https://cdn.helpwave.de/js/radar-0.8.js",
231
- onLoad: () => {
232
- setIsRadarLoaded(true);
233
- }
234
- }
235
- ),
236
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("svg", { id: "radar" })
237
- ] });
238
- };
239
- // Annotate the CommonJS export names for ESM import in node:
240
- 0 && (module.exports = {
241
- TechRadar
242
- });
243
- //# sourceMappingURL=TechRadar.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/components/TechRadar.tsx"],"sourcesContent":["import { useEffect, useState } from 'react'\nimport Script from 'next/script'\n\ntype Config = {\n colors: {\n background: string, // hex\n grid: string, // hex\n inactive: string, // hex\n },\n title: string,\n quadrants: {\n name: string,\n }[],\n rings: {\n name: string,\n color: string, // hex\n }[],\n print_layout: boolean,\n links_in_new_tabs: boolean,\n zoomed_quadrant?: 0 | 1 | 2 | 3,\n}\n\ntype Entry = {\n label: string,\n link?: string,\n active: boolean,\n quadrant: 0 | 1 | 2 | 3, // Clockwise, starts from bottom right\n ring: 0 | 1 | 2 | 3, // Starts from the inside\n moved: -1 | 0 | 1, // -1: moved out, 0: not moved, 1: moved in\n}\n\nconst helpwaveTechRadar = {\n date: new Date('1/28/2024'),\n config: {\n colors: {\n background: '#fff',\n grid: '#dddde0',\n inactive: '#ddd'\n },\n title: 'helpwave Tech-Radar',\n quadrants: [\n { name: 'Languages' },\n { name: 'Language dependencies' },\n { name: 'Infrastructure' },\n { name: 'Datastores' },\n ],\n rings: [\n { name: 'ADOPT', color: '#5ba300' },\n { name: 'TRIAL', color: '#009eb0' },\n { name: 'ASSESS', color: '#c7ba00' },\n { name: 'HOLD', color: '#e09b96' }\n ],\n print_layout: true,\n links_in_new_tabs: true,\n } satisfies Config,\n entries: [\n // Languages\n {\n label: 'Golang',\n active: true,\n quadrant: 0,\n ring: 0,\n moved: 0,\n },\n {\n label: 'Python',\n active: true,\n quadrant: 0,\n ring: 2,\n moved: 0,\n },\n {\n label: 'TypeScript',\n active: true,\n quadrant: 0,\n ring: 0,\n moved: 0,\n },\n {\n label: 'Dart',\n active: true,\n quadrant: 0,\n ring: 0,\n moved: 0,\n },\n // Language dependencies\n {\n label: 'Dapr',\n link: 'https://dapr.io/',\n active: true,\n quadrant: 1,\n ring: 0,\n moved: 0,\n },\n {\n label: 'GORM',\n active: true,\n quadrant: 1,\n ring: 3,\n moved: -1,\n },\n {\n label: 'SQLc',\n active: true,\n quadrant: 1,\n ring: 0,\n moved: 1,\n },\n\n {\n label: 'Flutter',\n active: true,\n quadrant: 1,\n ring: 0,\n moved: 0,\n },\n {\n label: 'Next.js',\n active: true,\n quadrant: 1,\n ring: 0,\n moved: 0,\n },\n // Infrastructure\n {\n label: 'Docker',\n active: true,\n quadrant: 2,\n ring: 0,\n moved: 0,\n },\n {\n label: 'Kubernetes',\n active: true,\n quadrant: 2,\n ring: 2,\n moved: 1,\n },\n {\n label: 'gRPC',\n active: true,\n quadrant: 2,\n ring: 0,\n moved: 0,\n },\n {\n label: 'APISIX',\n active: true,\n quadrant: 2,\n ring: 0,\n moved: 0,\n },\n {\n label: 'GitHub Actions',\n active: true,\n quadrant: 2,\n ring: 0,\n moved: 0,\n },\n {\n label: 'devenv',\n active: true,\n quadrant: 2,\n ring: 1,\n moved: 0,\n },\n // Datastores\n {\n label: 'PostgreSQL',\n active: true,\n quadrant: 3,\n ring: 0,\n moved: 0,\n },\n {\n label: 'Redis',\n active: true,\n quadrant: 3,\n ring: 0,\n moved: 0,\n },\n {\n label: 'EventStoreDB',\n active: true,\n quadrant: 3,\n ring: 1,\n moved: 0,\n },\n ] satisfies Entry[]\n}\n\ntype TechRadarProps = {\n date?: Date,\n config?: Config,\n entries?: Entry[],\n}\n\n/**\n * This component wraps https://github.com/zalando/tech-radar\n */\nexport const TechRadar = ({\n date = helpwaveTechRadar.date,\n config = helpwaveTechRadar.config,\n entries = helpwaveTechRadar.entries,\n}: TechRadarProps) => {\n const [isD3Loaded, setIsD3Loaded] = useState(false)\n const [isRadarLoaded, setIsRadarLoaded] = useState(false)\n\n const dateString = date.toLocaleDateString('en-US', { year: 'numeric', month: 'numeric', day: 'numeric' })\n\n useEffect(() => {\n if (!isD3Loaded || !isRadarLoaded) return\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n d3.select('svg#radar').select('*').remove()\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n radar_visualization({\n svg_id: 'radar',\n width: 1500,\n height: 1000,\n date: dateString,\n entries,\n ...config,\n })\n }, [isD3Loaded, isRadarLoaded, config, entries]) // eslint-disable-line react-hooks/exhaustive-deps\n\n return (\n <>\n <Script\n src=\"https://cdn.helpwave.de/js/d3.v4.min.js\"\n onLoad={() => {\n setIsD3Loaded(true)\n }}\n />\n <Script\n src=\"https://cdn.helpwave.de/js/radar-0.8.js\"\n onLoad={() => {\n setIsRadarLoaded(true)\n }}\n />\n <svg id=\"radar\"></svg>\n </>\n )\n}\n"],"mappings":"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","names":["Script"]}
@@ -1,208 +0,0 @@
1
- // src/components/TechRadar.tsx
2
- import { useEffect, useState } from "react";
3
- import Script from "next/script";
4
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
5
- var helpwaveTechRadar = {
6
- date: /* @__PURE__ */ new Date("1/28/2024"),
7
- config: {
8
- colors: {
9
- background: "#fff",
10
- grid: "#dddde0",
11
- inactive: "#ddd"
12
- },
13
- title: "helpwave Tech-Radar",
14
- quadrants: [
15
- { name: "Languages" },
16
- { name: "Language dependencies" },
17
- { name: "Infrastructure" },
18
- { name: "Datastores" }
19
- ],
20
- rings: [
21
- { name: "ADOPT", color: "#5ba300" },
22
- { name: "TRIAL", color: "#009eb0" },
23
- { name: "ASSESS", color: "#c7ba00" },
24
- { name: "HOLD", color: "#e09b96" }
25
- ],
26
- print_layout: true,
27
- links_in_new_tabs: true
28
- },
29
- entries: [
30
- // Languages
31
- {
32
- label: "Golang",
33
- active: true,
34
- quadrant: 0,
35
- ring: 0,
36
- moved: 0
37
- },
38
- {
39
- label: "Python",
40
- active: true,
41
- quadrant: 0,
42
- ring: 2,
43
- moved: 0
44
- },
45
- {
46
- label: "TypeScript",
47
- active: true,
48
- quadrant: 0,
49
- ring: 0,
50
- moved: 0
51
- },
52
- {
53
- label: "Dart",
54
- active: true,
55
- quadrant: 0,
56
- ring: 0,
57
- moved: 0
58
- },
59
- // Language dependencies
60
- {
61
- label: "Dapr",
62
- link: "https://dapr.io/",
63
- active: true,
64
- quadrant: 1,
65
- ring: 0,
66
- moved: 0
67
- },
68
- {
69
- label: "GORM",
70
- active: true,
71
- quadrant: 1,
72
- ring: 3,
73
- moved: -1
74
- },
75
- {
76
- label: "SQLc",
77
- active: true,
78
- quadrant: 1,
79
- ring: 0,
80
- moved: 1
81
- },
82
- {
83
- label: "Flutter",
84
- active: true,
85
- quadrant: 1,
86
- ring: 0,
87
- moved: 0
88
- },
89
- {
90
- label: "Next.js",
91
- active: true,
92
- quadrant: 1,
93
- ring: 0,
94
- moved: 0
95
- },
96
- // Infrastructure
97
- {
98
- label: "Docker",
99
- active: true,
100
- quadrant: 2,
101
- ring: 0,
102
- moved: 0
103
- },
104
- {
105
- label: "Kubernetes",
106
- active: true,
107
- quadrant: 2,
108
- ring: 2,
109
- moved: 1
110
- },
111
- {
112
- label: "gRPC",
113
- active: true,
114
- quadrant: 2,
115
- ring: 0,
116
- moved: 0
117
- },
118
- {
119
- label: "APISIX",
120
- active: true,
121
- quadrant: 2,
122
- ring: 0,
123
- moved: 0
124
- },
125
- {
126
- label: "GitHub Actions",
127
- active: true,
128
- quadrant: 2,
129
- ring: 0,
130
- moved: 0
131
- },
132
- {
133
- label: "devenv",
134
- active: true,
135
- quadrant: 2,
136
- ring: 1,
137
- moved: 0
138
- },
139
- // Datastores
140
- {
141
- label: "PostgreSQL",
142
- active: true,
143
- quadrant: 3,
144
- ring: 0,
145
- moved: 0
146
- },
147
- {
148
- label: "Redis",
149
- active: true,
150
- quadrant: 3,
151
- ring: 0,
152
- moved: 0
153
- },
154
- {
155
- label: "EventStoreDB",
156
- active: true,
157
- quadrant: 3,
158
- ring: 1,
159
- moved: 0
160
- }
161
- ]
162
- };
163
- var TechRadar = ({
164
- date = helpwaveTechRadar.date,
165
- config = helpwaveTechRadar.config,
166
- entries = helpwaveTechRadar.entries
167
- }) => {
168
- const [isD3Loaded, setIsD3Loaded] = useState(false);
169
- const [isRadarLoaded, setIsRadarLoaded] = useState(false);
170
- const dateString = date.toLocaleDateString("en-US", { year: "numeric", month: "numeric", day: "numeric" });
171
- useEffect(() => {
172
- if (!isD3Loaded || !isRadarLoaded) return;
173
- d3.select("svg#radar").select("*").remove();
174
- radar_visualization({
175
- svg_id: "radar",
176
- width: 1500,
177
- height: 1e3,
178
- date: dateString,
179
- entries,
180
- ...config
181
- });
182
- }, [isD3Loaded, isRadarLoaded, config, entries]);
183
- return /* @__PURE__ */ jsxs(Fragment, { children: [
184
- /* @__PURE__ */ jsx(
185
- Script,
186
- {
187
- src: "https://cdn.helpwave.de/js/d3.v4.min.js",
188
- onLoad: () => {
189
- setIsD3Loaded(true);
190
- }
191
- }
192
- ),
193
- /* @__PURE__ */ jsx(
194
- Script,
195
- {
196
- src: "https://cdn.helpwave.de/js/radar-0.8.js",
197
- onLoad: () => {
198
- setIsRadarLoaded(true);
199
- }
200
- }
201
- ),
202
- /* @__PURE__ */ jsx("svg", { id: "radar" })
203
- ] });
204
- };
205
- export {
206
- TechRadar
207
- };
208
- //# sourceMappingURL=TechRadar.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/components/TechRadar.tsx"],"sourcesContent":["import { useEffect, useState } from 'react'\nimport Script from 'next/script'\n\ntype Config = {\n colors: {\n background: string, // hex\n grid: string, // hex\n inactive: string, // hex\n },\n title: string,\n quadrants: {\n name: string,\n }[],\n rings: {\n name: string,\n color: string, // hex\n }[],\n print_layout: boolean,\n links_in_new_tabs: boolean,\n zoomed_quadrant?: 0 | 1 | 2 | 3,\n}\n\ntype Entry = {\n label: string,\n link?: string,\n active: boolean,\n quadrant: 0 | 1 | 2 | 3, // Clockwise, starts from bottom right\n ring: 0 | 1 | 2 | 3, // Starts from the inside\n moved: -1 | 0 | 1, // -1: moved out, 0: not moved, 1: moved in\n}\n\nconst helpwaveTechRadar = {\n date: new Date('1/28/2024'),\n config: {\n colors: {\n background: '#fff',\n grid: '#dddde0',\n inactive: '#ddd'\n },\n title: 'helpwave Tech-Radar',\n quadrants: [\n { name: 'Languages' },\n { name: 'Language dependencies' },\n { name: 'Infrastructure' },\n { name: 'Datastores' },\n ],\n rings: [\n { name: 'ADOPT', color: '#5ba300' },\n { name: 'TRIAL', color: '#009eb0' },\n { name: 'ASSESS', color: '#c7ba00' },\n { name: 'HOLD', color: '#e09b96' }\n ],\n print_layout: true,\n links_in_new_tabs: true,\n } satisfies Config,\n entries: [\n // Languages\n {\n label: 'Golang',\n active: true,\n quadrant: 0,\n ring: 0,\n moved: 0,\n },\n {\n label: 'Python',\n active: true,\n quadrant: 0,\n ring: 2,\n moved: 0,\n },\n {\n label: 'TypeScript',\n active: true,\n quadrant: 0,\n ring: 0,\n moved: 0,\n },\n {\n label: 'Dart',\n active: true,\n quadrant: 0,\n ring: 0,\n moved: 0,\n },\n // Language dependencies\n {\n label: 'Dapr',\n link: 'https://dapr.io/',\n active: true,\n quadrant: 1,\n ring: 0,\n moved: 0,\n },\n {\n label: 'GORM',\n active: true,\n quadrant: 1,\n ring: 3,\n moved: -1,\n },\n {\n label: 'SQLc',\n active: true,\n quadrant: 1,\n ring: 0,\n moved: 1,\n },\n\n {\n label: 'Flutter',\n active: true,\n quadrant: 1,\n ring: 0,\n moved: 0,\n },\n {\n label: 'Next.js',\n active: true,\n quadrant: 1,\n ring: 0,\n moved: 0,\n },\n // Infrastructure\n {\n label: 'Docker',\n active: true,\n quadrant: 2,\n ring: 0,\n moved: 0,\n },\n {\n label: 'Kubernetes',\n active: true,\n quadrant: 2,\n ring: 2,\n moved: 1,\n },\n {\n label: 'gRPC',\n active: true,\n quadrant: 2,\n ring: 0,\n moved: 0,\n },\n {\n label: 'APISIX',\n active: true,\n quadrant: 2,\n ring: 0,\n moved: 0,\n },\n {\n label: 'GitHub Actions',\n active: true,\n quadrant: 2,\n ring: 0,\n moved: 0,\n },\n {\n label: 'devenv',\n active: true,\n quadrant: 2,\n ring: 1,\n moved: 0,\n },\n // Datastores\n {\n label: 'PostgreSQL',\n active: true,\n quadrant: 3,\n ring: 0,\n moved: 0,\n },\n {\n label: 'Redis',\n active: true,\n quadrant: 3,\n ring: 0,\n moved: 0,\n },\n {\n label: 'EventStoreDB',\n active: true,\n quadrant: 3,\n ring: 1,\n moved: 0,\n },\n ] satisfies Entry[]\n}\n\ntype TechRadarProps = {\n date?: Date,\n config?: Config,\n entries?: Entry[],\n}\n\n/**\n * This component wraps https://github.com/zalando/tech-radar\n */\nexport const TechRadar = ({\n date = helpwaveTechRadar.date,\n config = helpwaveTechRadar.config,\n entries = helpwaveTechRadar.entries,\n}: TechRadarProps) => {\n const [isD3Loaded, setIsD3Loaded] = useState(false)\n const [isRadarLoaded, setIsRadarLoaded] = useState(false)\n\n const dateString = date.toLocaleDateString('en-US', { year: 'numeric', month: 'numeric', day: 'numeric' })\n\n useEffect(() => {\n if (!isD3Loaded || !isRadarLoaded) return\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n d3.select('svg#radar').select('*').remove()\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n radar_visualization({\n svg_id: 'radar',\n width: 1500,\n height: 1000,\n date: dateString,\n entries,\n ...config,\n })\n }, [isD3Loaded, isRadarLoaded, config, entries]) // eslint-disable-line react-hooks/exhaustive-deps\n\n return (\n <>\n <Script\n src=\"https://cdn.helpwave.de/js/d3.v4.min.js\"\n onLoad={() => {\n setIsD3Loaded(true)\n }}\n />\n <Script\n src=\"https://cdn.helpwave.de/js/radar-0.8.js\"\n onLoad={() => {\n setIsRadarLoaded(true)\n }}\n />\n <svg id=\"radar\"></svg>\n </>\n )\n}\n"],"mappings":";AAAA,SAAS,WAAW,gBAAgB;AACpC,OAAO,YAAY;AAqOf,mBACE,KADF;AAvMJ,IAAM,oBAAoB;AAAA,EACxB,MAAM,oBAAI,KAAK,WAAW;AAAA,EAC1B,QAAQ;AAAA,IACN,QAAQ;AAAA,MACN,YAAY;AAAA,MACZ,MAAM;AAAA,MACN,UAAU;AAAA,IACZ;AAAA,IACA,OAAO;AAAA,IACP,WAAW;AAAA,MACT,EAAE,MAAM,YAAY;AAAA,MACpB,EAAE,MAAM,wBAAwB;AAAA,MAChC,EAAE,MAAM,iBAAiB;AAAA,MACzB,EAAE,MAAM,aAAa;AAAA,IACvB;AAAA,IACA,OAAO;AAAA,MACL,EAAE,MAAM,SAAS,OAAO,UAAU;AAAA,MAClC,EAAE,MAAM,SAAS,OAAO,UAAU;AAAA,MAClC,EAAE,MAAM,UAAU,OAAO,UAAU;AAAA,MACnC,EAAE,MAAM,QAAQ,OAAO,UAAU;AAAA,IACnC;AAAA,IACA,cAAc;AAAA,IACd,mBAAmB;AAAA,EACrB;AAAA,EACA,SAAS;AAAA;AAAA,IAEP;AAAA,MACE,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA;AAAA,IAEA;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,IAEA;AAAA,MACE,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA;AAAA,IAEA;AAAA,MACE,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA;AAAA,IAEA;AAAA,MACE,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,EACF;AACF;AAWO,IAAM,YAAY,CAAC;AAAA,EACxB,OAAO,kBAAkB;AAAA,EACzB,SAAS,kBAAkB;AAAA,EAC3B,UAAU,kBAAkB;AAC9B,MAAsB;AACpB,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,KAAK;AAClD,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAS,KAAK;AAExD,QAAM,aAAa,KAAK,mBAAmB,SAAS,EAAE,MAAM,WAAW,OAAO,WAAW,KAAK,UAAU,CAAC;AAEzG,YAAU,MAAM;AACd,QAAI,CAAC,cAAc,CAAC,cAAe;AAInC,OAAG,OAAO,WAAW,EAAE,OAAO,GAAG,EAAE,OAAO;AAI1C,wBAAoB;AAAA,MAClB,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,MAAM;AAAA,MACN;AAAA,MACA,GAAG;AAAA,IACL,CAAC;AAAA,EACH,GAAG,CAAC,YAAY,eAAe,QAAQ,OAAO,CAAC;AAE/C,SACE,iCACE;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,KAAI;AAAA,QACJ,QAAQ,MAAM;AACZ,wBAAc,IAAI;AAAA,QACpB;AAAA;AAAA,IACF;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACC,KAAI;AAAA,QACJ,QAAQ,MAAM;AACZ,2BAAiB,IAAI;AAAA,QACvB;AAAA;AAAA,IACF;AAAA,IACA,oBAAC,SAAI,IAAG,SAAQ;AAAA,KAClB;AAEJ;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/components/TextImage.tsx","../../src/hooks/useLanguage.tsx","../../src/hooks/useLocalStorage.tsx","../../src/hooks/useTranslation.ts"],"sourcesContent":["import type { Languages } from '../hooks/useLanguage'\nimport type { PropsForTranslation } from '../hooks/useTranslation'\nimport { useTranslation } from '../hooks/useTranslation'\nimport clsx from 'clsx'\n\ntype TextImageColor = 'primary' | 'secondary' | 'dark'\n\ntype TextImageTranslation = {\n showMore: string,\n}\n\nconst defaultTextImageTranslation: Record<Languages, TextImageTranslation> = {\n de: {\n showMore: 'Mehr anzeigen'\n },\n en: {\n showMore: 'Show more'\n }\n}\n\nexport type TextImageProps = {\n title: string,\n description: string,\n imageUrl: string,\n onShowMoreClicked?: () => void,\n color?: TextImageColor,\n badge?: string,\n contentClassName?: string,\n className?: string,\n}\n\n/**\n * A Component for layering a Text upon a Image\n */\nexport const TextImage = ({\n overwriteTranslation,\n title,\n description,\n imageUrl,\n onShowMoreClicked,\n color = 'primary',\n badge,\n contentClassName = '',\n className = '',\n }: PropsForTranslation<TextImageTranslation, TextImageProps>) => {\n const translation = useTranslation(defaultTextImageTranslation, overwriteTranslation)\n\n const chipColorMapping: Record<TextImageColor, string> = {\n primary: 'text-text-image-primary-background bg-text-text-image-primary-text',\n secondary: 'text-text-image-secondary-background bg-text-text-image-secondary-text',\n dark: 'text-text-image-dark-background bg-text-text-image-dark-text',\n }\n\n const colorMapping: Record<TextImageColor, string> = {\n primary: 'text-text-image-primary-text bg-linear-to-r from-30% from-text-image-primary-background to-text-image-primary-background/55',\n secondary: 'text-text-image-secondary-text bg-linear-to-r from-30% from-text-image-secondary-background to-text-image-secondary-background/55',\n dark: 'text-text-image-dark-text bg-linear-to-r from-30% from-text-image-dark-background to-text-image-dark-background/55',\n }\n\n return (\n <div\n className={clsx('rounded-2xl w-full', className)}\n style={{\n backgroundImage: `url(${imageUrl})`,\n backgroundSize: 'cover',\n }}>\n <div\n className={clsx(`col px-6 py-12 rounded-2xl h-full`, colorMapping[color], contentClassName)}>\n {badge && (\n <div className={clsx(`chip-full bg-white mb-2 py-2 px-4 w-fit`, chipColorMapping[color])}>\n <span className=\"text-lg font-bold\">{badge}</span>\n </div>\n )}\n <div className=\"col gap-y-1 text-white overflow-hidden\">\n <span className=\"textstyle-title-xl\">{title}</span>\n <span className=\"text-ellipsis overflow-hidden\">{description}</span>\n </div>\n {onShowMoreClicked && (\n <div className=\"row mt-2 text-white underline\">\n <button onClick={onShowMoreClicked}>{translation.showMore}</button>\n </div>\n )}\n </div>\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"],"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;;;AHvCA,kBAAiB;AAmEL,IAAAC,sBAAA;AA3DZ,IAAM,8BAAuE;AAAA,EAC3E,IAAI;AAAA,IACF,UAAU;AAAA,EACZ;AAAA,EACA,IAAI;AAAA,IACF,UAAU;AAAA,EACZ;AACF;AAgBO,IAAM,YAAY,CAAC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA,mBAAmB;AAAA,EACnB,YAAY;AACd,MAAiE;AACzF,QAAM,cAAc,eAAe,6BAA6B,oBAAoB;AAEpF,QAAM,mBAAmD;AAAA,IACvD,SAAS;AAAA,IACT,WAAW;AAAA,IACX,MAAM;AAAA,EACR;AAEA,QAAM,eAA+C;AAAA,IACnD,SAAS;AAAA,IACT,WAAW;AAAA,IACX,MAAM;AAAA,EACR;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,eAAW,YAAAC,SAAK,sBAAsB,SAAS;AAAA,MAC/C,OAAO;AAAA,QACL,iBAAiB,OAAO,QAAQ;AAAA,QAChC,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC,eAAW,YAAAA,SAAK,qCAAqC,aAAa,KAAK,GAAG,gBAAgB;AAAA,UACzF;AAAA,qBACC,6CAAC,SAAI,eAAW,YAAAA,SAAK,2CAA2C,iBAAiB,KAAK,CAAC,GACrF,uDAAC,UAAK,WAAU,qBAAqB,iBAAM,GAC7C;AAAA,YAEF,8CAAC,SAAI,WAAU,0CACb;AAAA,2DAAC,UAAK,WAAU,sBAAsB,iBAAM;AAAA,cAC5C,6CAAC,UAAK,WAAU,iCAAiC,uBAAY;AAAA,eAC/D;AAAA,YACC,qBACC,6CAAC,SAAI,WAAU,iCACb,uDAAC,YAAO,SAAS,mBAAoB,sBAAY,UAAS,GAC5D;AAAA;AAAA;AAAA,MAEJ;AAAA;AAAA,EACF;AAEJ;","names":["import_react","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/TextImage.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 { Languages } from '../hooks/useLanguage'\nimport type { PropsForTranslation } from '../hooks/useTranslation'\nimport { useTranslation } from '../hooks/useTranslation'\nimport clsx from 'clsx'\n\ntype TextImageColor = 'primary' | 'secondary' | 'dark'\n\ntype TextImageTranslation = {\n showMore: string,\n}\n\nconst defaultTextImageTranslation: Record<Languages, TextImageTranslation> = {\n de: {\n showMore: 'Mehr anzeigen'\n },\n en: {\n showMore: 'Show more'\n }\n}\n\nexport type TextImageProps = {\n title: string,\n description: string,\n imageUrl: string,\n onShowMoreClicked?: () => void,\n color?: TextImageColor,\n badge?: string,\n contentClassName?: string,\n className?: string,\n}\n\n/**\n * A Component for layering a Text upon a Image\n */\nexport const TextImage = ({\n overwriteTranslation,\n title,\n description,\n imageUrl,\n onShowMoreClicked,\n color = 'primary',\n badge,\n contentClassName = '',\n className = '',\n }: PropsForTranslation<TextImageTranslation, TextImageProps>) => {\n const translation = useTranslation(defaultTextImageTranslation, overwriteTranslation)\n\n const chipColorMapping: Record<TextImageColor, string> = {\n primary: 'text-text-image-primary-background bg-text-text-image-primary-text',\n secondary: 'text-text-image-secondary-background bg-text-text-image-secondary-text',\n dark: 'text-text-image-dark-background bg-text-text-image-dark-text',\n }\n\n const colorMapping: Record<TextImageColor, string> = {\n primary: 'text-text-image-primary-text bg-linear-to-r from-30% from-text-image-primary-background to-text-image-primary-background/55',\n secondary: 'text-text-image-secondary-text bg-linear-to-r from-30% from-text-image-secondary-background to-text-image-secondary-background/55',\n dark: 'text-text-image-dark-text bg-linear-to-r from-30% from-text-image-dark-background to-text-image-dark-background/55',\n }\n\n return (\n <div\n className={clsx('rounded-2xl w-full', className)}\n style={{\n backgroundImage: `url(${imageUrl})`,\n backgroundSize: 'cover',\n }}>\n <div\n className={clsx(`col px-6 py-12 rounded-2xl h-full`, colorMapping[color], contentClassName)}>\n {badge && (\n <div className={clsx(`chip-full bg-white mb-2 py-2 px-4 w-fit`, chipColorMapping[color])}>\n <span className=\"text-lg font-bold\">{badge}</span>\n </div>\n )}\n <div className=\"col gap-y-1 text-white overflow-hidden\">\n <span className=\"textstyle-title-xl\">{title}</span>\n <span className=\"text-ellipsis overflow-hidden\">{description}</span>\n </div>\n {onShowMoreClicked && (\n <div className=\"row mt-2 text-white underline\">\n <button onClick={onShowMoreClicked}>{translation.showMore}</button>\n </div>\n )}\n </div>\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;;;ACvCA,OAAO,UAAU;AAmEL,gBAAAC,MAGJ,YAHI;AA3DZ,IAAM,8BAAuE;AAAA,EAC3E,IAAI;AAAA,IACF,UAAU;AAAA,EACZ;AAAA,EACA,IAAI;AAAA,IACF,UAAU;AAAA,EACZ;AACF;AAgBO,IAAM,YAAY,CAAC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA,mBAAmB;AAAA,EACnB,YAAY;AACd,MAAiE;AACzF,QAAM,cAAc,eAAe,6BAA6B,oBAAoB;AAEpF,QAAM,mBAAmD;AAAA,IACvD,SAAS;AAAA,IACT,WAAW;AAAA,IACX,MAAM;AAAA,EACR;AAEA,QAAM,eAA+C;AAAA,IACnD,SAAS;AAAA,IACT,WAAW;AAAA,IACX,MAAM;AAAA,EACR;AAEA,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,KAAK,sBAAsB,SAAS;AAAA,MAC/C,OAAO;AAAA,QACL,iBAAiB,OAAO,QAAQ;AAAA,QAChC,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC,WAAW,KAAK,qCAAqC,aAAa,KAAK,GAAG,gBAAgB;AAAA,UACzF;AAAA,qBACC,gBAAAA,KAAC,SAAI,WAAW,KAAK,2CAA2C,iBAAiB,KAAK,CAAC,GACrF,0BAAAA,KAAC,UAAK,WAAU,qBAAqB,iBAAM,GAC7C;AAAA,YAEF,qBAAC,SAAI,WAAU,0CACb;AAAA,8BAAAA,KAAC,UAAK,WAAU,sBAAsB,iBAAM;AAAA,cAC5C,gBAAAA,KAAC,UAAK,WAAU,iCAAiC,uBAAY;AAAA,eAC/D;AAAA,YACC,qBACC,gBAAAA,KAAC,SAAI,WAAU,iCACb,0BAAAA,KAAC,YAAO,SAAS,mBAAoB,sBAAY,UAAS,GAC5D;AAAA;AAAA;AAAA,MAEJ;AAAA;AAAA,EACF;AAEJ;","names":["useEffect","useState","jsx"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/components/TimeDisplay.tsx","../../src/hooks/useLanguage.tsx","../../src/hooks/useLocalStorage.tsx","../../src/hooks/useTranslation.ts"],"sourcesContent":["import type { Languages } from '../hooks/useLanguage'\nimport type { PropsForTranslation } from '../hooks/useTranslation'\nimport { useTranslation } from '../hooks/useTranslation'\n\ntype TimeDisplayTranslation = {\n today: string,\n yesterday: string,\n tomorrow: string,\n inDays: (days: number) => string,\n agoDays: (days: number) => string,\n january: string,\n february: string,\n march: string,\n april: string,\n may: string,\n june: string,\n july: string,\n august: string,\n september: string,\n october: string,\n november: string,\n december: string,\n}\n\nconst defaultTimeDisplayTranslations: Record<Languages, TimeDisplayTranslation> = {\n en: {\n today: 'today',\n yesterday: 'yesterday',\n tomorrow: 'tomorrow',\n inDays: (days: number) => `in ${days} days`,\n agoDays: (days: number) => `${days} days ago`,\n january: 'January',\n february: 'February',\n march: 'March',\n april: 'April',\n may: 'May',\n june: 'June',\n july: 'July',\n august: 'August',\n september: 'September',\n october: 'October',\n november: 'November',\n december: 'December'\n },\n de: {\n today: 'heute',\n yesterday: 'gestern',\n tomorrow: 'morgen',\n inDays: (days: number) => `in ${days} Tagen`,\n agoDays: (days: number) => `vor ${days} Tagen`,\n january: 'Januar',\n february: 'Februar',\n march: 'März',\n april: 'April',\n may: 'Mai',\n june: 'Juni',\n july: 'Juli',\n august: 'August',\n september: 'September',\n october: 'October',\n november: 'November',\n december: 'December'\n }\n}\n\ntype TimeDisplayMode = 'daysFromToday' | 'date'\n\ntype TimeDisplayProps = {\n date: Date,\n mode?: TimeDisplayMode,\n}\n\n/**\n * A Component for displaying time and dates in a unified fashion\n */\nexport const TimeDisplay = ({\n overwriteTranslation,\n date,\n mode = 'daysFromToday'\n}: PropsForTranslation<TimeDisplayTranslation, TimeDisplayProps>) => {\n const translation = useTranslation(defaultTimeDisplayTranslations, overwriteTranslation)\n const difference = new Date().setHours(0, 0, 0, 0).valueOf() - new Date(date).setHours(0, 0, 0, 0).valueOf()\n const isBefore = difference > 0\n const differenceInDays = Math.floor(Math.abs(difference) / (1000 * 3600 * 24))\n\n let displayString\n if (differenceInDays === 0) {\n displayString = translation.today\n } else if (differenceInDays === 1) {\n displayString = isBefore ? translation.yesterday : translation.tomorrow\n } else {\n displayString = isBefore ? translation.agoDays(differenceInDays) : translation.inDays(differenceInDays)\n }\n const monthToTranslation: { [key: number]: string } = {\n 0: translation.january,\n 1: translation.february,\n 2: translation.march,\n 3: translation.april,\n 4: translation.may,\n 5: translation.june,\n 6: translation.july,\n 7: translation.august,\n 8: translation.september,\n 9: translation.october,\n 10: translation.november,\n 11: translation.december\n } as const\n\n let fullString\n if (mode === 'daysFromToday') {\n fullString = `${date.getHours().toString().padStart(2, '0')}:${date.getMinutes().toString().padStart(2, '0')} - ${displayString}`\n } else {\n fullString = `${date.getDate()}. ${monthToTranslation[date.getMonth()]} ${date.getFullYear()}`\n }\n\n return (\n <span>\n {fullString}\n </span>\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"],"mappings":"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","names":["import_react","import_jsx_runtime"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/hooks/useLanguage.tsx","../../src/hooks/useLocalStorage.tsx","../../src/hooks/useTranslation.ts","../../src/components/TimeDisplay.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 { Languages } from '../hooks/useLanguage'\nimport type { PropsForTranslation } from '../hooks/useTranslation'\nimport { useTranslation } from '../hooks/useTranslation'\n\ntype TimeDisplayTranslation = {\n today: string,\n yesterday: string,\n tomorrow: string,\n inDays: (days: number) => string,\n agoDays: (days: number) => string,\n january: string,\n february: string,\n march: string,\n april: string,\n may: string,\n june: string,\n july: string,\n august: string,\n september: string,\n october: string,\n november: string,\n december: string,\n}\n\nconst defaultTimeDisplayTranslations: Record<Languages, TimeDisplayTranslation> = {\n en: {\n today: 'today',\n yesterday: 'yesterday',\n tomorrow: 'tomorrow',\n inDays: (days: number) => `in ${days} days`,\n agoDays: (days: number) => `${days} days ago`,\n january: 'January',\n february: 'February',\n march: 'March',\n april: 'April',\n may: 'May',\n june: 'June',\n july: 'July',\n august: 'August',\n september: 'September',\n october: 'October',\n november: 'November',\n december: 'December'\n },\n de: {\n today: 'heute',\n yesterday: 'gestern',\n tomorrow: 'morgen',\n inDays: (days: number) => `in ${days} Tagen`,\n agoDays: (days: number) => `vor ${days} Tagen`,\n january: 'Januar',\n february: 'Februar',\n march: 'März',\n april: 'April',\n may: 'Mai',\n june: 'Juni',\n july: 'Juli',\n august: 'August',\n september: 'September',\n october: 'October',\n november: 'November',\n december: 'December'\n }\n}\n\ntype TimeDisplayMode = 'daysFromToday' | 'date'\n\ntype TimeDisplayProps = {\n date: Date,\n mode?: TimeDisplayMode,\n}\n\n/**\n * A Component for displaying time and dates in a unified fashion\n */\nexport const TimeDisplay = ({\n overwriteTranslation,\n date,\n mode = 'daysFromToday'\n}: PropsForTranslation<TimeDisplayTranslation, TimeDisplayProps>) => {\n const translation = useTranslation(defaultTimeDisplayTranslations, overwriteTranslation)\n const difference = new Date().setHours(0, 0, 0, 0).valueOf() - new Date(date).setHours(0, 0, 0, 0).valueOf()\n const isBefore = difference > 0\n const differenceInDays = Math.floor(Math.abs(difference) / (1000 * 3600 * 24))\n\n let displayString\n if (differenceInDays === 0) {\n displayString = translation.today\n } else if (differenceInDays === 1) {\n displayString = isBefore ? translation.yesterday : translation.tomorrow\n } else {\n displayString = isBefore ? translation.agoDays(differenceInDays) : translation.inDays(differenceInDays)\n }\n const monthToTranslation: { [key: number]: string } = {\n 0: translation.january,\n 1: translation.february,\n 2: translation.march,\n 3: translation.april,\n 4: translation.may,\n 5: translation.june,\n 6: translation.july,\n 7: translation.august,\n 8: translation.september,\n 9: translation.october,\n 10: translation.november,\n 11: translation.december\n } as const\n\n let fullString\n if (mode === 'daysFromToday') {\n fullString = `${date.getHours().toString().padStart(2, '0')}:${date.getMinutes().toString().padStart(2, '0')} - ${displayString}`\n } else {\n fullString = `${date.getDate()}. ${monthToTranslation[date.getMonth()]} ${date.getFullYear()}`\n }\n\n return (\n <span>\n {fullString}\n </span>\n )\n}\n"],"mappings":"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","names":["useEffect","useState","jsx"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/components/Tooltip.tsx","../../src/hooks/useHoverState.ts"],"sourcesContent":["import type { CSSProperties, PropsWithChildren, ReactNode } from 'react'\nimport { useHoverState } from '../hooks/useHoverState'\nimport { clsx } from 'clsx'\n\ntype Position = 'top' | 'bottom' | 'left' | 'right'\n\nexport type TooltipProps = PropsWithChildren<{\n tooltip: string | ReactNode,\n /**\n * Number of milliseconds until the tooltip appears\n *\n * defaults to 1000ms\n */\n animationDelay?: number,\n /**\n * Class names of additional styling properties for the tooltip\n */\n tooltipClassName?: string,\n /**\n * Class names of additional styling properties for the container from which the tooltip will be created\n */\n containerClassName?: string,\n position?: Position,\n zIndex?: number,\n}>\n\n/**\n * A Component for showing a tooltip when hovering over Content\n * @param tooltip The tooltip to show can be a text or any ReactNode\n * @param children The Content for which the tooltip should be created\n * @param animationDelay The delay before the tooltip appears\n * @param tooltipClassName Additional ClassNames for the Container of the tooltip\n * @param containerClassName Additional ClassNames for the Container holding the content\n * @param position The direction of the tooltip relative to the Container\n * @param zIndex The z Index of the tooltip (you may require this when stacking modals)\n * @constructor\n */\nexport const Tooltip = ({\n tooltip,\n children,\n animationDelay = 650,\n tooltipClassName = '',\n containerClassName = '',\n position = 'bottom',\n zIndex = 10,\n }: TooltipProps) => {\n const { isHovered, handlers } = useHoverState()\n\n const positionClasses = {\n top: `bottom-full left-1/2 -translate-x-1/2 mb-[6px]`,\n bottom: `top-full left-1/2 -translate-x-1/2 mt-[6px]`,\n left: `right-full top-1/2 -translate-y-1/2 mr-[6px]`,\n right: `left-full top-1/2 -translate-y-1/2 ml-[6px]`\n }\n\n const triangleSize = 6\n const triangleClasses = {\n top: `top-full left-1/2 -translate-x-1/2 border-t-gray-600 border-l-transparent border-r-transparent`,\n bottom: `bottom-full left-1/2 -translate-x-1/2 border-b-gray-600 border-l-transparent border-r-transparent`,\n left: `left-full top-1/2 -translate-y-1/2 border-l-gray-600 border-t-transparent border-b-transparent`,\n right: `right-full top-1/2 -translate-y-1/2 border-r-gray-600 border-t-transparent border-b-transparent`\n }\n\n const triangleStyle: Record<Position, CSSProperties> = {\n top: { borderWidth: `${triangleSize}px ${triangleSize}px 0 ${triangleSize}px` },\n bottom: { borderWidth: `0 ${triangleSize}px ${triangleSize}px ${triangleSize}px` },\n left: { borderWidth: `${triangleSize}px 0 ${triangleSize}px ${triangleSize}px` },\n right: { borderWidth: `${triangleSize}px ${triangleSize}px ${triangleSize}px 0` }\n }\n\n return (\n <div\n className={clsx('relative inline-block', containerClassName)}\n {...handlers}\n >\n {children}\n {isHovered && (\n <div\n className={clsx(`opacity-0 absolute text-black text-xs font-semibold text-gray-600 px-2 py-1 rounded whitespace-nowrap border-2 border-gray-600\n animate-tooltip-fade-in shadow-lg bg-gray-100`, positionClasses[position], tooltipClassName)}\n style={{ zIndex, animationDelay: animationDelay + 'ms' }}\n >\n {tooltip}\n <div\n className={clsx(`absolute w-0 h-0`, triangleClasses[position])}\n style={{ ...triangleStyle[position], zIndex }}\n />\n </div>\n )}\n </div>\n )\n}\n","import type { Dispatch, SetStateAction } from 'react'\nimport { useEffect, useState } from 'react'\n\ntype UseHoverStateProps = {\n /**\n * The delay after which the menu is closed in milliseconds\n *\n * default: 200ms\n */\n closingDelay: number,\n /**\n * Whether the hover state management should be disabled\n *\n * default: false\n */\n isDisabled: boolean,\n}\n\ntype UseHoverStateReturnType = {\n /**\n * Whether the element is hovered\n */\n isHovered: boolean,\n /**\n * Function to change the current hover status\n */\n setIsHovered: Dispatch<SetStateAction<boolean>>,\n /**\n * Handlers to pass on to the component that should be hovered\n */\n handlers: {\n onMouseEnter: () => void,\n onMouseLeave: () => void,\n },\n}\n\nconst defaultUseHoverStateProps: UseHoverStateProps = {\n closingDelay: 200,\n isDisabled: false,\n}\n\n/**\n * @param props See UseHoverStateProps\n *\n * A react hook for managing the hover state of a component. The handlers provided should be\n * forwarded to the component which should be hovered over\n */\nexport const useHoverState = (props: Partial<UseHoverStateProps> | undefined = undefined): UseHoverStateReturnType => {\n const { closingDelay, isDisabled } = { ...defaultUseHoverStateProps, ...props }\n\n const [isHovered, setIsHovered] = useState(false)\n const [timer, setTimer] = useState<NodeJS.Timeout>()\n\n const onMouseEnter = () => {\n if (isDisabled) {\n return\n }\n clearTimeout(timer)\n setIsHovered(true)\n }\n\n const onMouseLeave = () => {\n if (isDisabled) {\n return\n }\n setTimer(setTimeout(() => {\n setIsHovered(false)\n }, closingDelay))\n }\n\n useEffect(() => {\n if (timer) {\n return () => {\n clearTimeout(timer)\n }\n }\n })\n\n useEffect(() => {\n if (timer) {\n clearTimeout(timer)\n }\n }, [isDisabled]) // eslint-disable-line react-hooks/exhaustive-deps\n\n return {\n isHovered, setIsHovered, handlers: { onMouseEnter, onMouseLeave }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACCA,mBAAoC;AAmCpC,IAAM,4BAAgD;AAAA,EACpD,cAAc;AAAA,EACd,YAAY;AACd;AAQO,IAAM,gBAAgB,CAAC,QAAiD,WAAuC;AACpH,QAAM,EAAE,cAAc,WAAW,IAAI,EAAE,GAAG,2BAA2B,GAAG,MAAM;AAE9E,QAAM,CAAC,WAAW,YAAY,QAAI,uBAAS,KAAK;AAChD,QAAM,CAAC,OAAO,QAAQ,QAAI,uBAAyB;AAEnD,QAAM,eAAe,MAAM;AACzB,QAAI,YAAY;AACd;AAAA,IACF;AACA,iBAAa,KAAK;AAClB,iBAAa,IAAI;AAAA,EACnB;AAEA,QAAM,eAAe,MAAM;AACzB,QAAI,YAAY;AACd;AAAA,IACF;AACA,aAAS,WAAW,MAAM;AACxB,mBAAa,KAAK;AAAA,IACpB,GAAG,YAAY,CAAC;AAAA,EAClB;AAEA,8BAAU,MAAM;AACd,QAAI,OAAO;AACT,aAAO,MAAM;AACX,qBAAa,KAAK;AAAA,MACpB;AAAA,IACF;AAAA,EACF,CAAC;AAED,8BAAU,MAAM;AACd,QAAI,OAAO;AACT,mBAAa,KAAK;AAAA,IACpB;AAAA,EACF,GAAG,CAAC,UAAU,CAAC;AAEf,SAAO;AAAA,IACL;AAAA,IAAW;AAAA,IAAc,UAAU,EAAE,cAAc,aAAa;AAAA,EAClE;AACF;;;ADrFA,kBAAqB;AA2Eb;AAxCD,IAAM,UAAU,CAAC;AAAA,EACE;AAAA,EACA;AAAA,EACA,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EACnB,qBAAqB;AAAA,EACrB,WAAW;AAAA,EACX,SAAS;AACX,MAAoB;AAC1C,QAAM,EAAE,WAAW,SAAS,IAAI,cAAc;AAE9C,QAAM,kBAAkB;AAAA,IACtB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,OAAO;AAAA,EACT;AAEA,QAAM,eAAe;AACrB,QAAM,kBAAkB;AAAA,IACtB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,OAAO;AAAA,EACT;AAEA,QAAM,gBAAiD;AAAA,IACrD,KAAK,EAAE,aAAa,GAAG,YAAY,MAAM,YAAY,QAAQ,YAAY,KAAK;AAAA,IAC9E,QAAQ,EAAE,aAAa,KAAK,YAAY,MAAM,YAAY,MAAM,YAAY,KAAK;AAAA,IACjF,MAAM,EAAE,aAAa,GAAG,YAAY,QAAQ,YAAY,MAAM,YAAY,KAAK;AAAA,IAC/E,OAAO,EAAE,aAAa,GAAG,YAAY,MAAM,YAAY,MAAM,YAAY,OAAO;AAAA,EAClF;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,eAAW,kBAAK,yBAAyB,kBAAkB;AAAA,MAC1D,GAAG;AAAA,MAEH;AAAA;AAAA,QACA,aACC;AAAA,UAAC;AAAA;AAAA,YACC,eAAW,kBAAK;AAAA,2DACiC,gBAAgB,QAAQ,GAAG,gBAAgB;AAAA,YAC5F,OAAO,EAAE,QAAQ,gBAAgB,iBAAiB,KAAK;AAAA,YAEtD;AAAA;AAAA,cACD;AAAA,gBAAC;AAAA;AAAA,kBACC,eAAW,kBAAK,oBAAoB,gBAAgB,QAAQ,CAAC;AAAA,kBAC7D,OAAO,EAAE,GAAG,cAAc,QAAQ,GAAG,OAAO;AAAA;AAAA,cAC7C;AAAA;AAAA;AAAA,QACH;AAAA;AAAA;AAAA,EAEJ;AAEJ;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/hooks/useHoverState.ts","../../src/components/Tooltip.tsx"],"sourcesContent":["import type { Dispatch, SetStateAction } from 'react'\nimport { useEffect, useState } from 'react'\n\ntype UseHoverStateProps = {\n /**\n * The delay after which the menu is closed in milliseconds\n *\n * default: 200ms\n */\n closingDelay: number,\n /**\n * Whether the hover state management should be disabled\n *\n * default: false\n */\n isDisabled: boolean,\n}\n\ntype UseHoverStateReturnType = {\n /**\n * Whether the element is hovered\n */\n isHovered: boolean,\n /**\n * Function to change the current hover status\n */\n setIsHovered: Dispatch<SetStateAction<boolean>>,\n /**\n * Handlers to pass on to the component that should be hovered\n */\n handlers: {\n onMouseEnter: () => void,\n onMouseLeave: () => void,\n },\n}\n\nconst defaultUseHoverStateProps: UseHoverStateProps = {\n closingDelay: 200,\n isDisabled: false,\n}\n\n/**\n * @param props See UseHoverStateProps\n *\n * A react hook for managing the hover state of a component. The handlers provided should be\n * forwarded to the component which should be hovered over\n */\nexport const useHoverState = (props: Partial<UseHoverStateProps> | undefined = undefined): UseHoverStateReturnType => {\n const { closingDelay, isDisabled } = { ...defaultUseHoverStateProps, ...props }\n\n const [isHovered, setIsHovered] = useState(false)\n const [timer, setTimer] = useState<NodeJS.Timeout>()\n\n const onMouseEnter = () => {\n if (isDisabled) {\n return\n }\n clearTimeout(timer)\n setIsHovered(true)\n }\n\n const onMouseLeave = () => {\n if (isDisabled) {\n return\n }\n setTimer(setTimeout(() => {\n setIsHovered(false)\n }, closingDelay))\n }\n\n useEffect(() => {\n if (timer) {\n return () => {\n clearTimeout(timer)\n }\n }\n })\n\n useEffect(() => {\n if (timer) {\n clearTimeout(timer)\n }\n }, [isDisabled]) // eslint-disable-line react-hooks/exhaustive-deps\n\n return {\n isHovered, setIsHovered, handlers: { onMouseEnter, onMouseLeave }\n }\n}\n","import type { CSSProperties, PropsWithChildren, ReactNode } from 'react'\nimport { useHoverState } from '../hooks/useHoverState'\nimport { clsx } from 'clsx'\n\ntype Position = 'top' | 'bottom' | 'left' | 'right'\n\nexport type TooltipProps = PropsWithChildren<{\n tooltip: string | ReactNode,\n /**\n * Number of milliseconds until the tooltip appears\n *\n * defaults to 1000ms\n */\n animationDelay?: number,\n /**\n * Class names of additional styling properties for the tooltip\n */\n tooltipClassName?: string,\n /**\n * Class names of additional styling properties for the container from which the tooltip will be created\n */\n containerClassName?: string,\n position?: Position,\n zIndex?: number,\n}>\n\n/**\n * A Component for showing a tooltip when hovering over Content\n * @param tooltip The tooltip to show can be a text or any ReactNode\n * @param children The Content for which the tooltip should be created\n * @param animationDelay The delay before the tooltip appears\n * @param tooltipClassName Additional ClassNames for the Container of the tooltip\n * @param containerClassName Additional ClassNames for the Container holding the content\n * @param position The direction of the tooltip relative to the Container\n * @param zIndex The z Index of the tooltip (you may require this when stacking modals)\n * @constructor\n */\nexport const Tooltip = ({\n tooltip,\n children,\n animationDelay = 650,\n tooltipClassName = '',\n containerClassName = '',\n position = 'bottom',\n zIndex = 10,\n }: TooltipProps) => {\n const { isHovered, handlers } = useHoverState()\n\n const positionClasses = {\n top: `bottom-full left-1/2 -translate-x-1/2 mb-[6px]`,\n bottom: `top-full left-1/2 -translate-x-1/2 mt-[6px]`,\n left: `right-full top-1/2 -translate-y-1/2 mr-[6px]`,\n right: `left-full top-1/2 -translate-y-1/2 ml-[6px]`\n }\n\n const triangleSize = 6\n const triangleClasses = {\n top: `top-full left-1/2 -translate-x-1/2 border-t-gray-600 border-l-transparent border-r-transparent`,\n bottom: `bottom-full left-1/2 -translate-x-1/2 border-b-gray-600 border-l-transparent border-r-transparent`,\n left: `left-full top-1/2 -translate-y-1/2 border-l-gray-600 border-t-transparent border-b-transparent`,\n right: `right-full top-1/2 -translate-y-1/2 border-r-gray-600 border-t-transparent border-b-transparent`\n }\n\n const triangleStyle: Record<Position, CSSProperties> = {\n top: { borderWidth: `${triangleSize}px ${triangleSize}px 0 ${triangleSize}px` },\n bottom: { borderWidth: `0 ${triangleSize}px ${triangleSize}px ${triangleSize}px` },\n left: { borderWidth: `${triangleSize}px 0 ${triangleSize}px ${triangleSize}px` },\n right: { borderWidth: `${triangleSize}px ${triangleSize}px ${triangleSize}px 0` }\n }\n\n return (\n <div\n className={clsx('relative inline-block', containerClassName)}\n {...handlers}\n >\n {children}\n {isHovered && (\n <div\n className={clsx(`opacity-0 absolute text-black text-xs font-semibold text-gray-600 px-2 py-1 rounded whitespace-nowrap border-2 border-gray-600\n animate-tooltip-fade-in shadow-lg bg-gray-100`, positionClasses[position], tooltipClassName)}\n style={{ zIndex, animationDelay: animationDelay + 'ms' }}\n >\n {tooltip}\n <div\n className={clsx(`absolute w-0 h-0`, triangleClasses[position])}\n style={{ ...triangleStyle[position], zIndex }}\n />\n </div>\n )}\n </div>\n )\n}\n"],"mappings":";AACA,SAAS,WAAW,gBAAgB;AAmCpC,IAAM,4BAAgD;AAAA,EACpD,cAAc;AAAA,EACd,YAAY;AACd;AAQO,IAAM,gBAAgB,CAAC,QAAiD,WAAuC;AACpH,QAAM,EAAE,cAAc,WAAW,IAAI,EAAE,GAAG,2BAA2B,GAAG,MAAM;AAE9E,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,KAAK;AAChD,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAyB;AAEnD,QAAM,eAAe,MAAM;AACzB,QAAI,YAAY;AACd;AAAA,IACF;AACA,iBAAa,KAAK;AAClB,iBAAa,IAAI;AAAA,EACnB;AAEA,QAAM,eAAe,MAAM;AACzB,QAAI,YAAY;AACd;AAAA,IACF;AACA,aAAS,WAAW,MAAM;AACxB,mBAAa,KAAK;AAAA,IACpB,GAAG,YAAY,CAAC;AAAA,EAClB;AAEA,YAAU,MAAM;AACd,QAAI,OAAO;AACT,aAAO,MAAM;AACX,qBAAa,KAAK;AAAA,MACpB;AAAA,IACF;AAAA,EACF,CAAC;AAED,YAAU,MAAM;AACd,QAAI,OAAO;AACT,mBAAa,KAAK;AAAA,IACpB;AAAA,EACF,GAAG,CAAC,UAAU,CAAC;AAEf,SAAO;AAAA,IACL;AAAA,IAAW;AAAA,IAAc,UAAU,EAAE,cAAc,aAAa;AAAA,EAClE;AACF;;;ACrFA,SAAS,YAAY;AA2Eb,SAME,KANF;AAxCD,IAAM,UAAU,CAAC;AAAA,EACE;AAAA,EACA;AAAA,EACA,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EACnB,qBAAqB;AAAA,EACrB,WAAW;AAAA,EACX,SAAS;AACX,MAAoB;AAC1C,QAAM,EAAE,WAAW,SAAS,IAAI,cAAc;AAE9C,QAAM,kBAAkB;AAAA,IACtB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,OAAO;AAAA,EACT;AAEA,QAAM,eAAe;AACrB,QAAM,kBAAkB;AAAA,IACtB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,OAAO;AAAA,EACT;AAEA,QAAM,gBAAiD;AAAA,IACrD,KAAK,EAAE,aAAa,GAAG,YAAY,MAAM,YAAY,QAAQ,YAAY,KAAK;AAAA,IAC9E,QAAQ,EAAE,aAAa,KAAK,YAAY,MAAM,YAAY,MAAM,YAAY,KAAK;AAAA,IACjF,MAAM,EAAE,aAAa,GAAG,YAAY,QAAQ,YAAY,MAAM,YAAY,KAAK;AAAA,IAC/E,OAAO,EAAE,aAAa,GAAG,YAAY,MAAM,YAAY,MAAM,YAAY,OAAO;AAAA,EAClF;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,KAAK,yBAAyB,kBAAkB;AAAA,MAC1D,GAAG;AAAA,MAEH;AAAA;AAAA,QACA,aACC;AAAA,UAAC;AAAA;AAAA,YACC,WAAW,KAAK;AAAA,2DACiC,gBAAgB,QAAQ,GAAG,gBAAgB;AAAA,YAC5F,OAAO,EAAE,QAAQ,gBAAgB,iBAAiB,KAAK;AAAA,YAEtD;AAAA;AAAA,cACD;AAAA,gBAAC;AAAA;AAAA,kBACC,WAAW,KAAK,oBAAoB,gBAAgB,QAAQ,CAAC;AAAA,kBAC7D,OAAO,EAAE,GAAG,cAAc,QAAQ,GAAG,OAAO;AAAA;AAAA,cAC7C;AAAA;AAAA;AAAA,QACH;AAAA;AAAA;AAAA,EAEJ;AAEJ;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/components/VerticalDivider.tsx"],"sourcesContent":["export type VerticalDividerProps = {\n width?: number,\n height?: number,\n strokeWidth?: number,\n dashGap?: number,\n dashLength?: number,\n}\n\n/**\n * A Component for creating a vertical Divider\n */\nexport const VerticalDivider = ({\n width = 1,\n height = 100,\n strokeWidth = 4,\n dashGap = 4,\n dashLength = 4,\n }: VerticalDividerProps) => {\n return (\n <div style={{ width: width + 'px', height: height + 'px' }}>\n <svg width={width} height={height} viewBox={`0 0 ${width} ${height}`} fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <line\n opacity=\"0.5\"\n x1={width / 2}\n y1={height}\n x2={width / 2}\n y2=\"0\"\n stroke=\"url(#paint_linear)\"\n strokeWidth={strokeWidth}\n strokeDasharray={`${dashLength} ${dashLength + dashGap}`}\n strokeLinecap=\"round\"\n />\n <defs>\n <linearGradient\n id=\"paint_linear\"\n x1={width / 2}\n y1=\"0\"\n x2={width / 2}\n y2={height}\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopOpacity=\"0\" stopColor=\"currentColor\"/>\n <stop offset=\"0.5\" stopColor=\"currentColor\"/>\n <stop offset=\"1\" stopColor=\"currentColor\" stopOpacity=\"0\"/>\n </linearGradient>\n </defs>\n </svg>\n </div>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBQ;AAXD,IAAM,kBAAkB,CAAC;AAAA,EACE,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,cAAc;AAAA,EACd,UAAU;AAAA,EACV,aAAa;AACf,MAA4B;AAC1D,SACE,4CAAC,SAAI,OAAO,EAAE,OAAO,QAAQ,MAAM,QAAQ,SAAS,KAAK,GACvD;AAAA,IAAC;AAAA;AAAA,MAAI;AAAA,MAAc;AAAA,MAAgB,SAAS,OAAO,KAAK,IAAI,MAAM;AAAA,MAAI,MAAK;AAAA,MACtE,OAAM;AAAA,MACT;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,SAAQ;AAAA,YACR,IAAI,QAAQ;AAAA,YACZ,IAAI;AAAA,YACJ,IAAI,QAAQ;AAAA,YACZ,IAAG;AAAA,YACH,QAAO;AAAA,YACP;AAAA,YACA,iBAAiB,GAAG,UAAU,IAAI,aAAa,OAAO;AAAA,YACtD,eAAc;AAAA;AAAA,QAChB;AAAA,QACA,4CAAC,UACC;AAAA,UAAC;AAAA;AAAA,YACC,IAAG;AAAA,YACH,IAAI,QAAQ;AAAA,YACZ,IAAG;AAAA,YACH,IAAI,QAAQ;AAAA,YACZ,IAAI;AAAA,YACJ,eAAc;AAAA,YAEd;AAAA,0DAAC,UAAK,aAAY,KAAI,WAAU,gBAAc;AAAA,cAC9C,4CAAC,UAAK,QAAO,OAAM,WAAU,gBAAc;AAAA,cAC3C,4CAAC,UAAK,QAAO,KAAI,WAAU,gBAAe,aAAY,KAAG;AAAA;AAAA;AAAA,QAC3D,GACF;AAAA;AAAA;AAAA,EACF,GACF;AAEJ;","names":[]}