@helpwave/hightide 0.1.25 → 0.1.26

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 (602) hide show
  1. package/README.md +1 -1
  2. package/dist/components/branding/HelpwaveBadge.d.mts +4 -5
  3. package/dist/components/branding/HelpwaveBadge.d.ts +4 -5
  4. package/dist/components/branding/HelpwaveBadge.js +46 -87
  5. package/dist/components/branding/HelpwaveBadge.js.map +1 -1
  6. package/dist/components/branding/HelpwaveBadge.mjs +46 -89
  7. package/dist/components/branding/HelpwaveBadge.mjs.map +1 -1
  8. package/dist/components/date/DatePicker.d.mts +1 -1
  9. package/dist/components/date/DatePicker.d.ts +1 -1
  10. package/dist/components/date/DatePicker.js +64 -13
  11. package/dist/components/date/DatePicker.js.map +1 -1
  12. package/dist/components/date/DatePicker.mjs +65 -14
  13. package/dist/components/date/DatePicker.mjs.map +1 -1
  14. package/dist/components/date/DayPicker.d.mts +1 -1
  15. package/dist/components/date/DayPicker.d.ts +1 -1
  16. package/dist/components/date/DayPicker.js +3 -3
  17. package/dist/components/date/DayPicker.js.map +1 -1
  18. package/dist/components/date/DayPicker.mjs +3 -3
  19. package/dist/components/date/DayPicker.mjs.map +1 -1
  20. package/dist/components/date/TimeDisplay.js.map +1 -1
  21. package/dist/components/date/TimeDisplay.mjs.map +1 -1
  22. package/dist/components/date/TimePicker.js +2 -2
  23. package/dist/components/date/TimePicker.js.map +1 -1
  24. package/dist/components/date/TimePicker.mjs +2 -2
  25. package/dist/components/date/TimePicker.mjs.map +1 -1
  26. package/dist/components/date/YearMonthPicker.js +58 -7
  27. package/dist/components/date/YearMonthPicker.js.map +1 -1
  28. package/dist/components/date/YearMonthPicker.mjs +59 -8
  29. package/dist/components/date/YearMonthPicker.mjs.map +1 -1
  30. package/dist/components/{dialogs → dialog}/ConfirmDialog.d.mts +9 -8
  31. package/dist/components/{dialogs → dialog}/ConfirmDialog.d.ts +9 -8
  32. package/dist/components/dialog/ConfirmDialog.js +938 -0
  33. package/dist/components/dialog/ConfirmDialog.js.map +1 -0
  34. package/dist/components/dialog/ConfirmDialog.mjs +902 -0
  35. package/dist/components/dialog/ConfirmDialog.mjs.map +1 -0
  36. package/dist/components/dialog/Dialog.d.mts +27 -0
  37. package/dist/components/dialog/Dialog.d.ts +27 -0
  38. package/dist/components/dialog/Dialog.js +879 -0
  39. package/dist/components/dialog/Dialog.js.map +1 -0
  40. package/dist/components/dialog/Dialog.mjs +845 -0
  41. package/dist/components/dialog/Dialog.mjs.map +1 -0
  42. package/dist/components/dialog/DiscardChangesDialog.d.mts +24 -0
  43. package/dist/components/dialog/DiscardChangesDialog.d.ts +24 -0
  44. package/dist/components/dialog/DiscardChangesDialog.js +966 -0
  45. package/dist/components/dialog/DiscardChangesDialog.js.map +1 -0
  46. package/dist/components/dialog/DiscardChangesDialog.mjs +930 -0
  47. package/dist/components/dialog/DiscardChangesDialog.mjs.map +1 -0
  48. package/dist/components/dialog/InputDialog.d.mts +22 -0
  49. package/dist/components/dialog/InputDialog.d.ts +22 -0
  50. package/dist/components/dialog/InputDialog.js +1139 -0
  51. package/dist/components/dialog/InputDialog.js.map +1 -0
  52. package/dist/components/dialog/InputDialog.mjs +1103 -0
  53. package/dist/components/dialog/InputDialog.mjs.map +1 -0
  54. package/dist/components/dialog/LanguageDialog.d.mts +25 -0
  55. package/dist/components/dialog/LanguageDialog.d.ts +25 -0
  56. package/dist/components/dialog/LanguageDialog.js +1684 -0
  57. package/dist/components/dialog/LanguageDialog.js.map +1 -0
  58. package/dist/components/dialog/LanguageDialog.mjs +1658 -0
  59. package/dist/components/dialog/LanguageDialog.mjs.map +1 -0
  60. package/dist/components/dialog/ThemeDialog.d.mts +26 -0
  61. package/dist/components/dialog/ThemeDialog.d.ts +26 -0
  62. package/dist/components/dialog/ThemeDialog.js +1715 -0
  63. package/dist/components/dialog/ThemeDialog.js.map +1 -0
  64. package/dist/components/dialog/ThemeDialog.mjs +1689 -0
  65. package/dist/components/dialog/ThemeDialog.mjs.map +1 -0
  66. package/dist/components/dialog/index.d.mts +17 -0
  67. package/dist/components/dialog/index.d.ts +17 -0
  68. package/dist/components/dialog/index.js +2062 -0
  69. package/dist/components/dialog/index.js.map +1 -0
  70. package/dist/components/dialog/index.mjs +2031 -0
  71. package/dist/components/dialog/index.mjs.map +1 -0
  72. package/dist/components/form/FormElementWrapper.d.mts +29 -0
  73. package/dist/components/form/FormElementWrapper.d.ts +29 -0
  74. package/dist/components/form/FormElementWrapper.js +98 -0
  75. package/dist/components/form/FormElementWrapper.js.map +1 -0
  76. package/dist/components/form/FormElementWrapper.mjs +64 -0
  77. package/dist/components/form/FormElementWrapper.mjs.map +1 -0
  78. package/dist/components/icons-and-geometry/Avatar.js +498 -2886
  79. package/dist/components/icons-and-geometry/Avatar.js.map +1 -1
  80. package/dist/components/icons-and-geometry/Avatar.mjs +490 -2878
  81. package/dist/components/icons-and-geometry/Avatar.mjs.map +1 -1
  82. package/dist/components/icons-and-geometry/{Helpwave.d.mts → HelpwaveLogo.d.mts} +3 -3
  83. package/dist/components/icons-and-geometry/{Helpwave.d.ts → HelpwaveLogo.d.ts} +3 -3
  84. package/dist/components/icons-and-geometry/{Helpwave.js → HelpwaveLogo.js} +21 -22
  85. package/dist/components/icons-and-geometry/HelpwaveLogo.js.map +1 -0
  86. package/dist/components/icons-and-geometry/{Helpwave.mjs → HelpwaveLogo.mjs} +17 -18
  87. package/dist/components/icons-and-geometry/HelpwaveLogo.mjs.map +1 -0
  88. package/dist/components/icons-and-geometry/Ring.js +1 -1
  89. package/dist/components/icons-and-geometry/Ring.js.map +1 -1
  90. package/dist/components/icons-and-geometry/Ring.mjs +1 -1
  91. package/dist/components/icons-and-geometry/Ring.mjs.map +1 -1
  92. package/dist/components/icons-and-geometry/Tag.js +8 -20
  93. package/dist/components/icons-and-geometry/Tag.js.map +1 -1
  94. package/dist/components/icons-and-geometry/Tag.mjs +8 -20
  95. package/dist/components/icons-and-geometry/Tag.mjs.map +1 -1
  96. package/dist/components/layout-and-navigation/BreadCrumb.js +667 -22
  97. package/dist/components/layout-and-navigation/BreadCrumb.js.map +1 -1
  98. package/dist/components/layout-and-navigation/BreadCrumb.mjs +667 -22
  99. package/dist/components/layout-and-navigation/BreadCrumb.mjs.map +1 -1
  100. package/dist/components/layout-and-navigation/Carousel.js +12 -10
  101. package/dist/components/layout-and-navigation/Carousel.js.map +1 -1
  102. package/dist/components/layout-and-navigation/Carousel.mjs +12 -10
  103. package/dist/components/layout-and-navigation/Carousel.mjs.map +1 -1
  104. package/dist/components/layout-and-navigation/Chip.d.mts +8 -5
  105. package/dist/components/layout-and-navigation/Chip.d.ts +8 -5
  106. package/dist/components/layout-and-navigation/Chip.js +17 -4
  107. package/dist/components/layout-and-navigation/Chip.js.map +1 -1
  108. package/dist/components/layout-and-navigation/Chip.mjs +17 -4
  109. package/dist/components/layout-and-navigation/Chip.mjs.map +1 -1
  110. package/dist/components/layout-and-navigation/Expandable.d.mts +13 -10
  111. package/dist/components/layout-and-navigation/Expandable.d.ts +13 -10
  112. package/dist/components/layout-and-navigation/Expandable.js +18 -5
  113. package/dist/components/layout-and-navigation/Expandable.js.map +1 -1
  114. package/dist/components/layout-and-navigation/Expandable.mjs +19 -6
  115. package/dist/components/layout-and-navigation/Expandable.mjs.map +1 -1
  116. package/dist/components/layout-and-navigation/FAQSection.js +21 -8
  117. package/dist/components/layout-and-navigation/FAQSection.js.map +1 -1
  118. package/dist/components/layout-and-navigation/FAQSection.mjs +22 -9
  119. package/dist/components/layout-and-navigation/FAQSection.mjs.map +1 -1
  120. package/dist/components/layout-and-navigation/FloatingContainer.d.mts +38 -0
  121. package/dist/components/layout-and-navigation/FloatingContainer.d.ts +38 -0
  122. package/dist/components/layout-and-navigation/FloatingContainer.js +219 -0
  123. package/dist/components/layout-and-navigation/FloatingContainer.js.map +1 -0
  124. package/dist/components/layout-and-navigation/FloatingContainer.mjs +195 -0
  125. package/dist/components/layout-and-navigation/FloatingContainer.mjs.map +1 -0
  126. package/dist/components/layout-and-navigation/ListBox.d.mts +44 -0
  127. package/dist/components/layout-and-navigation/ListBox.d.ts +44 -0
  128. package/dist/components/layout-and-navigation/ListBox.js +329 -0
  129. package/dist/components/layout-and-navigation/ListBox.js.map +1 -0
  130. package/dist/components/layout-and-navigation/ListBox.mjs +290 -0
  131. package/dist/components/layout-and-navigation/ListBox.mjs.map +1 -0
  132. package/dist/components/layout-and-navigation/Pagination.js +104 -189
  133. package/dist/components/layout-and-navigation/Pagination.js.map +1 -1
  134. package/dist/components/layout-and-navigation/Pagination.mjs +99 -184
  135. package/dist/components/layout-and-navigation/Pagination.mjs.map +1 -1
  136. package/dist/components/layout-and-navigation/ScrollArea.d.mts +15 -0
  137. package/dist/components/layout-and-navigation/ScrollArea.d.ts +15 -0
  138. package/dist/components/layout-and-navigation/ScrollArea.js +1252 -0
  139. package/dist/components/layout-and-navigation/ScrollArea.js.map +1 -0
  140. package/dist/components/layout-and-navigation/ScrollArea.mjs +1216 -0
  141. package/dist/components/layout-and-navigation/ScrollArea.mjs.map +1 -0
  142. package/dist/components/layout-and-navigation/StepperBar.js +41 -1
  143. package/dist/components/layout-and-navigation/StepperBar.js.map +1 -1
  144. package/dist/components/layout-and-navigation/StepperBar.mjs +41 -1
  145. package/dist/components/layout-and-navigation/StepperBar.mjs.map +1 -1
  146. package/dist/components/layout-and-navigation/TextImage.js +3 -1
  147. package/dist/components/layout-and-navigation/TextImage.js.map +1 -1
  148. package/dist/components/layout-and-navigation/TextImage.mjs +3 -1
  149. package/dist/components/layout-and-navigation/TextImage.mjs.map +1 -1
  150. package/dist/components/loading-states/ErrorComponent.js.map +1 -1
  151. package/dist/components/loading-states/ErrorComponent.mjs.map +1 -1
  152. package/dist/components/loading-states/LoadingAndErrorComponent.d.mts +1 -1
  153. package/dist/components/loading-states/LoadingAndErrorComponent.d.ts +1 -1
  154. package/dist/components/loading-states/LoadingAnimation.js +18 -17
  155. package/dist/components/loading-states/LoadingAnimation.js.map +1 -1
  156. package/dist/components/loading-states/LoadingAnimation.mjs +18 -17
  157. package/dist/components/loading-states/LoadingAnimation.mjs.map +1 -1
  158. package/dist/components/loading-states/LoadingButton.js +55 -18
  159. package/dist/components/loading-states/LoadingButton.js.map +1 -1
  160. package/dist/components/loading-states/LoadingButton.mjs +55 -18
  161. package/dist/components/loading-states/LoadingButton.mjs.map +1 -1
  162. package/dist/components/properties/CheckboxProperty.js +890 -135
  163. package/dist/components/properties/CheckboxProperty.js.map +1 -1
  164. package/dist/components/properties/CheckboxProperty.mjs +897 -142
  165. package/dist/components/properties/CheckboxProperty.mjs.map +1 -1
  166. package/dist/components/properties/DateProperty.js +153 -198
  167. package/dist/components/properties/DateProperty.js.map +1 -1
  168. package/dist/components/properties/DateProperty.mjs +146 -191
  169. package/dist/components/properties/DateProperty.mjs.map +1 -1
  170. package/dist/components/properties/MultiSelectProperty.d.mts +5 -10
  171. package/dist/components/properties/MultiSelectProperty.d.ts +5 -10
  172. package/dist/components/properties/MultiSelectProperty.js +1143 -1160
  173. package/dist/components/properties/MultiSelectProperty.js.map +1 -1
  174. package/dist/components/properties/MultiSelectProperty.mjs +1156 -1163
  175. package/dist/components/properties/MultiSelectProperty.mjs.map +1 -1
  176. package/dist/components/properties/NumberProperty.js +155 -201
  177. package/dist/components/properties/NumberProperty.js.map +1 -1
  178. package/dist/components/properties/NumberProperty.mjs +148 -194
  179. package/dist/components/properties/NumberProperty.mjs.map +1 -1
  180. package/dist/components/properties/PropertyBase.js +49 -9
  181. package/dist/components/properties/PropertyBase.js.map +1 -1
  182. package/dist/components/properties/PropertyBase.mjs +49 -9
  183. package/dist/components/properties/PropertyBase.mjs.map +1 -1
  184. package/dist/components/properties/SelectProperty.d.mts +5 -8
  185. package/dist/components/properties/SelectProperty.d.ts +5 -8
  186. package/dist/components/properties/SelectProperty.js +1047 -834
  187. package/dist/components/properties/SelectProperty.js.map +1 -1
  188. package/dist/components/properties/SelectProperty.mjs +1063 -840
  189. package/dist/components/properties/SelectProperty.mjs.map +1 -1
  190. package/dist/components/properties/TextProperty.js +97 -100
  191. package/dist/components/properties/TextProperty.js.map +1 -1
  192. package/dist/components/properties/TextProperty.mjs +100 -103
  193. package/dist/components/properties/TextProperty.mjs.map +1 -1
  194. package/dist/components/table/Table.js +1618 -993
  195. package/dist/components/table/Table.js.map +1 -1
  196. package/dist/components/table/Table.mjs +1625 -1000
  197. package/dist/components/table/Table.mjs.map +1 -1
  198. package/dist/components/table/TableFilterButton.js +116 -201
  199. package/dist/components/table/TableFilterButton.js.map +1 -1
  200. package/dist/components/table/TableFilterButton.mjs +105 -190
  201. package/dist/components/table/TableFilterButton.mjs.map +1 -1
  202. package/dist/components/table/TableSortButton.js +4 -3
  203. package/dist/components/table/TableSortButton.js.map +1 -1
  204. package/dist/components/table/TableSortButton.mjs +4 -3
  205. package/dist/components/table/TableSortButton.mjs.map +1 -1
  206. package/dist/components/user-action/Button.d.mts +15 -11
  207. package/dist/components/user-action/Button.d.ts +15 -11
  208. package/dist/components/user-action/Button.js +10 -9
  209. package/dist/components/user-action/Button.js.map +1 -1
  210. package/dist/components/user-action/Button.mjs +10 -9
  211. package/dist/components/user-action/Button.mjs.map +1 -1
  212. package/dist/components/user-action/Checkbox.d.mts +9 -25
  213. package/dist/components/user-action/Checkbox.d.ts +9 -25
  214. package/dist/components/user-action/Checkbox.js +793 -103
  215. package/dist/components/user-action/Checkbox.js.map +1 -1
  216. package/dist/components/user-action/Checkbox.mjs +794 -104
  217. package/dist/components/user-action/Checkbox.mjs.map +1 -1
  218. package/dist/components/user-action/CopyToClipboardWrapper.js +3 -1
  219. package/dist/components/user-action/CopyToClipboardWrapper.js.map +1 -1
  220. package/dist/components/user-action/CopyToClipboardWrapper.mjs +3 -1
  221. package/dist/components/user-action/CopyToClipboardWrapper.mjs.map +1 -1
  222. package/dist/components/user-action/DateAndTimePicker.d.mts +1 -1
  223. package/dist/components/user-action/DateAndTimePicker.d.ts +1 -1
  224. package/dist/components/user-action/DateAndTimePicker.js +66 -13
  225. package/dist/components/user-action/DateAndTimePicker.js.map +1 -1
  226. package/dist/components/user-action/DateAndTimePicker.mjs +67 -14
  227. package/dist/components/user-action/DateAndTimePicker.mjs.map +1 -1
  228. package/dist/components/user-action/Label.d.mts +6 -8
  229. package/dist/components/user-action/Label.d.ts +6 -8
  230. package/dist/components/user-action/Label.js +4 -6
  231. package/dist/components/user-action/Label.js.map +1 -1
  232. package/dist/components/user-action/Label.mjs +4 -6
  233. package/dist/components/user-action/Label.mjs.map +1 -1
  234. package/dist/components/user-action/Menu.d.mts +2 -2
  235. package/dist/components/user-action/Menu.d.ts +2 -2
  236. package/dist/components/user-action/Menu.js +1 -1
  237. package/dist/components/user-action/Menu.js.map +1 -1
  238. package/dist/components/user-action/Menu.mjs +1 -1
  239. package/dist/components/user-action/Menu.mjs.map +1 -1
  240. package/dist/components/user-action/ScrollPicker.js +8 -6
  241. package/dist/components/user-action/ScrollPicker.js.map +1 -1
  242. package/dist/components/user-action/ScrollPicker.mjs +8 -6
  243. package/dist/components/user-action/ScrollPicker.mjs.map +1 -1
  244. package/dist/components/user-action/SearchBar.d.mts +1 -2
  245. package/dist/components/user-action/SearchBar.d.ts +1 -2
  246. package/dist/components/user-action/SearchBar.js +93 -178
  247. package/dist/components/user-action/SearchBar.js.map +1 -1
  248. package/dist/components/user-action/SearchBar.mjs +86 -171
  249. package/dist/components/user-action/SearchBar.mjs.map +1 -1
  250. package/dist/components/user-action/Textarea.d.mts +22 -11
  251. package/dist/components/user-action/Textarea.d.ts +22 -11
  252. package/dist/components/user-action/Textarea.js +101 -92
  253. package/dist/components/user-action/Textarea.js.map +1 -1
  254. package/dist/components/user-action/Textarea.mjs +100 -92
  255. package/dist/components/user-action/Textarea.mjs.map +1 -1
  256. package/dist/components/user-action/input/Input.d.mts +37 -0
  257. package/dist/components/user-action/input/Input.d.ts +37 -0
  258. package/dist/components/user-action/input/Input.js +244 -0
  259. package/dist/components/user-action/input/Input.js.map +1 -0
  260. package/dist/components/user-action/input/Input.mjs +209 -0
  261. package/dist/components/user-action/input/Input.mjs.map +1 -0
  262. package/dist/components/user-action/input/InsideLabelInput.d.mts +20 -0
  263. package/dist/components/user-action/input/InsideLabelInput.d.ts +20 -0
  264. package/dist/components/user-action/input/InsideLabelInput.js +295 -0
  265. package/dist/components/user-action/input/InsideLabelInput.js.map +1 -0
  266. package/dist/components/user-action/input/InsideLabelInput.mjs +260 -0
  267. package/dist/components/user-action/input/InsideLabelInput.mjs.map +1 -0
  268. package/dist/components/user-action/input/ToggleableInput.d.mts +22 -0
  269. package/dist/components/user-action/input/ToggleableInput.d.ts +22 -0
  270. package/dist/components/user-action/{Input.js → input/ToggleableInput.js} +136 -171
  271. package/dist/components/user-action/input/ToggleableInput.js.map +1 -0
  272. package/dist/components/user-action/input/ToggleableInput.mjs +264 -0
  273. package/dist/components/user-action/input/ToggleableInput.mjs.map +1 -0
  274. package/dist/components/user-action/select/Select.d.mts +98 -0
  275. package/dist/components/user-action/select/Select.d.ts +98 -0
  276. package/dist/components/user-action/select/Select.js +1354 -0
  277. package/dist/components/user-action/select/Select.js.map +1 -0
  278. package/dist/components/user-action/select/Select.mjs +1320 -0
  279. package/dist/components/user-action/select/Select.mjs.map +1 -0
  280. package/dist/components/utils/FocusTrap.d.mts +28 -0
  281. package/dist/components/utils/FocusTrap.d.ts +28 -0
  282. package/dist/components/utils/FocusTrap.js +252 -0
  283. package/dist/components/utils/FocusTrap.js.map +1 -0
  284. package/dist/components/utils/FocusTrap.mjs +229 -0
  285. package/dist/components/utils/FocusTrap.mjs.map +1 -0
  286. package/dist/components/utils/Transition.d.mts +26 -0
  287. package/dist/components/utils/Transition.d.ts +26 -0
  288. package/dist/components/utils/Transition.js +74 -0
  289. package/dist/components/utils/Transition.js.map +1 -0
  290. package/dist/components/utils/Transition.mjs +50 -0
  291. package/dist/components/utils/Transition.mjs.map +1 -0
  292. package/dist/hooks/focus/useFocusGuards.d.mts +3 -0
  293. package/dist/hooks/focus/useFocusGuards.d.ts +3 -0
  294. package/dist/hooks/focus/useFocusGuards.js +74 -0
  295. package/dist/hooks/focus/useFocusGuards.js.map +1 -0
  296. package/dist/hooks/focus/useFocusGuards.mjs +50 -0
  297. package/dist/hooks/focus/useFocusGuards.mjs.map +1 -0
  298. package/dist/hooks/{useFocusManagement.js → focus/useFocusManagement.js} +1 -1
  299. package/dist/hooks/focus/useFocusManagement.js.map +1 -0
  300. package/dist/hooks/{useFocusManagement.mjs → focus/useFocusManagement.mjs} +1 -1
  301. package/dist/hooks/focus/useFocusManagement.mjs.map +1 -0
  302. package/dist/hooks/{useFocusOnceVisible.js → focus/useFocusOnceVisible.js} +1 -1
  303. package/dist/hooks/focus/useFocusOnceVisible.js.map +1 -0
  304. package/dist/hooks/{useFocusOnceVisible.mjs → focus/useFocusOnceVisible.mjs} +1 -1
  305. package/dist/hooks/focus/useFocusOnceVisible.mjs.map +1 -0
  306. package/dist/hooks/focus/useFocusTrap.d.mts +16 -0
  307. package/dist/hooks/focus/useFocusTrap.d.ts +16 -0
  308. package/dist/hooks/focus/useFocusTrap.js +233 -0
  309. package/dist/hooks/focus/useFocusTrap.js.map +1 -0
  310. package/dist/hooks/focus/useFocusTrap.mjs +210 -0
  311. package/dist/hooks/focus/useFocusTrap.mjs.map +1 -0
  312. package/dist/hooks/focus/useIsMounted.d.mts +3 -0
  313. package/dist/hooks/focus/useIsMounted.d.ts +3 -0
  314. package/dist/hooks/focus/useIsMounted.js +43 -0
  315. package/dist/hooks/focus/useIsMounted.js.map +1 -0
  316. package/dist/hooks/focus/useIsMounted.mjs +20 -0
  317. package/dist/hooks/focus/useIsMounted.mjs.map +1 -0
  318. package/dist/hooks/useFloatingElement.d.mts +22 -0
  319. package/dist/hooks/useFloatingElement.d.ts +22 -0
  320. package/dist/hooks/useFloatingElement.js +162 -0
  321. package/dist/hooks/useFloatingElement.js.map +1 -0
  322. package/dist/hooks/useFloatingElement.mjs +139 -0
  323. package/dist/hooks/useFloatingElement.mjs.map +1 -0
  324. package/dist/hooks/useLocalStorage.js +2 -2
  325. package/dist/hooks/useLocalStorage.js.map +1 -1
  326. package/dist/hooks/useLocalStorage.mjs +2 -2
  327. package/dist/hooks/useLocalStorage.mjs.map +1 -1
  328. package/dist/hooks/useLogOnce.d.mts +3 -4
  329. package/dist/hooks/useLogOnce.d.ts +3 -4
  330. package/dist/hooks/useLogOnce.js +5 -5
  331. package/dist/hooks/useLogOnce.js.map +1 -1
  332. package/dist/hooks/useLogOnce.mjs +5 -5
  333. package/dist/hooks/useLogOnce.mjs.map +1 -1
  334. package/dist/hooks/useRerender.d.mts +2 -2
  335. package/dist/hooks/useRerender.d.ts +2 -2
  336. package/dist/hooks/useSearch.d.mts +2 -2
  337. package/dist/hooks/useSearch.d.ts +2 -2
  338. package/dist/hooks/useSearch.js +1 -1
  339. package/dist/hooks/useSearch.js.map +1 -1
  340. package/dist/hooks/useSearch.mjs +1 -1
  341. package/dist/hooks/useSearch.mjs.map +1 -1
  342. package/dist/localization/LanguageProvider.d.mts +2 -2
  343. package/dist/localization/LanguageProvider.d.ts +2 -2
  344. package/dist/localization/LanguageProvider.js +2 -2
  345. package/dist/localization/LanguageProvider.js.map +1 -1
  346. package/dist/localization/LanguageProvider.mjs +2 -2
  347. package/dist/localization/LanguageProvider.mjs.map +1 -1
  348. package/dist/localization/defaults/form.d.mts +1 -0
  349. package/dist/localization/defaults/form.d.ts +1 -0
  350. package/dist/localization/defaults/form.js +2 -0
  351. package/dist/localization/defaults/form.js.map +1 -1
  352. package/dist/localization/defaults/form.mjs +2 -0
  353. package/dist/localization/defaults/form.mjs.map +1 -1
  354. package/dist/localization/useTranslation.js.map +1 -1
  355. package/dist/localization/useTranslation.mjs.map +1 -1
  356. package/dist/storybook/helper.d.mts +17 -0
  357. package/dist/storybook/helper.d.ts +17 -0
  358. package/dist/storybook/helper.js +61 -0
  359. package/dist/storybook/helper.js.map +1 -0
  360. package/dist/storybook/helper.mjs +37 -0
  361. package/dist/storybook/helper.mjs.map +1 -0
  362. package/dist/{css → style}/globals.css +779 -374
  363. package/dist/{css → style}/uncompiled/globals.css +75 -13
  364. package/dist/{css → style}/uncompiled/theme/colors-component.css +18 -4
  365. package/dist/{css → style}/uncompiled/theme/colors-semantic.css +2 -9
  366. package/dist/style/uncompiled/typography.css +171 -0
  367. package/dist/{css → style}/uncompiled/utitlity/animation.css +54 -42
  368. package/dist/{css → style}/uncompiled/utitlity/index.css +2 -1
  369. package/dist/{css → style}/uncompiled/utitlity/shadow.css +5 -1
  370. package/dist/style/uncompiled/utitlity/sizing.css +29 -0
  371. package/dist/theming/useTheme.d.mts +2 -2
  372. package/dist/theming/useTheme.d.ts +2 -2
  373. package/dist/theming/useTheme.js +3 -3
  374. package/dist/theming/useTheme.js.map +1 -1
  375. package/dist/theming/useTheme.mjs +3 -3
  376. package/dist/theming/useTheme.mjs.map +1 -1
  377. package/dist/{util → utils}/array.d.mts +1 -0
  378. package/dist/{util → utils}/array.d.ts +1 -0
  379. package/dist/{util → utils}/array.js +15 -2
  380. package/dist/utils/array.js.map +1 -0
  381. package/dist/{util → utils}/array.mjs +15 -2
  382. package/dist/utils/array.mjs.map +1 -0
  383. package/dist/utils/bagFunctions.d.mts +15 -0
  384. package/dist/utils/bagFunctions.d.ts +15 -0
  385. package/dist/{util/PropsWithFunctionChildren.js → utils/bagFunctions.js} +5 -5
  386. package/dist/utils/bagFunctions.js.map +1 -0
  387. package/dist/{util/PropsWithFunctionChildren.mjs → utils/bagFunctions.mjs} +2 -2
  388. package/dist/utils/bagFunctions.mjs.map +1 -0
  389. package/dist/{util → utils}/builder.js +1 -1
  390. package/dist/utils/builder.js.map +1 -0
  391. package/dist/{util → utils}/builder.mjs +1 -1
  392. package/dist/utils/builder.mjs.map +1 -0
  393. package/dist/{util → utils}/date.js +3 -3
  394. package/dist/utils/date.js.map +1 -0
  395. package/dist/{util → utils}/date.mjs +2 -2
  396. package/dist/utils/date.mjs.map +1 -0
  397. package/dist/{util → utils}/easeFunctions.js +5 -4
  398. package/dist/utils/easeFunctions.js.map +1 -0
  399. package/dist/{util → utils}/easeFunctions.mjs +4 -3
  400. package/dist/utils/easeFunctions.mjs.map +1 -0
  401. package/dist/{util → utils}/emailValidation.js +1 -1
  402. package/dist/utils/emailValidation.js.map +1 -0
  403. package/dist/{util → utils}/emailValidation.mjs +1 -1
  404. package/dist/utils/emailValidation.mjs.map +1 -0
  405. package/dist/{util → utils}/loopingArray.js +1 -1
  406. package/dist/utils/loopingArray.js.map +1 -0
  407. package/dist/{util → utils}/loopingArray.mjs +1 -1
  408. package/dist/utils/loopingArray.mjs.map +1 -0
  409. package/dist/utils/match.d.mts +3 -0
  410. package/dist/utils/match.d.ts +3 -0
  411. package/dist/utils/match.js +32 -0
  412. package/dist/utils/match.js.map +1 -0
  413. package/dist/utils/match.mjs +8 -0
  414. package/dist/utils/match.mjs.map +1 -0
  415. package/dist/utils/math.d.mts +3 -0
  416. package/dist/utils/math.d.ts +3 -0
  417. package/dist/{util → utils}/math.js +3 -2
  418. package/dist/utils/math.js.map +1 -0
  419. package/dist/utils/math.mjs +9 -0
  420. package/dist/utils/math.mjs.map +1 -0
  421. package/dist/{util → utils}/noop.js +1 -1
  422. package/dist/utils/noop.js.map +1 -0
  423. package/dist/utils/noop.mjs +6 -0
  424. package/dist/utils/noop.mjs.map +1 -0
  425. package/dist/{util → utils}/resolveSetState.js +1 -1
  426. package/dist/utils/resolveSetState.js.map +1 -0
  427. package/dist/{util → utils}/resolveSetState.mjs +1 -1
  428. package/dist/utils/resolveSetState.mjs.map +1 -0
  429. package/dist/{util → utils}/simpleSearch.js +1 -1
  430. package/dist/utils/simpleSearch.js.map +1 -0
  431. package/dist/{util → utils}/simpleSearch.mjs +1 -1
  432. package/dist/utils/simpleSearch.mjs.map +1 -0
  433. package/dist/{util → utils}/storage.js +1 -1
  434. package/dist/utils/storage.js.map +1 -0
  435. package/dist/{util → utils}/storage.mjs +1 -1
  436. package/dist/utils/storage.mjs.map +1 -0
  437. package/dist/{util → utils}/writeToClipboard.js +2 -1
  438. package/dist/utils/writeToClipboard.js.map +1 -0
  439. package/dist/{util → utils}/writeToClipboard.mjs +3 -1
  440. package/dist/utils/writeToClipboard.mjs.map +1 -0
  441. package/package.json +8 -8
  442. package/dist/components/dialogs/ConfirmDialog.js +0 -674
  443. package/dist/components/dialogs/ConfirmDialog.js.map +0 -1
  444. package/dist/components/dialogs/ConfirmDialog.mjs +0 -638
  445. package/dist/components/dialogs/ConfirmDialog.mjs.map +0 -1
  446. package/dist/components/icons-and-geometry/Helpwave.js.map +0 -1
  447. package/dist/components/icons-and-geometry/Helpwave.mjs.map +0 -1
  448. package/dist/components/layout-and-navigation/Overlay.d.mts +0 -67
  449. package/dist/components/layout-and-navigation/Overlay.d.ts +0 -67
  450. package/dist/components/layout-and-navigation/Overlay.js +0 -702
  451. package/dist/components/layout-and-navigation/Overlay.js.map +0 -1
  452. package/dist/components/layout-and-navigation/Overlay.mjs +0 -665
  453. package/dist/components/layout-and-navigation/Overlay.mjs.map +0 -1
  454. package/dist/components/layout-and-navigation/SearchableList.d.mts +0 -24
  455. package/dist/components/layout-and-navigation/SearchableList.d.ts +0 -24
  456. package/dist/components/layout-and-navigation/SearchableList.js +0 -758
  457. package/dist/components/layout-and-navigation/SearchableList.js.map +0 -1
  458. package/dist/components/layout-and-navigation/SearchableList.mjs +0 -724
  459. package/dist/components/layout-and-navigation/SearchableList.mjs.map +0 -1
  460. package/dist/components/layout-and-navigation/Tile.d.mts +0 -27
  461. package/dist/components/layout-and-navigation/Tile.d.ts +0 -27
  462. package/dist/components/layout-and-navigation/Tile.js +0 -96
  463. package/dist/components/layout-and-navigation/Tile.js.map +0 -1
  464. package/dist/components/layout-and-navigation/Tile.mjs +0 -61
  465. package/dist/components/layout-and-navigation/Tile.mjs.map +0 -1
  466. package/dist/components/modals/ConfirmModal.d.mts +0 -33
  467. package/dist/components/modals/ConfirmModal.d.ts +0 -33
  468. package/dist/components/modals/ConfirmModal.js +0 -687
  469. package/dist/components/modals/ConfirmModal.js.map +0 -1
  470. package/dist/components/modals/ConfirmModal.mjs +0 -651
  471. package/dist/components/modals/ConfirmModal.mjs.map +0 -1
  472. package/dist/components/modals/DiscardChangesModal.d.mts +0 -20
  473. package/dist/components/modals/DiscardChangesModal.d.ts +0 -20
  474. package/dist/components/modals/DiscardChangesModal.js +0 -717
  475. package/dist/components/modals/DiscardChangesModal.js.map +0 -1
  476. package/dist/components/modals/DiscardChangesModal.mjs +0 -681
  477. package/dist/components/modals/DiscardChangesModal.mjs.map +0 -1
  478. package/dist/components/modals/InputModal.d.mts +0 -21
  479. package/dist/components/modals/InputModal.d.ts +0 -21
  480. package/dist/components/modals/InputModal.js +0 -976
  481. package/dist/components/modals/InputModal.js.map +0 -1
  482. package/dist/components/modals/InputModal.mjs +0 -940
  483. package/dist/components/modals/InputModal.mjs.map +0 -1
  484. package/dist/components/modals/LanguageModal.d.mts +0 -21
  485. package/dist/components/modals/LanguageModal.d.ts +0 -21
  486. package/dist/components/modals/LanguageModal.js +0 -1468
  487. package/dist/components/modals/LanguageModal.js.map +0 -1
  488. package/dist/components/modals/LanguageModal.mjs +0 -1432
  489. package/dist/components/modals/LanguageModal.mjs.map +0 -1
  490. package/dist/components/modals/ThemeModal.d.mts +0 -21
  491. package/dist/components/modals/ThemeModal.d.ts +0 -21
  492. package/dist/components/modals/ThemeModal.js +0 -1497
  493. package/dist/components/modals/ThemeModal.js.map +0 -1
  494. package/dist/components/modals/ThemeModal.mjs +0 -1461
  495. package/dist/components/modals/ThemeModal.mjs.map +0 -1
  496. package/dist/components/user-action/Input.d.mts +0 -77
  497. package/dist/components/user-action/Input.d.ts +0 -77
  498. package/dist/components/user-action/Input.js.map +0 -1
  499. package/dist/components/user-action/Input.mjs +0 -298
  500. package/dist/components/user-action/Input.mjs.map +0 -1
  501. package/dist/components/user-action/MultiSelect.d.mts +0 -42
  502. package/dist/components/user-action/MultiSelect.d.ts +0 -42
  503. package/dist/components/user-action/MultiSelect.js +0 -1468
  504. package/dist/components/user-action/MultiSelect.js.map +0 -1
  505. package/dist/components/user-action/MultiSelect.mjs +0 -1433
  506. package/dist/components/user-action/MultiSelect.mjs.map +0 -1
  507. package/dist/components/user-action/Select.d.mts +0 -41
  508. package/dist/components/user-action/Select.d.ts +0 -41
  509. package/dist/components/user-action/Select.js +0 -1236
  510. package/dist/components/user-action/Select.js.map +0 -1
  511. package/dist/components/user-action/Select.mjs +0 -1201
  512. package/dist/components/user-action/Select.mjs.map +0 -1
  513. package/dist/components/user-action/ToggleableInput.d.mts +0 -37
  514. package/dist/components/user-action/ToggleableInput.d.ts +0 -37
  515. package/dist/components/user-action/ToggleableInput.js +0 -192
  516. package/dist/components/user-action/ToggleableInput.js.map +0 -1
  517. package/dist/components/user-action/ToggleableInput.mjs +0 -157
  518. package/dist/components/user-action/ToggleableInput.mjs.map +0 -1
  519. package/dist/css/uncompiled/textstyles.css +0 -69
  520. package/dist/hooks/useFocusManagement.js.map +0 -1
  521. package/dist/hooks/useFocusManagement.mjs.map +0 -1
  522. package/dist/hooks/useFocusOnceVisible.js.map +0 -1
  523. package/dist/hooks/useFocusOnceVisible.mjs.map +0 -1
  524. package/dist/index.d.mts +0 -103
  525. package/dist/index.d.ts +0 -103
  526. package/dist/index.js +0 -12610
  527. package/dist/index.js.map +0 -1
  528. package/dist/index.mjs +0 -12447
  529. package/dist/index.mjs.map +0 -1
  530. package/dist/util/PropsWithFunctionChildren.d.mts +0 -14
  531. package/dist/util/PropsWithFunctionChildren.d.ts +0 -14
  532. package/dist/util/PropsWithFunctionChildren.js.map +0 -1
  533. package/dist/util/PropsWithFunctionChildren.mjs.map +0 -1
  534. package/dist/util/array.js.map +0 -1
  535. package/dist/util/array.mjs.map +0 -1
  536. package/dist/util/builder.js.map +0 -1
  537. package/dist/util/builder.mjs.map +0 -1
  538. package/dist/util/date.js.map +0 -1
  539. package/dist/util/date.mjs.map +0 -1
  540. package/dist/util/easeFunctions.js.map +0 -1
  541. package/dist/util/easeFunctions.mjs.map +0 -1
  542. package/dist/util/emailValidation.js.map +0 -1
  543. package/dist/util/emailValidation.mjs.map +0 -1
  544. package/dist/util/loopingArray.js.map +0 -1
  545. package/dist/util/loopingArray.mjs.map +0 -1
  546. package/dist/util/math.d.mts +0 -3
  547. package/dist/util/math.d.ts +0 -3
  548. package/dist/util/math.js.map +0 -1
  549. package/dist/util/math.mjs +0 -8
  550. package/dist/util/math.mjs.map +0 -1
  551. package/dist/util/news.d.mts +0 -101
  552. package/dist/util/news.d.ts +0 -101
  553. package/dist/util/news.js +0 -76
  554. package/dist/util/news.js.map +0 -1
  555. package/dist/util/news.mjs +0 -49
  556. package/dist/util/news.mjs.map +0 -1
  557. package/dist/util/noop.js.map +0 -1
  558. package/dist/util/noop.mjs +0 -6
  559. package/dist/util/noop.mjs.map +0 -1
  560. package/dist/util/resolveSetState.js.map +0 -1
  561. package/dist/util/resolveSetState.mjs.map +0 -1
  562. package/dist/util/simpleSearch.js.map +0 -1
  563. package/dist/util/simpleSearch.mjs.map +0 -1
  564. package/dist/util/storage.js.map +0 -1
  565. package/dist/util/storage.mjs.map +0 -1
  566. package/dist/util/types.d.mts +0 -3
  567. package/dist/util/types.d.ts +0 -3
  568. package/dist/util/types.js +0 -18
  569. package/dist/util/types.js.map +0 -1
  570. package/dist/util/types.mjs +0 -1
  571. package/dist/util/types.mjs.map +0 -1
  572. package/dist/util/writeToClipboard.js.map +0 -1
  573. package/dist/util/writeToClipboard.mjs.map +0 -1
  574. /package/dist/hooks/{useFocusManagement.d.mts → focus/useFocusManagement.d.mts} +0 -0
  575. /package/dist/hooks/{useFocusManagement.d.ts → focus/useFocusManagement.d.ts} +0 -0
  576. /package/dist/hooks/{useFocusOnceVisible.d.mts → focus/useFocusOnceVisible.d.mts} +0 -0
  577. /package/dist/hooks/{useFocusOnceVisible.d.ts → focus/useFocusOnceVisible.d.ts} +0 -0
  578. /package/dist/{css → style}/uncompiled/theme/colors-basic.css +0 -0
  579. /package/dist/{css → style}/uncompiled/theme/index.css +0 -0
  580. /package/dist/{css → style}/uncompiled/theme/variants.css +0 -0
  581. /package/dist/{css → style}/uncompiled/utitlity/borderradius.css +0 -0
  582. /package/dist/{css → style}/uncompiled/utitlity/general.css +0 -0
  583. /package/dist/{util → utils}/builder.d.mts +0 -0
  584. /package/dist/{util → utils}/builder.d.ts +0 -0
  585. /package/dist/{util → utils}/date.d.mts +0 -0
  586. /package/dist/{util → utils}/date.d.ts +0 -0
  587. /package/dist/{util → utils}/easeFunctions.d.mts +0 -0
  588. /package/dist/{util → utils}/easeFunctions.d.ts +0 -0
  589. /package/dist/{util → utils}/emailValidation.d.mts +0 -0
  590. /package/dist/{util → utils}/emailValidation.d.ts +0 -0
  591. /package/dist/{util → utils}/loopingArray.d.mts +0 -0
  592. /package/dist/{util → utils}/loopingArray.d.ts +0 -0
  593. /package/dist/{util → utils}/noop.d.mts +0 -0
  594. /package/dist/{util → utils}/noop.d.ts +0 -0
  595. /package/dist/{util → utils}/resolveSetState.d.mts +0 -0
  596. /package/dist/{util → utils}/resolveSetState.d.ts +0 -0
  597. /package/dist/{util → utils}/simpleSearch.d.mts +0 -0
  598. /package/dist/{util → utils}/simpleSearch.d.ts +0 -0
  599. /package/dist/{util → utils}/storage.d.mts +0 -0
  600. /package/dist/{util → utils}/storage.d.ts +0 -0
  601. /package/dist/{util → utils}/writeToClipboard.d.mts +0 -0
  602. /package/dist/{util → utils}/writeToClipboard.d.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/user-action/select/Select.tsx","../../../../src/localization/LanguageProvider.tsx","../../../../src/hooks/useLocalStorage.ts","../../../../src/localization/util.ts","../../../../src/localization/useTranslation.ts","../../../../src/components/layout-and-navigation/Expandable.tsx","../../../../src/utils/noop.ts","../../../../src/hooks/focus/useFocusTrap.ts","../../../../src/hooks/focus/useIsMounted.ts","../../../../src/utils/match.ts","../../../../src/components/layout-and-navigation/Chip.tsx","../../../../src/components/user-action/Button.tsx","../../../../src/hooks/useFloatingElement.ts","../../../../src/utils/math.ts"],"sourcesContent":["import type { ButtonHTMLAttributes, HTMLAttributes, PropsWithChildren, ReactNode } from 'react'\nimport React, {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useId,\n useImperativeHandle,\n useRef,\n useState\n} from 'react'\nimport clsx from 'clsx'\nimport type { Translation } from '@/src/localization/useTranslation'\nimport { useTranslation } from '@/src/localization/useTranslation'\nimport { ExpansionIcon } from '@/src/components/layout-and-navigation/Expandable'\nimport { useFocusTrap } from '@/src/hooks/focus/useFocusTrap'\nimport { match } from '@/src/utils/match'\nimport { CheckIcon, Plus, XIcon } from 'lucide-react'\nimport { Chip } from '@/src/components/layout-and-navigation/Chip'\nimport { IconButton } from '@/src/components/user-action/Button'\nimport type { UseFloatingElementOptions } from '@/src/hooks/useFloatingElement'\nimport { useFloatingElement } from '@/src/hooks/useFloatingElement'\nimport { createPortal } from 'react-dom'\n\n//\n// Context\n//\ntype RegisteredOption = {\n value: string,\n disabled: boolean,\n ref: React.RefObject<HTMLLIElement>,\n}\n\ntype HighlightPosition = 'first' | 'last'\n\ntype InternalSelectContextState = {\n isOpen: boolean,\n highlightedValue?: string,\n}\n\ntype SelectContextState = InternalSelectContextState & {\n id: string,\n value: string[],\n disabled: boolean,\n invalid: boolean,\n isMultiSelect: boolean,\n}\n\ntype ToggleOpenOptions = {\n highlightStartPosition?: HighlightPosition,\n}\n\nconst defaultToggleOpenOptions: ToggleOpenOptions = {\n highlightStartPosition: 'first',\n}\n\ntype SelectContextType = {\n state: SelectContextState,\n item: {\n register: (item: RegisteredOption) => void,\n unregister: (value: string) => void,\n toggleSelection: (value: string, isSelected?: boolean) => void,\n highlightItem: (value: string) => void,\n moveHighlightedIndex: (delta: number) => void,\n },\n trigger: {\n ref: React.RefObject<HTMLElement>,\n register: (element: React.RefObject<HTMLElement>) => void,\n unregister: () => void,\n toggleOpen: (isOpen?: boolean, options?: ToggleOpenOptions) => void,\n },\n}\n\nconst SelectContext = createContext<SelectContextType | null>(null)\n\nfunction useSelectContext() {\n const ctx = useContext(SelectContext)\n if (!ctx) {\n throw new Error('SelectContext must be used within a ListBoxPrimitive')\n }\n return ctx\n}\n\n\n//\n// SelectRoot\n//\nexport type SelectRootProps = PropsWithChildren<{\n id?: string,\n value?: string,\n onValueChanged?: (value: string) => void,\n values?: string[],\n onValuesChanged?: (value: string[]) => void,\n isOpen?: boolean,\n disabled?: boolean,\n invalid?: boolean,\n isMultiSelect?: boolean,\n}>\n\nexport const SelectRoot = ({\n children,\n id,\n value,\n onValueChanged,\n values,\n onValuesChanged,\n isOpen = false,\n disabled = false,\n invalid = false,\n isMultiSelect = false,\n }: SelectRootProps) => {\n const optionsRef = useRef<RegisteredOption[]>([])\n const triggerRef = useRef<HTMLElement>(null)\n const generatedId = useId()\n const usedId = id ?? generatedId\n\n const [internalState, setInternalState] = useState<InternalSelectContextState>({\n isOpen,\n })\n\n const state: SelectContextState = {\n ...internalState,\n id: usedId,\n disabled,\n invalid,\n value: isMultiSelect ? (values ?? []) : [value].filter(Boolean),\n isMultiSelect,\n }\n\n const registerItem = useCallback((item: RegisteredOption) => {\n optionsRef.current.push(item)\n optionsRef.current.sort((a, b) => {\n const aEl = a.ref.current\n const bEl = b.ref.current\n if (!aEl || !bEl) return 0\n return aEl.compareDocumentPosition(bEl) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1\n })\n }, [])\n\n const unregisterItem = useCallback((value: string) => {\n optionsRef.current = optionsRef.current.filter(i => i.value !== value)\n }, [])\n\n // Setting isSelected to false only works for multiselects\n const toggleSelection = (value: string, isSelected?: boolean) => {\n if (disabled) {\n return\n }\n const option = optionsRef.current.find(i => i.value === value)\n if (!option) {\n console.error(`SelectOption with value: ${value} not found`)\n return\n }\n\n let newValue: string[]\n if (isMultiSelect) {\n const isSelectedBefore = state.value.includes(value)\n const isSelectedAfter = isSelected ?? !isSelectedBefore\n if (!isSelectedAfter) {\n newValue = state.value.filter(v => v !== value)\n } else {\n newValue = [...state.value, value]\n }\n } else {\n newValue = [value]\n }\n\n if (!isMultiSelect) {\n onValueChanged?.(newValue[0])\n } else {\n onValuesChanged?.(newValue)\n }\n\n setInternalState(prevState => ({\n ...prevState,\n highlightedValue: value,\n }))\n }\n\n const highlightItem = (value: string) => {\n if (disabled) {\n return\n }\n setInternalState(prevState => ({\n ...prevState,\n highlightedValue: value,\n }))\n }\n\n const registerTrigger = useCallback((ref: React.RefObject<HTMLElement>) => {\n triggerRef.current = ref.current\n }, [])\n\n const unregisterTrigger = useCallback(() => {\n triggerRef.current = null\n }, [])\n\n const toggleOpen = (isOpen?: boolean, options?: ToggleOpenOptions) => {\n const { highlightStartPosition } = { ...defaultToggleOpenOptions, ...options }\n let highlightedIndex: number\n if (highlightStartPosition === 'first') {\n highlightedIndex = optionsRef.current.findIndex(option => !option.disabled)\n } else {\n highlightedIndex = optionsRef.current.length - 1 - [...optionsRef.current].reverse().findIndex(option => !option.disabled)\n }\n if (highlightedIndex === -1 || highlightedIndex === optionsRef.current.length) {\n highlightedIndex = 0\n }\n setInternalState(prevState => ({\n ...prevState,\n isOpen: isOpen ?? !prevState.isOpen,\n highlightedValue: optionsRef.current[highlightedIndex].value,\n }))\n }\n\n const moveHighlightedIndex = (delta: number) => {\n let highlightedIndex = optionsRef.current.findIndex(value => value.value === internalState.highlightedValue)\n if (highlightedIndex === -1) {\n highlightedIndex = 0\n }\n const optionLength = optionsRef.current.length\n const startIndex = (highlightedIndex + (delta % optionLength) + optionLength) % optionLength\n const isForward = delta >= 0\n let highlightedValue = optionsRef.current[startIndex].value\n for (let i = 0; i < optionsRef.current.length; i++) {\n const index = (startIndex + (isForward ? i : -i) + optionLength) % optionLength\n if (!optionsRef.current[index].disabled) {\n highlightedValue = optionsRef.current[index].value\n break\n }\n }\n\n setInternalState(prevState => ({\n ...prevState,\n highlightedValue,\n }))\n }\n\n useEffect(() => {\n if (!internalState.highlightedValue) return\n const highlighted = optionsRef.current.find(value => value.value === internalState.highlightedValue)\n if (highlighted) {\n highlighted.ref.current.scrollIntoView({ behavior: 'instant', block: 'nearest' })\n } else {\n console.error(`SelectRoot: Could not find highlighted value (${internalState.highlightedValue})`)\n }\n }, [internalState.highlightedValue])\n\n const contextValue: SelectContextType = {\n state,\n item: {\n register: registerItem,\n unregister: unregisterItem,\n toggleSelection,\n highlightItem,\n moveHighlightedIndex,\n },\n trigger: {\n ref: triggerRef,\n register: registerTrigger,\n unregister: unregisterTrigger,\n toggleOpen,\n },\n }\n\n return (\n <SelectContext.Provider value={contextValue}>\n {children}\n </SelectContext.Provider>\n )\n}\n\n//\n// SelectOption\n//\nexport type SelectOptionProps = Omit<HTMLAttributes<HTMLLIElement>, 'children'> & {\n value: string,\n disabled?: boolean,\n children?: ReactNode,\n}\n\nexport const SelectOption = forwardRef<HTMLLIElement, SelectOptionProps>(\n function SelectOption({ value, disabled = false, children, className, ...restProps }, ref) {\n const { state, item, trigger } = useSelectContext()\n const { register, unregister, toggleSelection, highlightItem } = item\n const itemRef = useRef<HTMLLIElement>(null)\n\n // Register with parent\n useEffect(() => {\n register({\n value,\n disabled,\n ref: itemRef,\n })\n return () => unregister(value)\n }, [value, disabled, register, unregister, children])\n\n const isHighlighted = state.highlightedValue === value\n const isSelected = state.value.includes(value)\n\n return (\n <li\n {...restProps}\n ref={(node) => {\n itemRef.current = node\n if (typeof ref === 'function') ref(node)\n else if (ref) (ref as React.MutableRefObject<HTMLLIElement | null>).current = node\n }}\n id={value}\n role=\"option\"\n aria-disabled={disabled}\n aria-selected={isSelected}\n data-highlighted={isHighlighted ? '' : undefined}\n data-selected={isSelected ? '' : undefined}\n data-disabled={disabled ? '' : undefined}\n className={clsx(\n 'flex-row-1 items-center px-2 py-1 rounded-md',\n 'data-highlighted:bg-primary/20',\n 'data-disabled:text-disabled data-disabled:cursor-not-allowed',\n 'not-data-disabled:cursor-pointer',\n className\n )}\n onClick={(event) => {\n if (!disabled) {\n toggleSelection(value)\n if (!state.isMultiSelect) {\n trigger.toggleOpen(false)\n }\n restProps.onClick?.(event)\n }\n }}\n onMouseEnter={(event) => {\n if (!disabled) {\n highlightItem(value)\n restProps.onMouseEnter?.(event)\n }\n }}\n >\n <CheckIcon\n className={clsx('w-4 h-4', { 'opacity-0': !isSelected || disabled })}\n aria-hidden={true}\n />\n {children ?? value}\n </li>\n )\n }\n)\n\n///\n/// SelectButton\n///\ntype SelectButtonTranslationType = {\n clickToSelect: string,\n}\n\nconst defaultSelectButtonTranslation: Translation<SelectButtonTranslationType> = {\n en: {\n clickToSelect: 'Click to select',\n\n },\n de: {\n clickToSelect: 'Zum auswählen drücken'\n }\n}\n\ntype SelectButtonProps = ButtonHTMLAttributes<HTMLButtonElement> & {\n placeholder?: ReactNode,\n selectedDisplay?: (value: string[]) => ReactNode,\n}\n\nexport const SelectButton = forwardRef<HTMLButtonElement, SelectButtonProps>(function SelectButton(\n { placeholder, selectedDisplay, ...props }, ref\n) {\n const translation = useTranslation([defaultSelectButtonTranslation])\n const { state, trigger } = useSelectContext()\n const { register, unregister, toggleOpen } = trigger\n\n const innerRef = useRef<HTMLButtonElement>(null)\n useImperativeHandle(ref, () => innerRef.current)\n\n useEffect(() => {\n register(innerRef)\n return () => unregister()\n }, [register, unregister])\n\n const disabled = !!props?.disabled || !!state.disabled\n const invalid = state.invalid\n const hasValue = state.value.length > 0\n\n return (\n <button\n {...props}\n ref={innerRef}\n id={state.id} // TODO allow for a custom id here\n className={clsx(\n 'flex-row-2 items-center justify-between bg-input-background text-input-text rounded-md px-2.5 py-2.5',\n 'data-placeholder:text-description',\n props.className\n )}\n onClick={() => toggleOpen(!state.isOpen)}\n onKeyDown={event => {\n switch (event.key) {\n case 'ArrowDown':\n toggleOpen(true, { highlightStartPosition: 'first' })\n break\n case 'ArrowUp':\n toggleOpen(true, { highlightStartPosition: 'last' })\n break\n }\n }}\n\n data-placeholder={!hasValue ? '' : undefined}\n data-disabled={disabled ? '' : undefined}\n data-invalid={invalid ? '' : undefined}\n\n aria-invalid={invalid}\n aria-disabled={disabled}\n aria-haspopup=\"listbox\"\n aria-expanded={state.isOpen}\n aria-controls={state.isOpen ? `${state.id}-listbox` : undefined}\n >\n {hasValue ?\n selectedDisplay?.(state.value) ?? state.value.join(', ')\n : placeholder ?? translation('clickToSelect')\n }\n <ExpansionIcon isExpanded={state.isOpen}/>\n </button>\n )\n})\n\n///\n/// SelectChipDisplay\n///\ntype SelectChipDisplayProps = HTMLAttributes<HTMLDivElement> & {\n disabled?: boolean,\n placeholder?: ReactNode,\n}\n\nexport const SelectChipDisplay = forwardRef<HTMLDivElement, SelectChipDisplayProps>(function SelectChipDisplay(\n { ...props }, ref\n) {\n const { state, trigger, item } = useSelectContext()\n const { register, unregister, toggleOpen } = trigger\n\n const innerRef = useRef<HTMLDivElement>(null)\n useImperativeHandle(ref, () => innerRef.current)\n\n useEffect(() => {\n register(innerRef)\n return () => unregister()\n }, [register, unregister])\n\n const disabled = !!props?.disabled || !!state.disabled\n const invalid = state.invalid\n\n return (\n <div\n {...props}\n ref={innerRef}\n className={clsx(\n 'flex flex-wrap flex-row gap-2 items-center bg-input-background text-input-text rounded-md px-2.5 py-2.5',\n props.className\n )}\n data-disabled={disabled ? '' : undefined}\n data-invalid={invalid ? '' : undefined}\n\n aria-invalid={invalid}\n aria-disabled={disabled}\n >\n {state.value.map((value) => (\n <Chip key={value} className=\"gap-x-2\">\n {value}\n <button\n // TODO add label to indicate purpose to screen reader\n onClick={() => {\n item.toggleSelection(value, false)\n }}\n className=\"focus-within:text-negative hover:bg-negative/20 hover:text-negative rounded-md focus-style-none focus-visible:ring-2 focus-visible:ring-negative focus-visible:bg-negative/20\"\n >\n <XIcon/>\n </button>\n </Chip>\n ))}\n <IconButton\n id={state.id} // TODO allow for a custom id here\n onClick={() => toggleOpen()}\n onKeyDown={event => {\n switch (event.key) {\n case 'ArrowDown':\n toggleOpen(true, { highlightStartPosition: 'first' })\n break\n case 'ArrowUp':\n toggleOpen(true, { highlightStartPosition: 'last' })\n }\n }}\n size=\"small\"\n color=\"neutral\"\n\n aria-invalid={invalid}\n aria-disabled={disabled}\n aria-haspopup=\"listbox\"\n aria-expanded={state.isOpen}\n aria-controls={state.isOpen ? `${state.id}-listbox` : undefined}\n >\n <Plus/>\n </IconButton>\n </div>\n )\n})\n\n\n///\n/// SelectContent\n///\ntype Orientation = 'vertical' | 'horizontal'\n\nexport type SelectContentProps = HTMLAttributes<HTMLUListElement> & {\n alignment?: Pick<UseFloatingElementOptions, 'gap' | 'horizontalAlignment' | 'verticalAlignment'>,\n orientation?: Orientation,\n}\n\nexport const SelectContent = forwardRef<HTMLUListElement, SelectContentProps>(\n function SelectContent({\n alignment,\n orientation = 'vertical',\n ...props\n }, ref) {\n const innerRef = useRef<HTMLUListElement | null>(null)\n useImperativeHandle(ref, () => innerRef.current)\n\n const { trigger, state, item } = useSelectContext()\n\n const position = useFloatingElement({\n active: state.isOpen,\n anchorRef: trigger.ref,\n containerRef: innerRef,\n ...alignment,\n })\n\n useFocusTrap({\n container: innerRef,\n active: state.isOpen && !!position,\n })\n\n return createPortal(\n <>\n <div\n hidden={!state.isOpen}\n onClick={() => trigger.toggleOpen(false)}\n className={clsx('fixed w-screen h-screen inset-0')}\n />\n <ul\n {...props}\n id={`${state.id}-listbox`}\n ref={innerRef}\n hidden={!state.isOpen}\n onKeyDown={(event) => {\n switch (event.key) {\n case 'Escape':\n trigger.toggleOpen(false)\n event.preventDefault()\n event.stopPropagation()\n break\n case match(orientation, {\n vertical: 'ArrowDown',\n horizontal: 'ArrowUp'\n }):\n item.moveHighlightedIndex(1)\n event.preventDefault()\n break\n case match(orientation, {\n vertical: 'ArrowUp',\n horizontal: 'ArrowDown'\n }):\n item.moveHighlightedIndex(-1)\n event.preventDefault()\n break\n case 'Home':\n // TODO support later by selecting the first not disabled entry\n event.preventDefault()\n break\n case 'End':\n // TODO support later by selecting the last not disabled entry\n event.preventDefault()\n break\n case 'Enter': // Fall through\n case ' ':\n if (state.highlightedValue) {\n item.toggleSelection(state.highlightedValue)\n if (!state.isMultiSelect) {\n trigger.toggleOpen(false)\n }\n event.preventDefault()\n }\n break\n }\n }}\n\n className={clsx('flex-col-0 p-2 bg-menu-background text-menu-text rounded-md shadow-hw-bottom focus-style-within overflow-auto', props.className)}\n style={{\n opacity: position ? undefined : 0,\n position: 'fixed',\n ...position\n }}\n\n role=\"listbox\"\n aria-multiselectable={state.isMultiSelect}\n aria-orientation={orientation}\n tabIndex={position ? 0 : undefined}\n >\n {props.children}\n </ul>\n </>, document.body\n )\n }\n)\n\n//\n// Select\n//\nexport type SelectProps = Omit<SelectRootProps, 'isMultiSelect' | 'values' | 'onValuesChanged'> & {\n contentPanelProps?: SelectContentProps,\n buttonProps?: Omit<SelectButtonProps, 'selectedDisplay'> & { selectedDisplay?: (value: string) => ReactNode },\n}\n\nexport const Select = forwardRef<HTMLButtonElement, SelectProps>(function Select({\n children,\n contentPanelProps,\n buttonProps,\n ...props\n }, ref) {\n return (\n <SelectRoot {...props} isMultiSelect={false}>\n <SelectButton\n ref={ref}\n {...buttonProps}\n selectedDisplay={values => {\n const value = values[0]\n if(!buttonProps?.selectedDisplay) return undefined\n return buttonProps.selectedDisplay(value)\n }}\n />\n <SelectContent {...contentPanelProps}>{children}</SelectContent>\n </SelectRoot>\n )\n})\n\n\nexport type SelectUncontrolledProps = SelectProps\nexport const SelectUncontrolled = forwardRef<HTMLButtonElement, SelectUncontrolledProps>(function SelectUncontrolled({\n value: initialValue,\n onValueChanged,\n ...props\n }, ref) {\n const [value, setValue] = useState(initialValue)\n\n useEffect(() => {\n setValue(initialValue)\n }, [initialValue])\n\n return (\n <Select\n {...props}\n ref={ref}\n value={value}\n onValueChanged={value => {\n setValue(value)\n onValueChanged?.(value)\n }}\n />\n )\n})\n\n\n//\n// MultiSelect\n//\nexport type MultiSelectProps = Omit<SelectRootProps, 'isMultiSelect' | 'value' | 'onValueChanged'> & {\n contentPanelProps?: SelectContentProps,\n buttonProps?: SelectButtonProps,\n}\n\nexport const MultiSelect = forwardRef<HTMLButtonElement, MultiSelectProps>(function MultiSelect({\n children,\n contentPanelProps,\n buttonProps,\n ...props\n }, ref) {\n return (\n <SelectRoot {...props} isMultiSelect={true}>\n <SelectButton ref={ref} {...buttonProps} />\n <SelectContent {...contentPanelProps}>{children}</SelectContent>\n </SelectRoot>\n )\n})\n\n\nexport type MultiSelectUncontrolledProps = MultiSelectProps\nexport const MultiSelectUncontrolled = forwardRef<HTMLButtonElement, MultiSelectUncontrolledProps>(function MultiSelectUncontrolled({\n values: initialValues,\n onValuesChanged,\n ...props\n }, ref) {\n const [values, setValues] = useState(initialValues)\n\n useEffect(() => {\n setValues(initialValues)\n }, [initialValues])\n\n return (\n <MultiSelect\n {...props}\n ref={ref}\n values={values}\n onValuesChanged={value => {\n setValues(value)\n onValuesChanged?.(value)\n }}\n />\n )\n})\n\n\n//\n// MultiSelectChipDisplay\n//\nexport type MultiSelectChipDisplayProps = Omit<SelectRootProps, 'isMultiSelect' | 'value' | 'onValueChanged'> & {\n contentPanelProps?: SelectContentProps,\n chipDisplayProps?: SelectChipDisplayProps,\n}\n\nexport const MultiSelectChipDisplay = forwardRef<HTMLDivElement, MultiSelectChipDisplayProps>(function MultiSelectChipDisplay({\n children,\n contentPanelProps,\n chipDisplayProps,\n ...props\n }, ref) {\n return (\n <SelectRoot {...props} isMultiSelect={true}>\n <SelectChipDisplay ref={ref} {...chipDisplayProps} />\n <SelectContent {...contentPanelProps}>{children}</SelectContent>\n </SelectRoot>\n )\n})\n\n\nexport type MultiSelectChipDisplayUncontrolledProps = MultiSelectChipDisplayProps\nexport const MultiSelectChipDisplayUncontrolled = forwardRef<HTMLDivElement, MultiSelectChipDisplayUncontrolledProps>(function MultiSelectChipDisplayUncontrolled({\n values: initialValues,\n onValuesChanged,\n ...props\n }, ref) {\n const [values, setValues] = useState(initialValues)\n\n useEffect(() => {\n setValues(initialValues)\n }, [initialValues])\n\n return (\n <MultiSelectChipDisplay\n {...props}\n ref={ref}\n values={values}\n onValuesChanged={value => {\n setValues(value)\n onValuesChanged?.(value)\n }}\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 document.documentElement.setAttribute('lang', language)\n setStoredLanguage(language)\n }, [language]) // eslint-disable-line react-hooks/exhaustive-deps\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}","'use client'\n\nimport type { Dispatch, SetStateAction } from 'react'\nimport { useCallback, useState } from 'react'\nimport { LocalStorageService } from '@/src/utils/storage'\nimport { resolveSetState } from '@/src/utils/resolveSetState'\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(action => {\n const newValue = resolveSetState(action, storedValue)\n const storageService = new LocalStorageService()\n storageService.set(key, newValue)\n\n setStoredValue(newValue)\n }, [storedValue, setStoredValue, key])\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\n/**\n * A type describing the pluralization of a word\n */\nexport type TranslationPlural = {\n zero?: string,\n one?: string,\n two?: string,\n few?: string,\n many?: string,\n other: string,\n}\n\n/**\n * The type describing all values of a translation\n */\nexport type TranslationType = Record<string, string | TranslationPlural>\n\n/**\n * The type of translations\n */\nexport type Translation<T extends TranslationType> = Record<Language, T>\n\ntype OverwriteTranslationType<T extends TranslationType> = {\n language?: Language,\n translation?: Translation<Partial<T>>,\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 TranslationType,\n Props = unknown\n> = Props & {\n overwriteTranslation?: OverwriteTranslationType<Translation>,\n}\n\ntype StringKeys<T> = Extract<keyof T, string>;\n\ntype TranslationFunctionOptions = {\n replacements?: Record<string, string>,\n count?: number,\n}\ntype TranslationFunction<T extends TranslationType> = (key: StringKeys<T>, options?: TranslationFunctionOptions) => string\n\nexport const TranslationPluralCount = {\n zero: 0,\n one: 1,\n two: 2,\n few: 3,\n many: 11,\n other: -1,\n}\n\n\nexport const useTranslation = <T extends TranslationType>(\n translations: Translation<Partial<TranslationType>>[],\n overwriteTranslation: OverwriteTranslationType<T> = {}\n): TranslationFunction<T> => {\n const { language: languageProp, translation: overwrite } = overwriteTranslation\n const { language: inferredLanguage } = useLanguage()\n const usedLanguage = languageProp ?? inferredLanguage\n const usedTranslations = [...translations]\n if (overwrite) {\n usedTranslations.push(overwrite)\n }\n\n return (key: StringKeys<T>, options?: TranslationFunctionOptions): string => {\n const { count, replacements } = { ...{ count: 0, replacements: {} }, ...options }\n\n try {\n for (let i = translations.length - 1; i >= 0; i--) {\n const translation = translations[i]\n const localizedTranslation = translation[usedLanguage]\n if (!localizedTranslation) {\n continue\n }\n const value = localizedTranslation[key]\n if(!value) {\n continue\n }\n\n let forProcessing: string\n if (typeof value !== 'string') {\n if (count === TranslationPluralCount.zero && value?.zero) {\n forProcessing = value.zero\n } else if (count === TranslationPluralCount.one && value?.one) {\n forProcessing = value.one\n } else if (count === TranslationPluralCount.two && value?.two) {\n forProcessing = value.two\n } else if (TranslationPluralCount.few <= count && count < TranslationPluralCount.many && value?.few) {\n forProcessing = value.few\n } else if (count > TranslationPluralCount.many && value?.many) {\n forProcessing = value.many\n } else {\n forProcessing = value.other\n }\n } else {\n forProcessing = value\n }\n forProcessing = forProcessing.replace(/\\{\\{(\\w+)}}/g, (_, placeholder) => {\n return replacements[placeholder] ?? `{{key:${placeholder}}}` // fallback if key is missing\n })\n return forProcessing\n }\n } catch (e) {\n console.error(e)\n }\n return `{{${usedLanguage}:${key}}}`\n }\n}","import type { PropsWithChildren, ReactNode } from 'react'\nimport { forwardRef, useCallback, useEffect, useId, useState } from 'react'\nimport { ChevronDown } from 'lucide-react'\nimport clsx from 'clsx'\nimport { noop } from '@/src/utils/noop'\n\nexport type ExpansionIconProps = {\n isExpanded?: boolean,\n className?: string,\n}\n\nexport const ExpansionIcon = ({ isExpanded, className }: ExpansionIconProps) => {\n return (\n <ChevronDown\n aria-hidden={true}\n className={clsx(\n 'min-w-6 w-6 min-h-6 h-6 transition-transform motion-safe:duration-200 motion-reduce:duration-0 ease-in-out',\n { 'rotate-180': isExpanded },\n className\n )}\n />\n )\n}\n\ntype IconBuilder = (expanded: boolean) => ReactNode\n\nexport type ExpandableProps = PropsWithChildren<{\n id?: string,\n label: ReactNode,\n icon?: IconBuilder,\n isExpanded?: boolean,\n onChange?: (isExpanded: boolean) => void,\n /**\n * Whether the expansion should only happen when the header is clicked or on the entire component\n */\n clickOnlyOnHeader?: boolean,\n disabled?: boolean,\n className?: string,\n headerClassName?: string,\n contentClassName?: string,\n contentExpandedClassName?: string,\n}>\n\n/**\n * A Component for showing and hiding content\n */\nexport const Expandable = forwardRef<HTMLDivElement, ExpandableProps>(function Expandable({\n children,\n id: providedId,\n label,\n icon,\n isExpanded = false,\n onChange = noop,\n clickOnlyOnHeader = true,\n disabled = false,\n className,\n headerClassName,\n contentClassName,\n contentExpandedClassName,\n }, ref) {\n\n const defaultIcon = useCallback((expanded: boolean) => <ExpansionIcon isExpanded={expanded}/>, [])\n icon ??= defaultIcon\n\n const generatedId = useId()\n const id = providedId ?? generatedId\n\n return (\n <div\n ref={ref}\n onClick={() => !clickOnlyOnHeader && !disabled && onChange(!isExpanded)}\n\n className={clsx(\n 'flex-col-0 bg-surface text-on-surface group rounded-lg shadow-sm',\n { 'cursor-pointer': !clickOnlyOnHeader && !disabled }, className\n )}\n >\n <button\n onClick={() => clickOnlyOnHeader && !disabled && onChange(!isExpanded)}\n\n className={clsx(\n 'flex-row-2 py-2 px-4 rounded-lg justify-between items-center bg-surface text-on-surface select-none',\n {\n 'group-hover:brightness-97': !isExpanded,\n 'hover:brightness-97': isExpanded && !disabled,\n 'cursor-pointer': clickOnlyOnHeader && !disabled,\n },\n headerClassName\n )}\n\n aria-expanded={isExpanded}\n aria-controls={`${id}-content`}\n aria-disabled={disabled ?? undefined}\n >\n {label}\n {icon(isExpanded)}\n </button>\n <div\n id={`${id}-content`}\n className={clsx(\n 'flex-col-2 px-4 transition-all duration-300 ease-in-out',\n {\n [clsx('max-h-96 opacity-100 pb-2 overflow-y-auto', contentExpandedClassName)]: isExpanded,\n 'max-h-0 opacity-0 overflow-hidden': !isExpanded,\n },\n contentClassName\n )}\n\n role=\"region\"\n >\n {children}\n </div>\n </div>\n )\n})\n\nexport const ExpandableUncontrolled = forwardRef<HTMLDivElement, ExpandableProps>(function ExpandableUncontrolled({\n isExpanded,\n onChange = noop,\n ...props\n },\n ref) {\n const [usedIsExpanded, setUsedIsExpanded] = useState(isExpanded)\n\n useEffect(() => {\n setUsedIsExpanded(isExpanded)\n }, [isExpanded])\n\n return (\n <Expandable\n {...props}\n ref={ref}\n isExpanded={usedIsExpanded}\n onChange={value => {\n onChange(value)\n setUsedIsExpanded(value)\n }}\n />\n )\n})\n","export const noop = () => undefined\n","'use client'\n\nimport type { MutableRefObject } from 'react'\nimport { useCallback, useEffect, useId, useRef, useState } from 'react'\nimport { useIsMounted } from '@/src/hooks/focus/useIsMounted'\n\nconst createFocusGuard = () => {\n const div = document.createElement('div')\n Object.assign(div.style, {\n opacity: '0',\n outline: 'none',\n boxShadow: 'none',\n position: 'fixed',\n pointerEvents: 'none',\n touchAction: 'none',\n })\n div.tabIndex = 0\n div.setAttribute('data-hw-focus-guard', '')\n document.body.appendChild(div)\n return div\n}\n\nfunction getContainedFocusableElements(element: HTMLElement) {\n return element?.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])')\n}\n\ntype ListenerType = {\n id: string,\n pause: () => void,\n unpause: () => void,\n focus: () => void,\n focusLast: () => void,\n container: MutableRefObject<HTMLElement>,\n initialFocusElement: MutableRefObject<HTMLElement>,\n}\n\nclass FocusTrapService {\n // The last entry is always the active one\n private listeners: ListenerType[] = []\n\n public getActive(): ListenerType | undefined {\n if (this.listeners.length === 0) return undefined\n return this.listeners[this.listeners.length - 1]\n }\n\n private focusElement() {\n const active = this.getActive()\n if(!active) return\n const { container, initialFocusElement } = active\n const containerElement = container.current\n // Try in the following order\n // 1. Focus the initial element\n // 2. Focus the first focusable element in the container\n // 3. Focus the container\n if (initialFocusElement?.current) {\n initialFocusElement.current.focus()\n } else {\n const elements = getContainedFocusableElements(containerElement)\n if (elements && elements.length > 0) {\n const first = elements.item(0) as HTMLElement\n first.focus()\n } else {\n containerElement.focus()\n }\n }\n }\n\n private onFocusIn = (event: FocusEvent) => {\n const active = this.getActive()\n if(!active || !active.container.current) return\n const { container } = active\n if (!container.current.contains(event.target as HTMLElement)) {\n this.focusElement()\n }\n }\n\n private removeGuards() {\n document.querySelectorAll('[data-hw-focus-guard]').forEach((node) => node.remove())\n }\n\n private addGuards() {\n document.body.insertAdjacentElement('afterbegin', createFocusGuard())\n document.body.insertAdjacentElement('beforeend', createFocusGuard())\n }\n\n private activate() {\n document.addEventListener('focusin', this.onFocusIn)\n this.addGuards()\n }\n\n private deactivate() {\n document.removeEventListener('focusin', this.onFocusIn)\n this.removeGuards()\n }\n\n register(listener: ListenerType) {\n this.listeners.push(listener)\n if (this.listeners.length === 1) {\n this.activate()\n }\n const active = listener\n this.listeners.forEach((listener) => {\n const { focus, pause } = listener\n if (listener === active) {\n focus()\n } else {\n pause()\n }\n })\n }\n\n unregister(id: string) {\n const index = this.listeners.findIndex(trap => trap.id === id)\n if (index !== -1) {\n const isActive = index === this.listeners.length - 1\n const listener = this.listeners[index]\n this.listeners = this.listeners.filter(listener => listener.id !== id)\n if (isActive) {\n // Deactivate all focus traps\n this.deactivate()\n // Focus last element in previous focus context\n listener.focusLast()\n // Activate and pause remaining focus traps\n const active = this.getActive()\n this.listeners.forEach((listener) => {\n const { pause, unpause } = listener\n if (listener === active) {\n unpause()\n } else {\n pause()\n }\n })\n // Reactivate\n if (this.listeners.length > 0) {\n this.activate()\n }\n }\n } else {\n console.warn(`Unable to unregister id ${id}: not found`)\n }\n }\n}\n\nconst service = new FocusTrapService()\n\nexport type UseFocusTrapProps = {\n container: MutableRefObject<HTMLElement>,\n active?: boolean,\n initialFocus?: MutableRefObject<HTMLElement>,\n /**\n * Whether to focus the first element when the initialFocus isn't provided\n *\n * Focuses the container instead\n */\n focusFirst?: boolean,\n}\n\nexport const useFocusTrap = ({\n container,\n active = true,\n initialFocus,\n focusFirst = true,\n }: UseFocusTrapProps) => {\n const lastFocusRef = useRef<HTMLElement | null>(null)\n const [paused, setPaused] = useState(false)\n const isMounted = useIsMounted()\n const id = useId()\n\n const focusElement = useCallback(() => {\n const containerElement = container.current\n // Try in the following order\n // 1. Focus the initial element\n // 2. Focus the first focusable element in the container\n // 3. Focus the container\n if (initialFocus?.current) {\n initialFocus.current.focus()\n } else {\n const elements = getContainedFocusableElements(containerElement)\n if (elements && elements.length > 0) {\n const first = elements.item(0) as HTMLElement\n first.focus()\n } else {\n containerElement.focus()\n }\n }\n }, [container, initialFocus])\n\n useEffect(() => {\n if (active && isMounted) {\n if (!lastFocusRef.current) {\n lastFocusRef.current = document.activeElement as HTMLElement\n }\n\n function pause() {\n setPaused(true)\n }\n\n function unpause() {\n setPaused(false)\n if (!container.current.contains(document.activeElement as HTMLElement)) {\n focusElement()\n }\n }\n\n function focus() {\n focusElement()\n setPaused(false)\n }\n\n function focusLast() {\n lastFocusRef.current?.focus()\n }\n\n service.register({ id, pause, focus, focusLast, unpause, container, initialFocusElement: initialFocus })\n return () => {\n service.unregister(id)\n lastFocusRef.current = undefined\n }\n }\n }, [active, container, focusElement, id, initialFocus, isMounted])\n\n useEffect(() => {\n if (active && !paused && isMounted) {\n const containerElement = container.current\n\n function onKeyDown(event: KeyboardEvent) {\n const key = event.key\n const elements = getContainedFocusableElements(containerElement)\n const active = document.activeElement as HTMLElement\n const index = [...elements].findIndex(value => value === active)\n if (index === -1 || event.altKey || event.ctrlKey || event.metaKey) {\n return\n }\n if (key === 'Tab') {\n const next = event.shiftKey ? -1 : 1\n const nextIndex = (index + next + elements.length) % elements.length\n const nextElement = elements[nextIndex] as HTMLElement\n nextElement.focus()\n event.preventDefault()\n }\n }\n\n // Register and unregister the listeners\n containerElement.addEventListener('keydown', onKeyDown)\n return () => {\n containerElement.removeEventListener('keydown', onKeyDown)\n }\n }\n }, [active, paused, isMounted, container, initialFocus, focusFirst, focusElement])\n}","'use client'\n\nimport { useEffect, useLayoutEffect, useState } from 'react'\n\nconst isClient = typeof window !== 'undefined' && typeof document !== 'undefined'\nconst useIsomorphicEffect = isClient ? useLayoutEffect : useEffect\n\nexport const useIsMounted = () => {\n const [isMounted, setIsMounted] = useState(false)\n\n useIsomorphicEffect(() => {\n setIsMounted(true)\n return () => {\n setIsMounted(false)\n }\n }, [])\n return isMounted\n}","export const match = <K extends string | number | symbol, V>(key: K, values: Record<K, V>) => {\n return values[key]\n}","import type { HTMLAttributes, PropsWithChildren, ReactNode } from 'react'\nimport clsx from 'clsx'\n\nconst chipColors = ['default', 'dark', 'red', 'yellow', 'green', 'blue', 'pink', 'orange'] as const\nexport type ChipColor = typeof chipColors[number]\n\ntype ChipVariant = 'normal' | 'fullyRounded'\ntype ChipSize = 'sm' | 'md' | 'lg'\n\nexport const ChipUtil = {\n colors: chipColors,\n}\n\nexport type ChipProps = HTMLAttributes<HTMLDivElement> & PropsWithChildren<{\n color?: ChipColor,\n size?: ChipSize,\n icon?: boolean,\n variant?: ChipVariant,\n trailingIcon?: ReactNode,\n}>\n\n/**\n * A component for displaying a single chip\n */\nexport const Chip = ({\n children,\n trailingIcon,\n color = 'default',\n size = 'md',\n icon = false,\n variant = 'normal',\n className = '',\n ...restProps\n }: ChipProps) => {\n const colorMapping: string = {\n default: 'text-tag-default-text bg-tag-default-background',\n dark: 'text-tag-dark-text bg-tag-dark-background',\n red: 'text-tag-red-text bg-tag-red-background',\n yellow: 'text-tag-yellow-text bg-tag-yellow-background',\n green: 'text-tag-green-text bg-tag-green-background',\n blue: 'text-tag-blue-text bg-tag-blue-background',\n pink: 'text-tag-pink-text bg-tag-pink-background',\n orange: 'text-tag-orange-text bg-tag-orange-background',\n }[color]\n\n const colorMappingIcon: string = {\n default: 'text-tag-default-icon',\n dark: 'text-tag-dark-icon',\n red: 'text-tag-red-icon',\n yellow: 'text-tag-yellow-icon',\n green: 'text-tag-green-icon',\n blue: 'text-tag-blue-icon',\n pink: 'text-tag-pink-icon',\n orange: 'text-tag-orange-icon',\n }[color]\n\n return (\n <div\n {...restProps}\n className={clsx(\n `flex-row-0 w-fit font-semibold`,\n colorMapping,\n !icon ? {\n 'px-1 py-0.5': size === 'sm',\n 'px-2 py-1': size === 'md',\n 'px-4 py-2': size === 'lg',\n } : {\n 'p-0.5': size === 'sm',\n 'p-1': size === 'md',\n 'p-2': size === 'lg',\n },\n {\n 'rounded-md': variant === 'normal',\n 'rounded-full': variant === 'fullyRounded',\n },\n className\n )}\n >\n {children}\n {trailingIcon && (<span className={colorMappingIcon}>{trailingIcon}</span>)}\n </div>\n )\n}\n\nexport type ChipListProps = {\n list: ChipProps[],\n className?: string,\n}\n\n/**\n * A component for displaying a list of chips\n */\nexport const ChipList = ({\n list,\n className = ''\n }: ChipListProps) => {\n return (\n <div className={clsx('flex flex-wrap gap-x-2 gap-y-2', className)}>\n {list.map((value, index) => (\n <Chip\n key={index}\n {...value}\n color={value.color ?? 'default'}\n variant={value.variant ?? 'normal'}\n >\n {value.children}\n </Chip>\n ))}\n </div>\n )\n}\n","import type { ButtonHTMLAttributes, ReactNode } from 'react'\nimport { forwardRef } 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\nexport const IconButtonUtil = {\n icon: [...ButtonColorUtil.solid, 'transparent'] 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 * The allowed colors for the IconButton\n */\nexport type IconButtonColor = typeof IconButtonUtil.icon[number]\n\n\n/**\n * The different sizes for a button\n */\ntype ButtonSizes = 'small' | 'medium' | 'large'\n\ntype IconButtonSize = 'tiny' | 'small' | 'medium' | 'large'\n\n/**\n * The shard properties between all button types\n */\nexport type ButtonProps = ButtonHTMLAttributes<HTMLButtonElement> & {\n /**\n * @default 'medium'\n */\n size?: ButtonSizes,\n}\n\nconst paddingMapping: Record<ButtonSizes, string> = {\n small: 'btn-sm',\n medium: 'btn-md',\n large: 'btn-lg'\n}\n\nconst iconPaddingMapping: Record<IconButtonSize, string> = {\n tiny: 'icon-btn-xs',\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 coloredHoverBackground?: boolean,\n}\n\n/**\n * The shard properties between all button types\n */\nexport type IconButtonProps = ButtonHTMLAttributes<HTMLButtonElement> & {\n /**\n * @default 'medium'\n */\n size?: IconButtonSize,\n color?: IconButtonColor,\n}\n\n/**\n * A button with a solid background and different sizes\n */\nexport const SolidButton = forwardRef<HTMLButtonElement, SolidButtonProps>(function SolidButton({\n children,\n color = 'primary',\n size = 'medium',\n startIcon,\n endIcon,\n onClick,\n className,\n ...restProps\n }, ref) {\n const colorClasses = {\n primary: 'not-disabled:bg-button-solid-primary-background not-disabled:text-button-solid-primary-text',\n secondary: 'not-disabled:bg-button-solid-secondary-background not-disabled:text-button-solid-secondary-text',\n tertiary: 'not-disabled:bg-button-solid-tertiary-background not-disabled:text-button-solid-tertiary-text',\n positive: 'not-disabled:bg-button-solid-positive-background not-disabled:text-button-solid-positive-text',\n warning: 'not-disabled:bg-button-solid-warning-background not-disabled:text-button-solid-warning-text',\n negative: 'not-disabled:bg-button-solid-negative-background not-disabled:text-button-solid-negative-text',\n neutral: 'not-disabled:bg-button-solid-neutral-background not-disabled:text-button-solid-neutral-text',\n }[color]\n\n const iconColorClasses = {\n primary: 'not-group-disabled:text-button-solid-primary-icon',\n secondary: 'not-group-disabled:text-button-solid-secondary-icon',\n tertiary: 'not-group-disabled:text-button-solid-tertiary-icon',\n positive: 'not-group-disabled:text-button-solid-positive-icon',\n warning: 'not-group-disabled:text-button-solid-warning-icon',\n negative: 'not-group-disabled:text-button-solid-negative-icon',\n neutral: 'not-group-disabled:text-button-solid-neutral-icon',\n }[color]\n\n return (\n <button\n ref={ref}\n onClick={onClick}\n className={clsx(\n 'group font-semibold',\n colorClasses,\n 'not-disabled:hover:brightness-90',\n 'disabled:text-disabled-text disabled:bg-disabled-background',\n ButtonUtil.paddingMapping[size],\n className\n )}\n {...restProps}\n >\n {startIcon && (\n <span\n className={clsx(\n iconColorClasses,\n 'group-disabled:text-disabled-icon'\n )}\n >\n {startIcon}\n </span>\n )}\n {children}\n {endIcon && (\n <span\n className={clsx(\n iconColorClasses,\n 'group-disabled:text-disabled-icon'\n )}\n >\n {endIcon}\n </span>\n )}\n </button>\n )\n})\n\n/**\n * A button with an outline border and different sizes\n */\nexport const OutlineButton = ({\n children,\n color = 'primary',\n size = 'medium',\n startIcon,\n endIcon,\n onClick,\n className,\n ...restProps\n }: OutlineButtonProps) => {\n const colorClasses = {\n primary: 'not-disabled:border-button-outline-primary-text not-disabled:text-button-outline-primary-text',\n }[color]\n\n const iconColorClasses = {\n primary: 'not-group-disabled:text-button-outline-primary-icon',\n }[color]\n return (\n <button\n onClick={onClick}\n className={clsx(\n 'group font-semibold bg-transparent border-2 ',\n 'not-disabled:hover:brightness-80',\n colorClasses,\n 'disabled:text-disabled-text disabled:border-disabled-outline',\n ButtonUtil.paddingMapping[size],\n className\n )}\n {...restProps}\n >\n {startIcon && (\n <span\n className={clsx(\n iconColorClasses,\n 'group-disabled:text-disabled-icon'\n )}\n >\n {startIcon}\n </span>\n )}\n {children}\n {endIcon && (\n <span\n className={clsx(\n iconColorClasses,\n 'group-disabled:text-disabled-icon'\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 */\nexport const TextButton = ({\n children,\n color = 'neutral',\n size = 'medium',\n startIcon,\n endIcon,\n onClick,\n coloredHoverBackground = true,\n className,\n ...restProps\n }: TextButtonProps) => {\n const colorClasses = {\n primary: 'not-disabled:bg-transparent not-disabled:text-button-text-primary-text focus-style-none focus-visible:ring-2 not-disabled:focus-visible:ring-button-text-primary-text',\n negative: 'not-disabled:bg-transparent not-disabled:text-button-text-negative-text focus-style-none focus-visible:ring-2 not-disabled:focus-visible:ring-button-text-negative-text',\n neutral: 'not-disabled:bg-transparent not-disabled:text-button-text-neutral-text focus-style-none focus-visible:ring-2 not-disabled:focus-visible:ring-button-text-neutral-text',\n }[color]\n\n const backgroundColor = {\n primary: 'not-disabled:hover:bg-button-text-primary-text/20 not-disabled:focus-visible:bg-button-text-primary-text/20',\n negative: 'not-disabled:hover:bg-button-text-negative-text/20 not-disabled:focus-visible:bg-button-text-negative-text/20',\n neutral: 'not-disabled:hover:bg-button-text-neutral-text/20 not-disabled:focus-visible:bg-button-text-neutral-text/20',\n }[color]\n\n const iconColorClasses = {\n primary: 'not-group-disabled:text-button-text-primary-icon',\n negative: 'not-group-disabled:text-button-text-negative-icon',\n neutral: 'not-group-disabled:text-button-text-neutral-icon',\n }[color]\n\n return (\n <button\n onClick={onClick}\n className={clsx(\n 'group font-semibold',\n 'disabled:text-disabled-text',\n colorClasses,\n {\n [backgroundColor]: coloredHoverBackground,\n 'not-disabled:hover:bg-button-text-hover-background': !coloredHoverBackground,\n },\n ButtonUtil.paddingMapping[size],\n className\n )}\n {...restProps}\n >\n {startIcon && (\n <span\n className={clsx(\n iconColorClasses,\n 'group-disabled:text-disabled-icon'\n )}\n >\n {startIcon}\n </span>\n )}\n {children}\n {endIcon && (\n <span\n className={clsx(\n iconColorClasses,\n 'group-disabled:text-disabled-icon'\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 */\nexport const IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(function IconButton({\n children,\n color = 'primary',\n size = 'medium',\n className,\n ...restProps\n }, ref)\n{\n const colorClasses = {\n primary: 'not-disabled:bg-button-solid-primary-background not-disabled:text-button-solid-primary-text',\n secondary: 'not-disabled:bg-button-solid-secondary-background not-disabled:text-button-solid-secondary-text',\n tertiary: 'not-disabled:bg-button-solid-tertiary-background not-disabled:text-button-solid-tertiary-text',\n positive: 'not-disabled:bg-button-solid-positive-background not-disabled:text-button-solid-positive-text',\n warning: 'not-disabled:bg-button-solid-warning-background not-disabled:text-button-solid-warning-text',\n negative: 'not-disabled:bg-button-solid-negative-background not-disabled:text-button-solid-negative-text',\n neutral: 'not-disabled:bg-button-solid-neutral-background not-disabled:text-button-solid-neutral-text',\n transparent: 'not-disabled:bg-transparent',\n }[color]\n\n return (\n <button\n ref={ref}\n className={clsx(\n colorClasses,\n 'not-disabled:hover:brightness-90',\n 'disabled:text-disabled-text',\n {\n 'disabled:bg-disabled-background': color !== 'transparent',\n 'disabled:opacity-70': color === 'transparent',\n 'not-disabled:hover:bg-button-text-hover-background': color === 'transparent',\n },\n ButtonUtil.iconPaddingMapping[size],\n className\n )}\n {...restProps}\n >\n {children}\n </button>\n )\n})","'use client'\n\nimport type { CSSProperties, MutableRefObject } from 'react'\nimport { useCallback, useEffect, useState } from 'react'\nimport { clamp } from '@/src/utils/math'\nimport { useIsMounted } from '@/src/hooks/focus/useIsMounted'\n\nexport type FloatingElementAlignment = 'beforeStart' | 'afterStart' | 'center' | 'beforeEnd' | 'afterEnd'\n\ntype RectangleBounds = {\n top: number,\n right: number,\n bottom: number,\n left: number,\n width: number,\n height: number,\n}\n\ntype CalculatePositionOptions = {\n verticalAlignment?: FloatingElementAlignment,\n horizontalAlignment?: FloatingElementAlignment,\n screenPadding?: number,\n gap?: number,\n}\n\ntype CalculatePositionProps = {\n windowRect: RectangleBounds,\n containerRect: RectangleBounds,\n anchorRect: RectangleBounds,\n options: CalculatePositionOptions,\n}\n\ntype UseFloatingElementStyle = {\n left: number,\n top: number,\n maxWidth: number,\n maxHeight: number,\n}\n\nfunction calculatePosition({\n windowRect,\n containerRect,\n anchorRect,\n options,\n }: CalculatePositionProps): UseFloatingElementStyle {\n const { verticalAlignment, horizontalAlignment, gap, screenPadding } = options\n const windowWidth = windowRect.width\n const windowHeight = windowRect.height\n\n const maxWidth = windowWidth - 2 * screenPadding\n const maxHeight = windowHeight - 2 * screenPadding\n\n const width = Math.min(containerRect.width, maxWidth)\n const height = Math.min(containerRect.height, maxHeight)\n\n const leftSuggestion = {\n beforeStart: anchorRect.left - width - gap,\n afterStart: anchorRect.left,\n center: anchorRect.left + anchorRect.width / 2 - width / 2,\n beforeEnd: anchorRect.right - width,\n afterEnd: anchorRect.right + gap,\n }[horizontalAlignment]\n\n const topSuggestion = {\n beforeStart: anchorRect.top - height - gap,\n afterStart: anchorRect.top,\n center: anchorRect.top + anchorRect.height / 2 - height / 2,\n beforeEnd: anchorRect.bottom - height,\n afterEnd: anchorRect.bottom + gap,\n }[verticalAlignment]\n\n const left = clamp(leftSuggestion, [\n screenPadding,\n windowWidth - screenPadding - width,\n ])\n\n const top = clamp(topSuggestion, [\n screenPadding,\n windowHeight - screenPadding - height,\n ])\n\n return {\n left,\n top,\n maxWidth,\n maxHeight,\n }\n}\n\nexport type UseFloatingElementOptions = CalculatePositionOptions & {\n isPolling?: boolean,\n pollingInterval?: number,\n}\n\nexport type UseFloatingElementProps = UseFloatingElementOptions & {\n containerRef: MutableRefObject<HTMLElement>,\n anchorRef: MutableRefObject<HTMLElement>,\n windowRef?: MutableRefObject<HTMLElement>,\n active?: boolean,\n}\n\nexport function useFloatingElement({\n active = true,\n windowRef,\n anchorRef,\n containerRef,\n isPolling = false,\n pollingInterval = 100,\n verticalAlignment = 'afterEnd',\n horizontalAlignment = 'afterStart',\n screenPadding = 16,\n gap = 4,\n }: UseFloatingElementProps) {\n const [style, setStyle] = useState<CSSProperties>()\n const isMounted = useIsMounted()\n\n const calculate = useCallback(() => {\n const containerRect = containerRef.current.getBoundingClientRect()\n const windowRect: RectangleBounds = windowRef?.current.getBoundingClientRect() ?? {\n top: 0,\n bottom: window.innerHeight,\n left: 0,\n right: window.innerWidth,\n width: window.innerWidth,\n height: window.innerHeight,\n }\n const anchorElement = anchorRef?.current\n if (anchorRef && !anchorElement) {\n console.warn('FloatingContainer anchor provided, but its value is undefined')\n }\n const anchorRect: RectangleBounds = anchorElement?.getBoundingClientRect() ?? windowRect\n\n const calculateProps: CalculatePositionProps = {\n windowRect,\n anchorRect,\n containerRect,\n options: {\n horizontalAlignment,\n verticalAlignment,\n screenPadding,\n gap,\n }\n }\n setStyle(calculatePosition(calculateProps))\n }, [anchorRef, containerRef, gap, horizontalAlignment, screenPadding, verticalAlignment, windowRef])\n\n\n const height = containerRef.current?.getBoundingClientRect().height\n const width = containerRef.current?.getBoundingClientRect().width\n useEffect(() => {\n if (active && isMounted) {\n calculate()\n } else {\n setStyle(undefined)\n }\n }, [calculate, active, isMounted, height, width])\n\n useEffect(() => {\n window.addEventListener('resize', calculate)\n let timeout: NodeJS.Timeout\n if (isPolling) {\n timeout = setInterval(calculate, pollingInterval)\n }\n return () => {\n window.removeEventListener('resize', calculate)\n if (timeout) {\n clearInterval(timeout)\n }\n }\n }, [calculate, isPolling, pollingInterval])\n\n return style\n}","export const clamp = (value: number, range: [number, number] = [0, 1]): number => {\n const [min, max] = range\n return Math.min(Math.max(value, min), max)\n}\n"],"mappings":"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","names":["import_react","import_clsx","import_react","import_react","import_jsx_runtime","clsx","Expandable","ExpandableUncontrolled","import_react","import_react","listener","active","import_lucide_react","import_clsx","import_jsx_runtime","clsx","import_react","import_clsx","import_jsx_runtime","SolidButton","clsx","IconButton","clsx","import_react","import_jsx_runtime","value","isOpen","SelectOption","clsx","SelectButton","SelectChipDisplay","SelectContent","Select","SelectUncontrolled","MultiSelect","MultiSelectUncontrolled","MultiSelectChipDisplay","MultiSelectChipDisplayUncontrolled"]}