@helpwave/hightide 0.1.6 → 0.1.7-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (495) hide show
  1. package/dist/coloring/{shading.d.cts → shading.d.mts} +1 -1
  2. package/dist/coloring/shading.js +14 -3329
  3. package/dist/coloring/shading.js.map +1 -1
  4. package/dist/coloring/shading.mjs +47 -0
  5. package/dist/coloring/shading.mjs.map +1 -0
  6. package/dist/coloring/types.js +26 -2
  7. package/dist/coloring/types.js.map +1 -1
  8. package/dist/coloring/types.mjs +6 -0
  9. package/dist/coloring/{types.cjs.map → types.mjs.map} +1 -1
  10. package/dist/components/branding/HelpwaveBadge.js +59 -25
  11. package/dist/components/branding/HelpwaveBadge.js.map +1 -1
  12. package/dist/components/branding/HelpwaveBadge.mjs +122 -0
  13. package/dist/components/branding/HelpwaveBadge.mjs.map +1 -0
  14. package/dist/components/date/{DatePicker.d.cts → DatePicker.d.mts} +5 -5
  15. package/dist/components/date/DatePicker.js +117 -82
  16. package/dist/components/date/DatePicker.js.map +1 -1
  17. package/dist/components/date/{DatePicker.cjs → DatePicker.mjs} +83 -119
  18. package/dist/components/date/DatePicker.mjs.map +1 -0
  19. package/dist/components/date/{DayPicker.d.cts → DayPicker.d.mts} +1 -1
  20. package/dist/components/date/DayPicker.js +55 -18
  21. package/dist/components/date/DayPicker.js.map +1 -1
  22. package/dist/components/date/{DayPicker.cjs → DayPicker.mjs} +19 -57
  23. package/dist/components/date/DayPicker.mjs.map +1 -0
  24. package/dist/components/date/{TimeDisplay.d.cts → TimeDisplay.d.mts} +2 -2
  25. package/dist/components/date/TimeDisplay.js +35 -9
  26. package/dist/components/date/TimeDisplay.js.map +1 -1
  27. package/dist/components/date/{TimeDisplay.cjs → TimeDisplay.mjs} +10 -37
  28. package/dist/components/date/TimeDisplay.mjs.map +1 -0
  29. package/dist/components/date/TimePicker.js +57 -22
  30. package/dist/components/date/TimePicker.js.map +1 -1
  31. package/dist/components/date/{TimePicker.cjs → TimePicker.mjs} +23 -59
  32. package/dist/components/date/TimePicker.mjs.map +1 -0
  33. package/dist/components/date/{YearMonthPicker.d.cts → YearMonthPicker.d.mts} +1 -1
  34. package/dist/components/date/YearMonthPicker.d.ts +1 -1
  35. package/dist/components/date/YearMonthPicker.js +72 -37
  36. package/dist/components/date/YearMonthPicker.js.map +1 -1
  37. package/dist/components/date/{YearMonthPicker.cjs → YearMonthPicker.mjs} +38 -74
  38. package/dist/components/date/YearMonthPicker.mjs.map +1 -0
  39. package/dist/components/dialogs/{ConfirmDialog.d.cts → ConfirmDialog.d.mts} +4 -4
  40. package/dist/components/dialogs/ConfirmDialog.js +98 -62
  41. package/dist/components/dialogs/ConfirmDialog.js.map +1 -1
  42. package/dist/components/dialogs/{ConfirmDialog.cjs → ConfirmDialog.mjs} +63 -100
  43. package/dist/components/dialogs/ConfirmDialog.mjs.map +1 -0
  44. package/dist/components/icons-and-geometry/Avatar.js +47 -10
  45. package/dist/components/icons-and-geometry/Avatar.js.map +1 -1
  46. package/dist/components/icons-and-geometry/Avatar.mjs +81 -0
  47. package/dist/components/icons-and-geometry/{Avatar.cjs.map → Avatar.mjs.map} +1 -1
  48. package/dist/components/icons-and-geometry/Circle.js +40 -6
  49. package/dist/components/icons-and-geometry/Circle.js.map +1 -1
  50. package/dist/components/icons-and-geometry/Circle.mjs +27 -0
  51. package/dist/components/icons-and-geometry/{Circle.cjs.map → Circle.mjs.map} +1 -1
  52. package/dist/components/icons-and-geometry/Helpwave.js +38 -14
  53. package/dist/components/icons-and-geometry/Helpwave.js.map +1 -1
  54. package/dist/components/icons-and-geometry/Helpwave.mjs +75 -0
  55. package/dist/components/icons-and-geometry/{Helpwave.cjs.map → Helpwave.mjs.map} +1 -1
  56. package/dist/components/icons-and-geometry/Ring.js +74 -37
  57. package/dist/components/icons-and-geometry/Ring.js.map +1 -1
  58. package/dist/components/icons-and-geometry/{Ring.cjs → Ring.mjs} +38 -76
  59. package/dist/components/icons-and-geometry/{Ring.cjs.map → Ring.mjs.map} +1 -1
  60. package/dist/components/icons-and-geometry/Tag.js +28 -4
  61. package/dist/components/icons-and-geometry/Tag.js.map +1 -1
  62. package/dist/components/icons-and-geometry/Tag.mjs +22 -0
  63. package/dist/components/icons-and-geometry/{Tag.cjs.map → Tag.mjs.map} +1 -1
  64. package/dist/components/layout-and-navigation/BreadCrumb.js +195 -191
  65. package/dist/components/layout-and-navigation/BreadCrumb.js.map +1 -1
  66. package/dist/components/layout-and-navigation/{BreadCrumb.cjs → BreadCrumb.mjs} +191 -198
  67. package/dist/components/layout-and-navigation/{BreadCrumb.cjs.map → BreadCrumb.mjs.map} +1 -1
  68. package/dist/components/layout-and-navigation/Carousel.js +68 -34
  69. package/dist/components/layout-and-navigation/Carousel.js.map +1 -1
  70. package/dist/components/layout-and-navigation/{Carousel.cjs → Carousel.mjs} +35 -70
  71. package/dist/components/layout-and-navigation/{Carousel.cjs.map → Carousel.mjs.map} +1 -1
  72. package/dist/components/layout-and-navigation/Chip.js +43 -8
  73. package/dist/components/layout-and-navigation/Chip.js.map +1 -1
  74. package/dist/components/layout-and-navigation/Chip.mjs +69 -0
  75. package/dist/components/layout-and-navigation/{Chip.cjs.map → Chip.mjs.map} +1 -1
  76. package/dist/components/layout-and-navigation/DividerInserter.js +39 -5
  77. package/dist/components/layout-and-navigation/DividerInserter.js.map +1 -1
  78. package/dist/components/layout-and-navigation/DividerInserter.mjs +25 -0
  79. package/dist/components/layout-and-navigation/{DividerInserter.cjs.map → DividerInserter.mjs.map} +1 -1
  80. package/dist/components/layout-and-navigation/Expandable.js +52 -17
  81. package/dist/components/layout-and-navigation/Expandable.js.map +1 -1
  82. package/dist/components/layout-and-navigation/Expandable.mjs +81 -0
  83. package/dist/components/layout-and-navigation/Expandable.mjs.map +1 -0
  84. package/dist/components/layout-and-navigation/{FAQSection.d.cts → FAQSection.d.mts} +1 -1
  85. package/dist/components/layout-and-navigation/FAQSection.js +75 -41
  86. package/dist/components/layout-and-navigation/FAQSection.js.map +1 -1
  87. package/dist/components/layout-and-navigation/{FAQSection.cjs → FAQSection.mjs} +42 -77
  88. package/dist/components/layout-and-navigation/FAQSection.mjs.map +1 -0
  89. package/dist/components/layout-and-navigation/{MarkdownInterpreter.d.cts → MarkdownInterpreter.d.mts} +1 -1
  90. package/dist/components/layout-and-navigation/MarkdownInterpreter.d.ts +1 -1
  91. package/dist/components/layout-and-navigation/MarkdownInterpreter.js +43 -18
  92. package/dist/components/layout-and-navigation/MarkdownInterpreter.js.map +1 -1
  93. package/dist/components/layout-and-navigation/{MarkdownInterpreter.cjs → MarkdownInterpreter.mjs} +19 -45
  94. package/dist/components/layout-and-navigation/{MarkdownInterpreter.cjs.map → MarkdownInterpreter.mjs.map} +1 -1
  95. package/dist/components/layout-and-navigation/{Overlay.d.cts → Overlay.d.mts} +3 -3
  96. package/dist/components/layout-and-navigation/Overlay.d.ts +1 -1
  97. package/dist/components/layout-and-navigation/Overlay.js +91 -54
  98. package/dist/components/layout-and-navigation/Overlay.js.map +1 -1
  99. package/dist/components/layout-and-navigation/{Overlay.cjs → Overlay.mjs} +55 -93
  100. package/dist/components/layout-and-navigation/Overlay.mjs.map +1 -0
  101. package/dist/components/layout-and-navigation/{Pagination.d.cts → Pagination.d.mts} +2 -2
  102. package/dist/components/layout-and-navigation/Pagination.js +53 -19
  103. package/dist/components/layout-and-navigation/Pagination.js.map +1 -1
  104. package/dist/components/layout-and-navigation/Pagination.mjs +82 -0
  105. package/dist/components/layout-and-navigation/Pagination.mjs.map +1 -0
  106. package/dist/components/layout-and-navigation/{SearchableList.d.cts → SearchableList.d.mts} +2 -2
  107. package/dist/components/layout-and-navigation/SearchableList.js +76 -42
  108. package/dist/components/layout-and-navigation/SearchableList.js.map +1 -1
  109. package/dist/components/layout-and-navigation/SearchableList.mjs +252 -0
  110. package/dist/components/layout-and-navigation/SearchableList.mjs.map +1 -0
  111. package/dist/components/layout-and-navigation/{StepperBar.d.cts → StepperBar.d.mts} +2 -2
  112. package/dist/components/layout-and-navigation/StepperBar.js +69 -34
  113. package/dist/components/layout-and-navigation/StepperBar.js.map +1 -1
  114. package/dist/components/layout-and-navigation/{StepperBar.cjs → StepperBar.mjs} +35 -71
  115. package/dist/components/layout-and-navigation/StepperBar.mjs.map +1 -0
  116. package/dist/components/layout-and-navigation/{Table.d.cts → Table.d.mts} +4 -4
  117. package/dist/components/layout-and-navigation/Table.d.ts +3 -3
  118. package/dist/components/layout-and-navigation/Table.js +108 -65
  119. package/dist/components/layout-and-navigation/Table.js.map +1 -1
  120. package/dist/components/layout-and-navigation/{Table.cjs → Table.mjs} +66 -110
  121. package/dist/components/layout-and-navigation/Table.mjs.map +1 -0
  122. package/dist/components/layout-and-navigation/{TextImage.d.cts → TextImage.d.mts} +2 -2
  123. package/dist/components/layout-and-navigation/TextImage.js +54 -18
  124. package/dist/components/layout-and-navigation/TextImage.js.map +1 -1
  125. package/dist/components/layout-and-navigation/TextImage.mjs +101 -0
  126. package/dist/components/layout-and-navigation/TextImage.mjs.map +1 -0
  127. package/dist/components/layout-and-navigation/Tile.js +42 -8
  128. package/dist/components/layout-and-navigation/Tile.js.map +1 -1
  129. package/dist/components/layout-and-navigation/Tile.mjs +23 -0
  130. package/dist/components/layout-and-navigation/{Tile.cjs.map → Tile.mjs.map} +1 -1
  131. package/dist/components/layout-and-navigation/VerticalDivider.js +33 -9
  132. package/dist/components/layout-and-navigation/VerticalDivider.js.map +1 -1
  133. package/dist/components/layout-and-navigation/VerticalDivider.mjs +56 -0
  134. package/dist/components/layout-and-navigation/{VerticalDivider.cjs.map → VerticalDivider.mjs.map} +1 -1
  135. package/dist/components/loading-states/{ErrorComponent.d.cts → ErrorComponent.d.mts} +2 -2
  136. package/dist/components/loading-states/ErrorComponent.js +46 -12
  137. package/dist/components/loading-states/ErrorComponent.js.map +1 -1
  138. package/dist/components/loading-states/ErrorComponent.mjs +68 -0
  139. package/dist/components/loading-states/ErrorComponent.mjs.map +1 -0
  140. package/dist/components/loading-states/{LoadingAndErrorComponent.d.cts → LoadingAndErrorComponent.d.mts} +5 -5
  141. package/dist/components/loading-states/LoadingAndErrorComponent.d.ts +1 -1
  142. package/dist/components/loading-states/LoadingAndErrorComponent.js +68 -34
  143. package/dist/components/loading-states/LoadingAndErrorComponent.js.map +1 -1
  144. package/dist/components/loading-states/LoadingAndErrorComponent.mjs +194 -0
  145. package/dist/components/loading-states/LoadingAndErrorComponent.mjs.map +1 -0
  146. package/dist/components/loading-states/{LoadingAnimation.d.cts → LoadingAnimation.d.mts} +2 -2
  147. package/dist/components/loading-states/LoadingAnimation.js +59 -23
  148. package/dist/components/loading-states/LoadingAnimation.js.map +1 -1
  149. package/dist/components/loading-states/LoadingAnimation.mjs +139 -0
  150. package/dist/components/loading-states/LoadingAnimation.mjs.map +1 -0
  151. package/dist/components/loading-states/{LoadingButton.d.cts → LoadingButton.d.mts} +1 -1
  152. package/dist/components/loading-states/LoadingButton.js +62 -28
  153. package/dist/components/loading-states/LoadingButton.js.map +1 -1
  154. package/dist/components/loading-states/{LoadingButton.cjs → LoadingButton.mjs} +29 -64
  155. package/dist/components/loading-states/LoadingButton.mjs.map +1 -0
  156. package/dist/components/loading-states/ProgressIndicator.js +30 -6
  157. package/dist/components/loading-states/ProgressIndicator.js.map +1 -1
  158. package/dist/components/loading-states/ProgressIndicator.mjs +59 -0
  159. package/dist/components/loading-states/{ProgressIndicator.cjs.map → ProgressIndicator.mjs.map} +1 -1
  160. package/dist/components/modals/{ConfirmModal.d.cts → ConfirmModal.d.mts} +4 -4
  161. package/dist/components/modals/ConfirmModal.js +99 -63
  162. package/dist/components/modals/ConfirmModal.js.map +1 -1
  163. package/dist/components/modals/{ConfirmModal.cjs → ConfirmModal.mjs} +64 -101
  164. package/dist/components/modals/ConfirmModal.mjs.map +1 -0
  165. package/dist/components/modals/{DiscardChangesModal.d.cts → DiscardChangesModal.d.mts} +5 -5
  166. package/dist/components/modals/DiscardChangesModal.js +101 -65
  167. package/dist/components/modals/DiscardChangesModal.js.map +1 -1
  168. package/dist/components/modals/{DiscardChangesModal.cjs → DiscardChangesModal.mjs} +66 -103
  169. package/dist/components/modals/DiscardChangesModal.mjs.map +1 -0
  170. package/dist/components/modals/{InputModal.d.cts → InputModal.d.mts} +7 -7
  171. package/dist/components/modals/InputModal.js +124 -88
  172. package/dist/components/modals/InputModal.js.map +1 -1
  173. package/dist/components/modals/{InputModal.cjs → InputModal.mjs} +89 -126
  174. package/dist/components/modals/InputModal.mjs.map +1 -0
  175. package/dist/components/modals/{LanguageModal.d.cts → LanguageModal.d.mts} +3 -3
  176. package/dist/components/modals/LanguageModal.js +129 -93
  177. package/dist/components/modals/LanguageModal.js.map +1 -1
  178. package/dist/components/modals/{LanguageModal.cjs → LanguageModal.mjs} +94 -131
  179. package/dist/components/modals/LanguageModal.mjs.map +1 -0
  180. package/dist/components/modals/{ThemeModal.d.cts → ThemeModal.d.mts} +4 -4
  181. package/dist/components/modals/ThemeModal.js +133 -97
  182. package/dist/components/modals/ThemeModal.js.map +1 -1
  183. package/dist/components/modals/{ThemeModal.cjs → ThemeModal.mjs} +98 -135
  184. package/dist/components/modals/ThemeModal.mjs.map +1 -0
  185. package/dist/components/properties/{CheckboxProperty.d.cts → CheckboxProperty.d.mts} +3 -3
  186. package/dist/components/properties/CheckboxProperty.js +82 -48
  187. package/dist/components/properties/CheckboxProperty.js.map +1 -1
  188. package/dist/components/properties/{CheckboxProperty.cjs → CheckboxProperty.mjs} +49 -84
  189. package/dist/components/properties/CheckboxProperty.mjs.map +1 -0
  190. package/dist/components/properties/{DateProperty.d.cts → DateProperty.d.mts} +3 -3
  191. package/dist/components/properties/DateProperty.js +92 -58
  192. package/dist/components/properties/DateProperty.js.map +1 -1
  193. package/dist/components/properties/{DateProperty.cjs → DateProperty.mjs} +59 -94
  194. package/dist/components/properties/DateProperty.mjs.map +1 -0
  195. package/dist/components/properties/{MultiSelectProperty.d.cts → MultiSelectProperty.d.mts} +5 -5
  196. package/dist/components/properties/MultiSelectProperty.js +151 -117
  197. package/dist/components/properties/MultiSelectProperty.js.map +1 -1
  198. package/dist/components/properties/{MultiSelectProperty.cjs → MultiSelectProperty.mjs} +118 -153
  199. package/dist/components/properties/MultiSelectProperty.mjs.map +1 -0
  200. package/dist/components/properties/{NumberProperty.d.cts → NumberProperty.d.mts} +3 -3
  201. package/dist/components/properties/NumberProperty.js +93 -59
  202. package/dist/components/properties/NumberProperty.js.map +1 -1
  203. package/dist/components/properties/{NumberProperty.cjs → NumberProperty.mjs} +60 -95
  204. package/dist/components/properties/NumberProperty.mjs.map +1 -0
  205. package/dist/components/properties/{PropertyBase.d.cts → PropertyBase.d.mts} +2 -2
  206. package/dist/components/properties/PropertyBase.js +61 -27
  207. package/dist/components/properties/PropertyBase.js.map +1 -1
  208. package/dist/components/properties/{PropertyBase.cjs → PropertyBase.mjs} +28 -63
  209. package/dist/components/properties/{PropertyBase.cjs.map → PropertyBase.mjs.map} +1 -1
  210. package/dist/components/properties/{SelectProperty.d.cts → SelectProperty.d.mts} +5 -5
  211. package/dist/components/properties/SelectProperty.js +116 -82
  212. package/dist/components/properties/SelectProperty.js.map +1 -1
  213. package/dist/components/properties/{SelectProperty.cjs → SelectProperty.mjs} +83 -118
  214. package/dist/components/properties/SelectProperty.mjs.map +1 -0
  215. package/dist/components/properties/{TextProperty.d.cts → TextProperty.d.mts} +3 -3
  216. package/dist/components/properties/TextProperty.js +90 -56
  217. package/dist/components/properties/TextProperty.js.map +1 -1
  218. package/dist/components/properties/{TextProperty.cjs → TextProperty.mjs} +57 -92
  219. package/dist/components/properties/TextProperty.mjs.map +1 -0
  220. package/dist/components/user-action/Button.js +67 -28
  221. package/dist/components/user-action/Button.js.map +1 -1
  222. package/dist/components/user-action/{Button.cjs → Button.mjs} +29 -69
  223. package/dist/components/user-action/{Button.cjs.map → Button.mjs.map} +1 -1
  224. package/dist/components/user-action/{Checkbox.d.cts → Checkbox.d.mts} +1 -1
  225. package/dist/components/user-action/Checkbox.js +55 -20
  226. package/dist/components/user-action/Checkbox.js.map +1 -1
  227. package/dist/components/user-action/Checkbox.mjs +122 -0
  228. package/dist/components/user-action/{Checkbox.cjs.map → Checkbox.mjs.map} +1 -1
  229. package/dist/components/user-action/{DateAndTimePicker.d.cts → DateAndTimePicker.d.mts} +7 -7
  230. package/dist/components/user-action/DateAndTimePicker.js +140 -106
  231. package/dist/components/user-action/DateAndTimePicker.js.map +1 -1
  232. package/dist/components/user-action/{DateAndTimePicker.cjs → DateAndTimePicker.mjs} +107 -142
  233. package/dist/components/user-action/DateAndTimePicker.mjs.map +1 -0
  234. package/dist/components/user-action/{Input.d.cts → Input.d.mts} +1 -1
  235. package/dist/components/user-action/Input.js +62 -26
  236. package/dist/components/user-action/Input.js.map +1 -1
  237. package/dist/components/user-action/Input.mjs +186 -0
  238. package/dist/components/user-action/Input.mjs.map +1 -0
  239. package/dist/components/user-action/Label.js +39 -5
  240. package/dist/components/user-action/Label.js.map +1 -1
  241. package/dist/components/user-action/Label.mjs +21 -0
  242. package/dist/components/user-action/{Label.cjs.map → Label.mjs.map} +1 -1
  243. package/dist/components/user-action/Menu.js +54 -19
  244. package/dist/components/user-action/Menu.js.map +1 -1
  245. package/dist/components/user-action/Menu.mjs +127 -0
  246. package/dist/components/user-action/Menu.mjs.map +1 -0
  247. package/dist/components/user-action/{MultiSelect.d.cts → MultiSelect.d.mts} +3 -3
  248. package/dist/components/user-action/MultiSelect.js +114 -80
  249. package/dist/components/user-action/MultiSelect.js.map +1 -1
  250. package/dist/components/user-action/{MultiSelect.cjs → MultiSelect.mjs} +81 -116
  251. package/dist/components/user-action/MultiSelect.mjs.map +1 -0
  252. package/dist/components/user-action/ScrollPicker.js +49 -15
  253. package/dist/components/user-action/ScrollPicker.js.map +1 -1
  254. package/dist/components/user-action/{ScrollPicker.cjs → ScrollPicker.mjs} +16 -51
  255. package/dist/components/user-action/ScrollPicker.mjs.map +1 -0
  256. package/dist/components/user-action/{Select.d.cts → Select.d.mts} +1 -1
  257. package/dist/components/user-action/Select.js +87 -51
  258. package/dist/components/user-action/Select.js.map +1 -1
  259. package/dist/components/user-action/{Select.cjs → Select.mjs} +52 -89
  260. package/dist/components/user-action/Select.mjs.map +1 -0
  261. package/dist/components/user-action/{Textarea.d.cts → Textarea.d.mts} +1 -1
  262. package/dist/components/user-action/Textarea.js +60 -25
  263. package/dist/components/user-action/Textarea.js.map +1 -1
  264. package/dist/components/user-action/Textarea.mjs +163 -0
  265. package/dist/components/user-action/Textarea.mjs.map +1 -0
  266. package/dist/components/user-action/ToggleableInput.js +61 -26
  267. package/dist/components/user-action/ToggleableInput.js.map +1 -1
  268. package/dist/components/user-action/ToggleableInput.mjs +156 -0
  269. package/dist/components/user-action/ToggleableInput.mjs.map +1 -0
  270. package/dist/components/user-action/Tooltip.js +41 -15
  271. package/dist/components/user-action/Tooltip.js.map +1 -1
  272. package/dist/components/user-action/{Tooltip.cjs → Tooltip.mjs} +16 -43
  273. package/dist/components/user-action/Tooltip.mjs.map +1 -0
  274. package/dist/hooks/useHoverState.js +31 -7
  275. package/dist/hooks/useHoverState.js.map +1 -1
  276. package/dist/hooks/useHoverState.mjs +47 -0
  277. package/dist/hooks/{useHoverState.cjs.map → useHoverState.mjs.map} +1 -1
  278. package/dist/hooks/useLocalStorage.js +31 -7
  279. package/dist/hooks/useLocalStorage.js.map +1 -1
  280. package/dist/hooks/useLocalStorage.mjs +58 -0
  281. package/dist/hooks/{useLocalStorage.cjs.map → useLocalStorage.mjs.map} +1 -1
  282. package/dist/hooks/useOutsideClick.js +28 -4
  283. package/dist/hooks/useOutsideClick.js.map +1 -1
  284. package/dist/hooks/useOutsideClick.mjs +23 -0
  285. package/dist/hooks/{useOutsideClick.cjs.map → useOutsideClick.mjs.map} +1 -1
  286. package/dist/hooks/useSaveDelay.js +30 -6
  287. package/dist/hooks/useSaveDelay.js.map +1 -1
  288. package/dist/hooks/useSaveDelay.mjs +43 -0
  289. package/dist/hooks/{useSaveDelay.cjs.map → useSaveDelay.mjs.map} +1 -1
  290. package/dist/{index.d.cts → index.d.mts} +78 -78
  291. package/dist/index.js +1028 -875
  292. package/dist/index.js.map +1 -1
  293. package/dist/{index.cjs → index.mjs} +876 -1028
  294. package/dist/index.mjs.map +1 -0
  295. package/dist/localization/{LanguageProvider.d.cts → LanguageProvider.d.mts} +1 -1
  296. package/dist/localization/LanguageProvider.js +43 -16
  297. package/dist/localization/LanguageProvider.js.map +1 -1
  298. package/dist/localization/{LanguageProvider.cjs → LanguageProvider.mjs} +17 -45
  299. package/dist/localization/LanguageProvider.mjs.map +1 -0
  300. package/dist/localization/{useTranslation.d.cts → useTranslation.d.mts} +1 -1
  301. package/dist/localization/useTranslation.js +33 -7
  302. package/dist/localization/useTranslation.js.map +1 -1
  303. package/dist/localization/useTranslation.mjs +42 -0
  304. package/dist/localization/useTranslation.mjs.map +1 -0
  305. package/dist/localization/util.js +26 -2
  306. package/dist/localization/util.js.map +1 -1
  307. package/dist/localization/util.mjs +16 -0
  308. package/dist/localization/{util.cjs.map → util.mjs.map} +1 -1
  309. package/dist/theming/{useTheme.d.cts → useTheme.d.mts} +2 -2
  310. package/dist/theming/useTheme.js +37 -10
  311. package/dist/theming/useTheme.js.map +1 -1
  312. package/dist/theming/useTheme.mjs +48 -0
  313. package/dist/theming/useTheme.mjs.map +1 -0
  314. package/dist/util/array.js +32 -2
  315. package/dist/util/array.js.map +1 -1
  316. package/dist/util/{array.cjs → array.mjs} +3 -34
  317. package/dist/util/{array.cjs.map → array.mjs.map} +1 -1
  318. package/dist/util/builder.js +26 -2
  319. package/dist/util/builder.js.map +1 -1
  320. package/dist/util/builder.mjs +9 -0
  321. package/dist/util/{builder.cjs.map → builder.mjs.map} +1 -1
  322. package/dist/util/date.js +39 -2
  323. package/dist/util/date.js.map +1 -1
  324. package/dist/util/{date.cjs → date.mjs} +3 -41
  325. package/dist/util/date.mjs.map +1 -0
  326. package/dist/util/easeFunctions.js +28 -2
  327. package/dist/util/easeFunctions.js.map +1 -1
  328. package/dist/util/easeFunctions.mjs +36 -0
  329. package/dist/util/easeFunctions.mjs.map +1 -0
  330. package/dist/util/emailValidation.js +26 -2
  331. package/dist/util/emailValidation.js.map +1 -1
  332. package/dist/util/emailValidation.mjs +8 -0
  333. package/dist/util/{emailValidation.cjs.map → emailValidation.mjs.map} +1 -1
  334. package/dist/util/loopingArray.js +26 -2
  335. package/dist/util/loopingArray.js.map +1 -1
  336. package/dist/util/{loopingArray.cjs → loopingArray.mjs} +3 -28
  337. package/dist/util/{loopingArray.cjs.map → loopingArray.mjs.map} +1 -1
  338. package/dist/util/math.js +26 -2
  339. package/dist/util/math.js.map +1 -1
  340. package/dist/util/math.mjs +8 -0
  341. package/dist/util/{math.cjs.map → math.mjs.map} +1 -1
  342. package/dist/util/news.d.mts +101 -0
  343. package/dist/util/news.d.ts +54 -54
  344. package/dist/util/news.js +39 -12
  345. package/dist/util/news.js.map +1 -1
  346. package/dist/util/news.mjs +49 -0
  347. package/dist/util/news.mjs.map +1 -0
  348. package/dist/util/noop.d.mts +3 -0
  349. package/dist/util/noop.d.ts +1 -1
  350. package/dist/util/noop.js +26 -2
  351. package/dist/util/noop.js.map +1 -1
  352. package/dist/util/noop.mjs +6 -0
  353. package/dist/util/noop.mjs.map +1 -0
  354. package/dist/util/simpleSearch.js +29 -2
  355. package/dist/util/simpleSearch.js.map +1 -1
  356. package/dist/util/simpleSearch.mjs +26 -0
  357. package/dist/util/{simpleSearch.cjs.map → simpleSearch.mjs.map} +1 -1
  358. package/dist/util/storage.js +27 -2
  359. package/dist/util/storage.js.map +1 -1
  360. package/dist/util/storage.mjs +38 -0
  361. package/dist/util/{storage.cjs.map → storage.mjs.map} +1 -1
  362. package/dist/util/types.js +17 -0
  363. package/dist/util/types.js.map +1 -1
  364. package/dist/util/types.mjs +1 -0
  365. package/dist/util/types.mjs.map +1 -0
  366. package/package.json +5 -7
  367. package/dist/coloring/shading.cjs +0 -3402
  368. package/dist/coloring/shading.cjs.map +0 -1
  369. package/dist/coloring/types.cjs +0 -31
  370. package/dist/components/branding/HelpwaveBadge.cjs +0 -157
  371. package/dist/components/branding/HelpwaveBadge.cjs.map +0 -1
  372. package/dist/components/date/DatePicker.cjs.map +0 -1
  373. package/dist/components/date/DayPicker.cjs.map +0 -1
  374. package/dist/components/date/TimeDisplay.cjs.map +0 -1
  375. package/dist/components/date/TimePicker.cjs.map +0 -1
  376. package/dist/components/date/YearMonthPicker.cjs.map +0 -1
  377. package/dist/components/dialogs/ConfirmDialog.cjs.map +0 -1
  378. package/dist/components/icons-and-geometry/Avatar.cjs +0 -119
  379. package/dist/components/icons-and-geometry/Circle.cjs +0 -62
  380. package/dist/components/icons-and-geometry/Helpwave.cjs +0 -100
  381. package/dist/components/icons-and-geometry/Tag.cjs +0 -47
  382. package/dist/components/layout-and-navigation/Chip.cjs +0 -105
  383. package/dist/components/layout-and-navigation/DividerInserter.cjs +0 -60
  384. package/dist/components/layout-and-navigation/Expandable.cjs +0 -117
  385. package/dist/components/layout-and-navigation/Expandable.cjs.map +0 -1
  386. package/dist/components/layout-and-navigation/FAQSection.cjs.map +0 -1
  387. package/dist/components/layout-and-navigation/Overlay.cjs.map +0 -1
  388. package/dist/components/layout-and-navigation/Pagination.cjs +0 -117
  389. package/dist/components/layout-and-navigation/Pagination.cjs.map +0 -1
  390. package/dist/components/layout-and-navigation/SearchableList.cjs +0 -287
  391. package/dist/components/layout-and-navigation/SearchableList.cjs.map +0 -1
  392. package/dist/components/layout-and-navigation/StepperBar.cjs.map +0 -1
  393. package/dist/components/layout-and-navigation/Table.cjs.map +0 -1
  394. package/dist/components/layout-and-navigation/TextImage.cjs +0 -138
  395. package/dist/components/layout-and-navigation/TextImage.cjs.map +0 -1
  396. package/dist/components/layout-and-navigation/Tile.cjs +0 -58
  397. package/dist/components/layout-and-navigation/VerticalDivider.cjs +0 -81
  398. package/dist/components/loading-states/ErrorComponent.cjs +0 -103
  399. package/dist/components/loading-states/ErrorComponent.cjs.map +0 -1
  400. package/dist/components/loading-states/LoadingAndErrorComponent.cjs +0 -229
  401. package/dist/components/loading-states/LoadingAndErrorComponent.cjs.map +0 -1
  402. package/dist/components/loading-states/LoadingAnimation.cjs +0 -176
  403. package/dist/components/loading-states/LoadingAnimation.cjs.map +0 -1
  404. package/dist/components/loading-states/LoadingButton.cjs.map +0 -1
  405. package/dist/components/loading-states/ProgressIndicator.cjs +0 -84
  406. package/dist/components/modals/ConfirmModal.cjs.map +0 -1
  407. package/dist/components/modals/DiscardChangesModal.cjs.map +0 -1
  408. package/dist/components/modals/InputModal.cjs.map +0 -1
  409. package/dist/components/modals/LanguageModal.cjs.map +0 -1
  410. package/dist/components/modals/ThemeModal.cjs.map +0 -1
  411. package/dist/components/properties/CheckboxProperty.cjs.map +0 -1
  412. package/dist/components/properties/DateProperty.cjs.map +0 -1
  413. package/dist/components/properties/MultiSelectProperty.cjs.map +0 -1
  414. package/dist/components/properties/NumberProperty.cjs.map +0 -1
  415. package/dist/components/properties/SelectProperty.cjs.map +0 -1
  416. package/dist/components/properties/TextProperty.cjs.map +0 -1
  417. package/dist/components/user-action/Checkbox.cjs +0 -158
  418. package/dist/components/user-action/DateAndTimePicker.cjs.map +0 -1
  419. package/dist/components/user-action/Input.cjs +0 -223
  420. package/dist/components/user-action/Input.cjs.map +0 -1
  421. package/dist/components/user-action/Label.cjs +0 -56
  422. package/dist/components/user-action/Menu.cjs +0 -163
  423. package/dist/components/user-action/Menu.cjs.map +0 -1
  424. package/dist/components/user-action/MultiSelect.cjs.map +0 -1
  425. package/dist/components/user-action/ScrollPicker.cjs.map +0 -1
  426. package/dist/components/user-action/Select.cjs.map +0 -1
  427. package/dist/components/user-action/Textarea.cjs +0 -199
  428. package/dist/components/user-action/Textarea.cjs.map +0 -1
  429. package/dist/components/user-action/ToggleableInput.cjs +0 -192
  430. package/dist/components/user-action/ToggleableInput.cjs.map +0 -1
  431. package/dist/components/user-action/Tooltip.cjs.map +0 -1
  432. package/dist/hooks/useHoverState.cjs +0 -72
  433. package/dist/hooks/useLocalStorage.cjs +0 -83
  434. package/dist/hooks/useOutsideClick.cjs +0 -48
  435. package/dist/hooks/useSaveDelay.cjs +0 -68
  436. package/dist/index.cjs.map +0 -1
  437. package/dist/localization/LanguageProvider.cjs.map +0 -1
  438. package/dist/localization/useTranslation.cjs +0 -69
  439. package/dist/localization/useTranslation.cjs.map +0 -1
  440. package/dist/localization/util.cjs +0 -41
  441. package/dist/theming/useTheme.cjs +0 -76
  442. package/dist/theming/useTheme.cjs.map +0 -1
  443. package/dist/util/builder.cjs +0 -34
  444. package/dist/util/date.cjs.map +0 -1
  445. package/dist/util/easeFunctions.cjs +0 -63
  446. package/dist/util/easeFunctions.cjs.map +0 -1
  447. package/dist/util/emailValidation.cjs +0 -33
  448. package/dist/util/math.cjs +0 -33
  449. package/dist/util/news.cjs +0 -77
  450. package/dist/util/news.cjs.map +0 -1
  451. package/dist/util/news.d.cts +0 -101
  452. package/dist/util/noop.cjs +0 -31
  453. package/dist/util/noop.cjs.map +0 -1
  454. package/dist/util/noop.d.cts +0 -3
  455. package/dist/util/simpleSearch.cjs +0 -54
  456. package/dist/util/storage.cjs +0 -64
  457. package/dist/util/types.cjs +0 -19
  458. package/dist/util/types.cjs.map +0 -1
  459. /package/dist/coloring/{types.d.cts → types.d.mts} +0 -0
  460. /package/dist/components/branding/{HelpwaveBadge.d.cts → HelpwaveBadge.d.mts} +0 -0
  461. /package/dist/components/date/{TimePicker.d.cts → TimePicker.d.mts} +0 -0
  462. /package/dist/components/icons-and-geometry/{Avatar.d.cts → Avatar.d.mts} +0 -0
  463. /package/dist/components/icons-and-geometry/{Circle.d.cts → Circle.d.mts} +0 -0
  464. /package/dist/components/icons-and-geometry/{Helpwave.d.cts → Helpwave.d.mts} +0 -0
  465. /package/dist/components/icons-and-geometry/{Ring.d.cts → Ring.d.mts} +0 -0
  466. /package/dist/components/icons-and-geometry/{Tag.d.cts → Tag.d.mts} +0 -0
  467. /package/dist/components/layout-and-navigation/{BreadCrumb.d.cts → BreadCrumb.d.mts} +0 -0
  468. /package/dist/components/layout-and-navigation/{Carousel.d.cts → Carousel.d.mts} +0 -0
  469. /package/dist/components/layout-and-navigation/{Chip.d.cts → Chip.d.mts} +0 -0
  470. /package/dist/components/layout-and-navigation/{DividerInserter.d.cts → DividerInserter.d.mts} +0 -0
  471. /package/dist/components/layout-and-navigation/{Expandable.d.cts → Expandable.d.mts} +0 -0
  472. /package/dist/components/layout-and-navigation/{Tile.d.cts → Tile.d.mts} +0 -0
  473. /package/dist/components/layout-and-navigation/{VerticalDivider.d.cts → VerticalDivider.d.mts} +0 -0
  474. /package/dist/components/loading-states/{ProgressIndicator.d.cts → ProgressIndicator.d.mts} +0 -0
  475. /package/dist/components/user-action/{Button.d.cts → Button.d.mts} +0 -0
  476. /package/dist/components/user-action/{Label.d.cts → Label.d.mts} +0 -0
  477. /package/dist/components/user-action/{Menu.d.cts → Menu.d.mts} +0 -0
  478. /package/dist/components/user-action/{ScrollPicker.d.cts → ScrollPicker.d.mts} +0 -0
  479. /package/dist/components/user-action/{ToggleableInput.d.cts → ToggleableInput.d.mts} +0 -0
  480. /package/dist/components/user-action/{Tooltip.d.cts → Tooltip.d.mts} +0 -0
  481. /package/dist/hooks/{useHoverState.d.cts → useHoverState.d.mts} +0 -0
  482. /package/dist/hooks/{useLocalStorage.d.cts → useLocalStorage.d.mts} +0 -0
  483. /package/dist/hooks/{useOutsideClick.d.cts → useOutsideClick.d.mts} +0 -0
  484. /package/dist/hooks/{useSaveDelay.d.cts → useSaveDelay.d.mts} +0 -0
  485. /package/dist/localization/{util.d.cts → util.d.mts} +0 -0
  486. /package/dist/util/{array.d.cts → array.d.mts} +0 -0
  487. /package/dist/util/{builder.d.cts → builder.d.mts} +0 -0
  488. /package/dist/util/{date.d.cts → date.d.mts} +0 -0
  489. /package/dist/util/{easeFunctions.d.cts → easeFunctions.d.mts} +0 -0
  490. /package/dist/util/{emailValidation.d.cts → emailValidation.d.mts} +0 -0
  491. /package/dist/util/{loopingArray.d.cts → loopingArray.d.mts} +0 -0
  492. /package/dist/util/{math.d.cts → math.d.mts} +0 -0
  493. /package/dist/util/{simpleSearch.d.cts → simpleSearch.d.mts} +0 -0
  494. /package/dist/util/{storage.d.cts → storage.d.mts} +0 -0
  495. /package/dist/util/{types.d.cts → types.d.mts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/properties/NumberProperty.tsx","../../../src/util/noop.ts","../../../src/components/user-action/Input.tsx","../../../src/hooks/useSaveDelay.ts","../../../src/components/user-action/Label.tsx","../../../src/localization/LanguageProvider.tsx","../../../src/hooks/useLocalStorage.ts","../../../src/localization/util.ts","../../../src/localization/useTranslation.ts","../../../src/components/properties/PropertyBase.tsx","../../../src/components/user-action/Button.tsx"],"sourcesContent":["import { Binary } from 'lucide-react'\nimport clsx from 'clsx'\nimport { noop } from '../../util/noop'\nimport { Input } from '../user-action/Input'\nimport type { Language } from '../../localization/util'\nimport type { PropsForTranslation } from '../../localization/useTranslation'\nimport { useTranslation } from '../../localization/useTranslation'\nimport type { PropertyBaseProps } from './PropertyBase'\nimport { PropertyBase } from './PropertyBase'\n\ntype NumberPropertyTranslation = {\n value: string,\n}\n\nconst defaultNumberPropertyTranslation: Record<Language, NumberPropertyTranslation> = {\n en: {\n value: 'Value'\n },\n de: {\n value: 'Wert'\n }\n}\n\nexport type NumberPropertyProps = Omit<PropertyBaseProps, 'icon' | 'input' | 'hasValue'> & {\n value?: number,\n suffix?: string,\n onChange?: (value: number) => void,\n onEditComplete?: (value: number) => void,\n}\n\n/**\n * An Input for number properties\n */\nexport const NumberProperty = ({\n overwriteTranslation,\n value,\n onChange = noop,\n onRemove = noop,\n onEditComplete = noop,\n readOnly,\n suffix,\n ...baseProps\n }: PropsForTranslation<NumberPropertyTranslation, NumberPropertyProps>) => {\n const translation = useTranslation(defaultNumberPropertyTranslation, overwriteTranslation)\n const hasValue = value !== undefined\n\n return (\n <PropertyBase\n {...baseProps}\n onRemove={onRemove}\n hasValue={hasValue}\n icon={<Binary size={16}/>}\n input={({ softRequired }) => (\n <div\n className={clsx('row grow py-2 px-4 cursor-pointer', { 'text-warning': softRequired && !hasValue })}\n >\n <Input\n expanded={false}\n className={clsx('!ring-0 !border-0 !outline-0 !p-0 !m-0 !w-fit !shadow-none !rounded-none', { 'bg-surface-warning placeholder-warning': softRequired && !hasValue })}\n value={value?.toString() ?? ''}\n type=\"number\"\n readOnly={readOnly}\n placeholder={`${translation.value}...`}\n onChangeText={(value) => {\n const numberValue = parseFloat(value)\n if (isNaN(numberValue)) {\n onRemove()\n } else {\n onChange(numberValue)\n }\n }}\n onEditCompleted={(value) => {\n const numberValue = parseFloat(value)\n if (isNaN(numberValue)) {\n onRemove()\n } else {\n onEditComplete(numberValue)\n }\n }}\n />\n {suffix && <span className={clsx('ml-1', { 'bg-surface-warning': softRequired && !hasValue })}>{suffix}</span>}\n </div>\n )}\n />\n )\n}\n","export const noop = () => undefined\n","import React, { forwardRef, type InputHTMLAttributes, useEffect, useRef, useState } from 'react'\nimport clsx from 'clsx'\nimport { useSaveDelay } from '../../hooks/useSaveDelay'\nimport { noop } from '../../util/noop'\nimport type { LabelProps } from './Label'\nimport { Label } from './Label'\n\nexport type InputProps = {\n /**\n * used for the label's `for` attribute\n */\n label?: Omit<LabelProps, 'id'>,\n /**\n * Callback for when the input's value changes\n * This is pretty much required but made optional for the rare cases where it actually isn't need such as when used with disabled\n * That could be enforced through a union type but that seems a bit overkill\n * @default noop\n */\n onChangeText?: (text: string) => void,\n className?: string,\n onEditCompleted?: (text: string) => void,\n expanded?: boolean,\n containerClassName?: string,\n} & Omit<InputHTMLAttributes<HTMLInputElement>, 'label'>\n\n/**\n * A Component for inputting text or other information\n *\n * Its state is managed must be managed by the parent\n */\nconst Input = ({\n id,\n type = 'text',\n value,\n label,\n onChange = noop,\n onChangeText = noop,\n onEditCompleted,\n className = '',\n expanded = true,\n autoFocus,\n onBlur,\n containerClassName,\n ...restProps\n }: InputProps) => {\n const {\n restartTimer,\n clearUpdateTimer\n } = useSaveDelay(() => undefined, 3000)\n const ref = useRef<HTMLInputElement>(null)\n\n useEffect(() => {\n if(autoFocus) {\n ref.current?.focus()\n }\n }, [autoFocus])\n\n return (\n <div className={clsx({ 'w-full': expanded }, containerClassName)}>\n {label && <Label {...label} htmlFor={id} className={clsx('mb-1', label.className)}/>}\n <input\n ref={ref}\n value={value}\n id={id}\n type={type}\n className={className}\n onBlur={event => {\n if (onBlur) {\n onBlur(event)\n }\n if (onEditCompleted) {\n onEditCompleted(event.target.value)\n clearUpdateTimer()\n }\n }}\n onChange={e => {\n const value = e.target.value\n if (onEditCompleted) {\n restartTimer(() => {\n onEditCompleted(value)\n clearUpdateTimer()\n })\n }\n onChange(e)\n onChangeText(value)\n }}\n {...restProps}\n />\n </div>\n )\n}\n\ntype InputUncontrolledProps = Omit<InputProps, 'value'> & {\n /**\n * @default ''\n */\n defaultValue?: string,\n}\n\n/**\n * A Component for inputting text or other information\n *\n * Its state is managed by the component itself\n */\nconst InputUncontrolled = ({\n defaultValue = '',\n onChangeText = noop,\n ...props\n }: InputUncontrolledProps) => {\n const [value, setValue] = useState(defaultValue)\n\n return (\n <Input\n {...props}\n value={value}\n onChangeText={text => {\n setValue(text)\n onChangeText(text)\n }}\n />\n )\n}\n\nexport type FormInputProps = InputHTMLAttributes<HTMLInputElement> & {\n id: string,\n labelText?: string,\n errorText?: string,\n labelClassName?: string,\n errorClassName?: string,\n containerClassName?: string,\n}\n\nconst FormInput = forwardRef<HTMLInputElement, FormInputProps>(function FormInput({\n id,\n labelText,\n errorText,\n className,\n labelClassName,\n errorClassName,\n containerClassName,\n required,\n ...restProps\n }, ref) {\n const input = (\n <input\n ref={ref}\n id={id}\n {...restProps}\n className={clsx(\n {\n 'focus:border-primary focus:ring-primary': !errorText,\n 'focus:border-negative focus:ring-negative text-negative': !!errorText,\n },\n className\n )}\n />\n )\n\n return (\n <div className={clsx('flex flex-col gap-y-1', containerClassName)}>\n {labelText && (\n <label htmlFor={id} className={clsx('textstyle-label-md', labelClassName)}>\n {labelText}\n {required && <span className=\"text-primary font-bold\">*</span>}\n </label>\n )}\n {input}\n {errorText && <label htmlFor={id} className={clsx('text-negative', errorClassName)}>{errorText}</label>}\n </div>\n )\n})\n\nexport {\n InputUncontrolled,\n Input,\n FormInput\n}\n","import { useEffect, useState } from 'react'\n\nexport function useSaveDelay(setNotificationStatus: (isShowing: boolean) => void, delay: number) {\n const [updateTimer, setUpdateTimer] = useState<NodeJS.Timeout | undefined>(undefined)\n const [notificationTimer, setNotificationTimer] = useState<NodeJS.Timeout | undefined>(undefined)\n\n const restartTimer = (onSave: () => void) => {\n clearTimeout(updateTimer)\n setUpdateTimer(setTimeout(() => {\n onSave()\n setNotificationStatus(true)\n // Show Saved Notification for fade animation duration\n clearTimeout(notificationTimer)\n setNotificationTimer(setTimeout(() => {\n setNotificationStatus(false)\n clearTimeout(notificationTimer)\n }, delay))\n clearTimeout(updateTimer)\n }, delay))\n }\n\n const clearUpdateTimer = (hasSaved = true) => {\n clearTimeout(updateTimer)\n if (hasSaved) {\n setNotificationStatus(true)\n clearTimeout(notificationTimer)\n setNotificationTimer(setTimeout(() => {\n setNotificationStatus(false)\n clearTimeout(notificationTimer)\n }, delay))\n } else {\n setNotificationStatus(false)\n }\n }\n\n useEffect(() => {\n return () => {\n clearTimeout(updateTimer)\n clearTimeout(notificationTimer)\n }\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n return { restartTimer, clearUpdateTimer }\n}","import type { LabelHTMLAttributes } from 'react'\nimport clsx from 'clsx'\n\nexport type LabelType = 'labelSmall' | 'labelMedium' | 'labelBig'\n\nconst styleMapping: Record<LabelType, string> = {\n labelSmall: 'textstyle-label-sm',\n labelMedium: 'textstyle-label-md',\n labelBig: 'textstyle-label-lg',\n}\n\nexport type LabelProps = {\n /** The text for the label */\n name?: string,\n /** The styling for the label */\n labelType?: LabelType,\n} & LabelHTMLAttributes<HTMLLabelElement>\n\n/**\n * A Label component\n */\nexport const Label = ({\n children,\n name,\n labelType = 'labelSmall',\n className,\n ...props\n }: LabelProps) => {\n return (\n <label {...props} className={clsx(styleMapping[labelType], className)}>\n {children ? children : name}\n </label>\n )\n}\n","import type { Dispatch, PropsWithChildren, SetStateAction } from 'react'\nimport { createContext, useContext, useEffect, useState } from 'react'\nimport { useLocalStorage } from '../hooks/useLocalStorage'\nimport type { Language } from './util'\nimport { LanguageUtil } from './util'\n\nexport type LanguageContextValue = {\n language: Language,\n setLanguage: Dispatch<SetStateAction<Language>>,\n}\n\nexport const LanguageContext = createContext<LanguageContextValue>({\n language: LanguageUtil.DEFAULT_LANGUAGE,\n setLanguage: (v) => v\n})\n\nexport const useLanguage = () => useContext(LanguageContext)\n\nexport const useLocale = (overWriteLanguage?: Language) => {\n const { language } = useLanguage()\n const mapping: Record<Language, string> = {\n en: 'en-US',\n de: 'de-DE'\n }\n return mapping[overWriteLanguage ?? language]\n}\n\ntype LanguageProviderProps = {\n initialLanguage?: Language,\n}\n\nexport const LanguageProvider = ({ initialLanguage, children }: PropsWithChildren<LanguageProviderProps>) => {\n const [language, setLanguage] = useState<Language>(initialLanguage ?? LanguageUtil.DEFAULT_LANGUAGE)\n const [storedLanguage, setStoredLanguage] = useLocalStorage<Language>('language', initialLanguage ?? LanguageUtil.DEFAULT_LANGUAGE)\n\n useEffect(() => {\n if (language !== initialLanguage && initialLanguage) {\n console.warn('LanguageProvider initial state changed: Prefer using languageProvider\\'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 LanguageToTestAgainst = Object.values(LanguageUtil.languages)\n\n const matchingBrowserLanguage = window.navigator.languages\n .map(language => LanguageToTestAgainst.find((test) => language === test || language.split('-')[0] === test))\n .filter(entry => entry !== undefined)\n\n if (matchingBrowserLanguage.length === 0) return\n\n const firstMatch = matchingBrowserLanguage[0] as Language\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}","import type { Dispatch, SetStateAction } from 'react'\nimport { useCallback, useEffect, useState } from 'react'\nimport { LocalStorageService } from '../util/storage'\n\ntype SetValue<T> = Dispatch<SetStateAction<T>>\nexport const useLocalStorage = <T>(key: string, initValue: T): [T, SetValue<T>] => {\n const get = useCallback((): T => {\n if (typeof window === 'undefined') {\n return initValue\n }\n const storageService = new LocalStorageService()\n const value = storageService.get<T>(key)\n return value || initValue\n }, [initValue, key])\n\n const [storedValue, setStoredValue] = useState<T>(get)\n\n const setValue: SetValue<T> = useCallback(value => {\n const newValue = value instanceof Function ? value(storedValue) : value\n const storageService = new LocalStorageService()\n storageService.set(key, value)\n\n setStoredValue(newValue)\n }, [storedValue, setStoredValue, key])\n\n useEffect(() => {\n setStoredValue(get())\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n return [storedValue, setValue]\n}","/**\n * The supported languages\n */\nconst languages = ['en', 'de'] as const\n\n/**\n * The supported languages\n */\nexport type Language = typeof languages[number]\n\n/**\n * The supported languages' names in their respective language\n */\nconst languagesLocalNames: Record<Language, string> = {\n en: 'English',\n de: 'Deutsch',\n}\n\n/**\n * The default language\n */\nconst DEFAULT_LANGUAGE: Language = 'en'\n\n/**\n * A constant definition for holding data regarding languages\n */\nexport const LanguageUtil = {\n languages,\n DEFAULT_LANGUAGE,\n languagesLocalNames,\n}","import { useLanguage } from './LanguageProvider'\nimport type { Language } from './util'\n\nexport type Translation<T> = Record<Language, T>\n\ntype OverwriteTranslationType<Translation extends Record<string, unknown>> = {\n language?: Language,\n translation?: Partial<Record<Language, 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<Language, Translation>,\n translationOverwrite: OverwriteTranslationType<Translation> = {}\n): Translation => {\n const { language: languageProp, translation: overwrite } = translationOverwrite\n const { language: inferredLanguage } = useLanguage()\n const usedLanguage = languageProp ?? inferredLanguage\n let defaultValues: Translation = defaults[usedLanguage]\n if (overwrite && overwrite[usedLanguage]) {\n defaultValues = { ...defaultValues, ...overwrite[usedLanguage] }\n }\n return defaultValues\n}\n","import type { ReactNode } from 'react'\nimport { AlertTriangle } from 'lucide-react'\nimport clsx from 'clsx'\nimport type { Language } from '../../localization/util'\nimport { TextButton } from '../user-action/Button'\nimport type { PropsForTranslation } from '../../localization/useTranslation'\nimport { useTranslation } from '../../localization/useTranslation'\n\ntype PropertyBaseTranslation = {\n remove: string,\n}\n\nconst defaultPropertyBaseTranslation: Record<Language, PropertyBaseTranslation> = {\n en: {\n remove: 'Remove'\n },\n de: {\n remove: 'Entfernen'\n }\n}\n\nexport type PropertyBaseProps = {\n name: string,\n input: (props: { softRequired: boolean, hasValue: boolean }) => ReactNode,\n onRemove?: () => void,\n hasValue: boolean,\n softRequired?: boolean,\n readOnly?: boolean,\n icon?: ReactNode,\n className?: string,\n}\n\n/**\n * A component for showing a properties with uniform styling\n */\nexport const PropertyBase = ({\n overwriteTranslation,\n name,\n input,\n softRequired = false,\n hasValue,\n icon,\n readOnly,\n onRemove,\n className = '',\n }: PropsForTranslation<PropertyBaseTranslation, PropertyBaseProps>) => {\n const translation = useTranslation(defaultPropertyBaseTranslation, overwriteTranslation)\n const requiredAndNoValue = softRequired && !hasValue\n return (\n <div className={clsx('row gap-x-0 group', className)}>\n <div\n className={\n clsx('row gap-x-2 !w-[200px] px-4 py-2 items-center rounded-l-xl border-2 border-r-0', {\n 'bg-gray-100 text-black group-hover:border-primary border-gray-400': !requiredAndNoValue,\n 'bg-warning text-surface-warning group-hover:border-warning border-warning/90': requiredAndNoValue,\n }, className)}\n >\n {icon}\n {name}\n </div>\n <div className={\n clsx('row grow justify-between items-center rounded-r-xl border-2 border-l-0', {\n 'bg-white group-hover:border-primary border-gray-400': !requiredAndNoValue,\n 'bg-surface-warning group-hover:border-warning border-warning/90': requiredAndNoValue,\n }, className)}\n >\n {input({ softRequired, hasValue })}\n {requiredAndNoValue && (\n <div className=\"text-warning pr-4\"><AlertTriangle size={24}/></div>\n )}\n {onRemove && (\n <TextButton\n onClick={onRemove}\n color=\"negative\"\n className={clsx('pr-4 items-center', { '!text-transparent': !hasValue || readOnly })}\n disabled={!hasValue || readOnly}\n >\n {translation.remove}\n </TextButton>\n )}\n </div>\n </div>\n )\n}\n","import type { ButtonHTMLAttributes, PropsWithChildren, ReactNode } from 'react'\nimport clsx from 'clsx'\n\n\nexport const ButtonColorUtil = {\n solid: ['primary', 'secondary', 'tertiary', 'positive', 'warning', 'negative', 'neutral'] as const,\n text: ['primary', 'negative', 'neutral'] as const,\n outline: ['primary'] as const,\n}\n\n\n/**\n * The allowed colors for the SolidButton and IconButton\n */\nexport type SolidButtonColor = typeof ButtonColorUtil.solid[number]\n/**\n * The allowed colors for the OutlineButton\n */\nexport type OutlineButtonColor = typeof ButtonColorUtil.outline[number]\n/**\n * The allowed colors for the TextButton\n */\nexport type TextButtonColor = typeof ButtonColorUtil.text[number]\n\n/**\n * The different sizes for a button\n */\ntype ButtonSizes = 'small' | 'medium' | 'large'\n\n/**\n * The shard properties between all button types\n */\nexport type ButtonProps = PropsWithChildren<{\n /**\n * @default 'medium'\n */\n size?: ButtonSizes,\n}> & ButtonHTMLAttributes<Element>\n\nconst paddingMapping: Record<ButtonSizes, string> = {\n small: 'btn-sm',\n medium: 'btn-md',\n large: 'btn-lg'\n}\n\nconst iconPaddingMapping: Record<ButtonSizes, string> = {\n small: 'icon-btn-sm',\n medium: 'icon-btn-md',\n large: 'icon-btn-lg'\n}\n\nexport const ButtonUtil = {\n paddingMapping,\n iconPaddingMapping\n}\n\ntype ButtonWithIconsProps = ButtonProps & {\n startIcon?: ReactNode,\n endIcon?: ReactNode,\n}\n\nexport type SolidButtonProps = ButtonWithIconsProps & {\n color?: SolidButtonColor,\n}\n\nexport type OutlineButtonProps = ButtonWithIconsProps & {\n color?: OutlineButtonColor,\n}\n\nexport type TextButtonProps = ButtonWithIconsProps & {\n color?: TextButtonColor,\n}\n\nexport type IconButtonProps = ButtonProps & {\n color?: SolidButtonColor,\n}\n\n/**\n * A button with a solid background and different sizes\n */\nconst SolidButton = ({\n children,\n disabled = false,\n color = 'primary',\n size = 'medium',\n startIcon,\n endIcon,\n onClick,\n className,\n ...restProps\n }: SolidButtonProps) => {\n const colorClasses = {\n primary: 'bg-button-solid-primary-background text-button-solid-primary-text',\n secondary: 'bg-button-solid-secondary-background text-button-solid-secondary-text',\n tertiary: 'bg-button-solid-tertiary-background text-button-solid-tertiary-text',\n positive: 'bg-button-solid-positive-background text-button-solid-positive-text',\n warning: 'bg-button-solid-warning-background text-button-solid-warning-text',\n negative: 'bg-button-solid-negative-background text-button-solid-negative-text',\n neutral: 'bg-button-solid-neutral-background text-button-solid-neutral-text',\n }[color]\n\n const iconColorClasses = {\n primary: 'text-button-solid-primary-icon',\n secondary: 'text-button-solid-secondary-icon',\n tertiary: 'text-button-solid-tertiary-icon',\n positive: 'text-button-solid-positive-icon',\n warning: 'text-button-solid-warning-icon',\n negative: 'text-button-solid-negative-icon',\n neutral: 'text-button-solid-neutral-icon',\n }[color]\n\n return (\n <button\n onClick={disabled ? undefined : onClick}\n disabled={disabled || onClick === undefined}\n className={clsx(\n {\n 'text-disabled-text bg-disabled-background cursor-not-allowed': disabled,\n [clsx(colorClasses, 'hover:brightness-90')]: !disabled\n },\n ButtonUtil.paddingMapping[size],\n className\n )}\n {...restProps}\n >\n {startIcon && (\n <span\n className={clsx({\n [iconColorClasses]: !disabled,\n [`text-disabled-icon`]: disabled\n })}\n >\n {startIcon}\n </span>\n )}\n {children}\n {endIcon && (\n <span\n className={clsx({\n [iconColorClasses]: !disabled,\n [`text-disabled-icon`]: disabled\n })}\n >\n {endIcon}\n </span>\n )}\n </button>\n )\n}\n\n/**\n * A button with an outline border and different sizes\n */\nconst OutlineButton = ({\n children,\n disabled = false,\n color = 'primary',\n size = 'medium',\n startIcon,\n endIcon,\n onClick,\n className,\n ...restProps\n }: OutlineButtonProps) => {\n const colorClasses = {\n primary: 'bg-transparent border-2 border-button-outline-primary-text text-button-outline-primary-text',\n }[color]\n\n const iconColorClasses = {\n primary: 'text-button-outline-primary-icon',\n }[color]\n return (\n <button\n onClick={disabled ? undefined : onClick}\n disabled={disabled || onClick === undefined}\n className={clsx(\n {\n 'text-disabled-text border-disabled-outline cursor-not-allowed': disabled,\n [clsx(colorClasses, 'hover:brightness-80')]: !disabled,\n },\n ButtonUtil.paddingMapping[size],\n className\n )}\n {...restProps}\n >\n {startIcon && (\n <span\n className={clsx({\n [iconColorClasses]: !disabled,\n [`text-disabled-icon`]: disabled\n })}\n >\n {startIcon}\n </span>\n )}\n {children}\n {endIcon && (\n <span\n className={clsx({\n [iconColorClasses]: !disabled,\n [`text-disabled-icon`]: disabled\n })}\n >\n {endIcon}\n </span>\n )}\n </button>\n )\n}\n\n/**\n * A text that is a button that can have different sizes\n */\nconst TextButton = ({\n children,\n disabled = false,\n color = 'neutral',\n size = 'medium',\n startIcon,\n endIcon,\n onClick,\n className,\n ...restProps\n }: TextButtonProps) => {\n const colorClasses = {\n primary: 'bg-transparent text-button-text-primary-text',\n negative: 'bg-transparent text-button-text-negative-text',\n neutral: 'bg-transparent text-button-text-neutral-text',\n }[color]\n\n const iconColorClasses = {\n primary: 'text-button-text-primary-icon',\n negative: 'text-button-text-negative-icon',\n neutral: 'text-button-text-neutral-icon',\n }[color]\n return (\n <button\n onClick={disabled ? undefined : onClick}\n disabled={disabled || onClick === undefined}\n className={clsx(\n {\n 'text-disabled-text cursor-not-allowed': disabled,\n [clsx(colorClasses, 'hover:bg-button-text-hover-background rounded-full')]: !disabled,\n },\n ButtonUtil.paddingMapping[size],\n className\n )}\n {...restProps}\n >\n {startIcon && (\n <span\n className={clsx({\n [iconColorClasses]: !disabled,\n [`text-disabled-icon`]: disabled\n })}\n >\n {startIcon}\n </span>\n )}\n {children}\n {endIcon && (\n <span\n className={clsx({\n [iconColorClasses]: !disabled,\n [`text-disabled-icon`]: disabled\n })}\n >\n {endIcon}\n </span>\n )}\n </button>\n )\n}\n\n\n/**\n * A button for icons with a solid background and different sizes\n */\nconst IconButton = ({\n children,\n disabled = false,\n color = 'primary',\n size = 'medium',\n onClick,\n className,\n ...restProps\n }: IconButtonProps) => {\n const colorClasses = {\n primary: 'bg-button-solid-primary-background text-button-solid-primary-text',\n secondary: 'bg-button-solid-secondary-background text-button-solid-secondary-text',\n tertiary: 'bg-button-solid-tertiary-background text-button-solid-tertiary-text',\n positive: 'bg-button-solid-positive-background text-button-solid-positive-text',\n warning: 'bg-button-solid-warning-background text-button-solid-warning-text',\n negative: 'bg-button-solid-negative-background text-button-solid-negative-text',\n neutral: 'bg-button-solid-neutral-background text-button-solid-neutral-text',\n }[color]\n\n return (\n <button\n onClick={disabled ? undefined : onClick}\n disabled={disabled || onClick === undefined}\n className={clsx(\n {\n 'text-disabled-text bg-disabled-background cursor-not-allowed': disabled,\n [clsx(colorClasses, 'hover:brightness-90')]: !disabled\n },\n ButtonUtil.iconPaddingMapping[size],\n className\n )}\n {...restProps}\n >\n {children}\n </button>\n )\n}\n\nexport { SolidButton, OutlineButton, TextButton, IconButton }\n"],"mappings":"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","names":["clsx","useEffect","useState","clsx","jsx","useEffect","clsx","value","FormInput","jsx","clsx","useEffect","useState","useEffect","useState","jsx","clsx","clsx","jsx","jsxs","jsxs","clsx","jsx","jsx","jsxs","clsx","jsx","jsxs","clsx","value"]}
@@ -1,7 +1,7 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { ReactNode } from 'react';
3
- import { PropsForTranslation } from '../../localization/useTranslation.cjs';
4
- import '../../localization/util.cjs';
3
+ import { PropsForTranslation } from '../../localization/useTranslation.mjs';
4
+ import '../../localization/util.mjs';
5
5
 
6
6
  type PropertyBaseTranslation = {
7
7
  remove: string;
@@ -1,10 +1,43 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+
1
29
  // src/components/properties/PropertyBase.tsx
2
- import { AlertTriangle } from "lucide-react";
3
- import clsx2 from "clsx";
30
+ var PropertyBase_exports = {};
31
+ __export(PropertyBase_exports, {
32
+ PropertyBase: () => PropertyBase
33
+ });
34
+ module.exports = __toCommonJS(PropertyBase_exports);
35
+ var import_lucide_react = require("lucide-react");
36
+ var import_clsx2 = __toESM(require("clsx"));
4
37
 
5
38
  // src/components/user-action/Button.tsx
6
- import clsx from "clsx";
7
- import { jsx, jsxs } from "react/jsx-runtime";
39
+ var import_clsx = __toESM(require("clsx"));
40
+ var import_jsx_runtime = require("react/jsx-runtime");
8
41
  var paddingMapping = {
9
42
  small: "btn-sm",
10
43
  medium: "btn-md",
@@ -40,25 +73,25 @@ var TextButton = ({
40
73
  negative: "text-button-text-negative-icon",
41
74
  neutral: "text-button-text-neutral-icon"
42
75
  }[color];
43
- return /* @__PURE__ */ jsxs(
76
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
44
77
  "button",
45
78
  {
46
79
  onClick: disabled ? void 0 : onClick,
47
80
  disabled: disabled || onClick === void 0,
48
- className: clsx(
81
+ className: (0, import_clsx.default)(
49
82
  {
50
83
  "text-disabled-text cursor-not-allowed": disabled,
51
- [clsx(colorClasses, "hover:bg-button-text-hover-background rounded-full")]: !disabled
84
+ [(0, import_clsx.default)(colorClasses, "hover:bg-button-text-hover-background rounded-full")]: !disabled
52
85
  },
53
86
  ButtonUtil.paddingMapping[size],
54
87
  className
55
88
  ),
56
89
  ...restProps,
57
90
  children: [
58
- startIcon && /* @__PURE__ */ jsx(
91
+ startIcon && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
59
92
  "span",
60
93
  {
61
- className: clsx({
94
+ className: (0, import_clsx.default)({
62
95
  [iconColorClasses]: !disabled,
63
96
  [`text-disabled-icon`]: disabled
64
97
  }),
@@ -66,10 +99,10 @@ var TextButton = ({
66
99
  }
67
100
  ),
68
101
  children,
69
- endIcon && /* @__PURE__ */ jsx(
102
+ endIcon && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
70
103
  "span",
71
104
  {
72
- className: clsx({
105
+ className: (0, import_clsx.default)({
73
106
  [iconColorClasses]: !disabled,
74
107
  [`text-disabled-icon`]: disabled
75
108
  }),
@@ -82,10 +115,10 @@ var TextButton = ({
82
115
  };
83
116
 
84
117
  // src/localization/LanguageProvider.tsx
85
- import { createContext, useContext, useEffect as useEffect2, useState as useState2 } from "react";
118
+ var import_react2 = require("react");
86
119
 
87
120
  // src/hooks/useLocalStorage.ts
88
- import { useCallback, useEffect, useState } from "react";
121
+ var import_react = require("react");
89
122
 
90
123
  // src/localization/util.ts
91
124
  var languages = ["en", "de"];
@@ -101,12 +134,12 @@ var LanguageUtil = {
101
134
  };
102
135
 
103
136
  // src/localization/LanguageProvider.tsx
104
- import { jsx as jsx2 } from "react/jsx-runtime";
105
- var LanguageContext = createContext({
137
+ var import_jsx_runtime2 = require("react/jsx-runtime");
138
+ var LanguageContext = (0, import_react2.createContext)({
106
139
  language: LanguageUtil.DEFAULT_LANGUAGE,
107
140
  setLanguage: (v) => v
108
141
  });
109
- var useLanguage = () => useContext(LanguageContext);
142
+ var useLanguage = () => (0, import_react2.useContext)(LanguageContext);
110
143
 
111
144
  // src/localization/useTranslation.ts
112
145
  var useTranslation = (defaults, translationOverwrite = {}) => {
@@ -121,7 +154,7 @@ var useTranslation = (defaults, translationOverwrite = {}) => {
121
154
  };
122
155
 
123
156
  // src/components/properties/PropertyBase.tsx
124
- import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
157
+ var import_jsx_runtime3 = require("react/jsx-runtime");
125
158
  var defaultPropertyBaseTranslation = {
126
159
  en: {
127
160
  remove: "Remove"
@@ -143,11 +176,11 @@ var PropertyBase = ({
143
176
  }) => {
144
177
  const translation = useTranslation(defaultPropertyBaseTranslation, overwriteTranslation);
145
178
  const requiredAndNoValue = softRequired && !hasValue;
146
- return /* @__PURE__ */ jsxs2("div", { className: clsx2("row gap-x-0 group", className), children: [
147
- /* @__PURE__ */ jsxs2(
179
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: (0, import_clsx2.default)("row gap-x-0 group", className), children: [
180
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
148
181
  "div",
149
182
  {
150
- className: clsx2("row gap-x-2 !w-[200px] px-4 py-2 items-center rounded-l-xl border-2 border-r-0", {
183
+ className: (0, import_clsx2.default)("row gap-x-2 !w-[200px] px-4 py-2 items-center rounded-l-xl border-2 border-r-0", {
151
184
  "bg-gray-100 text-black group-hover:border-primary border-gray-400": !requiredAndNoValue,
152
185
  "bg-warning text-surface-warning group-hover:border-warning border-warning/90": requiredAndNoValue
153
186
  }, className),
@@ -157,22 +190,22 @@ var PropertyBase = ({
157
190
  ]
158
191
  }
159
192
  ),
160
- /* @__PURE__ */ jsxs2(
193
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
161
194
  "div",
162
195
  {
163
- className: clsx2("row grow justify-between items-center rounded-r-xl border-2 border-l-0", {
196
+ className: (0, import_clsx2.default)("row grow justify-between items-center rounded-r-xl border-2 border-l-0", {
164
197
  "bg-white group-hover:border-primary border-gray-400": !requiredAndNoValue,
165
198
  "bg-surface-warning group-hover:border-warning border-warning/90": requiredAndNoValue
166
199
  }, className),
167
200
  children: [
168
201
  input({ softRequired, hasValue }),
169
- requiredAndNoValue && /* @__PURE__ */ jsx3("div", { className: "text-warning pr-4", children: /* @__PURE__ */ jsx3(AlertTriangle, { size: 24 }) }),
170
- onRemove && /* @__PURE__ */ jsx3(
202
+ requiredAndNoValue && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "text-warning pr-4", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_lucide_react.AlertTriangle, { size: 24 }) }),
203
+ onRemove && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
171
204
  TextButton,
172
205
  {
173
206
  onClick: onRemove,
174
207
  color: "negative",
175
- className: clsx2("pr-4 items-center", { "!text-transparent": !hasValue || readOnly }),
208
+ className: (0, import_clsx2.default)("pr-4 items-center", { "!text-transparent": !hasValue || readOnly }),
176
209
  disabled: !hasValue || readOnly,
177
210
  children: translation.remove
178
211
  }
@@ -182,7 +215,8 @@ var PropertyBase = ({
182
215
  )
183
216
  ] });
184
217
  };
185
- export {
218
+ // Annotate the CommonJS export names for ESM import in node:
219
+ 0 && (module.exports = {
186
220
  PropertyBase
187
- };
221
+ });
188
222
  //# sourceMappingURL=PropertyBase.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/properties/PropertyBase.tsx","../../../src/components/user-action/Button.tsx","../../../src/localization/LanguageProvider.tsx","../../../src/hooks/useLocalStorage.ts","../../../src/localization/util.ts","../../../src/localization/useTranslation.ts"],"sourcesContent":["import type { ReactNode } from 'react'\nimport { AlertTriangle } from 'lucide-react'\nimport clsx from 'clsx'\nimport type { Language } from '../../localization/util'\nimport { TextButton } from '../user-action/Button'\nimport type { PropsForTranslation } from '../../localization/useTranslation'\nimport { useTranslation } from '../../localization/useTranslation'\n\ntype PropertyBaseTranslation = {\n remove: string,\n}\n\nconst defaultPropertyBaseTranslation: Record<Language, PropertyBaseTranslation> = {\n en: {\n remove: 'Remove'\n },\n de: {\n remove: 'Entfernen'\n }\n}\n\nexport type PropertyBaseProps = {\n name: string,\n input: (props: { softRequired: boolean, hasValue: boolean }) => ReactNode,\n onRemove?: () => void,\n hasValue: boolean,\n softRequired?: boolean,\n readOnly?: boolean,\n icon?: ReactNode,\n className?: string,\n}\n\n/**\n * A component for showing a properties with uniform styling\n */\nexport const PropertyBase = ({\n overwriteTranslation,\n name,\n input,\n softRequired = false,\n hasValue,\n icon,\n readOnly,\n onRemove,\n className = '',\n }: PropsForTranslation<PropertyBaseTranslation, PropertyBaseProps>) => {\n const translation = useTranslation(defaultPropertyBaseTranslation, overwriteTranslation)\n const requiredAndNoValue = softRequired && !hasValue\n return (\n <div className={clsx('row gap-x-0 group', className)}>\n <div\n className={\n clsx('row gap-x-2 !w-[200px] px-4 py-2 items-center rounded-l-xl border-2 border-r-0', {\n 'bg-gray-100 text-black group-hover:border-primary border-gray-400': !requiredAndNoValue,\n 'bg-warning text-surface-warning group-hover:border-warning border-warning/90': requiredAndNoValue,\n }, className)}\n >\n {icon}\n {name}\n </div>\n <div className={\n clsx('row grow justify-between items-center rounded-r-xl border-2 border-l-0', {\n 'bg-white group-hover:border-primary border-gray-400': !requiredAndNoValue,\n 'bg-surface-warning group-hover:border-warning border-warning/90': requiredAndNoValue,\n }, className)}\n >\n {input({ softRequired, hasValue })}\n {requiredAndNoValue && (\n <div className=\"text-warning pr-4\"><AlertTriangle size={24}/></div>\n )}\n {onRemove && (\n <TextButton\n onClick={onRemove}\n color=\"negative\"\n className={clsx('pr-4 items-center', { '!text-transparent': !hasValue || readOnly })}\n disabled={!hasValue || readOnly}\n >\n {translation.remove}\n </TextButton>\n )}\n </div>\n </div>\n )\n}\n","import type { ButtonHTMLAttributes, PropsWithChildren, ReactNode } from 'react'\nimport clsx from 'clsx'\n\n\nexport const ButtonColorUtil = {\n solid: ['primary', 'secondary', 'tertiary', 'positive', 'warning', 'negative', 'neutral'] as const,\n text: ['primary', 'negative', 'neutral'] as const,\n outline: ['primary'] as const,\n}\n\n\n/**\n * The allowed colors for the SolidButton and IconButton\n */\nexport type SolidButtonColor = typeof ButtonColorUtil.solid[number]\n/**\n * The allowed colors for the OutlineButton\n */\nexport type OutlineButtonColor = typeof ButtonColorUtil.outline[number]\n/**\n * The allowed colors for the TextButton\n */\nexport type TextButtonColor = typeof ButtonColorUtil.text[number]\n\n/**\n * The different sizes for a button\n */\ntype ButtonSizes = 'small' | 'medium' | 'large'\n\n/**\n * The shard properties between all button types\n */\nexport type ButtonProps = PropsWithChildren<{\n /**\n * @default 'medium'\n */\n size?: ButtonSizes,\n}> & ButtonHTMLAttributes<Element>\n\nconst paddingMapping: Record<ButtonSizes, string> = {\n small: 'btn-sm',\n medium: 'btn-md',\n large: 'btn-lg'\n}\n\nconst iconPaddingMapping: Record<ButtonSizes, string> = {\n small: 'icon-btn-sm',\n medium: 'icon-btn-md',\n large: 'icon-btn-lg'\n}\n\nexport const ButtonUtil = {\n paddingMapping,\n iconPaddingMapping\n}\n\ntype ButtonWithIconsProps = ButtonProps & {\n startIcon?: ReactNode,\n endIcon?: ReactNode,\n}\n\nexport type SolidButtonProps = ButtonWithIconsProps & {\n color?: SolidButtonColor,\n}\n\nexport type OutlineButtonProps = ButtonWithIconsProps & {\n color?: OutlineButtonColor,\n}\n\nexport type TextButtonProps = ButtonWithIconsProps & {\n color?: TextButtonColor,\n}\n\nexport type IconButtonProps = ButtonProps & {\n color?: SolidButtonColor,\n}\n\n/**\n * A button with a solid background and different sizes\n */\nconst SolidButton = ({\n children,\n disabled = false,\n color = 'primary',\n size = 'medium',\n startIcon,\n endIcon,\n onClick,\n className,\n ...restProps\n }: SolidButtonProps) => {\n const colorClasses = {\n primary: 'bg-button-solid-primary-background text-button-solid-primary-text',\n secondary: 'bg-button-solid-secondary-background text-button-solid-secondary-text',\n tertiary: 'bg-button-solid-tertiary-background text-button-solid-tertiary-text',\n positive: 'bg-button-solid-positive-background text-button-solid-positive-text',\n warning: 'bg-button-solid-warning-background text-button-solid-warning-text',\n negative: 'bg-button-solid-negative-background text-button-solid-negative-text',\n neutral: 'bg-button-solid-neutral-background text-button-solid-neutral-text',\n }[color]\n\n const iconColorClasses = {\n primary: 'text-button-solid-primary-icon',\n secondary: 'text-button-solid-secondary-icon',\n tertiary: 'text-button-solid-tertiary-icon',\n positive: 'text-button-solid-positive-icon',\n warning: 'text-button-solid-warning-icon',\n negative: 'text-button-solid-negative-icon',\n neutral: 'text-button-solid-neutral-icon',\n }[color]\n\n return (\n <button\n onClick={disabled ? undefined : onClick}\n disabled={disabled || onClick === undefined}\n className={clsx(\n {\n 'text-disabled-text bg-disabled-background cursor-not-allowed': disabled,\n [clsx(colorClasses, 'hover:brightness-90')]: !disabled\n },\n ButtonUtil.paddingMapping[size],\n className\n )}\n {...restProps}\n >\n {startIcon && (\n <span\n className={clsx({\n [iconColorClasses]: !disabled,\n [`text-disabled-icon`]: disabled\n })}\n >\n {startIcon}\n </span>\n )}\n {children}\n {endIcon && (\n <span\n className={clsx({\n [iconColorClasses]: !disabled,\n [`text-disabled-icon`]: disabled\n })}\n >\n {endIcon}\n </span>\n )}\n </button>\n )\n}\n\n/**\n * A button with an outline border and different sizes\n */\nconst OutlineButton = ({\n children,\n disabled = false,\n color = 'primary',\n size = 'medium',\n startIcon,\n endIcon,\n onClick,\n className,\n ...restProps\n }: OutlineButtonProps) => {\n const colorClasses = {\n primary: 'bg-transparent border-2 border-button-outline-primary-text text-button-outline-primary-text',\n }[color]\n\n const iconColorClasses = {\n primary: 'text-button-outline-primary-icon',\n }[color]\n return (\n <button\n onClick={disabled ? undefined : onClick}\n disabled={disabled || onClick === undefined}\n className={clsx(\n {\n 'text-disabled-text border-disabled-outline cursor-not-allowed': disabled,\n [clsx(colorClasses, 'hover:brightness-80')]: !disabled,\n },\n ButtonUtil.paddingMapping[size],\n className\n )}\n {...restProps}\n >\n {startIcon && (\n <span\n className={clsx({\n [iconColorClasses]: !disabled,\n [`text-disabled-icon`]: disabled\n })}\n >\n {startIcon}\n </span>\n )}\n {children}\n {endIcon && (\n <span\n className={clsx({\n [iconColorClasses]: !disabled,\n [`text-disabled-icon`]: disabled\n })}\n >\n {endIcon}\n </span>\n )}\n </button>\n )\n}\n\n/**\n * A text that is a button that can have different sizes\n */\nconst TextButton = ({\n children,\n disabled = false,\n color = 'neutral',\n size = 'medium',\n startIcon,\n endIcon,\n onClick,\n className,\n ...restProps\n }: TextButtonProps) => {\n const colorClasses = {\n primary: 'bg-transparent text-button-text-primary-text',\n negative: 'bg-transparent text-button-text-negative-text',\n neutral: 'bg-transparent text-button-text-neutral-text',\n }[color]\n\n const iconColorClasses = {\n primary: 'text-button-text-primary-icon',\n negative: 'text-button-text-negative-icon',\n neutral: 'text-button-text-neutral-icon',\n }[color]\n return (\n <button\n onClick={disabled ? undefined : onClick}\n disabled={disabled || onClick === undefined}\n className={clsx(\n {\n 'text-disabled-text cursor-not-allowed': disabled,\n [clsx(colorClasses, 'hover:bg-button-text-hover-background rounded-full')]: !disabled,\n },\n ButtonUtil.paddingMapping[size],\n className\n )}\n {...restProps}\n >\n {startIcon && (\n <span\n className={clsx({\n [iconColorClasses]: !disabled,\n [`text-disabled-icon`]: disabled\n })}\n >\n {startIcon}\n </span>\n )}\n {children}\n {endIcon && (\n <span\n className={clsx({\n [iconColorClasses]: !disabled,\n [`text-disabled-icon`]: disabled\n })}\n >\n {endIcon}\n </span>\n )}\n </button>\n )\n}\n\n\n/**\n * A button for icons with a solid background and different sizes\n */\nconst IconButton = ({\n children,\n disabled = false,\n color = 'primary',\n size = 'medium',\n onClick,\n className,\n ...restProps\n }: IconButtonProps) => {\n const colorClasses = {\n primary: 'bg-button-solid-primary-background text-button-solid-primary-text',\n secondary: 'bg-button-solid-secondary-background text-button-solid-secondary-text',\n tertiary: 'bg-button-solid-tertiary-background text-button-solid-tertiary-text',\n positive: 'bg-button-solid-positive-background text-button-solid-positive-text',\n warning: 'bg-button-solid-warning-background text-button-solid-warning-text',\n negative: 'bg-button-solid-negative-background text-button-solid-negative-text',\n neutral: 'bg-button-solid-neutral-background text-button-solid-neutral-text',\n }[color]\n\n return (\n <button\n onClick={disabled ? undefined : onClick}\n disabled={disabled || onClick === undefined}\n className={clsx(\n {\n 'text-disabled-text bg-disabled-background cursor-not-allowed': disabled,\n [clsx(colorClasses, 'hover:brightness-90')]: !disabled\n },\n ButtonUtil.iconPaddingMapping[size],\n className\n )}\n {...restProps}\n >\n {children}\n </button>\n )\n}\n\nexport { SolidButton, OutlineButton, TextButton, IconButton }\n","import type { Dispatch, PropsWithChildren, SetStateAction } from 'react'\nimport { createContext, useContext, useEffect, useState } from 'react'\nimport { useLocalStorage } from '@/hooks/useLocalStorage'\nimport type { Language } from './util'\nimport { LanguageUtil } from './util'\n\nexport type LanguageContextValue = {\n language: Language,\n setLanguage: Dispatch<SetStateAction<Language>>,\n}\n\nexport const LanguageContext = createContext<LanguageContextValue>({\n language: LanguageUtil.DEFAULT_LANGUAGE,\n setLanguage: (v) => v\n})\n\nexport const useLanguage = () => useContext(LanguageContext)\n\nexport const useLocale = (overWriteLanguage?: Language) => {\n const { language } = useLanguage()\n const mapping: Record<Language, string> = {\n en: 'en-US',\n de: 'de-DE'\n }\n return mapping[overWriteLanguage ?? language]\n}\n\ntype LanguageProviderProps = {\n initialLanguage?: Language,\n}\n\nexport const LanguageProvider = ({ initialLanguage, children }: PropsWithChildren<LanguageProviderProps>) => {\n const [language, setLanguage] = useState<Language>(initialLanguage ?? LanguageUtil.DEFAULT_LANGUAGE)\n const [storedLanguage, setStoredLanguage] = useLocalStorage<Language>('language', initialLanguage ?? LanguageUtil.DEFAULT_LANGUAGE)\n\n useEffect(() => {\n if (language !== initialLanguage && initialLanguage) {\n console.warn('LanguageProvider initial state changed: Prefer using languageProvider\\'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 LanguageToTestAgainst = Object.values(LanguageUtil.languages)\n\n const matchingBrowserLanguage = window.navigator.languages\n .map(language => LanguageToTestAgainst.find((test) => language === test || language.split('-')[0] === test))\n .filter(entry => entry !== undefined)\n\n if (matchingBrowserLanguage.length === 0) return\n\n const firstMatch = matchingBrowserLanguage[0] as Language\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}","import type { Dispatch, SetStateAction } from 'react'\nimport { useCallback, useEffect, useState } from 'react'\nimport { LocalStorageService } from '../util/storage'\n\ntype SetValue<T> = Dispatch<SetStateAction<T>>\nexport const useLocalStorage = <T>(key: string, initValue: T): [T, SetValue<T>] => {\n const get = useCallback((): T => {\n if (typeof window === 'undefined') {\n return initValue\n }\n const storageService = new LocalStorageService()\n const value = storageService.get<T>(key)\n return value || initValue\n }, [initValue, key])\n\n const [storedValue, setStoredValue] = useState<T>(get)\n\n const setValue: SetValue<T> = useCallback(value => {\n const newValue = value instanceof Function ? value(storedValue) : value\n const storageService = new LocalStorageService()\n storageService.set(key, value)\n\n setStoredValue(newValue)\n }, [storedValue, setStoredValue, key])\n\n useEffect(() => {\n setStoredValue(get())\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n return [storedValue, setValue]\n}","/**\n * The supported languages\n */\nconst languages = ['en', 'de'] as const\n\n/**\n * The supported languages\n */\nexport type Language = typeof languages[number]\n\n/**\n * The supported languages' names in their respective language\n */\nconst languagesLocalNames: Record<Language, string> = {\n en: 'English',\n de: 'Deutsch',\n}\n\n/**\n * The default language\n */\nconst DEFAULT_LANGUAGE: Language = 'en'\n\n/**\n * A constant definition for holding data regarding languages\n */\nexport const LanguageUtil = {\n languages,\n DEFAULT_LANGUAGE,\n languagesLocalNames,\n}","import { useLanguage } from './LanguageProvider'\nimport type { Language } from './util'\n\nexport type Translation<T> = Record<Language, T>\n\ntype OverwriteTranslationType<Translation extends Record<string, unknown>> = {\n language?: Language,\n translation?: Partial<Record<Language, 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<Language, 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":["clsx","useEffect","useState","jsx","jsx","jsxs","clsx"]}
1
+ {"version":3,"sources":["../../../src/components/properties/PropertyBase.tsx","../../../src/components/user-action/Button.tsx","../../../src/localization/LanguageProvider.tsx","../../../src/hooks/useLocalStorage.ts","../../../src/localization/util.ts","../../../src/localization/useTranslation.ts"],"sourcesContent":["import type { ReactNode } from 'react'\nimport { AlertTriangle } from 'lucide-react'\nimport clsx from 'clsx'\nimport type { Language } from '../../localization/util'\nimport { TextButton } from '../user-action/Button'\nimport type { PropsForTranslation } from '../../localization/useTranslation'\nimport { useTranslation } from '../../localization/useTranslation'\n\ntype PropertyBaseTranslation = {\n remove: string,\n}\n\nconst defaultPropertyBaseTranslation: Record<Language, PropertyBaseTranslation> = {\n en: {\n remove: 'Remove'\n },\n de: {\n remove: 'Entfernen'\n }\n}\n\nexport type PropertyBaseProps = {\n name: string,\n input: (props: { softRequired: boolean, hasValue: boolean }) => ReactNode,\n onRemove?: () => void,\n hasValue: boolean,\n softRequired?: boolean,\n readOnly?: boolean,\n icon?: ReactNode,\n className?: string,\n}\n\n/**\n * A component for showing a properties with uniform styling\n */\nexport const PropertyBase = ({\n overwriteTranslation,\n name,\n input,\n softRequired = false,\n hasValue,\n icon,\n readOnly,\n onRemove,\n className = '',\n }: PropsForTranslation<PropertyBaseTranslation, PropertyBaseProps>) => {\n const translation = useTranslation(defaultPropertyBaseTranslation, overwriteTranslation)\n const requiredAndNoValue = softRequired && !hasValue\n return (\n <div className={clsx('row gap-x-0 group', className)}>\n <div\n className={\n clsx('row gap-x-2 !w-[200px] px-4 py-2 items-center rounded-l-xl border-2 border-r-0', {\n 'bg-gray-100 text-black group-hover:border-primary border-gray-400': !requiredAndNoValue,\n 'bg-warning text-surface-warning group-hover:border-warning border-warning/90': requiredAndNoValue,\n }, className)}\n >\n {icon}\n {name}\n </div>\n <div className={\n clsx('row grow justify-between items-center rounded-r-xl border-2 border-l-0', {\n 'bg-white group-hover:border-primary border-gray-400': !requiredAndNoValue,\n 'bg-surface-warning group-hover:border-warning border-warning/90': requiredAndNoValue,\n }, className)}\n >\n {input({ softRequired, hasValue })}\n {requiredAndNoValue && (\n <div className=\"text-warning pr-4\"><AlertTriangle size={24}/></div>\n )}\n {onRemove && (\n <TextButton\n onClick={onRemove}\n color=\"negative\"\n className={clsx('pr-4 items-center', { '!text-transparent': !hasValue || readOnly })}\n disabled={!hasValue || readOnly}\n >\n {translation.remove}\n </TextButton>\n )}\n </div>\n </div>\n )\n}\n","import type { ButtonHTMLAttributes, PropsWithChildren, ReactNode } from 'react'\nimport clsx from 'clsx'\n\n\nexport const ButtonColorUtil = {\n solid: ['primary', 'secondary', 'tertiary', 'positive', 'warning', 'negative', 'neutral'] as const,\n text: ['primary', 'negative', 'neutral'] as const,\n outline: ['primary'] as const,\n}\n\n\n/**\n * The allowed colors for the SolidButton and IconButton\n */\nexport type SolidButtonColor = typeof ButtonColorUtil.solid[number]\n/**\n * The allowed colors for the OutlineButton\n */\nexport type OutlineButtonColor = typeof ButtonColorUtil.outline[number]\n/**\n * The allowed colors for the TextButton\n */\nexport type TextButtonColor = typeof ButtonColorUtil.text[number]\n\n/**\n * The different sizes for a button\n */\ntype ButtonSizes = 'small' | 'medium' | 'large'\n\n/**\n * The shard properties between all button types\n */\nexport type ButtonProps = PropsWithChildren<{\n /**\n * @default 'medium'\n */\n size?: ButtonSizes,\n}> & ButtonHTMLAttributes<Element>\n\nconst paddingMapping: Record<ButtonSizes, string> = {\n small: 'btn-sm',\n medium: 'btn-md',\n large: 'btn-lg'\n}\n\nconst iconPaddingMapping: Record<ButtonSizes, string> = {\n small: 'icon-btn-sm',\n medium: 'icon-btn-md',\n large: 'icon-btn-lg'\n}\n\nexport const ButtonUtil = {\n paddingMapping,\n iconPaddingMapping\n}\n\ntype ButtonWithIconsProps = ButtonProps & {\n startIcon?: ReactNode,\n endIcon?: ReactNode,\n}\n\nexport type SolidButtonProps = ButtonWithIconsProps & {\n color?: SolidButtonColor,\n}\n\nexport type OutlineButtonProps = ButtonWithIconsProps & {\n color?: OutlineButtonColor,\n}\n\nexport type TextButtonProps = ButtonWithIconsProps & {\n color?: TextButtonColor,\n}\n\nexport type IconButtonProps = ButtonProps & {\n color?: SolidButtonColor,\n}\n\n/**\n * A button with a solid background and different sizes\n */\nconst SolidButton = ({\n children,\n disabled = false,\n color = 'primary',\n size = 'medium',\n startIcon,\n endIcon,\n onClick,\n className,\n ...restProps\n }: SolidButtonProps) => {\n const colorClasses = {\n primary: 'bg-button-solid-primary-background text-button-solid-primary-text',\n secondary: 'bg-button-solid-secondary-background text-button-solid-secondary-text',\n tertiary: 'bg-button-solid-tertiary-background text-button-solid-tertiary-text',\n positive: 'bg-button-solid-positive-background text-button-solid-positive-text',\n warning: 'bg-button-solid-warning-background text-button-solid-warning-text',\n negative: 'bg-button-solid-negative-background text-button-solid-negative-text',\n neutral: 'bg-button-solid-neutral-background text-button-solid-neutral-text',\n }[color]\n\n const iconColorClasses = {\n primary: 'text-button-solid-primary-icon',\n secondary: 'text-button-solid-secondary-icon',\n tertiary: 'text-button-solid-tertiary-icon',\n positive: 'text-button-solid-positive-icon',\n warning: 'text-button-solid-warning-icon',\n negative: 'text-button-solid-negative-icon',\n neutral: 'text-button-solid-neutral-icon',\n }[color]\n\n return (\n <button\n onClick={disabled ? undefined : onClick}\n disabled={disabled || onClick === undefined}\n className={clsx(\n {\n 'text-disabled-text bg-disabled-background cursor-not-allowed': disabled,\n [clsx(colorClasses, 'hover:brightness-90')]: !disabled\n },\n ButtonUtil.paddingMapping[size],\n className\n )}\n {...restProps}\n >\n {startIcon && (\n <span\n className={clsx({\n [iconColorClasses]: !disabled,\n [`text-disabled-icon`]: disabled\n })}\n >\n {startIcon}\n </span>\n )}\n {children}\n {endIcon && (\n <span\n className={clsx({\n [iconColorClasses]: !disabled,\n [`text-disabled-icon`]: disabled\n })}\n >\n {endIcon}\n </span>\n )}\n </button>\n )\n}\n\n/**\n * A button with an outline border and different sizes\n */\nconst OutlineButton = ({\n children,\n disabled = false,\n color = 'primary',\n size = 'medium',\n startIcon,\n endIcon,\n onClick,\n className,\n ...restProps\n }: OutlineButtonProps) => {\n const colorClasses = {\n primary: 'bg-transparent border-2 border-button-outline-primary-text text-button-outline-primary-text',\n }[color]\n\n const iconColorClasses = {\n primary: 'text-button-outline-primary-icon',\n }[color]\n return (\n <button\n onClick={disabled ? undefined : onClick}\n disabled={disabled || onClick === undefined}\n className={clsx(\n {\n 'text-disabled-text border-disabled-outline cursor-not-allowed': disabled,\n [clsx(colorClasses, 'hover:brightness-80')]: !disabled,\n },\n ButtonUtil.paddingMapping[size],\n className\n )}\n {...restProps}\n >\n {startIcon && (\n <span\n className={clsx({\n [iconColorClasses]: !disabled,\n [`text-disabled-icon`]: disabled\n })}\n >\n {startIcon}\n </span>\n )}\n {children}\n {endIcon && (\n <span\n className={clsx({\n [iconColorClasses]: !disabled,\n [`text-disabled-icon`]: disabled\n })}\n >\n {endIcon}\n </span>\n )}\n </button>\n )\n}\n\n/**\n * A text that is a button that can have different sizes\n */\nconst TextButton = ({\n children,\n disabled = false,\n color = 'neutral',\n size = 'medium',\n startIcon,\n endIcon,\n onClick,\n className,\n ...restProps\n }: TextButtonProps) => {\n const colorClasses = {\n primary: 'bg-transparent text-button-text-primary-text',\n negative: 'bg-transparent text-button-text-negative-text',\n neutral: 'bg-transparent text-button-text-neutral-text',\n }[color]\n\n const iconColorClasses = {\n primary: 'text-button-text-primary-icon',\n negative: 'text-button-text-negative-icon',\n neutral: 'text-button-text-neutral-icon',\n }[color]\n return (\n <button\n onClick={disabled ? undefined : onClick}\n disabled={disabled || onClick === undefined}\n className={clsx(\n {\n 'text-disabled-text cursor-not-allowed': disabled,\n [clsx(colorClasses, 'hover:bg-button-text-hover-background rounded-full')]: !disabled,\n },\n ButtonUtil.paddingMapping[size],\n className\n )}\n {...restProps}\n >\n {startIcon && (\n <span\n className={clsx({\n [iconColorClasses]: !disabled,\n [`text-disabled-icon`]: disabled\n })}\n >\n {startIcon}\n </span>\n )}\n {children}\n {endIcon && (\n <span\n className={clsx({\n [iconColorClasses]: !disabled,\n [`text-disabled-icon`]: disabled\n })}\n >\n {endIcon}\n </span>\n )}\n </button>\n )\n}\n\n\n/**\n * A button for icons with a solid background and different sizes\n */\nconst IconButton = ({\n children,\n disabled = false,\n color = 'primary',\n size = 'medium',\n onClick,\n className,\n ...restProps\n }: IconButtonProps) => {\n const colorClasses = {\n primary: 'bg-button-solid-primary-background text-button-solid-primary-text',\n secondary: 'bg-button-solid-secondary-background text-button-solid-secondary-text',\n tertiary: 'bg-button-solid-tertiary-background text-button-solid-tertiary-text',\n positive: 'bg-button-solid-positive-background text-button-solid-positive-text',\n warning: 'bg-button-solid-warning-background text-button-solid-warning-text',\n negative: 'bg-button-solid-negative-background text-button-solid-negative-text',\n neutral: 'bg-button-solid-neutral-background text-button-solid-neutral-text',\n }[color]\n\n return (\n <button\n onClick={disabled ? undefined : onClick}\n disabled={disabled || onClick === undefined}\n className={clsx(\n {\n 'text-disabled-text bg-disabled-background cursor-not-allowed': disabled,\n [clsx(colorClasses, 'hover:brightness-90')]: !disabled\n },\n ButtonUtil.iconPaddingMapping[size],\n className\n )}\n {...restProps}\n >\n {children}\n </button>\n )\n}\n\nexport { SolidButton, OutlineButton, TextButton, IconButton }\n","import type { Dispatch, PropsWithChildren, SetStateAction } from 'react'\nimport { createContext, useContext, useEffect, useState } from 'react'\nimport { useLocalStorage } from '../hooks/useLocalStorage'\nimport type { Language } from './util'\nimport { LanguageUtil } from './util'\n\nexport type LanguageContextValue = {\n language: Language,\n setLanguage: Dispatch<SetStateAction<Language>>,\n}\n\nexport const LanguageContext = createContext<LanguageContextValue>({\n language: LanguageUtil.DEFAULT_LANGUAGE,\n setLanguage: (v) => v\n})\n\nexport const useLanguage = () => useContext(LanguageContext)\n\nexport const useLocale = (overWriteLanguage?: Language) => {\n const { language } = useLanguage()\n const mapping: Record<Language, string> = {\n en: 'en-US',\n de: 'de-DE'\n }\n return mapping[overWriteLanguage ?? language]\n}\n\ntype LanguageProviderProps = {\n initialLanguage?: Language,\n}\n\nexport const LanguageProvider = ({ initialLanguage, children }: PropsWithChildren<LanguageProviderProps>) => {\n const [language, setLanguage] = useState<Language>(initialLanguage ?? LanguageUtil.DEFAULT_LANGUAGE)\n const [storedLanguage, setStoredLanguage] = useLocalStorage<Language>('language', initialLanguage ?? LanguageUtil.DEFAULT_LANGUAGE)\n\n useEffect(() => {\n if (language !== initialLanguage && initialLanguage) {\n console.warn('LanguageProvider initial state changed: Prefer using languageProvider\\'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 LanguageToTestAgainst = Object.values(LanguageUtil.languages)\n\n const matchingBrowserLanguage = window.navigator.languages\n .map(language => LanguageToTestAgainst.find((test) => language === test || language.split('-')[0] === test))\n .filter(entry => entry !== undefined)\n\n if (matchingBrowserLanguage.length === 0) return\n\n const firstMatch = matchingBrowserLanguage[0] as Language\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}","import type { Dispatch, SetStateAction } from 'react'\nimport { useCallback, useEffect, useState } from 'react'\nimport { LocalStorageService } from '../util/storage'\n\ntype SetValue<T> = Dispatch<SetStateAction<T>>\nexport const useLocalStorage = <T>(key: string, initValue: T): [T, SetValue<T>] => {\n const get = useCallback((): T => {\n if (typeof window === 'undefined') {\n return initValue\n }\n const storageService = new LocalStorageService()\n const value = storageService.get<T>(key)\n return value || initValue\n }, [initValue, key])\n\n const [storedValue, setStoredValue] = useState<T>(get)\n\n const setValue: SetValue<T> = useCallback(value => {\n const newValue = value instanceof Function ? value(storedValue) : value\n const storageService = new LocalStorageService()\n storageService.set(key, value)\n\n setStoredValue(newValue)\n }, [storedValue, setStoredValue, key])\n\n useEffect(() => {\n setStoredValue(get())\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n return [storedValue, setValue]\n}","/**\n * The supported languages\n */\nconst languages = ['en', 'de'] as const\n\n/**\n * The supported languages\n */\nexport type Language = typeof languages[number]\n\n/**\n * The supported languages' names in their respective language\n */\nconst languagesLocalNames: Record<Language, string> = {\n en: 'English',\n de: 'Deutsch',\n}\n\n/**\n * The default language\n */\nconst DEFAULT_LANGUAGE: Language = 'en'\n\n/**\n * A constant definition for holding data regarding languages\n */\nexport const LanguageUtil = {\n languages,\n DEFAULT_LANGUAGE,\n languagesLocalNames,\n}","import { useLanguage } from './LanguageProvider'\nimport type { Language } from './util'\n\nexport type Translation<T> = Record<Language, T>\n\ntype OverwriteTranslationType<Translation extends Record<string, unknown>> = {\n language?: Language,\n translation?: Partial<Record<Language, 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<Language, 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_clsx","clsx","import_react","import_jsx_runtime","import_jsx_runtime","clsx"]}
@@ -1,44 +1,10 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
11
- };
12
- var __copyProps = (to, from, except, desc) => {
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (let key of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(to, key) && key !== except)
16
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
- }
18
- return to;
19
- };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
-
30
1
  // src/components/properties/PropertyBase.tsx
31
- var PropertyBase_exports = {};
32
- __export(PropertyBase_exports, {
33
- PropertyBase: () => PropertyBase
34
- });
35
- module.exports = __toCommonJS(PropertyBase_exports);
36
- var import_lucide_react = require("lucide-react");
37
- var import_clsx2 = __toESM(require("clsx"), 1);
2
+ import { AlertTriangle } from "lucide-react";
3
+ import clsx2 from "clsx";
38
4
 
39
5
  // src/components/user-action/Button.tsx
40
- var import_clsx = __toESM(require("clsx"), 1);
41
- var import_jsx_runtime = require("react/jsx-runtime");
6
+ import clsx from "clsx";
7
+ import { jsx, jsxs } from "react/jsx-runtime";
42
8
  var paddingMapping = {
43
9
  small: "btn-sm",
44
10
  medium: "btn-md",
@@ -74,25 +40,25 @@ var TextButton = ({
74
40
  negative: "text-button-text-negative-icon",
75
41
  neutral: "text-button-text-neutral-icon"
76
42
  }[color];
77
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
43
+ return /* @__PURE__ */ jsxs(
78
44
  "button",
79
45
  {
80
46
  onClick: disabled ? void 0 : onClick,
81
47
  disabled: disabled || onClick === void 0,
82
- className: (0, import_clsx.default)(
48
+ className: clsx(
83
49
  {
84
50
  "text-disabled-text cursor-not-allowed": disabled,
85
- [(0, import_clsx.default)(colorClasses, "hover:bg-button-text-hover-background rounded-full")]: !disabled
51
+ [clsx(colorClasses, "hover:bg-button-text-hover-background rounded-full")]: !disabled
86
52
  },
87
53
  ButtonUtil.paddingMapping[size],
88
54
  className
89
55
  ),
90
56
  ...restProps,
91
57
  children: [
92
- startIcon && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
58
+ startIcon && /* @__PURE__ */ jsx(
93
59
  "span",
94
60
  {
95
- className: (0, import_clsx.default)({
61
+ className: clsx({
96
62
  [iconColorClasses]: !disabled,
97
63
  [`text-disabled-icon`]: disabled
98
64
  }),
@@ -100,10 +66,10 @@ var TextButton = ({
100
66
  }
101
67
  ),
102
68
  children,
103
- endIcon && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
69
+ endIcon && /* @__PURE__ */ jsx(
104
70
  "span",
105
71
  {
106
- className: (0, import_clsx.default)({
72
+ className: clsx({
107
73
  [iconColorClasses]: !disabled,
108
74
  [`text-disabled-icon`]: disabled
109
75
  }),
@@ -116,10 +82,10 @@ var TextButton = ({
116
82
  };
117
83
 
118
84
  // src/localization/LanguageProvider.tsx
119
- var import_react2 = require("react");
85
+ import { createContext, useContext, useEffect as useEffect2, useState as useState2 } from "react";
120
86
 
121
87
  // src/hooks/useLocalStorage.ts
122
- var import_react = require("react");
88
+ import { useCallback, useEffect, useState } from "react";
123
89
 
124
90
  // src/localization/util.ts
125
91
  var languages = ["en", "de"];
@@ -135,12 +101,12 @@ var LanguageUtil = {
135
101
  };
136
102
 
137
103
  // src/localization/LanguageProvider.tsx
138
- var import_jsx_runtime2 = require("react/jsx-runtime");
139
- var LanguageContext = (0, import_react2.createContext)({
104
+ import { jsx as jsx2 } from "react/jsx-runtime";
105
+ var LanguageContext = createContext({
140
106
  language: LanguageUtil.DEFAULT_LANGUAGE,
141
107
  setLanguage: (v) => v
142
108
  });
143
- var useLanguage = () => (0, import_react2.useContext)(LanguageContext);
109
+ var useLanguage = () => useContext(LanguageContext);
144
110
 
145
111
  // src/localization/useTranslation.ts
146
112
  var useTranslation = (defaults, translationOverwrite = {}) => {
@@ -155,7 +121,7 @@ var useTranslation = (defaults, translationOverwrite = {}) => {
155
121
  };
156
122
 
157
123
  // src/components/properties/PropertyBase.tsx
158
- var import_jsx_runtime3 = require("react/jsx-runtime");
124
+ import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
159
125
  var defaultPropertyBaseTranslation = {
160
126
  en: {
161
127
  remove: "Remove"
@@ -177,11 +143,11 @@ var PropertyBase = ({
177
143
  }) => {
178
144
  const translation = useTranslation(defaultPropertyBaseTranslation, overwriteTranslation);
179
145
  const requiredAndNoValue = softRequired && !hasValue;
180
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: (0, import_clsx2.default)("row gap-x-0 group", className), children: [
181
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
146
+ return /* @__PURE__ */ jsxs2("div", { className: clsx2("row gap-x-0 group", className), children: [
147
+ /* @__PURE__ */ jsxs2(
182
148
  "div",
183
149
  {
184
- className: (0, import_clsx2.default)("row gap-x-2 !w-[200px] px-4 py-2 items-center rounded-l-xl border-2 border-r-0", {
150
+ className: clsx2("row gap-x-2 !w-[200px] px-4 py-2 items-center rounded-l-xl border-2 border-r-0", {
185
151
  "bg-gray-100 text-black group-hover:border-primary border-gray-400": !requiredAndNoValue,
186
152
  "bg-warning text-surface-warning group-hover:border-warning border-warning/90": requiredAndNoValue
187
153
  }, className),
@@ -191,22 +157,22 @@ var PropertyBase = ({
191
157
  ]
192
158
  }
193
159
  ),
194
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
160
+ /* @__PURE__ */ jsxs2(
195
161
  "div",
196
162
  {
197
- className: (0, import_clsx2.default)("row grow justify-between items-center rounded-r-xl border-2 border-l-0", {
163
+ className: clsx2("row grow justify-between items-center rounded-r-xl border-2 border-l-0", {
198
164
  "bg-white group-hover:border-primary border-gray-400": !requiredAndNoValue,
199
165
  "bg-surface-warning group-hover:border-warning border-warning/90": requiredAndNoValue
200
166
  }, className),
201
167
  children: [
202
168
  input({ softRequired, hasValue }),
203
- requiredAndNoValue && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "text-warning pr-4", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_lucide_react.AlertTriangle, { size: 24 }) }),
204
- onRemove && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
169
+ requiredAndNoValue && /* @__PURE__ */ jsx3("div", { className: "text-warning pr-4", children: /* @__PURE__ */ jsx3(AlertTriangle, { size: 24 }) }),
170
+ onRemove && /* @__PURE__ */ jsx3(
205
171
  TextButton,
206
172
  {
207
173
  onClick: onRemove,
208
174
  color: "negative",
209
- className: (0, import_clsx2.default)("pr-4 items-center", { "!text-transparent": !hasValue || readOnly }),
175
+ className: clsx2("pr-4 items-center", { "!text-transparent": !hasValue || readOnly }),
210
176
  disabled: !hasValue || readOnly,
211
177
  children: translation.remove
212
178
  }
@@ -216,8 +182,7 @@ var PropertyBase = ({
216
182
  )
217
183
  ] });
218
184
  };
219
- // Annotate the CommonJS export names for ESM import in node:
220
- 0 && (module.exports = {
185
+ export {
221
186
  PropertyBase
222
- });
223
- //# sourceMappingURL=PropertyBase.cjs.map
187
+ };
188
+ //# sourceMappingURL=PropertyBase.mjs.map