@helpwave/hightide 0.0.13 → 0.0.16

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 (539) hide show
  1. package/dist/coloring/shading.d.mts +5 -0
  2. package/dist/coloring/shading.d.ts +5 -2
  3. package/dist/coloring/shading.js +80 -38
  4. package/dist/coloring/shading.js.map +1 -0
  5. package/dist/coloring/shading.mjs +47 -0
  6. package/dist/coloring/shading.mjs.map +1 -0
  7. package/dist/coloring/types.d.mts +13 -0
  8. package/dist/coloring/types.d.ts +8 -6
  9. package/dist/coloring/types.js +31 -1
  10. package/dist/coloring/types.js.map +1 -0
  11. package/dist/coloring/types.mjs +6 -0
  12. package/dist/coloring/types.mjs.map +1 -0
  13. package/dist/components/Avatar.d.mts +17 -0
  14. package/dist/components/Avatar.d.ts +9 -6
  15. package/dist/components/Avatar.js +79 -29
  16. package/dist/components/Avatar.js.map +1 -0
  17. package/dist/components/Avatar.mjs +48 -0
  18. package/dist/components/Avatar.mjs.map +1 -0
  19. package/dist/components/AvatarGroup.d.mts +14 -0
  20. package/dist/components/AvatarGroup.d.ts +7 -3
  21. package/dist/components/AvatarGroup.js +117 -12
  22. package/dist/components/AvatarGroup.js.map +1 -0
  23. package/dist/components/AvatarGroup.mjs +81 -0
  24. package/dist/components/AvatarGroup.mjs.map +1 -0
  25. package/dist/components/BreadCrumb.d.mts +19 -0
  26. package/dist/components/BreadCrumb.d.ts +6 -3
  27. package/dist/components/BreadCrumb.js +49 -11
  28. package/dist/components/BreadCrumb.js.map +1 -0
  29. package/dist/components/BreadCrumb.mjs +15 -0
  30. package/dist/components/BreadCrumb.mjs.map +1 -0
  31. package/dist/components/Button.d.mts +44 -0
  32. package/dist/components/Button.d.ts +16 -13
  33. package/dist/components/Button.js +232 -80
  34. package/dist/components/Button.js.map +1 -0
  35. package/dist/components/Button.mjs +198 -0
  36. package/dist/components/Button.mjs.map +1 -0
  37. package/dist/components/ChipList.d.mts +24 -0
  38. package/dist/components/ChipList.d.ts +10 -7
  39. package/dist/components/ChipList.js +103 -36
  40. package/dist/components/ChipList.js.map +1 -0
  41. package/dist/components/ChipList.mjs +69 -0
  42. package/dist/components/ChipList.mjs.map +1 -0
  43. package/dist/components/Circle.d.mts +10 -0
  44. package/dist/components/Circle.d.ts +7 -3
  45. package/dist/components/Circle.js +61 -9
  46. package/dist/components/Circle.js.map +1 -0
  47. package/dist/components/Circle.mjs +27 -0
  48. package/dist/components/Circle.mjs.map +1 -0
  49. package/dist/components/ErrorComponent.d.mts +18 -0
  50. package/dist/components/ErrorComponent.d.ts +9 -4
  51. package/dist/components/ErrorComponent.js +86 -17
  52. package/dist/components/ErrorComponent.js.map +1 -0
  53. package/dist/components/ErrorComponent.mjs +53 -0
  54. package/dist/components/ErrorComponent.mjs.map +1 -0
  55. package/dist/components/Expandable.d.mts +33 -0
  56. package/dist/components/Expandable.d.ts +8 -5
  57. package/dist/components/Expandable.js +79 -15
  58. package/dist/components/Expandable.js.map +1 -0
  59. package/dist/components/Expandable.mjs +45 -0
  60. package/dist/components/Expandable.mjs.map +1 -0
  61. package/dist/components/HelpwaveBadge.d.mts +14 -0
  62. package/dist/components/HelpwaveBadge.d.ts +6 -3
  63. package/dist/components/HelpwaveBadge.js +125 -13
  64. package/dist/components/HelpwaveBadge.js.map +1 -0
  65. package/dist/components/HelpwaveBadge.mjs +91 -0
  66. package/dist/components/HelpwaveBadge.mjs.map +1 -0
  67. package/dist/components/HideableContentSection.d.mts +14 -0
  68. package/dist/components/HideableContentSection.d.ts +7 -3
  69. package/dist/components/HideableContentSection.js +69 -14
  70. package/dist/components/HideableContentSection.js.map +1 -0
  71. package/dist/components/HideableContentSection.mjs +35 -0
  72. package/dist/components/HideableContentSection.mjs.map +1 -0
  73. package/dist/components/InputGroup.d.mts +17 -0
  74. package/dist/components/InputGroup.d.ts +7 -3
  75. package/dist/components/InputGroup.js +96 -32
  76. package/dist/components/InputGroup.js.map +1 -0
  77. package/dist/components/InputGroup.mjs +62 -0
  78. package/dist/components/InputGroup.mjs.map +1 -0
  79. package/dist/components/LoadingAndErrorComponent.d.mts +24 -0
  80. package/dist/components/LoadingAndErrorComponent.d.ts +12 -5
  81. package/dist/components/LoadingAndErrorComponent.js +178 -23
  82. package/dist/components/LoadingAndErrorComponent.js.map +1 -0
  83. package/dist/components/LoadingAndErrorComponent.mjs +145 -0
  84. package/dist/components/LoadingAndErrorComponent.mjs.map +1 -0
  85. package/dist/components/LoadingAnimation.d.mts +18 -0
  86. package/dist/components/LoadingAnimation.d.ts +9 -4
  87. package/dist/components/LoadingAnimation.js +124 -16
  88. package/dist/components/LoadingAnimation.js.map +1 -0
  89. package/dist/components/LoadingAnimation.mjs +90 -0
  90. package/dist/components/LoadingAnimation.mjs.map +1 -0
  91. package/dist/components/LoadingButton.d.mts +10 -0
  92. package/dist/components/LoadingButton.d.ts +7 -3
  93. package/dist/components/LoadingButton.js +169 -9
  94. package/dist/components/LoadingButton.js.map +1 -0
  95. package/dist/components/LoadingButton.mjs +135 -0
  96. package/dist/components/LoadingButton.mjs.map +1 -0
  97. package/dist/components/MarkdownInterpreter.d.mts +28 -0
  98. package/dist/components/MarkdownInterpreter.d.ts +8 -5
  99. package/dist/components/MarkdownInterpreter.js +246 -175
  100. package/dist/components/MarkdownInterpreter.js.map +1 -0
  101. package/dist/components/MarkdownInterpreter.mjs +235 -0
  102. package/dist/components/MarkdownInterpreter.mjs.map +1 -0
  103. package/dist/components/Pagination.d.mts +19 -0
  104. package/dist/components/Pagination.d.ts +9 -4
  105. package/dist/components/Pagination.js +100 -23
  106. package/dist/components/Pagination.js.map +1 -0
  107. package/dist/components/Pagination.mjs +67 -0
  108. package/dist/components/Pagination.mjs.map +1 -0
  109. package/dist/components/Profile.d.mts +31 -0
  110. package/dist/components/Profile.d.ts +8 -5
  111. package/dist/components/Profile.js +194 -42
  112. package/dist/components/Profile.js.map +1 -0
  113. package/dist/components/Profile.mjs +162 -0
  114. package/dist/components/Profile.mjs.map +1 -0
  115. package/dist/components/ProgressIndicator.d.mts +24 -0
  116. package/dist/components/ProgressIndicator.d.ts +6 -3
  117. package/dist/components/ProgressIndicator.js +82 -22
  118. package/dist/components/ProgressIndicator.js.map +1 -0
  119. package/dist/components/ProgressIndicator.mjs +59 -0
  120. package/dist/components/ProgressIndicator.mjs.map +1 -0
  121. package/dist/components/Ring.d.mts +35 -0
  122. package/dist/components/Ring.d.ts +13 -9
  123. package/dist/components/Ring.js +331 -107
  124. package/dist/components/Ring.js.map +1 -0
  125. package/dist/components/Ring.mjs +299 -0
  126. package/dist/components/Ring.mjs.map +1 -0
  127. package/dist/components/SearchableList.d.mts +22 -0
  128. package/dist/components/SearchableList.d.ts +9 -5
  129. package/dist/components/SearchableList.js +268 -24
  130. package/dist/components/SearchableList.js.map +1 -0
  131. package/dist/components/SearchableList.mjs +241 -0
  132. package/dist/components/SearchableList.mjs.map +1 -0
  133. package/dist/components/SortButton.d.mts +15 -0
  134. package/dist/components/SortButton.d.ts +9 -4
  135. package/dist/components/SortButton.js +131 -8
  136. package/dist/components/SortButton.js.map +1 -0
  137. package/dist/components/SortButton.mjs +97 -0
  138. package/dist/components/SortButton.mjs.map +1 -0
  139. package/dist/components/StepperBar.d.mts +28 -0
  140. package/dist/components/StepperBar.d.ts +10 -5
  141. package/dist/components/StepperBar.js +248 -44
  142. package/dist/components/StepperBar.js.map +1 -0
  143. package/dist/components/StepperBar.mjs +216 -0
  144. package/dist/components/StepperBar.mjs.map +1 -0
  145. package/dist/components/Table.d.mts +90 -0
  146. package/dist/components/Table.d.ts +20 -17
  147. package/dist/components/Table.js +396 -170
  148. package/dist/components/Table.js.map +1 -0
  149. package/dist/components/Table.mjs +370 -0
  150. package/dist/components/Table.mjs.map +1 -0
  151. package/dist/components/TechRadar.d.mts +39 -0
  152. package/dist/components/TechRadar.d.ts +5 -2
  153. package/dist/components/TechRadar.js +241 -189
  154. package/dist/components/TechRadar.js.map +1 -0
  155. package/dist/components/TechRadar.mjs +208 -0
  156. package/dist/components/TechRadar.mjs.map +1 -0
  157. package/dist/components/TextImage.d.mts +25 -0
  158. package/dist/components/TextImage.d.ts +9 -4
  159. package/dist/components/TextImage.js +121 -29
  160. package/dist/components/TextImage.js.map +1 -0
  161. package/dist/components/TextImage.mjs +86 -0
  162. package/dist/components/TextImage.mjs.map +1 -0
  163. package/dist/components/TimeDisplay.d.mts +35 -0
  164. package/dist/components/TimeDisplay.d.ts +8 -3
  165. package/dist/components/TimeDisplay.js +134 -81
  166. package/dist/components/TimeDisplay.js.map +1 -0
  167. package/dist/components/TimeDisplay.mjs +109 -0
  168. package/dist/components/TimeDisplay.mjs.map +1 -0
  169. package/dist/components/Tooltip.d.mts +37 -0
  170. package/dist/components/Tooltip.d.ts +7 -4
  171. package/dist/components/Tooltip.js +135 -37
  172. package/dist/components/Tooltip.js.map +1 -0
  173. package/dist/components/Tooltip.mjs +109 -0
  174. package/dist/components/Tooltip.mjs.map +1 -0
  175. package/dist/components/VerticalDivider.d.mts +15 -0
  176. package/dist/components/VerticalDivider.d.ts +6 -2
  177. package/dist/components/VerticalDivider.js +80 -6
  178. package/dist/components/VerticalDivider.js.map +1 -0
  179. package/dist/components/VerticalDivider.mjs +56 -0
  180. package/dist/components/VerticalDivider.mjs.map +1 -0
  181. package/dist/components/date/DatePicker.d.mts +32 -0
  182. package/dist/components/date/DatePicker.d.ts +13 -7
  183. package/dist/components/date/DatePicker.js +624 -55
  184. package/dist/components/date/DatePicker.js.map +1 -0
  185. package/dist/components/date/DatePicker.mjs +591 -0
  186. package/dist/components/date/DatePicker.mjs.map +1 -0
  187. package/dist/components/date/DayPicker.d.mts +20 -0
  188. package/dist/components/date/DayPicker.d.ts +8 -4
  189. package/dist/components/date/DayPicker.js +232 -36
  190. package/dist/components/date/DayPicker.js.map +1 -0
  191. package/dist/components/date/DayPicker.mjs +195 -0
  192. package/dist/components/date/DayPicker.mjs.map +1 -0
  193. package/dist/components/date/TimePicker.d.mts +15 -0
  194. package/dist/components/date/TimePicker.d.ts +7 -4
  195. package/dist/components/date/TimePicker.js +196 -75
  196. package/dist/components/date/TimePicker.js.map +1 -0
  197. package/dist/components/date/TimePicker.mjs +164 -0
  198. package/dist/components/date/TimePicker.mjs.map +1 -0
  199. package/dist/components/date/YearMonthPicker.d.mts +15 -0
  200. package/dist/components/date/YearMonthPicker.d.ts +7 -3
  201. package/dist/components/date/YearMonthPicker.js +281 -57
  202. package/dist/components/date/YearMonthPicker.js.map +1 -0
  203. package/dist/components/date/YearMonthPicker.mjs +247 -0
  204. package/dist/components/date/YearMonthPicker.mjs.map +1 -0
  205. package/dist/components/icons/Helpwave.d.mts +14 -0
  206. package/dist/components/icons/Helpwave.d.ts +7 -3
  207. package/dist/components/icons/Helpwave.js +66 -18
  208. package/dist/components/icons/Helpwave.js.map +1 -0
  209. package/dist/components/icons/Helpwave.mjs +43 -0
  210. package/dist/components/icons/Helpwave.mjs.map +1 -0
  211. package/dist/components/icons/Tag.d.mts +14 -0
  212. package/dist/components/icons/Tag.d.ts +7 -3
  213. package/dist/components/icons/Tag.js +59 -11
  214. package/dist/components/icons/Tag.js.map +1 -0
  215. package/dist/components/icons/Tag.mjs +25 -0
  216. package/dist/components/icons/Tag.mjs.map +1 -0
  217. package/dist/components/layout/Carousel.d.mts +25 -0
  218. package/dist/components/layout/Carousel.d.ts +6 -3
  219. package/dist/components/layout/Carousel.js +477 -226
  220. package/dist/components/layout/Carousel.js.map +1 -0
  221. package/dist/components/layout/Carousel.mjs +449 -0
  222. package/dist/components/layout/Carousel.mjs.map +1 -0
  223. package/dist/components/layout/DividerInserter.d.mts +15 -0
  224. package/dist/components/layout/DividerInserter.d.ts +7 -3
  225. package/dist/components/layout/DividerInserter.js +58 -18
  226. package/dist/components/layout/DividerInserter.js.map +1 -0
  227. package/dist/components/layout/DividerInserter.mjs +25 -0
  228. package/dist/components/layout/DividerInserter.mjs.map +1 -0
  229. package/dist/components/layout/FAQSection.d.mts +26 -0
  230. package/dist/components/layout/FAQSection.d.ts +9 -6
  231. package/dist/components/layout/FAQSection.js +336 -13
  232. package/dist/components/layout/FAQSection.js.map +1 -0
  233. package/dist/components/layout/FAQSection.mjs +302 -0
  234. package/dist/components/layout/FAQSection.mjs.map +1 -0
  235. package/dist/components/layout/Tile.d.mts +37 -0
  236. package/dist/components/layout/Tile.d.ts +9 -6
  237. package/dist/components/layout/Tile.js +76 -16
  238. package/dist/components/layout/Tile.js.map +1 -0
  239. package/dist/components/layout/Tile.mjs +42 -0
  240. package/dist/components/layout/Tile.mjs.map +1 -0
  241. package/dist/components/modals/ConfirmDialog.d.mts +38 -0
  242. package/dist/components/modals/ConfirmDialog.d.ts +13 -9
  243. package/dist/components/modals/ConfirmDialog.js +422 -28
  244. package/dist/components/modals/ConfirmDialog.js.map +1 -0
  245. package/dist/components/modals/ConfirmDialog.mjs +388 -0
  246. package/dist/components/modals/ConfirmDialog.mjs.map +1 -0
  247. package/dist/components/modals/DiscardChangesDialog.d.mts +23 -0
  248. package/dist/components/modals/DiscardChangesDialog.d.ts +9 -5
  249. package/dist/components/modals/DiscardChangesDialog.js +406 -23
  250. package/dist/components/modals/DiscardChangesDialog.js.map +1 -0
  251. package/dist/components/modals/DiscardChangesDialog.mjs +370 -0
  252. package/dist/components/modals/DiscardChangesDialog.mjs.map +1 -0
  253. package/dist/components/modals/InputModal.d.mts +19 -0
  254. package/dist/components/modals/InputModal.d.ts +14 -4
  255. package/dist/components/modals/InputModal.js +598 -8
  256. package/dist/components/modals/InputModal.js.map +1 -0
  257. package/dist/components/modals/InputModal.mjs +567 -0
  258. package/dist/components/modals/InputModal.mjs.map +1 -0
  259. package/dist/components/modals/LanguageModal.d.mts +21 -0
  260. package/dist/components/modals/LanguageModal.d.ts +9 -5
  261. package/dist/components/modals/LanguageModal.js +524 -33
  262. package/dist/components/modals/LanguageModal.js.map +1 -0
  263. package/dist/components/modals/LanguageModal.mjs +489 -0
  264. package/dist/components/modals/LanguageModal.mjs.map +1 -0
  265. package/dist/components/modals/Modal.d.mts +43 -0
  266. package/dist/components/modals/Modal.d.ts +13 -8
  267. package/dist/components/modals/Modal.js +280 -51
  268. package/dist/components/modals/Modal.js.map +1 -0
  269. package/dist/components/modals/Modal.mjs +249 -0
  270. package/dist/components/modals/Modal.mjs.map +1 -0
  271. package/dist/components/modals/ModalRegister.d.mts +16 -0
  272. package/dist/components/modals/ModalRegister.d.ts +9 -4
  273. package/dist/components/modals/ModalRegister.js +61 -26
  274. package/dist/components/modals/ModalRegister.js.map +1 -0
  275. package/dist/components/modals/ModalRegister.mjs +37 -0
  276. package/dist/components/modals/ModalRegister.mjs.map +1 -0
  277. package/dist/components/properties/CheckboxProperty.d.mts +20 -0
  278. package/dist/components/properties/CheckboxProperty.d.ts +10 -5
  279. package/dist/components/properties/CheckboxProperty.js +323 -24
  280. package/dist/components/properties/CheckboxProperty.js.map +1 -0
  281. package/dist/components/properties/CheckboxProperty.mjs +291 -0
  282. package/dist/components/properties/CheckboxProperty.mjs.map +1 -0
  283. package/dist/components/properties/DateProperty.d.mts +18 -0
  284. package/dist/components/properties/DateProperty.d.ts +10 -3
  285. package/dist/components/properties/DateProperty.js +422 -21
  286. package/dist/components/properties/DateProperty.js.map +1 -0
  287. package/dist/components/properties/DateProperty.mjs +393 -0
  288. package/dist/components/properties/DateProperty.mjs.map +1 -0
  289. package/dist/components/properties/MultiSelectProperty.d.mts +18 -0
  290. package/dist/components/properties/MultiSelectProperty.d.ts +12 -6
  291. package/dist/components/properties/MultiSelectProperty.js +815 -31
  292. package/dist/components/properties/MultiSelectProperty.js.map +1 -0
  293. package/dist/components/properties/MultiSelectProperty.mjs +787 -0
  294. package/dist/components/properties/MultiSelectProperty.mjs.map +1 -0
  295. package/dist/components/properties/NumberProperty.d.mts +21 -0
  296. package/dist/components/properties/NumberProperty.d.ts +10 -5
  297. package/dist/components/properties/NumberProperty.js +429 -39
  298. package/dist/components/properties/NumberProperty.js.map +1 -0
  299. package/dist/components/properties/NumberProperty.mjs +402 -0
  300. package/dist/components/properties/NumberProperty.mjs.map +1 -0
  301. package/dist/components/properties/PropertyBase.d.mts +27 -0
  302. package/dist/components/properties/PropertyBase.d.ts +9 -5
  303. package/dist/components/properties/PropertyBase.js +194 -24
  304. package/dist/components/properties/PropertyBase.js.map +1 -0
  305. package/dist/components/properties/PropertyBase.mjs +162 -0
  306. package/dist/components/properties/PropertyBase.mjs.map +1 -0
  307. package/dist/components/properties/SelectProperty.d.mts +19 -0
  308. package/dist/components/properties/SelectProperty.d.ts +13 -6
  309. package/dist/components/properties/SelectProperty.js +547 -19
  310. package/dist/components/properties/SelectProperty.js.map +1 -0
  311. package/dist/components/properties/SelectProperty.mjs +520 -0
  312. package/dist/components/properties/SelectProperty.mjs.map +1 -0
  313. package/dist/components/properties/TextProperty.d.mts +20 -0
  314. package/dist/components/properties/TextProperty.d.ts +10 -5
  315. package/dist/components/properties/TextProperty.js +378 -34
  316. package/dist/components/properties/TextProperty.js.map +1 -0
  317. package/dist/components/properties/TextProperty.mjs +346 -0
  318. package/dist/components/properties/TextProperty.mjs.map +1 -0
  319. package/dist/components/user-input/Checkbox.d.mts +41 -0
  320. package/dist/components/user-input/Checkbox.d.ts +9 -5
  321. package/dist/components/user-input/Checkbox.js +148 -63
  322. package/dist/components/user-input/Checkbox.js.map +1 -0
  323. package/dist/components/user-input/Checkbox.mjs +112 -0
  324. package/dist/components/user-input/Checkbox.mjs.map +1 -0
  325. package/dist/components/user-input/DateAndTimePicker.d.mts +47 -0
  326. package/dist/components/user-input/DateAndTimePicker.d.ts +15 -7
  327. package/dist/components/user-input/DateAndTimePicker.js +831 -60
  328. package/dist/components/user-input/DateAndTimePicker.js.map +1 -0
  329. package/dist/components/user-input/DateAndTimePicker.mjs +801 -0
  330. package/dist/components/user-input/DateAndTimePicker.mjs.map +1 -0
  331. package/dist/components/user-input/Input.d.mts +64 -0
  332. package/dist/components/user-input/Input.d.ts +12 -9
  333. package/dist/components/user-input/Input.js +219 -57
  334. package/dist/components/user-input/Input.js.map +1 -0
  335. package/dist/components/user-input/Input.mjs +191 -0
  336. package/dist/components/user-input/Input.mjs.map +1 -0
  337. package/dist/components/user-input/Label.d.mts +16 -0
  338. package/dist/components/user-input/Label.d.ts +8 -4
  339. package/dist/components/user-input/Label.js +43 -11
  340. package/dist/components/user-input/Label.js.map +1 -0
  341. package/dist/components/user-input/Label.mjs +19 -0
  342. package/dist/components/user-input/Label.mjs.map +1 -0
  343. package/dist/components/user-input/Menu.d.mts +24 -0
  344. package/dist/components/user-input/Menu.d.ts +8 -5
  345. package/dist/components/user-input/Menu.js +162 -25
  346. package/dist/components/user-input/Menu.js.map +1 -0
  347. package/dist/components/user-input/Menu.mjs +127 -0
  348. package/dist/components/user-input/Menu.mjs.map +1 -0
  349. package/dist/components/user-input/MultiSelect.d.mts +43 -0
  350. package/dist/components/user-input/MultiSelect.d.ts +12 -8
  351. package/dist/components/user-input/MultiSelect.js +545 -56
  352. package/dist/components/user-input/MultiSelect.js.map +1 -0
  353. package/dist/components/user-input/MultiSelect.mjs +516 -0
  354. package/dist/components/user-input/MultiSelect.mjs.map +1 -0
  355. package/dist/components/user-input/ScrollPicker.d.mts +15 -0
  356. package/dist/components/user-input/ScrollPicker.d.ts +6 -2
  357. package/dist/components/user-input/ScrollPicker.js +276 -145
  358. package/dist/components/user-input/ScrollPicker.js.map +1 -0
  359. package/dist/components/user-input/ScrollPicker.mjs +247 -0
  360. package/dist/components/user-input/ScrollPicker.mjs.map +1 -0
  361. package/dist/components/user-input/SearchableSelect.d.mts +14 -0
  362. package/dist/components/user-input/SearchableSelect.d.ts +9 -3
  363. package/dist/components/user-input/SearchableSelect.js +334 -13
  364. package/dist/components/user-input/SearchableSelect.js.map +1 -0
  365. package/dist/components/user-input/SearchableSelect.mjs +305 -0
  366. package/dist/components/user-input/SearchableSelect.mjs.map +1 -0
  367. package/dist/components/user-input/Select.d.mts +36 -0
  368. package/dist/components/user-input/Select.d.ts +9 -5
  369. package/dist/components/user-input/Select.js +152 -47
  370. package/dist/components/user-input/Select.js.map +1 -0
  371. package/dist/components/user-input/Select.mjs +118 -0
  372. package/dist/components/user-input/Select.mjs.map +1 -0
  373. package/dist/components/user-input/Textarea.d.mts +24 -0
  374. package/dist/components/user-input/Textarea.d.ts +8 -4
  375. package/dist/components/user-input/Textarea.js +153 -31
  376. package/dist/components/user-input/Textarea.js.map +1 -0
  377. package/dist/components/user-input/Textarea.mjs +120 -0
  378. package/dist/components/user-input/Textarea.mjs.map +1 -0
  379. package/dist/components/user-input/ToggleableInput.d.mts +35 -0
  380. package/dist/components/user-input/ToggleableInput.d.ts +6 -3
  381. package/dist/components/user-input/ToggleableInput.js +161 -38
  382. package/dist/components/user-input/ToggleableInput.js.map +1 -0
  383. package/dist/components/user-input/ToggleableInput.mjs +128 -0
  384. package/dist/components/user-input/ToggleableInput.mjs.map +1 -0
  385. package/dist/hooks/useHoverState.d.mts +42 -0
  386. package/dist/hooks/useHoverState.d.ts +5 -3
  387. package/dist/hooks/useHoverState.js +69 -43
  388. package/dist/hooks/useHoverState.js.map +1 -0
  389. package/dist/hooks/useHoverState.mjs +47 -0
  390. package/dist/hooks/useHoverState.mjs.map +1 -0
  391. package/dist/hooks/useLanguage.d.mts +21 -0
  392. package/dist/hooks/useLanguage.d.ts +15 -11
  393. package/dist/hooks/useLanguage.js +145 -50
  394. package/dist/hooks/useLanguage.js.map +1 -0
  395. package/dist/hooks/useLanguage.mjs +115 -0
  396. package/dist/hooks/useLanguage.mjs.map +1 -0
  397. package/dist/hooks/useLocalStorage.d.mts +6 -0
  398. package/dist/hooks/useLocalStorage.d.ts +4 -2
  399. package/dist/hooks/useLocalStorage.js +79 -23
  400. package/dist/hooks/useLocalStorage.js.map +1 -0
  401. package/dist/hooks/useLocalStorage.mjs +59 -0
  402. package/dist/hooks/useLocalStorage.mjs.map +1 -0
  403. package/dist/hooks/useOutsideClick.d.mts +5 -0
  404. package/dist/hooks/useOutsideClick.d.ts +5 -2
  405. package/dist/hooks/useOutsideClick.js +47 -21
  406. package/dist/hooks/useOutsideClick.js.map +1 -0
  407. package/dist/hooks/useOutsideClick.mjs +23 -0
  408. package/dist/hooks/useOutsideClick.mjs.map +1 -0
  409. package/dist/hooks/useSaveDelay.d.mts +6 -0
  410. package/dist/hooks/useSaveDelay.d.ts +2 -1
  411. package/dist/hooks/useSaveDelay.js +62 -38
  412. package/dist/hooks/useSaveDelay.js.map +1 -0
  413. package/dist/hooks/useSaveDelay.mjs +44 -0
  414. package/dist/hooks/useSaveDelay.mjs.map +1 -0
  415. package/dist/hooks/useTheme.d.mts +21 -0
  416. package/dist/hooks/useTheme.d.ts +14 -9
  417. package/dist/hooks/useTheme.js +65 -29
  418. package/dist/hooks/useTheme.js.map +1 -0
  419. package/dist/hooks/useTheme.mjs +40 -0
  420. package/dist/hooks/useTheme.mjs.map +1 -0
  421. package/dist/hooks/useTranslation.d.mts +28 -0
  422. package/dist/hooks/useTranslation.d.ts +9 -5
  423. package/dist/hooks/useTranslation.js +53 -10
  424. package/dist/hooks/useTranslation.js.map +1 -0
  425. package/dist/hooks/useTranslation.mjs +27 -0
  426. package/dist/hooks/useTranslation.mjs.map +1 -0
  427. package/dist/index.d.mts +86 -0
  428. package/dist/index.d.ts +86 -0
  429. package/dist/index.js +5716 -0
  430. package/dist/index.js.map +1 -0
  431. package/dist/index.mjs +5542 -0
  432. package/dist/index.mjs.map +1 -0
  433. package/dist/util/array.d.mts +25 -0
  434. package/dist/util/array.d.ts +9 -7
  435. package/dist/util/array.js +119 -92
  436. package/dist/util/array.js.map +1 -0
  437. package/dist/util/array.mjs +99 -0
  438. package/dist/util/array.mjs.map +1 -0
  439. package/dist/util/builder.d.mts +8 -0
  440. package/dist/util/builder.d.ts +3 -1
  441. package/dist/util/builder.js +33 -8
  442. package/dist/util/builder.js.map +1 -0
  443. package/dist/util/builder.mjs +9 -0
  444. package/dist/util/builder.mjs.map +1 -0
  445. package/dist/util/date.d.mts +30 -0
  446. package/dist/util/date.d.ts +17 -15
  447. package/dist/util/date.js +184 -123
  448. package/dist/util/date.js.map +1 -0
  449. package/dist/util/date.mjs +156 -0
  450. package/dist/util/date.mjs.map +1 -0
  451. package/dist/util/easeFunctions.d.mts +11 -0
  452. package/dist/util/easeFunctions.d.ts +4 -2
  453. package/dist/util/easeFunctions.js +63 -30
  454. package/dist/util/easeFunctions.js.map +1 -0
  455. package/dist/util/easeFunctions.mjs +36 -0
  456. package/dist/util/easeFunctions.mjs.map +1 -0
  457. package/dist/util/emailValidation.d.mts +3 -0
  458. package/dist/util/emailValidation.d.ts +3 -1
  459. package/dist/util/emailValidation.js +32 -2
  460. package/dist/util/emailValidation.js.map +1 -0
  461. package/dist/util/emailValidation.mjs +8 -0
  462. package/dist/util/emailValidation.mjs.map +1 -0
  463. package/dist/util/loopingArray.d.mts +25 -0
  464. package/dist/util/loopingArray.d.ts +4 -2
  465. package/dist/util/loopingArray.js +89 -59
  466. package/dist/util/loopingArray.js.map +1 -0
  467. package/dist/util/loopingArray.mjs +72 -0
  468. package/dist/util/loopingArray.mjs.map +1 -0
  469. package/dist/util/math.d.mts +3 -0
  470. package/dist/util/math.d.ts +3 -1
  471. package/dist/util/math.js +32 -2
  472. package/dist/util/math.js.map +1 -0
  473. package/dist/util/math.mjs +8 -0
  474. package/dist/util/math.mjs.map +1 -0
  475. package/dist/util/news.d.mts +103 -0
  476. package/dist/util/news.d.ts +12 -7
  477. package/dist/util/news.js +73 -24
  478. package/dist/util/news.js.map +1 -0
  479. package/dist/util/news.mjs +48 -0
  480. package/dist/util/news.mjs.map +1 -0
  481. package/dist/util/noop.d.mts +3 -0
  482. package/dist/util/noop.d.ts +3 -1
  483. package/dist/util/noop.js +31 -1
  484. package/dist/util/noop.js.map +1 -0
  485. package/dist/util/noop.mjs +6 -0
  486. package/dist/util/noop.mjs.map +1 -0
  487. package/dist/util/simpleSearch.d.mts +50 -0
  488. package/dist/util/simpleSearch.d.ts +6 -4
  489. package/dist/util/simpleSearch.js +50 -58
  490. package/dist/util/simpleSearch.js.map +1 -0
  491. package/dist/util/simpleSearch.mjs +26 -0
  492. package/dist/util/simpleSearch.mjs.map +1 -0
  493. package/dist/util/storage.d.mts +16 -0
  494. package/dist/util/storage.d.ts +4 -3
  495. package/dist/util/storage.js +63 -31
  496. package/dist/util/storage.js.map +1 -0
  497. package/dist/util/storage.mjs +38 -0
  498. package/dist/util/storage.mjs.map +1 -0
  499. package/dist/util/types.d.mts +3 -0
  500. package/dist/util/types.d.ts +3 -1
  501. package/dist/util/types.js +19 -1
  502. package/dist/util/types.js.map +1 -0
  503. package/dist/util/types.mjs +1 -0
  504. package/dist/util/types.mjs.map +1 -0
  505. package/package.json +20 -9
  506. package/dist/components/Span.d.ts +0 -0
  507. package/dist/components/Span.js +0 -1
  508. package/dist/components/examples/InputGroupExample.d.ts +0 -6
  509. package/dist/components/examples/InputGroupExample.js +0 -21
  510. package/dist/components/examples/MultiSelectExample.d.ts +0 -7
  511. package/dist/components/examples/MultiSelectExample.js +0 -27
  512. package/dist/components/examples/SearchableSelectExample.d.ts +0 -6
  513. package/dist/components/examples/SearchableSelectExample.js +0 -17
  514. package/dist/components/examples/SelectExample.d.ts +0 -4
  515. package/dist/components/examples/SelectExample.js +0 -15
  516. package/dist/components/examples/StackingModals.d.ts +0 -4
  517. package/dist/components/examples/StackingModals.js +0 -15
  518. package/dist/components/examples/TableExample.d.ts +0 -9
  519. package/dist/components/examples/TableExample.js +0 -92
  520. package/dist/components/examples/TextareaExample.d.ts +0 -6
  521. package/dist/components/examples/TextareaExample.js +0 -10
  522. package/dist/components/examples/TileExample.d.ts +0 -9
  523. package/dist/components/examples/TileExample.js +0 -9
  524. package/dist/components/examples/Title.d.ts +0 -0
  525. package/dist/components/examples/Title.js +0 -1
  526. package/dist/components/examples/date/DateTimePickerExample.d.ts +0 -10
  527. package/dist/components/examples/date/DateTimePickerExample.js +0 -21
  528. package/dist/components/examples/properties/CheckboxPropertyExample.d.ts +0 -8
  529. package/dist/components/examples/properties/CheckboxPropertyExample.js +0 -13
  530. package/dist/components/examples/properties/DatePropertyExample.d.ts +0 -8
  531. package/dist/components/examples/properties/DatePropertyExample.js +0 -23
  532. package/dist/components/examples/properties/MultiSelectPropertyExample.d.ts +0 -8
  533. package/dist/components/examples/properties/MultiSelectPropertyExample.js +0 -16
  534. package/dist/components/examples/properties/NumberPropertyExample.d.ts +0 -6
  535. package/dist/components/examples/properties/NumberPropertyExample.js +0 -13
  536. package/dist/components/examples/properties/SelectPropertyExample.d.ts +0 -6
  537. package/dist/components/examples/properties/SelectPropertyExample.js +0 -18
  538. package/dist/components/examples/properties/TextPropertyExample.d.ts +0 -8
  539. package/dist/components/examples/properties/TextPropertyExample.js +0 -13
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/Table.tsx","../../src/util/noop.ts","../../src/components/user-input/Checkbox.tsx","../../src/components/user-input/Label.tsx","../../src/components/Pagination.tsx","../../src/hooks/useLanguage.tsx","../../src/hooks/useLocalStorage.tsx","../../src/hooks/useTranslation.ts"],"sourcesContent":["import type { ReactElement } from 'react'\nimport { Scrollbars } from 'react-custom-scrollbars-2'\nimport { useEffect, useRef, useState } from 'react'\nimport { noop } from '../util/noop'\nimport { Checkbox } from './user-input/Checkbox'\nimport { Pagination } from './Pagination'\nimport clsx from 'clsx'\n\nexport type TableStatePagination = {\n currentPage: number,\n entriesPerPage: number,\n}\nexport const defaultTableStatePagination = {\n currentPage: 0,\n entriesPerPage: 5\n}\n\nexport type TableStateSelection<T> = {\n currentSelection: T[],\n hasSelectedAll: boolean,\n hasSelectedSome: boolean,\n hasSelectedNone: boolean,\n}\n\nexport const defaultTableStateSelection = {\n currentSelection: [],\n hasSelectedAll: false,\n hasSelectedSome: false,\n hasSelectedNone: true\n}\n\nexport type TableState = {\n pagination?: TableStatePagination,\n selection?: {\n /**\n * The mapped ids of the dataType\n */\n currentSelection: string[],\n hasSelectedAll: boolean,\n hasSelectedSome: boolean,\n hasSelectedNone: boolean,\n },\n}\n\ntype IdentifierMapping<T> = (dataObject: T) => string\n\nexport const isDataObjectSelected = <T, >(tableState: TableState, dataObject: T, identifierMapping: IdentifierMapping<T>) => {\n if (!tableState.selection) {\n return false\n }\n\n return !!tableState.selection.currentSelection.find(value => value.localeCompare(identifierMapping(dataObject)) === 0)\n}\n\nexport const pageForItem = <T, >(data: T[], item: T, entriesPerPage: number, identifierMapping: IdentifierMapping<T>) => {\n const index = data.findIndex(value => identifierMapping(value) === identifierMapping(item))\n if (index !== -1) {\n return Math.floor(index / entriesPerPage)\n }\n console.warn(\"item doesn't exist on data\", item, data)\n return 0\n}\n\nexport const updatePagination = (pagination: TableStatePagination, dataLength: number): TableStatePagination => ({\n ...pagination,\n currentPage: Math.min(Math.max(Math.ceil(dataLength / pagination.entriesPerPage) - 1, 0), pagination.currentPage)\n})\n\nexport const addElementToTable = <T, >(tableState: TableState, data: T[], dataObject: T, identifierMapping: IdentifierMapping<T>) => {\n return {\n ...tableState,\n pagination: tableState.pagination ? {\n ...tableState.pagination,\n currentPage: pageForItem(data, dataObject, tableState.pagination.entriesPerPage, identifierMapping)\n } : undefined,\n selection: tableState.selection ? {\n ...tableState.selection,\n hasSelectedAll: false,\n hasSelectedSome: tableState.selection.hasSelectedAll || tableState.selection.hasSelectedSome\n } : undefined\n }\n}\n\n/**\n * data length before delete\n */\nexport const removeFromTableSelection = <T, >(tableState: TableState, deletedObjects: T[], dataLength: number, identifierMapping: IdentifierMapping<T>): TableState => {\n if (!tableState.selection) {\n return tableState\n }\n\n const deletedObjectIds = deletedObjects.map(identifierMapping)\n const elementsBefore = tableState.selection.currentSelection.length\n const currentSelection = tableState.selection.currentSelection.filter((value) => !deletedObjectIds.includes(value))\n dataLength -= elementsBefore - currentSelection.length\n\n return {\n ...tableState,\n selection: {\n currentSelection,\n hasSelectedAll: currentSelection.length === dataLength && dataLength !== 0,\n hasSelectedSome: currentSelection.length > 0 && currentSelection.length !== dataLength,\n hasSelectedNone: currentSelection.length === 0,\n },\n pagination: tableState.pagination ? updatePagination(tableState.pagination, dataLength) : undefined\n }\n}\n\nexport const changeTableSelectionSingle = <T, >(tableState: TableState, dataObject: T, dataLength: number, identifierMapping: IdentifierMapping<T>) => {\n if (!tableState.selection) {\n return tableState\n }\n\n const hasSelectedObject = isDataObjectSelected(tableState, dataObject, identifierMapping)\n let currentSelection = [...tableState.selection.currentSelection, identifierMapping(dataObject)] // case !hasSelectedObject\n if (hasSelectedObject) {\n currentSelection = tableState.selection.currentSelection.filter(value => value.localeCompare(identifierMapping(dataObject)) !== 0)\n }\n\n return {\n ...tableState,\n selection: {\n currentSelection,\n hasSelectedAll: currentSelection.length === dataLength,\n hasSelectedSome: currentSelection.length > 0 && currentSelection.length !== dataLength,\n hasSelectedNone: currentSelection.length === 0,\n }\n }\n}\n\nconst changeTableSelectionAll = <T, >(tableState: TableState, data: T[], identifierMapping: IdentifierMapping<T>) => {\n if (!tableState.selection) {\n return tableState\n }\n\n if (data.length === 0) {\n return {\n ...tableState,\n selection: {\n currentSelection: [],\n hasSelectedAll: false,\n hasSelectedSome: false,\n hasSelectedNone: true\n }\n }\n }\n\n const hasSelectedAll = !(tableState.selection.hasSelectedSome || tableState.selection.hasSelectedAll)\n return {\n ...tableState,\n selection: {\n currentSelection: hasSelectedAll ? data.map(identifierMapping) : [],\n hasSelectedAll,\n hasSelectedSome: false,\n hasSelectedNone: !hasSelectedAll\n }\n }\n}\n\nexport type TableSortingType = 'ascending' | 'descending'\nexport type TableSortingFunctionType<T> = (t1: T, t2: T) => number\n\nexport type TableProps<T> = {\n data: T[],\n /**\n * When using selection or pagination\n */\n stateManagement?: [TableState, (tableState: TableState) => void],\n identifierMapping: IdentifierMapping<T>,\n /**\n * Only the cell itself no boilerplate <tr> or <th> required\n */\n header?: ReactElement[],\n /**\n * Only the cells of the row no boilerplate <tr> or <td> required\n */\n rowMappingToCells: (dataObject: T) => ReactElement[],\n sorting?: [TableSortingFunctionType<T>, TableSortingType],\n /**\n * Always go to the page of this element\n */\n focusElement?: T,\n className?: string,\n}\n\n/* Possible extension for better customization\n * Map each element to the displayed row\n * make sure to wrap it in the <tr> and <td> you require\n rowMappingToHTMLRow?: (dataObject: T) => ReactElement\n */\n\n/**\n * A Basic stateless reusable table\n * The state must be handled and saved with the updateTableState method\n */\nexport const Table = <T, >({\n data,\n stateManagement = [{}, noop],\n identifierMapping,\n header,\n rowMappingToCells,\n sorting,\n focusElement,\n className\n }: TableProps<T>) => {\n const sortedData = [...data]\n if (sorting) {\n const [sortingFunction, sortingType] = sorting\n sortedData.sort((a, b) => sortingFunction(a, b) * (sortingType === 'ascending' ? 1 : -1))\n }\n let currentPage = 0\n let pageCount = 1\n let entriesPerPage = 5\n const [tableState, updateTableState] = stateManagement\n\n let shownElements = sortedData\n\n if (tableState?.pagination) {\n if (tableState.pagination.entriesPerPage < 1) {\n console.error('tableState.pagination.entriesPerPage must be >= 1', tableState.pagination.entriesPerPage)\n }\n entriesPerPage = Math.max(1, tableState.pagination.entriesPerPage)\n pageCount = Math.ceil(sortedData.length / entriesPerPage)\n\n if (tableState.pagination.currentPage < 0 || (tableState.pagination.currentPage >= pageCount && pageCount !== 0)) {\n console.error('tableState.pagination.currentPage < 0 || (tableState.pagination.currentPage >= pageCount && pageCount !== 0) must be fullfilled',\n [`pageCount: ${pageCount}`, `tableState.pagination.currentPage: ${tableState.pagination.currentPage}`])\n } else {\n currentPage = tableState.pagination.currentPage\n }\n\n if (focusElement) {\n currentPage = pageForItem(sortedData, focusElement, entriesPerPage, identifierMapping)\n }\n\n shownElements = sortedData.slice(currentPage * entriesPerPage, Math.min(sortedData.length, (currentPage + 1) * entriesPerPage))\n } else {\n currentPage = 0\n }\n\n const headerRow = 'border-b-2 border-gray-300'\n const headerPaddingHead = 'pb-2'\n const headerPaddingBody = 'pt-2'\n const cellPadding = 'py-1 px-2'\n\n const [scrollbarsAutoHeightMin, setScrollbarsAutoHeightMin] = useState(0)\n const tableRef = useRef<HTMLTableElement>(null)\n\n const calculateHeight = () => {\n if (tableRef.current) {\n const tableHeight = tableRef.current.offsetHeight\n const offset = 25\n setScrollbarsAutoHeightMin(tableHeight + offset)\n }\n }\n\n useEffect(() => {\n calculateHeight()\n\n // New function to unbind properly\n const handleResize = () => {\n calculateHeight()\n }\n\n window.addEventListener('resize', handleResize)\n\n return () => {\n window.removeEventListener('resize', handleResize)\n }\n }, [data, currentPage])\n\n return (\n <div className={clsx('col gap-y-4 overflow-hidden', className)}>\n <div>\n <Scrollbars autoHeight autoHeightMin={scrollbarsAutoHeightMin}>\n <table ref={tableRef} className=\"w-full mb-[12px]\">\n <thead>\n <tr className={headerRow}>\n {header && tableState.selection && (\n <th className={headerPaddingHead}>\n <Checkbox\n checked={tableState.selection.hasSelectedSome ? 'indeterminate' : tableState.selection.hasSelectedAll}\n onChange={() => updateTableState(changeTableSelectionAll(tableState, data, identifierMapping))}\n />\n </th>\n )}\n {header && header.map((value, index) => (\n <th key={`tableHeader${index}`} className={headerPaddingHead}>\n <div className=\"row justify-start px-2\">\n {value}\n </div>\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {shownElements.map((value, rowIndex) => (\n <tr key={identifierMapping(value)}>\n {tableState.selection && (\n <td className={clsx(cellPadding, { [headerPaddingBody]: rowIndex === 0 })}>\n <Checkbox\n checked={isDataObjectSelected(tableState, value, identifierMapping)}\n onChange={() => {\n updateTableState(changeTableSelectionSingle(tableState, value, data.length, identifierMapping))\n }}\n />\n </td>\n )}\n {rowMappingToCells(value).map((value1, index) => (\n <td key={index} className={clsx(cellPadding, { [headerPaddingBody]: rowIndex === 0 })}>\n {value1}\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n </Scrollbars>\n </div>\n <div className=\"row justify-center\">\n {tableState.pagination && (\n <Pagination page={currentPage} numberOfPages={pageCount} onPageChanged={page => updateTableState({\n ...tableState,\n pagination: { entriesPerPage, currentPage: page }\n })}/>\n )}\n </div>\n </div>\n )\n}\n","export const noop = () => undefined\n","import { useState } from 'react'\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox'\nimport type { CheckedState } from '@radix-ui/react-checkbox'\nimport { Check, Minus } from 'lucide-react'\nimport clsx from 'clsx'\nimport type { LabelProps } from './Label'\nimport { Label } from './Label'\n\ntype CheckBoxSize = 'small' | 'medium' | 'large'\n\nconst checkboxSizeMapping: Record<CheckBoxSize, string> = {\n small: 'size-4',\n medium: 'size-6',\n large: 'size-8',\n}\n\nconst checkboxIconSizeMapping: Record<CheckBoxSize, string> = {\n small: 'size-3',\n medium: 'size-5',\n large: 'size-7',\n}\n\ntype CheckboxProps = {\n /** used for the label's `for` attribute */\n id?: string,\n label?: Omit<LabelProps, 'id'>,\n /**\n * @default false\n */\n checked: CheckedState,\n disabled?: boolean,\n onChange?: (checked: boolean) => void,\n onChangeTristate?: (checked: CheckedState) => void,\n size?: CheckBoxSize,\n className?: string,\n containerClassName?: string,\n}\n\n/**\n * A Tristate checkbox\n *\n * The state is managed by the parent\n */\nconst ControlledCheckbox = ({\n id,\n label,\n checked,\n disabled,\n onChange,\n onChangeTristate,\n size = 'medium',\n className = '',\n containerClassName\n }: CheckboxProps) => {\n const usedSizeClass = checkboxSizeMapping[size]\n const innerIconSize = checkboxIconSizeMapping[size]\n\n const propagateChange = (checked: CheckedState) => {\n if (onChangeTristate) {\n onChangeTristate(checked)\n }\n if (onChange) {\n onChange(checked === 'indeterminate' ? false : checked)\n }\n }\n\n const changeValue = () => {\n const newValue = checked === 'indeterminate' ? false : !checked\n propagateChange(newValue)\n }\n\n return (\n <div className={clsx('row justify-center items-center', containerClassName)}>\n <CheckboxPrimitive.Root\n onCheckedChange={propagateChange}\n checked={checked}\n disabled={disabled}\n id={id}\n className={clsx(usedSizeClass, `items-center border-2 rounded outline-none focus:border-primary`, {\n 'text-disabled-text border-disabled-text': disabled,\n 'border-on-background': !disabled,\n 'bg-primary/30 border-primary text-primary': checked === true || checked === 'indeterminate',\n 'hover:border-gray-400 focus:hover:border-primary': !checked\n }, className)}\n >\n <CheckboxPrimitive.Indicator>\n {checked === true && <Check className={innerIconSize}/>}\n {checked === 'indeterminate' && <Minus className={innerIconSize}/>}\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n {label &&\n <Label {...label} className={clsx('cursor-pointer', label.className)} htmlFor={id} onClick={changeValue}/>}\n </div>\n )\n}\n\ntype UncontrolledCheckboxProps = Omit<CheckboxProps, 'value' | 'checked'> & {\n /**\n * @default false\n */\n defaultValue?: CheckedState,\n}\n\n/**\n * A Tristate checkbox\n *\n * The state is managed by this component\n */\nconst UncontrolledCheckbox = ({\n onChange,\n onChangeTristate,\n defaultValue = false,\n ...props\n }: UncontrolledCheckboxProps) => {\n const [checked, setChecked] = useState(defaultValue)\n\n const handleChange = (checked: CheckedState) => {\n if (onChangeTristate) {\n onChangeTristate(checked)\n }\n if (onChange) {\n onChange(checked === 'indeterminate' ? false : checked)\n }\n setChecked(checked)\n }\n\n return (\n <ControlledCheckbox\n {...props}\n checked={checked}\n onChangeTristate={handleChange}\n />\n )\n}\n\nexport {\n UncontrolledCheckbox,\n ControlledCheckbox as Checkbox\n}\n","import type { LabelHTMLAttributes } from 'react'\n\nexport type LabelType = 'labelSmall' | 'labelMedium' | 'labelBig'\nconst styleMapping: Record<LabelType, string> = {\n labelSmall: 'textstyle-label-sm',\n labelMedium: 'textstyle-label-md',\n labelBig: 'textstyle-label-lg',\n}\n\n\nexport type LabelProps = {\n /** The text for the label */\n name?: string,\n /** The styling for the label */\n labelType?: LabelType,\n} & LabelHTMLAttributes<HTMLLabelElement>\n\n/**\n * A Label component\n */\nexport const Label = ({\n children,\n name,\n labelType = 'labelSmall',\n ...props\n}: LabelProps) => {\n return (\n <label {...props}>\n {children ? children : (<span className={styleMapping[labelType]}>{name}</span>)}\n </label>\n )\n}\n","import { ChevronLast, ChevronLeft, ChevronFirst, ChevronRight } from 'lucide-react'\nimport clsx from 'clsx'\nimport type { PropsForTranslation } from '../hooks/useTranslation'\nimport { useTranslation } from '../hooks/useTranslation'\nimport type { Languages } from '../hooks/useLanguage'\n\ntype PaginationTranslation = {\n of: string,\n}\nconst defaultPaginationTranslations: Record<Languages, PaginationTranslation> = {\n en: {\n of: 'of'\n },\n de: {\n of: 'von'\n }\n}\n\nexport type PaginationProps = {\n page: number, // starts with 0\n numberOfPages: number,\n onPageChanged: (page: number) => void,\n}\n\n/**\n * A Component showing the pagination allowing first, before, next and last page navigation\n */\nexport const Pagination = ({\n overwriteTranslation,\n page,\n numberOfPages,\n onPageChanged\n}: PropsForTranslation<PaginationTranslation, PaginationProps>) => {\n const translation = useTranslation(defaultPaginationTranslations, overwriteTranslation)\n\n const changePage = (page:number) => {\n onPageChanged(page)\n }\n\n const noPages = numberOfPages === 0\n const onFirstPage = page === 0 && !noPages\n const onLastPage = page === numberOfPages - 1\n\n return (\n <div className={clsx('row', { 'opacity-30': noPages })}>\n <button onClick={() => changePage(0)} disabled={onFirstPage}>\n <ChevronFirst className={clsx({ 'opacity-30': onFirstPage })}/>\n </button>\n <button onClick={() => changePage(page - 1)} disabled={onFirstPage}>\n <ChevronLeft className={clsx({ 'opacity-30': onFirstPage })}/>\n </button>\n <div className=\"min-w-[80px] justify-center mx-2\">\n <span className=\"select-none text-right flex-1\">{noPages ? 0 : page + 1}</span>\n <span className=\"select-none mx-2\">{translation.of}</span>\n <span className=\"select-none text-left flex-1\">{numberOfPages}</span>\n </div>\n <button onClick={() => changePage(page + 1)} disabled={onLastPage || noPages}>\n <ChevronRight className={clsx({ 'opacity-30': onLastPage })}/>\n </button>\n <button onClick={() => changePage(numberOfPages - 1)} disabled={onLastPage || noPages}>\n <ChevronLast className={clsx({ 'opacity-30': onLastPage })}/>\n </button>\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>>\nconst 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}\n\nexport default useLocalStorage\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","checked","clsx","import_lucide_react","import_clsx","import_react","import_react","import_jsx_runtime","import_jsx_runtime","page","clsx","import_clsx","import_jsx_runtime","clsx"]}
@@ -0,0 +1,370 @@
1
+ // src/components/Table.tsx
2
+ import { Scrollbars } from "react-custom-scrollbars-2";
3
+ import { useEffect as useEffect3, useRef, useState as useState4 } from "react";
4
+
5
+ // src/util/noop.ts
6
+ var noop = () => void 0;
7
+
8
+ // src/components/user-input/Checkbox.tsx
9
+ import { useState } from "react";
10
+ import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
11
+ import { Check, Minus } from "lucide-react";
12
+ import clsx from "clsx";
13
+
14
+ // src/components/user-input/Label.tsx
15
+ import { jsx } from "react/jsx-runtime";
16
+ var styleMapping = {
17
+ labelSmall: "textstyle-label-sm",
18
+ labelMedium: "textstyle-label-md",
19
+ labelBig: "textstyle-label-lg"
20
+ };
21
+ var Label = ({
22
+ children,
23
+ name,
24
+ labelType = "labelSmall",
25
+ ...props
26
+ }) => {
27
+ return /* @__PURE__ */ jsx("label", { ...props, children: children ? children : /* @__PURE__ */ jsx("span", { className: styleMapping[labelType], children: name }) });
28
+ };
29
+
30
+ // src/components/user-input/Checkbox.tsx
31
+ import { jsx as jsx2, jsxs } from "react/jsx-runtime";
32
+ var checkboxSizeMapping = {
33
+ small: "size-4",
34
+ medium: "size-6",
35
+ large: "size-8"
36
+ };
37
+ var checkboxIconSizeMapping = {
38
+ small: "size-3",
39
+ medium: "size-5",
40
+ large: "size-7"
41
+ };
42
+ var ControlledCheckbox = ({
43
+ id,
44
+ label,
45
+ checked,
46
+ disabled,
47
+ onChange,
48
+ onChangeTristate,
49
+ size = "medium",
50
+ className = "",
51
+ containerClassName
52
+ }) => {
53
+ const usedSizeClass = checkboxSizeMapping[size];
54
+ const innerIconSize = checkboxIconSizeMapping[size];
55
+ const propagateChange = (checked2) => {
56
+ if (onChangeTristate) {
57
+ onChangeTristate(checked2);
58
+ }
59
+ if (onChange) {
60
+ onChange(checked2 === "indeterminate" ? false : checked2);
61
+ }
62
+ };
63
+ const changeValue = () => {
64
+ const newValue = checked === "indeterminate" ? false : !checked;
65
+ propagateChange(newValue);
66
+ };
67
+ return /* @__PURE__ */ jsxs("div", { className: clsx("row justify-center items-center", containerClassName), children: [
68
+ /* @__PURE__ */ jsx2(
69
+ CheckboxPrimitive.Root,
70
+ {
71
+ onCheckedChange: propagateChange,
72
+ checked,
73
+ disabled,
74
+ id,
75
+ className: clsx(usedSizeClass, `items-center border-2 rounded outline-none focus:border-primary`, {
76
+ "text-disabled-text border-disabled-text": disabled,
77
+ "border-on-background": !disabled,
78
+ "bg-primary/30 border-primary text-primary": checked === true || checked === "indeterminate",
79
+ "hover:border-gray-400 focus:hover:border-primary": !checked
80
+ }, className),
81
+ children: /* @__PURE__ */ jsxs(CheckboxPrimitive.Indicator, { children: [
82
+ checked === true && /* @__PURE__ */ jsx2(Check, { className: innerIconSize }),
83
+ checked === "indeterminate" && /* @__PURE__ */ jsx2(Minus, { className: innerIconSize })
84
+ ] })
85
+ }
86
+ ),
87
+ label && /* @__PURE__ */ jsx2(Label, { ...label, className: clsx("cursor-pointer", label.className), htmlFor: id, onClick: changeValue })
88
+ ] });
89
+ };
90
+
91
+ // src/components/Pagination.tsx
92
+ import { ChevronLast, ChevronLeft, ChevronFirst, ChevronRight } from "lucide-react";
93
+ import clsx2 from "clsx";
94
+
95
+ // src/hooks/useLanguage.tsx
96
+ import { createContext, useContext, useEffect as useEffect2, useState as useState3 } from "react";
97
+
98
+ // src/hooks/useLocalStorage.tsx
99
+ import { useCallback, useEffect, useState as useState2 } from "react";
100
+
101
+ // src/hooks/useLanguage.tsx
102
+ import { jsx as jsx3 } from "react/jsx-runtime";
103
+ var DEFAULT_LANGUAGE = "en";
104
+ var LanguageContext = createContext({ language: DEFAULT_LANGUAGE, setLanguage: (v) => v });
105
+ var useLanguage = () => useContext(LanguageContext);
106
+
107
+ // src/hooks/useTranslation.ts
108
+ var useTranslation = (defaults, translationOverwrite = {}) => {
109
+ const { language: languageProp, translation: overwrite } = translationOverwrite;
110
+ const { language: inferredLanguage } = useLanguage();
111
+ const usedLanguage = languageProp ?? inferredLanguage;
112
+ let defaultValues = defaults[usedLanguage];
113
+ if (overwrite && overwrite[usedLanguage]) {
114
+ defaultValues = { ...defaultValues, ...overwrite[usedLanguage] };
115
+ }
116
+ return defaultValues;
117
+ };
118
+
119
+ // src/components/Pagination.tsx
120
+ import { jsx as jsx4, jsxs as jsxs2 } from "react/jsx-runtime";
121
+ var defaultPaginationTranslations = {
122
+ en: {
123
+ of: "of"
124
+ },
125
+ de: {
126
+ of: "von"
127
+ }
128
+ };
129
+ var Pagination = ({
130
+ overwriteTranslation,
131
+ page,
132
+ numberOfPages,
133
+ onPageChanged
134
+ }) => {
135
+ const translation = useTranslation(defaultPaginationTranslations, overwriteTranslation);
136
+ const changePage = (page2) => {
137
+ onPageChanged(page2);
138
+ };
139
+ const noPages = numberOfPages === 0;
140
+ const onFirstPage = page === 0 && !noPages;
141
+ const onLastPage = page === numberOfPages - 1;
142
+ return /* @__PURE__ */ jsxs2("div", { className: clsx2("row", { "opacity-30": noPages }), children: [
143
+ /* @__PURE__ */ jsx4("button", { onClick: () => changePage(0), disabled: onFirstPage, children: /* @__PURE__ */ jsx4(ChevronFirst, { className: clsx2({ "opacity-30": onFirstPage }) }) }),
144
+ /* @__PURE__ */ jsx4("button", { onClick: () => changePage(page - 1), disabled: onFirstPage, children: /* @__PURE__ */ jsx4(ChevronLeft, { className: clsx2({ "opacity-30": onFirstPage }) }) }),
145
+ /* @__PURE__ */ jsxs2("div", { className: "min-w-[80px] justify-center mx-2", children: [
146
+ /* @__PURE__ */ jsx4("span", { className: "select-none text-right flex-1", children: noPages ? 0 : page + 1 }),
147
+ /* @__PURE__ */ jsx4("span", { className: "select-none mx-2", children: translation.of }),
148
+ /* @__PURE__ */ jsx4("span", { className: "select-none text-left flex-1", children: numberOfPages })
149
+ ] }),
150
+ /* @__PURE__ */ jsx4("button", { onClick: () => changePage(page + 1), disabled: onLastPage || noPages, children: /* @__PURE__ */ jsx4(ChevronRight, { className: clsx2({ "opacity-30": onLastPage }) }) }),
151
+ /* @__PURE__ */ jsx4("button", { onClick: () => changePage(numberOfPages - 1), disabled: onLastPage || noPages, children: /* @__PURE__ */ jsx4(ChevronLast, { className: clsx2({ "opacity-30": onLastPage }) }) })
152
+ ] });
153
+ };
154
+
155
+ // src/components/Table.tsx
156
+ import clsx3 from "clsx";
157
+ import { jsx as jsx5, jsxs as jsxs3 } from "react/jsx-runtime";
158
+ var defaultTableStatePagination = {
159
+ currentPage: 0,
160
+ entriesPerPage: 5
161
+ };
162
+ var defaultTableStateSelection = {
163
+ currentSelection: [],
164
+ hasSelectedAll: false,
165
+ hasSelectedSome: false,
166
+ hasSelectedNone: true
167
+ };
168
+ var isDataObjectSelected = (tableState, dataObject, identifierMapping) => {
169
+ if (!tableState.selection) {
170
+ return false;
171
+ }
172
+ return !!tableState.selection.currentSelection.find((value) => value.localeCompare(identifierMapping(dataObject)) === 0);
173
+ };
174
+ var pageForItem = (data, item, entriesPerPage, identifierMapping) => {
175
+ const index = data.findIndex((value) => identifierMapping(value) === identifierMapping(item));
176
+ if (index !== -1) {
177
+ return Math.floor(index / entriesPerPage);
178
+ }
179
+ console.warn("item doesn't exist on data", item, data);
180
+ return 0;
181
+ };
182
+ var updatePagination = (pagination, dataLength) => ({
183
+ ...pagination,
184
+ currentPage: Math.min(Math.max(Math.ceil(dataLength / pagination.entriesPerPage) - 1, 0), pagination.currentPage)
185
+ });
186
+ var addElementToTable = (tableState, data, dataObject, identifierMapping) => {
187
+ return {
188
+ ...tableState,
189
+ pagination: tableState.pagination ? {
190
+ ...tableState.pagination,
191
+ currentPage: pageForItem(data, dataObject, tableState.pagination.entriesPerPage, identifierMapping)
192
+ } : void 0,
193
+ selection: tableState.selection ? {
194
+ ...tableState.selection,
195
+ hasSelectedAll: false,
196
+ hasSelectedSome: tableState.selection.hasSelectedAll || tableState.selection.hasSelectedSome
197
+ } : void 0
198
+ };
199
+ };
200
+ var removeFromTableSelection = (tableState, deletedObjects, dataLength, identifierMapping) => {
201
+ if (!tableState.selection) {
202
+ return tableState;
203
+ }
204
+ const deletedObjectIds = deletedObjects.map(identifierMapping);
205
+ const elementsBefore = tableState.selection.currentSelection.length;
206
+ const currentSelection = tableState.selection.currentSelection.filter((value) => !deletedObjectIds.includes(value));
207
+ dataLength -= elementsBefore - currentSelection.length;
208
+ return {
209
+ ...tableState,
210
+ selection: {
211
+ currentSelection,
212
+ hasSelectedAll: currentSelection.length === dataLength && dataLength !== 0,
213
+ hasSelectedSome: currentSelection.length > 0 && currentSelection.length !== dataLength,
214
+ hasSelectedNone: currentSelection.length === 0
215
+ },
216
+ pagination: tableState.pagination ? updatePagination(tableState.pagination, dataLength) : void 0
217
+ };
218
+ };
219
+ var changeTableSelectionSingle = (tableState, dataObject, dataLength, identifierMapping) => {
220
+ if (!tableState.selection) {
221
+ return tableState;
222
+ }
223
+ const hasSelectedObject = isDataObjectSelected(tableState, dataObject, identifierMapping);
224
+ let currentSelection = [...tableState.selection.currentSelection, identifierMapping(dataObject)];
225
+ if (hasSelectedObject) {
226
+ currentSelection = tableState.selection.currentSelection.filter((value) => value.localeCompare(identifierMapping(dataObject)) !== 0);
227
+ }
228
+ return {
229
+ ...tableState,
230
+ selection: {
231
+ currentSelection,
232
+ hasSelectedAll: currentSelection.length === dataLength,
233
+ hasSelectedSome: currentSelection.length > 0 && currentSelection.length !== dataLength,
234
+ hasSelectedNone: currentSelection.length === 0
235
+ }
236
+ };
237
+ };
238
+ var changeTableSelectionAll = (tableState, data, identifierMapping) => {
239
+ if (!tableState.selection) {
240
+ return tableState;
241
+ }
242
+ if (data.length === 0) {
243
+ return {
244
+ ...tableState,
245
+ selection: {
246
+ currentSelection: [],
247
+ hasSelectedAll: false,
248
+ hasSelectedSome: false,
249
+ hasSelectedNone: true
250
+ }
251
+ };
252
+ }
253
+ const hasSelectedAll = !(tableState.selection.hasSelectedSome || tableState.selection.hasSelectedAll);
254
+ return {
255
+ ...tableState,
256
+ selection: {
257
+ currentSelection: hasSelectedAll ? data.map(identifierMapping) : [],
258
+ hasSelectedAll,
259
+ hasSelectedSome: false,
260
+ hasSelectedNone: !hasSelectedAll
261
+ }
262
+ };
263
+ };
264
+ var Table = ({
265
+ data,
266
+ stateManagement = [{}, noop],
267
+ identifierMapping,
268
+ header,
269
+ rowMappingToCells,
270
+ sorting,
271
+ focusElement,
272
+ className
273
+ }) => {
274
+ const sortedData = [...data];
275
+ if (sorting) {
276
+ const [sortingFunction, sortingType] = sorting;
277
+ sortedData.sort((a, b) => sortingFunction(a, b) * (sortingType === "ascending" ? 1 : -1));
278
+ }
279
+ let currentPage = 0;
280
+ let pageCount = 1;
281
+ let entriesPerPage = 5;
282
+ const [tableState, updateTableState] = stateManagement;
283
+ let shownElements = sortedData;
284
+ if (tableState?.pagination) {
285
+ if (tableState.pagination.entriesPerPage < 1) {
286
+ console.error("tableState.pagination.entriesPerPage must be >= 1", tableState.pagination.entriesPerPage);
287
+ }
288
+ entriesPerPage = Math.max(1, tableState.pagination.entriesPerPage);
289
+ pageCount = Math.ceil(sortedData.length / entriesPerPage);
290
+ if (tableState.pagination.currentPage < 0 || tableState.pagination.currentPage >= pageCount && pageCount !== 0) {
291
+ console.error(
292
+ "tableState.pagination.currentPage < 0 || (tableState.pagination.currentPage >= pageCount && pageCount !== 0) must be fullfilled",
293
+ [`pageCount: ${pageCount}`, `tableState.pagination.currentPage: ${tableState.pagination.currentPage}`]
294
+ );
295
+ } else {
296
+ currentPage = tableState.pagination.currentPage;
297
+ }
298
+ if (focusElement) {
299
+ currentPage = pageForItem(sortedData, focusElement, entriesPerPage, identifierMapping);
300
+ }
301
+ shownElements = sortedData.slice(currentPage * entriesPerPage, Math.min(sortedData.length, (currentPage + 1) * entriesPerPage));
302
+ } else {
303
+ currentPage = 0;
304
+ }
305
+ const headerRow = "border-b-2 border-gray-300";
306
+ const headerPaddingHead = "pb-2";
307
+ const headerPaddingBody = "pt-2";
308
+ const cellPadding = "py-1 px-2";
309
+ const [scrollbarsAutoHeightMin, setScrollbarsAutoHeightMin] = useState4(0);
310
+ const tableRef = useRef(null);
311
+ const calculateHeight = () => {
312
+ if (tableRef.current) {
313
+ const tableHeight = tableRef.current.offsetHeight;
314
+ const offset = 25;
315
+ setScrollbarsAutoHeightMin(tableHeight + offset);
316
+ }
317
+ };
318
+ useEffect3(() => {
319
+ calculateHeight();
320
+ const handleResize = () => {
321
+ calculateHeight();
322
+ };
323
+ window.addEventListener("resize", handleResize);
324
+ return () => {
325
+ window.removeEventListener("resize", handleResize);
326
+ };
327
+ }, [data, currentPage]);
328
+ return /* @__PURE__ */ jsxs3("div", { className: clsx3("col gap-y-4 overflow-hidden", className), children: [
329
+ /* @__PURE__ */ jsx5("div", { children: /* @__PURE__ */ jsx5(Scrollbars, { autoHeight: true, autoHeightMin: scrollbarsAutoHeightMin, children: /* @__PURE__ */ jsxs3("table", { ref: tableRef, className: "w-full mb-[12px]", children: [
330
+ /* @__PURE__ */ jsx5("thead", { children: /* @__PURE__ */ jsxs3("tr", { className: headerRow, children: [
331
+ header && tableState.selection && /* @__PURE__ */ jsx5("th", { className: headerPaddingHead, children: /* @__PURE__ */ jsx5(
332
+ ControlledCheckbox,
333
+ {
334
+ checked: tableState.selection.hasSelectedSome ? "indeterminate" : tableState.selection.hasSelectedAll,
335
+ onChange: () => updateTableState(changeTableSelectionAll(tableState, data, identifierMapping))
336
+ }
337
+ ) }),
338
+ header && header.map((value, index) => /* @__PURE__ */ jsx5("th", { className: headerPaddingHead, children: /* @__PURE__ */ jsx5("div", { className: "row justify-start px-2", children: value }) }, `tableHeader${index}`))
339
+ ] }) }),
340
+ /* @__PURE__ */ jsx5("tbody", { children: shownElements.map((value, rowIndex) => /* @__PURE__ */ jsxs3("tr", { children: [
341
+ tableState.selection && /* @__PURE__ */ jsx5("td", { className: clsx3(cellPadding, { [headerPaddingBody]: rowIndex === 0 }), children: /* @__PURE__ */ jsx5(
342
+ ControlledCheckbox,
343
+ {
344
+ checked: isDataObjectSelected(tableState, value, identifierMapping),
345
+ onChange: () => {
346
+ updateTableState(changeTableSelectionSingle(tableState, value, data.length, identifierMapping));
347
+ }
348
+ }
349
+ ) }),
350
+ rowMappingToCells(value).map((value1, index) => /* @__PURE__ */ jsx5("td", { className: clsx3(cellPadding, { [headerPaddingBody]: rowIndex === 0 }), children: value1 }, index))
351
+ ] }, identifierMapping(value))) })
352
+ ] }) }) }),
353
+ /* @__PURE__ */ jsx5("div", { className: "row justify-center", children: tableState.pagination && /* @__PURE__ */ jsx5(Pagination, { page: currentPage, numberOfPages: pageCount, onPageChanged: (page) => updateTableState({
354
+ ...tableState,
355
+ pagination: { entriesPerPage, currentPage: page }
356
+ }) }) })
357
+ ] });
358
+ };
359
+ export {
360
+ Table,
361
+ addElementToTable,
362
+ changeTableSelectionSingle,
363
+ defaultTableStatePagination,
364
+ defaultTableStateSelection,
365
+ isDataObjectSelected,
366
+ pageForItem,
367
+ removeFromTableSelection,
368
+ updatePagination
369
+ };
370
+ //# sourceMappingURL=Table.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/Table.tsx","../../src/util/noop.ts","../../src/components/user-input/Checkbox.tsx","../../src/components/user-input/Label.tsx","../../src/components/Pagination.tsx","../../src/hooks/useLanguage.tsx","../../src/hooks/useLocalStorage.tsx","../../src/hooks/useTranslation.ts"],"sourcesContent":["import type { ReactElement } from 'react'\nimport { Scrollbars } from 'react-custom-scrollbars-2'\nimport { useEffect, useRef, useState } from 'react'\nimport { noop } from '../util/noop'\nimport { Checkbox } from './user-input/Checkbox'\nimport { Pagination } from './Pagination'\nimport clsx from 'clsx'\n\nexport type TableStatePagination = {\n currentPage: number,\n entriesPerPage: number,\n}\nexport const defaultTableStatePagination = {\n currentPage: 0,\n entriesPerPage: 5\n}\n\nexport type TableStateSelection<T> = {\n currentSelection: T[],\n hasSelectedAll: boolean,\n hasSelectedSome: boolean,\n hasSelectedNone: boolean,\n}\n\nexport const defaultTableStateSelection = {\n currentSelection: [],\n hasSelectedAll: false,\n hasSelectedSome: false,\n hasSelectedNone: true\n}\n\nexport type TableState = {\n pagination?: TableStatePagination,\n selection?: {\n /**\n * The mapped ids of the dataType\n */\n currentSelection: string[],\n hasSelectedAll: boolean,\n hasSelectedSome: boolean,\n hasSelectedNone: boolean,\n },\n}\n\ntype IdentifierMapping<T> = (dataObject: T) => string\n\nexport const isDataObjectSelected = <T, >(tableState: TableState, dataObject: T, identifierMapping: IdentifierMapping<T>) => {\n if (!tableState.selection) {\n return false\n }\n\n return !!tableState.selection.currentSelection.find(value => value.localeCompare(identifierMapping(dataObject)) === 0)\n}\n\nexport const pageForItem = <T, >(data: T[], item: T, entriesPerPage: number, identifierMapping: IdentifierMapping<T>) => {\n const index = data.findIndex(value => identifierMapping(value) === identifierMapping(item))\n if (index !== -1) {\n return Math.floor(index / entriesPerPage)\n }\n console.warn(\"item doesn't exist on data\", item, data)\n return 0\n}\n\nexport const updatePagination = (pagination: TableStatePagination, dataLength: number): TableStatePagination => ({\n ...pagination,\n currentPage: Math.min(Math.max(Math.ceil(dataLength / pagination.entriesPerPage) - 1, 0), pagination.currentPage)\n})\n\nexport const addElementToTable = <T, >(tableState: TableState, data: T[], dataObject: T, identifierMapping: IdentifierMapping<T>) => {\n return {\n ...tableState,\n pagination: tableState.pagination ? {\n ...tableState.pagination,\n currentPage: pageForItem(data, dataObject, tableState.pagination.entriesPerPage, identifierMapping)\n } : undefined,\n selection: tableState.selection ? {\n ...tableState.selection,\n hasSelectedAll: false,\n hasSelectedSome: tableState.selection.hasSelectedAll || tableState.selection.hasSelectedSome\n } : undefined\n }\n}\n\n/**\n * data length before delete\n */\nexport const removeFromTableSelection = <T, >(tableState: TableState, deletedObjects: T[], dataLength: number, identifierMapping: IdentifierMapping<T>): TableState => {\n if (!tableState.selection) {\n return tableState\n }\n\n const deletedObjectIds = deletedObjects.map(identifierMapping)\n const elementsBefore = tableState.selection.currentSelection.length\n const currentSelection = tableState.selection.currentSelection.filter((value) => !deletedObjectIds.includes(value))\n dataLength -= elementsBefore - currentSelection.length\n\n return {\n ...tableState,\n selection: {\n currentSelection,\n hasSelectedAll: currentSelection.length === dataLength && dataLength !== 0,\n hasSelectedSome: currentSelection.length > 0 && currentSelection.length !== dataLength,\n hasSelectedNone: currentSelection.length === 0,\n },\n pagination: tableState.pagination ? updatePagination(tableState.pagination, dataLength) : undefined\n }\n}\n\nexport const changeTableSelectionSingle = <T, >(tableState: TableState, dataObject: T, dataLength: number, identifierMapping: IdentifierMapping<T>) => {\n if (!tableState.selection) {\n return tableState\n }\n\n const hasSelectedObject = isDataObjectSelected(tableState, dataObject, identifierMapping)\n let currentSelection = [...tableState.selection.currentSelection, identifierMapping(dataObject)] // case !hasSelectedObject\n if (hasSelectedObject) {\n currentSelection = tableState.selection.currentSelection.filter(value => value.localeCompare(identifierMapping(dataObject)) !== 0)\n }\n\n return {\n ...tableState,\n selection: {\n currentSelection,\n hasSelectedAll: currentSelection.length === dataLength,\n hasSelectedSome: currentSelection.length > 0 && currentSelection.length !== dataLength,\n hasSelectedNone: currentSelection.length === 0,\n }\n }\n}\n\nconst changeTableSelectionAll = <T, >(tableState: TableState, data: T[], identifierMapping: IdentifierMapping<T>) => {\n if (!tableState.selection) {\n return tableState\n }\n\n if (data.length === 0) {\n return {\n ...tableState,\n selection: {\n currentSelection: [],\n hasSelectedAll: false,\n hasSelectedSome: false,\n hasSelectedNone: true\n }\n }\n }\n\n const hasSelectedAll = !(tableState.selection.hasSelectedSome || tableState.selection.hasSelectedAll)\n return {\n ...tableState,\n selection: {\n currentSelection: hasSelectedAll ? data.map(identifierMapping) : [],\n hasSelectedAll,\n hasSelectedSome: false,\n hasSelectedNone: !hasSelectedAll\n }\n }\n}\n\nexport type TableSortingType = 'ascending' | 'descending'\nexport type TableSortingFunctionType<T> = (t1: T, t2: T) => number\n\nexport type TableProps<T> = {\n data: T[],\n /**\n * When using selection or pagination\n */\n stateManagement?: [TableState, (tableState: TableState) => void],\n identifierMapping: IdentifierMapping<T>,\n /**\n * Only the cell itself no boilerplate <tr> or <th> required\n */\n header?: ReactElement[],\n /**\n * Only the cells of the row no boilerplate <tr> or <td> required\n */\n rowMappingToCells: (dataObject: T) => ReactElement[],\n sorting?: [TableSortingFunctionType<T>, TableSortingType],\n /**\n * Always go to the page of this element\n */\n focusElement?: T,\n className?: string,\n}\n\n/* Possible extension for better customization\n * Map each element to the displayed row\n * make sure to wrap it in the <tr> and <td> you require\n rowMappingToHTMLRow?: (dataObject: T) => ReactElement\n */\n\n/**\n * A Basic stateless reusable table\n * The state must be handled and saved with the updateTableState method\n */\nexport const Table = <T, >({\n data,\n stateManagement = [{}, noop],\n identifierMapping,\n header,\n rowMappingToCells,\n sorting,\n focusElement,\n className\n }: TableProps<T>) => {\n const sortedData = [...data]\n if (sorting) {\n const [sortingFunction, sortingType] = sorting\n sortedData.sort((a, b) => sortingFunction(a, b) * (sortingType === 'ascending' ? 1 : -1))\n }\n let currentPage = 0\n let pageCount = 1\n let entriesPerPage = 5\n const [tableState, updateTableState] = stateManagement\n\n let shownElements = sortedData\n\n if (tableState?.pagination) {\n if (tableState.pagination.entriesPerPage < 1) {\n console.error('tableState.pagination.entriesPerPage must be >= 1', tableState.pagination.entriesPerPage)\n }\n entriesPerPage = Math.max(1, tableState.pagination.entriesPerPage)\n pageCount = Math.ceil(sortedData.length / entriesPerPage)\n\n if (tableState.pagination.currentPage < 0 || (tableState.pagination.currentPage >= pageCount && pageCount !== 0)) {\n console.error('tableState.pagination.currentPage < 0 || (tableState.pagination.currentPage >= pageCount && pageCount !== 0) must be fullfilled',\n [`pageCount: ${pageCount}`, `tableState.pagination.currentPage: ${tableState.pagination.currentPage}`])\n } else {\n currentPage = tableState.pagination.currentPage\n }\n\n if (focusElement) {\n currentPage = pageForItem(sortedData, focusElement, entriesPerPage, identifierMapping)\n }\n\n shownElements = sortedData.slice(currentPage * entriesPerPage, Math.min(sortedData.length, (currentPage + 1) * entriesPerPage))\n } else {\n currentPage = 0\n }\n\n const headerRow = 'border-b-2 border-gray-300'\n const headerPaddingHead = 'pb-2'\n const headerPaddingBody = 'pt-2'\n const cellPadding = 'py-1 px-2'\n\n const [scrollbarsAutoHeightMin, setScrollbarsAutoHeightMin] = useState(0)\n const tableRef = useRef<HTMLTableElement>(null)\n\n const calculateHeight = () => {\n if (tableRef.current) {\n const tableHeight = tableRef.current.offsetHeight\n const offset = 25\n setScrollbarsAutoHeightMin(tableHeight + offset)\n }\n }\n\n useEffect(() => {\n calculateHeight()\n\n // New function to unbind properly\n const handleResize = () => {\n calculateHeight()\n }\n\n window.addEventListener('resize', handleResize)\n\n return () => {\n window.removeEventListener('resize', handleResize)\n }\n }, [data, currentPage])\n\n return (\n <div className={clsx('col gap-y-4 overflow-hidden', className)}>\n <div>\n <Scrollbars autoHeight autoHeightMin={scrollbarsAutoHeightMin}>\n <table ref={tableRef} className=\"w-full mb-[12px]\">\n <thead>\n <tr className={headerRow}>\n {header && tableState.selection && (\n <th className={headerPaddingHead}>\n <Checkbox\n checked={tableState.selection.hasSelectedSome ? 'indeterminate' : tableState.selection.hasSelectedAll}\n onChange={() => updateTableState(changeTableSelectionAll(tableState, data, identifierMapping))}\n />\n </th>\n )}\n {header && header.map((value, index) => (\n <th key={`tableHeader${index}`} className={headerPaddingHead}>\n <div className=\"row justify-start px-2\">\n {value}\n </div>\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {shownElements.map((value, rowIndex) => (\n <tr key={identifierMapping(value)}>\n {tableState.selection && (\n <td className={clsx(cellPadding, { [headerPaddingBody]: rowIndex === 0 })}>\n <Checkbox\n checked={isDataObjectSelected(tableState, value, identifierMapping)}\n onChange={() => {\n updateTableState(changeTableSelectionSingle(tableState, value, data.length, identifierMapping))\n }}\n />\n </td>\n )}\n {rowMappingToCells(value).map((value1, index) => (\n <td key={index} className={clsx(cellPadding, { [headerPaddingBody]: rowIndex === 0 })}>\n {value1}\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n </Scrollbars>\n </div>\n <div className=\"row justify-center\">\n {tableState.pagination && (\n <Pagination page={currentPage} numberOfPages={pageCount} onPageChanged={page => updateTableState({\n ...tableState,\n pagination: { entriesPerPage, currentPage: page }\n })}/>\n )}\n </div>\n </div>\n )\n}\n","export const noop = () => undefined\n","import { useState } from 'react'\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox'\nimport type { CheckedState } from '@radix-ui/react-checkbox'\nimport { Check, Minus } from 'lucide-react'\nimport clsx from 'clsx'\nimport type { LabelProps } from './Label'\nimport { Label } from './Label'\n\ntype CheckBoxSize = 'small' | 'medium' | 'large'\n\nconst checkboxSizeMapping: Record<CheckBoxSize, string> = {\n small: 'size-4',\n medium: 'size-6',\n large: 'size-8',\n}\n\nconst checkboxIconSizeMapping: Record<CheckBoxSize, string> = {\n small: 'size-3',\n medium: 'size-5',\n large: 'size-7',\n}\n\ntype CheckboxProps = {\n /** used for the label's `for` attribute */\n id?: string,\n label?: Omit<LabelProps, 'id'>,\n /**\n * @default false\n */\n checked: CheckedState,\n disabled?: boolean,\n onChange?: (checked: boolean) => void,\n onChangeTristate?: (checked: CheckedState) => void,\n size?: CheckBoxSize,\n className?: string,\n containerClassName?: string,\n}\n\n/**\n * A Tristate checkbox\n *\n * The state is managed by the parent\n */\nconst ControlledCheckbox = ({\n id,\n label,\n checked,\n disabled,\n onChange,\n onChangeTristate,\n size = 'medium',\n className = '',\n containerClassName\n }: CheckboxProps) => {\n const usedSizeClass = checkboxSizeMapping[size]\n const innerIconSize = checkboxIconSizeMapping[size]\n\n const propagateChange = (checked: CheckedState) => {\n if (onChangeTristate) {\n onChangeTristate(checked)\n }\n if (onChange) {\n onChange(checked === 'indeterminate' ? false : checked)\n }\n }\n\n const changeValue = () => {\n const newValue = checked === 'indeterminate' ? false : !checked\n propagateChange(newValue)\n }\n\n return (\n <div className={clsx('row justify-center items-center', containerClassName)}>\n <CheckboxPrimitive.Root\n onCheckedChange={propagateChange}\n checked={checked}\n disabled={disabled}\n id={id}\n className={clsx(usedSizeClass, `items-center border-2 rounded outline-none focus:border-primary`, {\n 'text-disabled-text border-disabled-text': disabled,\n 'border-on-background': !disabled,\n 'bg-primary/30 border-primary text-primary': checked === true || checked === 'indeterminate',\n 'hover:border-gray-400 focus:hover:border-primary': !checked\n }, className)}\n >\n <CheckboxPrimitive.Indicator>\n {checked === true && <Check className={innerIconSize}/>}\n {checked === 'indeterminate' && <Minus className={innerIconSize}/>}\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n {label &&\n <Label {...label} className={clsx('cursor-pointer', label.className)} htmlFor={id} onClick={changeValue}/>}\n </div>\n )\n}\n\ntype UncontrolledCheckboxProps = Omit<CheckboxProps, 'value' | 'checked'> & {\n /**\n * @default false\n */\n defaultValue?: CheckedState,\n}\n\n/**\n * A Tristate checkbox\n *\n * The state is managed by this component\n */\nconst UncontrolledCheckbox = ({\n onChange,\n onChangeTristate,\n defaultValue = false,\n ...props\n }: UncontrolledCheckboxProps) => {\n const [checked, setChecked] = useState(defaultValue)\n\n const handleChange = (checked: CheckedState) => {\n if (onChangeTristate) {\n onChangeTristate(checked)\n }\n if (onChange) {\n onChange(checked === 'indeterminate' ? false : checked)\n }\n setChecked(checked)\n }\n\n return (\n <ControlledCheckbox\n {...props}\n checked={checked}\n onChangeTristate={handleChange}\n />\n )\n}\n\nexport {\n UncontrolledCheckbox,\n ControlledCheckbox as Checkbox\n}\n","import type { LabelHTMLAttributes } from 'react'\n\nexport type LabelType = 'labelSmall' | 'labelMedium' | 'labelBig'\nconst styleMapping: Record<LabelType, string> = {\n labelSmall: 'textstyle-label-sm',\n labelMedium: 'textstyle-label-md',\n labelBig: 'textstyle-label-lg',\n}\n\n\nexport type LabelProps = {\n /** The text for the label */\n name?: string,\n /** The styling for the label */\n labelType?: LabelType,\n} & LabelHTMLAttributes<HTMLLabelElement>\n\n/**\n * A Label component\n */\nexport const Label = ({\n children,\n name,\n labelType = 'labelSmall',\n ...props\n}: LabelProps) => {\n return (\n <label {...props}>\n {children ? children : (<span className={styleMapping[labelType]}>{name}</span>)}\n </label>\n )\n}\n","import { ChevronLast, ChevronLeft, ChevronFirst, ChevronRight } from 'lucide-react'\nimport clsx from 'clsx'\nimport type { PropsForTranslation } from '../hooks/useTranslation'\nimport { useTranslation } from '../hooks/useTranslation'\nimport type { Languages } from '../hooks/useLanguage'\n\ntype PaginationTranslation = {\n of: string,\n}\nconst defaultPaginationTranslations: Record<Languages, PaginationTranslation> = {\n en: {\n of: 'of'\n },\n de: {\n of: 'von'\n }\n}\n\nexport type PaginationProps = {\n page: number, // starts with 0\n numberOfPages: number,\n onPageChanged: (page: number) => void,\n}\n\n/**\n * A Component showing the pagination allowing first, before, next and last page navigation\n */\nexport const Pagination = ({\n overwriteTranslation,\n page,\n numberOfPages,\n onPageChanged\n}: PropsForTranslation<PaginationTranslation, PaginationProps>) => {\n const translation = useTranslation(defaultPaginationTranslations, overwriteTranslation)\n\n const changePage = (page:number) => {\n onPageChanged(page)\n }\n\n const noPages = numberOfPages === 0\n const onFirstPage = page === 0 && !noPages\n const onLastPage = page === numberOfPages - 1\n\n return (\n <div className={clsx('row', { 'opacity-30': noPages })}>\n <button onClick={() => changePage(0)} disabled={onFirstPage}>\n <ChevronFirst className={clsx({ 'opacity-30': onFirstPage })}/>\n </button>\n <button onClick={() => changePage(page - 1)} disabled={onFirstPage}>\n <ChevronLeft className={clsx({ 'opacity-30': onFirstPage })}/>\n </button>\n <div className=\"min-w-[80px] justify-center mx-2\">\n <span className=\"select-none text-right flex-1\">{noPages ? 0 : page + 1}</span>\n <span className=\"select-none mx-2\">{translation.of}</span>\n <span className=\"select-none text-left flex-1\">{numberOfPages}</span>\n </div>\n <button onClick={() => changePage(page + 1)} disabled={onLastPage || noPages}>\n <ChevronRight className={clsx({ 'opacity-30': onLastPage })}/>\n </button>\n <button onClick={() => changePage(numberOfPages - 1)} disabled={onLastPage || noPages}>\n <ChevronLast className={clsx({ 'opacity-30': onLastPage })}/>\n </button>\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>>\nconst 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}\n\nexport default useLocalStorage\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":";AACA,SAAS,kBAAkB;AAC3B,SAAS,aAAAA,YAAW,QAAQ,YAAAC,iBAAgB;;;ACFrC,IAAM,OAAO,MAAM;;;ACA1B,SAAS,gBAAgB;AACzB,YAAY,uBAAuB;AAEnC,SAAS,OAAO,aAAa;AAC7B,OAAO,UAAU;;;ACwBa;AAzB9B,IAAM,eAA0C;AAAA,EAC9C,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,UAAU;AACZ;AAaO,IAAM,QAAQ,CAAC;AAAA,EACpB;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,GAAG;AACL,MAAkB;AAChB,SACE,oBAAC,WAAO,GAAG,OACR,qBAAW,WAAY,oBAAC,UAAK,WAAW,aAAa,SAAS,GAAI,gBAAK,GAC1E;AAEJ;;;ADsDQ,SACuB,OAAAC,MADvB;AA3ER,IAAM,sBAAoD;AAAA,EACxD,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AACT;AAEA,IAAM,0BAAwD;AAAA,EAC5D,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AACT;AAuBA,IAAM,qBAAqB,CAAC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,YAAY;AAAA,EACZ;AACF,MAAqB;AAC/C,QAAM,gBAAgB,oBAAoB,IAAI;AAC9C,QAAM,gBAAgB,wBAAwB,IAAI;AAElD,QAAM,kBAAkB,CAACC,aAA0B;AACjD,QAAI,kBAAkB;AACpB,uBAAiBA,QAAO;AAAA,IAC1B;AACA,QAAI,UAAU;AACZ,eAASA,aAAY,kBAAkB,QAAQA,QAAO;AAAA,IACxD;AAAA,EACF;AAEA,QAAM,cAAc,MAAM;AACxB,UAAM,WAAW,YAAY,kBAAkB,QAAQ,CAAC;AACxD,oBAAgB,QAAQ;AAAA,EAC1B;AAEA,SACE,qBAAC,SAAI,WAAW,KAAK,mCAAmC,kBAAkB,GACxE;AAAA,oBAAAD;AAAA,MAAmB;AAAA,MAAlB;AAAA,QACC,iBAAiB;AAAA,QACjB;AAAA,QACA;AAAA,QACA;AAAA,QACA,WAAW,KAAK,eAAe,mEAAmE;AAAA,UAChG,2CAA2C;AAAA,UAC3C,wBAAwB,CAAC;AAAA,UACzB,6CAA6C,YAAY,QAAQ,YAAY;AAAA,UAC7E,oDAAoD,CAAC;AAAA,QACvD,GAAG,SAAS;AAAA,QAEZ,+BAAmB,6BAAlB,EACE;AAAA,sBAAY,QAAQ,gBAAAA,KAAC,SAAM,WAAW,eAAc;AAAA,UACpD,YAAY,mBAAmB,gBAAAA,KAAC,SAAM,WAAW,eAAc;AAAA,WAClE;AAAA;AAAA,IACF;AAAA,IACC,SACC,gBAAAA,KAAC,SAAO,GAAG,OAAO,WAAW,KAAK,kBAAkB,MAAM,SAAS,GAAG,SAAS,IAAI,SAAS,aAAY;AAAA,KAC5G;AAEJ;;;AE9FA,SAAS,aAAa,aAAa,cAAc,oBAAoB;AACrE,OAAOE,WAAU;;;ACAjB,SAAS,eAAe,YAAY,aAAAC,YAAW,YAAAC,iBAAgB;;;ACA/D,SAAS,aAAa,WAAW,YAAAC,iBAAgB;;;ADqE7C,gBAAAC,YAAA;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;;;AHIQ,gBAAAC,MAKF,QAAAC,aALE;AArCR,IAAM,gCAA0E;AAAA,EAC9E,IAAI;AAAA,IACF,IAAI;AAAA,EACN;AAAA,EACA,IAAI;AAAA,IACF,IAAI;AAAA,EACN;AACF;AAWO,IAAM,aAAa,CAAC;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAmE;AACjE,QAAM,cAAc,eAAe,+BAA+B,oBAAoB;AAEtF,QAAM,aAAa,CAACC,UAAgB;AAClC,kBAAcA,KAAI;AAAA,EACpB;AAEA,QAAM,UAAU,kBAAkB;AAClC,QAAM,cAAc,SAAS,KAAK,CAAC;AACnC,QAAM,aAAa,SAAS,gBAAgB;AAE5C,SACE,gBAAAD,MAAC,SAAI,WAAWE,MAAK,OAAO,EAAE,cAAc,QAAQ,CAAC,GACnD;AAAA,oBAAAH,KAAC,YAAO,SAAS,MAAM,WAAW,CAAC,GAAG,UAAU,aAC9C,0BAAAA,KAAC,gBAAa,WAAWG,MAAK,EAAE,cAAc,YAAY,CAAC,GAAE,GAC/D;AAAA,IACA,gBAAAH,KAAC,YAAO,SAAS,MAAM,WAAW,OAAO,CAAC,GAAG,UAAU,aACrD,0BAAAA,KAAC,eAAY,WAAWG,MAAK,EAAE,cAAc,YAAY,CAAC,GAAE,GAC9D;AAAA,IACA,gBAAAF,MAAC,SAAI,WAAU,oCACb;AAAA,sBAAAD,KAAC,UAAK,WAAU,iCAAiC,oBAAU,IAAI,OAAO,GAAE;AAAA,MACxE,gBAAAA,KAAC,UAAK,WAAU,oBAAoB,sBAAY,IAAG;AAAA,MACnD,gBAAAA,KAAC,UAAK,WAAU,gCAAgC,yBAAc;AAAA,OAChE;AAAA,IACA,gBAAAA,KAAC,YAAO,SAAS,MAAM,WAAW,OAAO,CAAC,GAAG,UAAU,cAAc,SACnE,0BAAAA,KAAC,gBAAa,WAAWG,MAAK,EAAE,cAAc,WAAW,CAAC,GAAE,GAC9D;AAAA,IACA,gBAAAH,KAAC,YAAO,SAAS,MAAM,WAAW,gBAAgB,CAAC,GAAG,UAAU,cAAc,SAC5E,0BAAAA,KAAC,eAAY,WAAWG,MAAK,EAAE,cAAc,WAAW,CAAC,GAAE,GAC7D;AAAA,KACF;AAEJ;;;AJ1DA,OAAOC,WAAU;AA+QL,SAGM,OAAAC,MAHN,QAAAC,aAAA;AAzQL,IAAM,8BAA8B;AAAA,EACzC,aAAa;AAAA,EACb,gBAAgB;AAClB;AASO,IAAM,6BAA6B;AAAA,EACxC,kBAAkB,CAAC;AAAA,EACnB,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,iBAAiB;AACnB;AAiBO,IAAM,uBAAuB,CAAM,YAAwB,YAAe,sBAA4C;AAC3H,MAAI,CAAC,WAAW,WAAW;AACzB,WAAO;AAAA,EACT;AAEA,SAAO,CAAC,CAAC,WAAW,UAAU,iBAAiB,KAAK,WAAS,MAAM,cAAc,kBAAkB,UAAU,CAAC,MAAM,CAAC;AACvH;AAEO,IAAM,cAAc,CAAM,MAAW,MAAS,gBAAwB,sBAA4C;AACvH,QAAM,QAAQ,KAAK,UAAU,WAAS,kBAAkB,KAAK,MAAM,kBAAkB,IAAI,CAAC;AAC1F,MAAI,UAAU,IAAI;AAChB,WAAO,KAAK,MAAM,QAAQ,cAAc;AAAA,EAC1C;AACA,UAAQ,KAAK,8BAA8B,MAAM,IAAI;AACrD,SAAO;AACT;AAEO,IAAM,mBAAmB,CAAC,YAAkC,gBAA8C;AAAA,EAC/G,GAAG;AAAA,EACH,aAAa,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,aAAa,WAAW,cAAc,IAAI,GAAG,CAAC,GAAG,WAAW,WAAW;AAClH;AAEO,IAAM,oBAAoB,CAAM,YAAwB,MAAW,YAAe,sBAA4C;AACnI,SAAO;AAAA,IACL,GAAG;AAAA,IACH,YAAY,WAAW,aAAa;AAAA,MAClC,GAAG,WAAW;AAAA,MACd,aAAa,YAAY,MAAM,YAAY,WAAW,WAAW,gBAAgB,iBAAiB;AAAA,IACpG,IAAI;AAAA,IACJ,WAAW,WAAW,YAAY;AAAA,MAChC,GAAG,WAAW;AAAA,MACd,gBAAgB;AAAA,MAChB,iBAAiB,WAAW,UAAU,kBAAkB,WAAW,UAAU;AAAA,IAC/E,IAAI;AAAA,EACN;AACF;AAKO,IAAM,2BAA2B,CAAM,YAAwB,gBAAqB,YAAoB,sBAAwD;AACrK,MAAI,CAAC,WAAW,WAAW;AACzB,WAAO;AAAA,EACT;AAEA,QAAM,mBAAmB,eAAe,IAAI,iBAAiB;AAC7D,QAAM,iBAAiB,WAAW,UAAU,iBAAiB;AAC7D,QAAM,mBAAmB,WAAW,UAAU,iBAAiB,OAAO,CAAC,UAAU,CAAC,iBAAiB,SAAS,KAAK,CAAC;AAClH,gBAAc,iBAAiB,iBAAiB;AAEhD,SAAO;AAAA,IACL,GAAG;AAAA,IACH,WAAW;AAAA,MACT;AAAA,MACA,gBAAgB,iBAAiB,WAAW,cAAc,eAAe;AAAA,MACzE,iBAAiB,iBAAiB,SAAS,KAAK,iBAAiB,WAAW;AAAA,MAC5E,iBAAiB,iBAAiB,WAAW;AAAA,IAC/C;AAAA,IACA,YAAY,WAAW,aAAa,iBAAiB,WAAW,YAAY,UAAU,IAAI;AAAA,EAC5F;AACF;AAEO,IAAM,6BAA6B,CAAM,YAAwB,YAAe,YAAoB,sBAA4C;AACrJ,MAAI,CAAC,WAAW,WAAW;AACzB,WAAO;AAAA,EACT;AAEA,QAAM,oBAAoB,qBAAqB,YAAY,YAAY,iBAAiB;AACxF,MAAI,mBAAmB,CAAC,GAAG,WAAW,UAAU,kBAAkB,kBAAkB,UAAU,CAAC;AAC/F,MAAI,mBAAmB;AACrB,uBAAmB,WAAW,UAAU,iBAAiB,OAAO,WAAS,MAAM,cAAc,kBAAkB,UAAU,CAAC,MAAM,CAAC;AAAA,EACnI;AAEA,SAAO;AAAA,IACL,GAAG;AAAA,IACH,WAAW;AAAA,MACT;AAAA,MACA,gBAAgB,iBAAiB,WAAW;AAAA,MAC5C,iBAAiB,iBAAiB,SAAS,KAAK,iBAAiB,WAAW;AAAA,MAC5E,iBAAiB,iBAAiB,WAAW;AAAA,IAC/C;AAAA,EACF;AACF;AAEA,IAAM,0BAA0B,CAAM,YAAwB,MAAW,sBAA4C;AACnH,MAAI,CAAC,WAAW,WAAW;AACzB,WAAO;AAAA,EACT;AAEA,MAAI,KAAK,WAAW,GAAG;AACrB,WAAO;AAAA,MACL,GAAG;AAAA,MACH,WAAW;AAAA,QACT,kBAAkB,CAAC;AAAA,QACnB,gBAAgB;AAAA,QAChB,iBAAiB;AAAA,QACjB,iBAAiB;AAAA,MACnB;AAAA,IACF;AAAA,EACF;AAEA,QAAM,iBAAiB,EAAE,WAAW,UAAU,mBAAmB,WAAW,UAAU;AACtF,SAAO;AAAA,IACL,GAAG;AAAA,IACH,WAAW;AAAA,MACT,kBAAkB,iBAAiB,KAAK,IAAI,iBAAiB,IAAI,CAAC;AAAA,MAClE;AAAA,MACA,iBAAiB;AAAA,MACjB,iBAAiB,CAAC;AAAA,IACpB;AAAA,EACF;AACF;AAsCO,IAAM,QAAQ,CAAM;AAAA,EACE;AAAA,EACA,kBAAkB,CAAC,CAAC,GAAG,IAAI;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAqB;AAC9C,QAAM,aAAa,CAAC,GAAG,IAAI;AAC3B,MAAI,SAAS;AACX,UAAM,CAAC,iBAAiB,WAAW,IAAI;AACvC,eAAW,KAAK,CAAC,GAAG,MAAM,gBAAgB,GAAG,CAAC,KAAK,gBAAgB,cAAc,IAAI,GAAG;AAAA,EAC1F;AACA,MAAI,cAAc;AAClB,MAAI,YAAY;AAChB,MAAI,iBAAiB;AACrB,QAAM,CAAC,YAAY,gBAAgB,IAAI;AAEvC,MAAI,gBAAgB;AAEpB,MAAI,YAAY,YAAY;AAC1B,QAAI,WAAW,WAAW,iBAAiB,GAAG;AAC5C,cAAQ,MAAM,qDAAqD,WAAW,WAAW,cAAc;AAAA,IACzG;AACA,qBAAiB,KAAK,IAAI,GAAG,WAAW,WAAW,cAAc;AACjE,gBAAY,KAAK,KAAK,WAAW,SAAS,cAAc;AAExD,QAAI,WAAW,WAAW,cAAc,KAAM,WAAW,WAAW,eAAe,aAAa,cAAc,GAAI;AAChH,cAAQ;AAAA,QAAM;AAAA,QACZ,CAAC,cAAc,SAAS,IAAI,sCAAsC,WAAW,WAAW,WAAW,EAAE;AAAA,MAAC;AAAA,IAC1G,OAAO;AACL,oBAAc,WAAW,WAAW;AAAA,IACtC;AAEA,QAAI,cAAc;AAChB,oBAAc,YAAY,YAAY,cAAc,gBAAgB,iBAAiB;AAAA,IACvF;AAEA,oBAAgB,WAAW,MAAM,cAAc,gBAAgB,KAAK,IAAI,WAAW,SAAS,cAAc,KAAK,cAAc,CAAC;AAAA,EAChI,OAAO;AACL,kBAAc;AAAA,EAChB;AAEA,QAAM,YAAY;AAClB,QAAM,oBAAoB;AAC1B,QAAM,oBAAoB;AAC1B,QAAM,cAAc;AAEpB,QAAM,CAAC,yBAAyB,0BAA0B,IAAIC,UAAS,CAAC;AACxE,QAAM,WAAW,OAAyB,IAAI;AAE9C,QAAM,kBAAkB,MAAM;AAC5B,QAAI,SAAS,SAAS;AACpB,YAAM,cAAc,SAAS,QAAQ;AACrC,YAAM,SAAS;AACf,iCAA2B,cAAc,MAAM;AAAA,IACjD;AAAA,EACF;AAEA,EAAAC,WAAU,MAAM;AACd,oBAAgB;AAGhB,UAAM,eAAe,MAAM;AACzB,sBAAgB;AAAA,IAClB;AAEA,WAAO,iBAAiB,UAAU,YAAY;AAE9C,WAAO,MAAM;AACX,aAAO,oBAAoB,UAAU,YAAY;AAAA,IACnD;AAAA,EACF,GAAG,CAAC,MAAM,WAAW,CAAC;AAEtB,SACE,gBAAAF,MAAC,SAAI,WAAWF,MAAK,+BAA+B,SAAS,GAC3D;AAAA,oBAAAC,KAAC,SACC,0BAAAA,KAAC,cAAW,YAAU,MAAC,eAAe,yBACpC,0BAAAC,MAAC,WAAM,KAAK,UAAU,WAAU,oBAC9B;AAAA,sBAAAD,KAAC,WACD,0BAAAC,MAAC,QAAG,WAAW,WACZ;AAAA,kBAAU,WAAW,aACpB,gBAAAD,KAAC,QAAG,WAAW,mBACb,0BAAAA;AAAA,UAAC;AAAA;AAAA,YACC,SAAS,WAAW,UAAU,kBAAkB,kBAAkB,WAAW,UAAU;AAAA,YACvF,UAAU,MAAM,iBAAiB,wBAAwB,YAAY,MAAM,iBAAiB,CAAC;AAAA;AAAA,QAC/F,GACF;AAAA,QAED,UAAU,OAAO,IAAI,CAAC,OAAO,UAC5B,gBAAAA,KAAC,QAA+B,WAAW,mBACzC,0BAAAA,KAAC,SAAI,WAAU,0BACZ,iBACH,KAHO,cAAc,KAAK,EAI5B,CACD;AAAA,SACH,GACA;AAAA,MACA,gBAAAA,KAAC,WACA,wBAAc,IAAI,CAAC,OAAO,aACzB,gBAAAC,MAAC,QACE;AAAA,mBAAW,aACV,gBAAAD,KAAC,QAAG,WAAWD,MAAK,aAAa,EAAE,CAAC,iBAAiB,GAAG,aAAa,EAAE,CAAC,GACtE,0BAAAC;AAAA,UAAC;AAAA;AAAA,YACC,SAAS,qBAAqB,YAAY,OAAO,iBAAiB;AAAA,YAClE,UAAU,MAAM;AACd,+BAAiB,2BAA2B,YAAY,OAAO,KAAK,QAAQ,iBAAiB,CAAC;AAAA,YAChG;AAAA;AAAA,QACF,GACF;AAAA,QAED,kBAAkB,KAAK,EAAE,IAAI,CAAC,QAAQ,UACrC,gBAAAA,KAAC,QAAe,WAAWD,MAAK,aAAa,EAAE,CAAC,iBAAiB,GAAG,aAAa,EAAE,CAAC,GACjF,oBADM,KAET,CACD;AAAA,WAfM,kBAAkB,KAAK,CAgBhC,CACD,GACD;AAAA,OACF,GACF,GACF;AAAA,IACA,gBAAAC,KAAC,SAAI,WAAU,sBACZ,qBAAW,cACV,gBAAAA,KAAC,cAAW,MAAM,aAAa,eAAe,WAAW,eAAe,UAAQ,iBAAiB;AAAA,MAC/F,GAAG;AAAA,MACH,YAAY,EAAE,gBAAgB,aAAa,KAAK;AAAA,IAClD,CAAC,GAAE,GAEP;AAAA,KACF;AAEJ;","names":["useEffect","useState","jsx","checked","clsx","useEffect","useState","useState","jsx","jsx","jsxs","page","clsx","clsx","jsx","jsxs","useState","useEffect"]}
@@ -0,0 +1,39 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ type Config = {
4
+ colors: {
5
+ background: string;
6
+ grid: string;
7
+ inactive: string;
8
+ };
9
+ title: string;
10
+ quadrants: {
11
+ name: string;
12
+ }[];
13
+ rings: {
14
+ name: string;
15
+ color: string;
16
+ }[];
17
+ print_layout: boolean;
18
+ links_in_new_tabs: boolean;
19
+ zoomed_quadrant?: 0 | 1 | 2 | 3;
20
+ };
21
+ type Entry = {
22
+ label: string;
23
+ link?: string;
24
+ active: boolean;
25
+ quadrant: 0 | 1 | 2 | 3;
26
+ ring: 0 | 1 | 2 | 3;
27
+ moved: -1 | 0 | 1;
28
+ };
29
+ type TechRadarProps = {
30
+ date?: Date;
31
+ config?: Config;
32
+ entries?: Entry[];
33
+ };
34
+ /**
35
+ * This component wraps https://github.com/zalando/tech-radar
36
+ */
37
+ declare const TechRadar: ({ date, config, entries, }: TechRadarProps) => react_jsx_runtime.JSX.Element;
38
+
39
+ export { TechRadar };
@@ -1,3 +1,5 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
1
3
  type Config = {
2
4
  colors: {
3
5
  background: string;
@@ -32,5 +34,6 @@ type TechRadarProps = {
32
34
  /**
33
35
  * This component wraps https://github.com/zalando/tech-radar
34
36
  */
35
- export declare const TechRadar: ({ date, config, entries, }: TechRadarProps) => import("react/jsx-runtime").JSX.Element;
36
- export {};
37
+ declare const TechRadar: ({ date, config, entries, }: TechRadarProps) => react_jsx_runtime.JSX.Element;
38
+
39
+ export { TechRadar };