aidos-ui 4.0.3 → 4.0.5

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 (377) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +23 -3
  3. package/dist/index.d.ts +797 -68
  4. package/dist/index.js +3868 -68
  5. package/dist/index.js.map +1 -1
  6. package/dist/jsx-dev-runtime.d.ts +6 -2
  7. package/dist/jsx-dev-runtime.js +87 -42
  8. package/dist/jsx-dev-runtime.js.map +1 -1
  9. package/dist/jsx-runtime.d.ts +1 -1
  10. package/dist/jsx-runtime.js +2 -2
  11. package/dist/jsx-runtime.js.map +1 -1
  12. package/dist/vite-plugin-jss-debug.d.ts +12 -6
  13. package/dist/vite-plugin-jss-debug.js +57 -72
  14. package/dist/vite-plugin-jss-debug.js.map +1 -1
  15. package/package.json +58 -27
  16. package/.claude/settings.local.json +0 -22
  17. package/.prettierrc +0 -4
  18. package/CLAUDE.md +0 -72
  19. package/dist/Badge.d.ts +0 -6
  20. package/dist/Badge.js +0 -22
  21. package/dist/Badge.js.map +0 -1
  22. package/dist/BaseButton.d.ts +0 -14
  23. package/dist/BaseButton.js +0 -23
  24. package/dist/BaseButton.js.map +0 -1
  25. package/dist/BaseInput.d.ts +0 -14
  26. package/dist/BaseInput.js +0 -15
  27. package/dist/BaseInput.js.map +0 -1
  28. package/dist/BaseLink.d.ts +0 -18
  29. package/dist/BaseLink.js +0 -29
  30. package/dist/BaseLink.js.map +0 -1
  31. package/dist/BaseList.d.ts +0 -6
  32. package/dist/BaseList.js +0 -14
  33. package/dist/BaseList.js.map +0 -1
  34. package/dist/BaseListAddOn.d.ts +0 -5
  35. package/dist/BaseListAddOn.js +0 -7
  36. package/dist/BaseListAddOn.js.map +0 -1
  37. package/dist/BaseListItem.d.ts +0 -26
  38. package/dist/BaseListItem.js +0 -29
  39. package/dist/BaseListItem.js.map +0 -1
  40. package/dist/BaseView.d.ts +0 -12
  41. package/dist/BaseView.js +0 -26
  42. package/dist/BaseView.js.map +0 -1
  43. package/dist/Box.d.ts +0 -4
  44. package/dist/Box.js +0 -6
  45. package/dist/Box.js.map +0 -1
  46. package/dist/Button.d.ts +0 -20
  47. package/dist/Button.js +0 -19
  48. package/dist/Button.js.map +0 -1
  49. package/dist/Calendar.d.ts +0 -18
  50. package/dist/Calendar.js +0 -57
  51. package/dist/Calendar.js.map +0 -1
  52. package/dist/Card.d.ts +0 -4
  53. package/dist/Card.js +0 -14
  54. package/dist/Card.js.map +0 -1
  55. package/dist/Checkbox.d.ts +0 -11
  56. package/dist/Checkbox.js +0 -32
  57. package/dist/Checkbox.js.map +0 -1
  58. package/dist/Circle.d.ts +0 -5
  59. package/dist/Circle.js +0 -12
  60. package/dist/Circle.js.map +0 -1
  61. package/dist/Column.d.ts +0 -6
  62. package/dist/Column.js +0 -7
  63. package/dist/Column.js.map +0 -1
  64. package/dist/DarkMode.d.ts +0 -13
  65. package/dist/DarkMode.js +0 -62
  66. package/dist/DarkMode.js.map +0 -1
  67. package/dist/DateInput.d.ts +0 -13
  68. package/dist/DateInput.js +0 -29
  69. package/dist/DateInput.js.map +0 -1
  70. package/dist/DatePicker.d.ts +0 -11
  71. package/dist/DatePicker.js +0 -34
  72. package/dist/DatePicker.js.map +0 -1
  73. package/dist/DatetimeInput.d.ts +0 -13
  74. package/dist/DatetimeInput.js +0 -31
  75. package/dist/DatetimeInput.js.map +0 -1
  76. package/dist/DesignBook.d.ts +0 -1
  77. package/dist/DesignBook.js +0 -55
  78. package/dist/DesignBook.js.map +0 -1
  79. package/dist/Dialog.d.ts +0 -17
  80. package/dist/Dialog.js +0 -92
  81. package/dist/Dialog.js.map +0 -1
  82. package/dist/Dropdown.d.ts +0 -14
  83. package/dist/Dropdown.js +0 -65
  84. package/dist/Dropdown.js.map +0 -1
  85. package/dist/Emitter.d.ts +0 -6
  86. package/dist/Emitter.js +0 -19
  87. package/dist/Emitter.js.map +0 -1
  88. package/dist/FlexLayout.d.ts +0 -11
  89. package/dist/FlexLayout.js +0 -18
  90. package/dist/FlexLayout.js.map +0 -1
  91. package/dist/Icon.d.ts +0 -12
  92. package/dist/Icon.js +0 -60
  93. package/dist/Icon.js.map +0 -1
  94. package/dist/IconButton.d.ts +0 -9
  95. package/dist/IconButton.js +0 -31
  96. package/dist/IconButton.js.map +0 -1
  97. package/dist/IconLink.d.ts +0 -9
  98. package/dist/IconLink.js +0 -32
  99. package/dist/IconLink.js.map +0 -1
  100. package/dist/IconType.d.ts +0 -1
  101. package/dist/IconType.js +0 -2
  102. package/dist/IconType.js.map +0 -1
  103. package/dist/Interactable.d.ts +0 -50
  104. package/dist/Interactable.js +0 -169
  105. package/dist/Interactable.js.map +0 -1
  106. package/dist/JSSComment.d.ts +0 -10
  107. package/dist/JSSComment.js +0 -52
  108. package/dist/JSSComment.js.map +0 -1
  109. package/dist/Link.d.ts +0 -22
  110. package/dist/Link.js +0 -29
  111. package/dist/Link.js.map +0 -1
  112. package/dist/List.d.ts +0 -15
  113. package/dist/List.js +0 -29
  114. package/dist/List.js.map +0 -1
  115. package/dist/ListButtonItem.d.ts +0 -14
  116. package/dist/ListButtonItem.js +0 -11
  117. package/dist/ListButtonItem.js.map +0 -1
  118. package/dist/ListDivider.d.ts +0 -1
  119. package/dist/ListDivider.js +0 -12
  120. package/dist/ListDivider.js.map +0 -1
  121. package/dist/ListHeaderItem.d.ts +0 -10
  122. package/dist/ListHeaderItem.js +0 -15
  123. package/dist/ListHeaderItem.js.map +0 -1
  124. package/dist/ListItem.d.ts +0 -9
  125. package/dist/ListItem.js +0 -9
  126. package/dist/ListItem.js.map +0 -1
  127. package/dist/ListLinkItem.d.ts +0 -16
  128. package/dist/ListLinkItem.js +0 -11
  129. package/dist/ListLinkItem.js.map +0 -1
  130. package/dist/ListSpacer.d.ts +0 -1
  131. package/dist/ListSpacer.js +0 -13
  132. package/dist/ListSpacer.js.map +0 -1
  133. package/dist/MenuIcon.d.ts +0 -5
  134. package/dist/MenuIcon.js +0 -31
  135. package/dist/MenuIcon.js.map +0 -1
  136. package/dist/NextJSRouter.d.ts +0 -1
  137. package/dist/NextJSRouter.js +0 -37
  138. package/dist/NextJSRouter.js.map +0 -1
  139. package/dist/NextJSRouterState.d.ts +0 -38
  140. package/dist/NextJSRouterState.js +0 -111
  141. package/dist/NextJSRouterState.js.map +0 -1
  142. package/dist/OnVisible.d.ts +0 -5
  143. package/dist/OnVisible.js +0 -28
  144. package/dist/OnVisible.js.map +0 -1
  145. package/dist/Popover.d.ts +0 -22
  146. package/dist/Popover.js +0 -90
  147. package/dist/Popover.js.map +0 -1
  148. package/dist/ProgressBar.d.ts +0 -7
  149. package/dist/ProgressBar.js +0 -42
  150. package/dist/ProgressBar.js.map +0 -1
  151. package/dist/ProgressCircle.d.ts +0 -5
  152. package/dist/ProgressCircle.js +0 -12
  153. package/dist/ProgressCircle.js.map +0 -1
  154. package/dist/Providers.d.ts +0 -9
  155. package/dist/Providers.js +0 -16
  156. package/dist/Providers.js.map +0 -1
  157. package/dist/RangeInput.d.ts +0 -14
  158. package/dist/RangeInput.js +0 -32
  159. package/dist/RangeInput.js.map +0 -1
  160. package/dist/ResultOrError.d.ts +0 -13
  161. package/dist/ResultOrError.js +0 -7
  162. package/dist/ResultOrError.js.map +0 -1
  163. package/dist/RootView.d.ts +0 -5
  164. package/dist/RootView.js +0 -35
  165. package/dist/RootView.js.map +0 -1
  166. package/dist/Row.d.ts +0 -6
  167. package/dist/Row.js +0 -7
  168. package/dist/Row.js.map +0 -1
  169. package/dist/Select.d.ts +0 -9
  170. package/dist/Select.js +0 -17
  171. package/dist/Select.js.map +0 -1
  172. package/dist/StackContext.d.ts +0 -8
  173. package/dist/StackContext.js +0 -25
  174. package/dist/StackContext.js.map +0 -1
  175. package/dist/StaticCheckbox.d.ts +0 -16
  176. package/dist/StaticCheckbox.js +0 -48
  177. package/dist/StaticCheckbox.js.map +0 -1
  178. package/dist/Storage.d.ts +0 -13
  179. package/dist/Storage.js +0 -146
  180. package/dist/Storage.js.map +0 -1
  181. package/dist/Stream.d.ts +0 -9
  182. package/dist/Stream.js +0 -36
  183. package/dist/Stream.js.map +0 -1
  184. package/dist/Sublist.d.ts +0 -12
  185. package/dist/Sublist.js +0 -18
  186. package/dist/Sublist.js.map +0 -1
  187. package/dist/SubmitIconInput.d.ts +0 -8
  188. package/dist/SubmitIconInput.js +0 -25
  189. package/dist/SubmitIconInput.js.map +0 -1
  190. package/dist/Tabs.d.ts +0 -23
  191. package/dist/Tabs.js +0 -39
  192. package/dist/Tabs.js.map +0 -1
  193. package/dist/Text.d.ts +0 -25
  194. package/dist/Text.js +0 -52
  195. package/dist/Text.js.map +0 -1
  196. package/dist/TextArea.d.ts +0 -11
  197. package/dist/TextArea.js +0 -27
  198. package/dist/TextArea.js.map +0 -1
  199. package/dist/TextInput.d.ts +0 -15
  200. package/dist/TextInput.js +0 -61
  201. package/dist/TextInput.js.map +0 -1
  202. package/dist/TextInputWithState.d.ts +0 -8
  203. package/dist/TextInputWithState.js +0 -14
  204. package/dist/TextInputWithState.js.map +0 -1
  205. package/dist/TextPairing.d.ts +0 -21
  206. package/dist/TextPairing.js +0 -26
  207. package/dist/TextPairing.js.map +0 -1
  208. package/dist/TimeInput.d.ts +0 -15
  209. package/dist/TimeInput.js +0 -58
  210. package/dist/TimeInput.js.map +0 -1
  211. package/dist/Tooltip.d.ts +0 -11
  212. package/dist/Tooltip.js +0 -73
  213. package/dist/Tooltip.js.map +0 -1
  214. package/dist/aria.d.ts +0 -8
  215. package/dist/aria.js +0 -42
  216. package/dist/aria.js.map +0 -1
  217. package/dist/guid.d.ts +0 -1
  218. package/dist/guid.js +0 -7
  219. package/dist/guid.js.map +0 -1
  220. package/dist/hash.d.ts +0 -1
  221. package/dist/hash.js +0 -20
  222. package/dist/hash.js.map +0 -1
  223. package/dist/isServer.d.ts +0 -1
  224. package/dist/isServer.js +0 -4
  225. package/dist/isServer.js.map +0 -1
  226. package/dist/jss.d.ts +0 -122
  227. package/dist/jss.js +0 -515
  228. package/dist/jss.js.map +0 -1
  229. package/dist/numberToBase.d.ts +0 -1
  230. package/dist/numberToBase.js +0 -44
  231. package/dist/numberToBase.js.map +0 -1
  232. package/dist/stateMachineContextFactory.d.ts +0 -36
  233. package/dist/stateMachineContextFactory.js +0 -48
  234. package/dist/stateMachineContextFactory.js.map +0 -1
  235. package/dist/useCookie.d.ts +0 -9
  236. package/dist/useCookie.js +0 -67
  237. package/dist/useCookie.js.map +0 -1
  238. package/dist/useKeyboard.d.ts +0 -8
  239. package/dist/useKeyboard.js +0 -26
  240. package/dist/useKeyboard.js.map +0 -1
  241. package/dist/useNavigation.d.ts +0 -5
  242. package/dist/useNavigation.js +0 -79
  243. package/dist/useNavigation.js.map +0 -1
  244. package/dist/usePromise.d.ts +0 -1
  245. package/dist/usePromise.js +0 -12
  246. package/dist/usePromise.js.map +0 -1
  247. package/dist/useRefEffect.d.ts +0 -1
  248. package/dist/useRefEffect.js +0 -15
  249. package/dist/useRefEffect.js.map +0 -1
  250. package/jss-debug-loader.mjs +0 -44
  251. package/next-env.d.ts +0 -6
  252. package/next.config.js +0 -33
  253. package/scripts/embeddings.js +0 -93
  254. package/scripts/openai_embeddings.js +0 -100
  255. package/scripts/publish.js +0 -28
  256. package/scripts/test_embeddings.js +0 -47
  257. package/src/Badge.tsx +0 -36
  258. package/src/BaseButton.tsx +0 -62
  259. package/src/BaseInput.tsx +0 -63
  260. package/src/BaseLink.tsx +0 -80
  261. package/src/BaseList.tsx +0 -26
  262. package/src/BaseListAddOn.tsx +0 -10
  263. package/src/BaseListItem.tsx +0 -119
  264. package/src/BaseView.tsx +0 -57
  265. package/src/Box.tsx +0 -20
  266. package/src/Button.tsx +0 -90
  267. package/src/Calendar.tsx +0 -125
  268. package/src/Card.tsx +0 -30
  269. package/src/Checkbox.tsx +0 -63
  270. package/src/Circle.tsx +0 -24
  271. package/src/Column.tsx +0 -12
  272. package/src/DarkMode.tsx +0 -100
  273. package/src/DateInput.tsx +0 -63
  274. package/src/DatePicker.tsx +0 -67
  275. package/src/DatetimeInput.tsx +0 -64
  276. package/src/DesignBook.tsx +0 -677
  277. package/src/Dialog.tsx +0 -150
  278. package/src/Dropdown.tsx +0 -146
  279. package/src/Emitter.ts +0 -26
  280. package/src/FlexLayout.tsx +0 -53
  281. package/src/Icon.tsx +0 -80
  282. package/src/IconButton.tsx +0 -58
  283. package/src/IconLink.tsx +0 -59
  284. package/src/IconType.ts +0 -787
  285. package/src/Interactable.tsx +0 -210
  286. package/src/JSSComment.tsx +0 -56
  287. package/src/Link.tsx +0 -110
  288. package/src/List.tsx +0 -58
  289. package/src/ListButtonItem.tsx +0 -69
  290. package/src/ListDivider.tsx +0 -13
  291. package/src/ListHeaderItem.tsx +0 -45
  292. package/src/ListItem.tsx +0 -24
  293. package/src/ListLinkItem.tsx +0 -76
  294. package/src/ListSpacer.tsx +0 -14
  295. package/src/MenuIcon.tsx +0 -50
  296. package/src/NextJSRouter.tsx +0 -62
  297. package/src/NextJSRouterState.tsx +0 -154
  298. package/src/OnVisible.tsx +0 -42
  299. package/src/Popover.tsx +0 -145
  300. package/src/ProgressBar.tsx +0 -63
  301. package/src/ProgressCircle.tsx +0 -38
  302. package/src/Providers.tsx +0 -33
  303. package/src/RangeInput.tsx +0 -82
  304. package/src/ResultOrError.ts +0 -15
  305. package/src/RootView.tsx +0 -55
  306. package/src/Row.tsx +0 -12
  307. package/src/Select.tsx +0 -39
  308. package/src/StackContext.tsx +0 -52
  309. package/src/StaticCheckbox.tsx +0 -72
  310. package/src/Storage.tsx +0 -198
  311. package/src/Stream.tsx +0 -50
  312. package/src/Sublist.tsx +0 -61
  313. package/src/SubmitIconInput.tsx +0 -45
  314. package/src/Tabs.tsx +0 -110
  315. package/src/Text.tsx +0 -111
  316. package/src/TextArea.tsx +0 -58
  317. package/src/TextInput.tsx +0 -123
  318. package/src/TextInputWithState.tsx +0 -32
  319. package/src/TextPairing.tsx +0 -115
  320. package/src/TimeInput.tsx +0 -109
  321. package/src/Tooltip.tsx +0 -109
  322. package/src/aria.ts +0 -72
  323. package/src/docs/mdx.tsx +0 -137
  324. package/src/docs/pages.ts +0 -115
  325. package/src/docs/searchIndex.ts +0 -1
  326. package/src/examples/ExampleDialog.tsx +0 -28
  327. package/src/guid.ts +0 -7
  328. package/src/hash.ts +0 -21
  329. package/src/index.ts +0 -68
  330. package/src/isServer.ts +0 -3
  331. package/src/jss.tsx +0 -712
  332. package/src/jsx-dev-runtime.ts +0 -74
  333. package/src/jsx-runtime.ts +0 -2
  334. package/src/numberToBase.ts +0 -52
  335. package/src/pages/Badge.mdx +0 -152
  336. package/src/pages/Button.mdx +0 -163
  337. package/src/pages/Calendar.mdx +0 -254
  338. package/src/pages/Card.mdx +0 -147
  339. package/src/pages/Checkbox.mdx +0 -131
  340. package/src/pages/Dialog.mdx +0 -197
  341. package/src/pages/FlexLayout.mdx +0 -211
  342. package/src/pages/Hashing.mdx +0 -211
  343. package/src/pages/Icon.mdx +0 -171
  344. package/src/pages/IconButton.mdx +0 -155
  345. package/src/pages/Link.mdx +0 -160
  346. package/src/pages/List.mdx +0 -262
  347. package/src/pages/ListHeader.mdx +0 -220
  348. package/src/pages/Popover.mdx +0 -223
  349. package/src/pages/ProgressBar.mdx +0 -200
  350. package/src/pages/ProgressCircle.mdx +0 -218
  351. package/src/pages/RangeInput.mdx +0 -237
  352. package/src/pages/Tabs.mdx +0 -281
  353. package/src/pages/Text.mdx +0 -154
  354. package/src/pages/TextInput.mdx +0 -235
  355. package/src/pages/TextPairing.mdx +0 -204
  356. package/src/pages/TimeInput.mdx +0 -178
  357. package/src/pages/Tooltip.mdx +0 -115
  358. package/src/pages/_app.tsx +0 -466
  359. package/src/pages/_document.tsx +0 -30
  360. package/src/pages/css-in-js.mdx +0 -240
  361. package/src/pages/index.mdx +0 -58
  362. package/src/pages/navigation.mdx +0 -158
  363. package/src/pages/prism.css +0 -3
  364. package/src/pages/useCookie.mdx +0 -176
  365. package/src/pages/useKeyboard.mdx +0 -257
  366. package/src/pages/useNavigation.mdx +0 -258
  367. package/src/pages/usePromise.mdx +0 -280
  368. package/src/pages/useRefEffect.mdx +0 -251
  369. package/src/stateMachineContextFactory.tsx +0 -111
  370. package/src/useCookie.tsx +0 -95
  371. package/src/useKeyboard.tsx +0 -43
  372. package/src/useNavigation.tsx +0 -89
  373. package/src/usePromise.tsx +0 -18
  374. package/src/useRefEffect.tsx +0 -18
  375. package/src/vite-plugin-jss-debug.ts +0 -75
  376. package/tsconfig.build.json +0 -23
  377. package/tsconfig.json +0 -38
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"sources":["../src/hash.ts","../src/isServer.ts","../src/jss.tsx","../src/BaseView.tsx","../src/Badge.tsx","../src/Interactable.tsx","../src/BaseButton.tsx","../src/Text.tsx","../src/BaseInput.tsx","../src/BaseLink.tsx","../src/FlexLayout.tsx","../src/Column.tsx","../src/BaseList.tsx","../src/BaseListAddOn.tsx","../src/ListDivider.tsx","../src/Row.tsx","../src/TextPairing.tsx","../src/aria.ts","../src/useRefEffect.tsx","../src/useNavigation.tsx","../src/List.tsx","../src/BaseListItem.tsx","../src/Box.tsx","../src/Icon.tsx","../src/Button.tsx","../src/Calendar.tsx","../src/Card.tsx","../src/StaticCheckbox.tsx","../src/Checkbox.tsx","../src/Circle.tsx","../src/IconButton.tsx","../src/DarkMode.tsx","../src/DateInput.tsx","../src/DatePicker.tsx","../src/DatetimeInput.tsx","../src/Dialog.tsx","../src/Dropdown.tsx","../src/Emitter.ts","../src/guid.ts","../src/IconLink.tsx","../src/Link.tsx","../src/ListButtonItem.tsx","../src/ListHeaderItem.tsx","../src/ListItem.tsx","../src/ListLinkItem.tsx","../src/ListSpacer.tsx","../src/MenuIcon.tsx","../src/numberToBase.ts","../src/OnVisible.tsx","../src/Popover.tsx","../src/ProgressBar.tsx","../src/ProgressCircle.tsx","../src/useCookie.tsx","../src/Providers.tsx","../src/RangeInput.tsx","../src/StackContext.tsx","../src/RootView.tsx","../src/Select.tsx","../src/stateMachineContextFactory.tsx","../src/Storage.tsx","../src/Stream.tsx","../src/Sublist.tsx","../src/SubmitIconInput.tsx","../src/Tabs.tsx","../src/TextArea.tsx","../src/TextInput.tsx","../src/TextInputWithState.tsx","../src/TimeInput.tsx","../src/Tooltip.tsx","../src/useKeyboard.tsx","../src/usePromise.tsx"],"names":["hash","key","value","cssValue","React","jsx","sizes","styles","jsxs","Fragment","Link","element","useRef","elements","useContext","IconifyIcon","useMemo","useState","useId","useEffect","useCallback","fontSize","error"],"mappings":"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","file":"index.js","sourcesContent":["export function hash(source: string, modulus?: number): number {\n let hash = 0;\n let i: number;\n let chr: number;\n\n if (source.length === 0) {\n return hash;\n }\n\n for (i = 0; i < source.length; i++) {\n chr = source.charCodeAt(i);\n hash = (hash << 5) - hash + chr;\n hash |= 0; // Convert to 32bit integer\n }\n\n if (modulus) {\n return Math.abs(hash) % modulus;\n } else {\n return Math.abs(hash);\n }\n}\n","export function isServer() {\n return typeof window === \"undefined\" || window.document == null;\n}\n","import CSS from \"csstype\";\nimport React, { useRef } from \"react\";\n\nimport { hash } from \"./hash\";\nimport { numberToBase } from \"./numberToBase\";\nimport { isServer } from \"./isServer\";\n\ntype StylesValueType = string | number | CSS.Properties<string | number>;\n\nexport type Styles = CSS.Properties<\n string | number | CSS.Properties<string | number>\n>;\n\nexport type JSS =\n | Styles\n | null\n | false\n | undefined\n | { [key: string]: Styles }\n | Array<JSS>;\n\nconst aliases: {\n [alias: string]: (value: StylesValueType) => [string, StylesValueType][];\n} = {\n margin: (value: string) => {\n if (value == null) {\n return [];\n }\n\n const matches =\n typeof value === \"string\"\n ? Array.from(value.matchAll(/(.+) (.+)$/g))[0]\n : null;\n if (matches) {\n return [\n [\"margin-top\", matches[1]],\n [\"margin-bottom\", matches[1]],\n [\"margin-left\", matches[2]],\n [\"margin-right\", matches[2]],\n ];\n } else {\n return [\n [\"margin-top\", value],\n [\"margin-bottom\", value],\n [\"margin-left\", value],\n [\"margin-right\", value],\n ];\n }\n },\n padding: (value: string) => {\n if (value == null) {\n return [];\n }\n\n const matches =\n typeof value === \"string\"\n ? Array.from(value.matchAll(/(.+) (.+)$/g))[0]\n : null;\n\n if (matches) {\n return [\n [\"padding-top\", matches[1]],\n [\"padding-bottom\", matches[1]],\n [\"padding-left\", matches[2]],\n [\"padding-right\", matches[2]],\n ];\n } else {\n return [\n [\"padding-top\", value],\n [\"padding-bottom\", value],\n [\"padding-left\", value],\n [\"padding-right\", value],\n ];\n }\n },\n};\n\nconst rawHashMap = new Map<string, { selector: string; key: string }>();\n\nfunction createStyleNode(content: string) {\n if (isServer()) {\n serverStyles.push(content);\n } else {\n const style = document.createElement(\"style\");\n style.appendChild(document.createTextNode(content));\n document.head.appendChild(style);\n }\n}\n\nconst pixelStyles = new Set([\n \"min-height\",\n \"height\",\n \"max-height\",\n \"min-width\",\n \"width\",\n \"max-width\",\n \"margin\",\n \"margin-top\",\n \"margin-bottom\",\n \"margin-left\",\n \"margin-right\",\n \"padding\",\n \"padding-top\",\n \"padding-bottom\",\n \"padding-left\",\n \"padding-right\",\n \"border-radius\",\n \"font-size\",\n \"top\",\n \"bottom\",\n \"left\",\n \"right\",\n \"outline-offset\",\n \"gap\",\n \"row-gap\",\n \"column-gap\",\n]);\n\nconst toPixelValue = (key: string, value): string => {\n const sValue = value.toString();\n\n if (\n sValue.includes(\"%\") ||\n sValue.includes(\"v\") ||\n sValue.includes(\"px\") ||\n sValue.includes(\"em\") ||\n sValue.includes(\"rem\")\n ) {\n return sValue;\n }\n\n return pixelStyles.has(key) && Number.isInteger(parseInt(value, 10))\n ? `${value}px`\n : value;\n};\n\nconst getCSS = (key: string, value): [string, string] => {\n const cssProp = key.replace(/[A-Z]/g, (m) => \"-\" + m.toLowerCase());\n const cssValue = toPixelValue(cssProp, value);\n return [cssProp, cssValue];\n};\n\nconst flattenJSS = (jss: JSS): Styles => {\n if (!jss) {\n return {};\n } else if (Array.isArray(jss)) {\n const result: Styles = {};\n for (const item of jss) {\n Object.assign(result, flattenJSS(item));\n }\n return result;\n } else {\n return jss;\n }\n};\n\nexport const toClassnames = (jss: JSS, componentName?: string): string => {\n jss = flattenJSS(jss);\n\n const stylesStack = Object.entries(jss);\n const classNames: string[] = [];\n\n if (componentName) {\n classNames.push(componentName);\n }\n\n while (stylesStack.length) {\n const [key, value] = stylesStack.pop();\n\n if (aliases[key]) {\n stylesStack.push(...aliases[key](value));\n continue;\n }\n\n const inputKey = key + JSON.stringify(value);\n const rawHash = hash(inputKey).toString(32);\n const cached = rawHashMap.get(rawHash);\n\n if (cached != null) {\n if (cached.key !== inputKey) {\n console.warn(\n `[jss] Hash collision detected: \"${inputKey}\" collides with \"${cached.key}\"`\n );\n }\n classNames.push(cached.selector);\n continue;\n }\n\n const selector = `x${rawHash}`;\n rawHashMap.set(rawHash, { selector, key: inputKey });\n classNames.push(selector);\n\n if (typeof value === \"number\" || typeof value === \"string\") {\n const [cssProp, cssValue] = getCSS(key, value);\n createStyleNode(`.${selector} { ${cssProp}: ${cssValue}; }`);\n } else if (typeof value === \"object\" && key.startsWith(\"@media\")) {\n const media = key;\n const cssValue = Object.entries(value)\n .map(([key, value]) => {\n const [cssProp, cssValue] = getCSS(key, value);\n return `${cssProp}: ${cssValue}; `;\n })\n .join(\" \");\n createStyleNode(`${media} { .${selector} { ${cssValue} } }`);\n } else if (typeof value === \"object\" && value != null) {\n const cssValue = Object.entries(value)\n .map(([key, value]) => {\n const [cssProp, cssValue] = getCSS(key, value);\n return `${cssProp}: ${cssValue}; `;\n })\n .join(\" \");\n createStyleNode(`.${selector}${key} { ${cssValue} }`);\n }\n }\n\n return classNames.join(\" \");\n};\n\nconst serverStyles = [];\n\nexport function JSSProvider({\n themes,\n children,\n}: {\n themes: { dark: Theme; light: Theme };\n children: React.JSX.Element;\n}) {\n const stylesRef = useRef<string[] | null>(null);\n\n if (stylesRef.current == null) {\n stylesRef.current = getBaseStyles(themes);\n }\n\n return (\n <>\n {stylesRef.current.map((style, i) => (\n <style key={i} dangerouslySetInnerHTML={{ __html: style }} />\n ))}\n {children}\n </>\n );\n}\n\nexport function JSServerStyles() {\n const stylesRef = useRef<string[] | null>(null);\n\n if (stylesRef.current == null) {\n stylesRef.current = serverStyles;\n }\n\n return (\n <>\n {stylesRef.current.map((style, i) => (\n <style key={i} dangerouslySetInnerHTML={{ __html: style }} />\n ))}\n </>\n );\n}\n\nexport type Size =\n | \"xsmall\"\n | \"small\"\n | \"medium\"\n | \"large\"\n | \"xlarge\"\n | \"xxlarge\"\n | \"xxxlarge\";\n\nexport type Spacing = \"none\" | Size;\n\nexport type Gap = Spacing;\n\nexport type Padding = Spacing | [Spacing, Spacing];\n\nexport type Margin = Spacing | [Spacing, Spacing];\n\nexport type Direction = \"horizontal\" | \"vertical\";\n\nexport type Position = \"start\" | \"end\";\n\nexport type Justify =\n | \"none\"\n | \"center\"\n | \"flex-start\"\n | \"space-between\"\n | \"flex-end\"\n | \"stretch\";\n\nexport type Align = \"none\" | \"center\" | \"stretch\" | \"flex-start\" | \"flex-end\";\n\nexport type FlexDirection = \"row\" | \"column\";\n\nexport type Color =\n | \"none\"\n | \"light\"\n | \"dark\"\n | \"negative\"\n | \"warning\"\n | \"highlight\"\n | \"primary-background\"\n | \"secondary-background\"\n | \"divider\"\n | \"inherit\";\n\nexport type TextColor =\n | \"primary\"\n | \"secondary\"\n | \"highlight\"\n | \"negative\"\n | \"subtle\"\n | \"light\"\n | \"inherit\";\n\nexport function cssVar(string: keyof Theme): string {\n return `var(${string})`;\n}\n\nconst sizes: { [size in Size]: string } = {\n xsmall: cssVar(\"--spacing-xs\"),\n small: cssVar(\"--spacing-s\"),\n medium: cssVar(\"--spacing-m\"),\n large: cssVar(\"--spacing-l\"),\n xlarge: cssVar(\"--spacing-xl\"),\n xxlarge: cssVar(\"--spacing-xxl\"),\n xxxlarge: cssVar(\"--spacing-xxxl\"),\n};\n\nexport function getSize(size: Size): string {\n return sizes[size];\n}\n\nexport function getSpacing(spacing: Spacing): string {\n if (spacing === \"none\") {\n return \"0px\";\n } else {\n return getSize(spacing);\n }\n}\n\nexport function getPadding(padding: Padding): JSS {\n if (Array.isArray(padding)) {\n const [vertical, horizontal] = padding;\n return {\n paddingTop: getSpacing(vertical),\n paddingBottom: getSpacing(vertical),\n paddingLeft: getSpacing(horizontal),\n paddingRight: getSpacing(horizontal),\n };\n } else {\n return {\n padding: getSpacing(padding),\n };\n }\n}\n\nexport function getMargin(margin: Margin): JSS {\n if (Array.isArray(margin)) {\n const [vertical, horizontal] = margin;\n return {\n marginTop: getSpacing(vertical),\n marginBottom: getSpacing(vertical),\n marginLeft: getSpacing(horizontal),\n marginRight: getSpacing(horizontal),\n };\n } else {\n return {\n margin: getSpacing(margin),\n };\n }\n}\n\nexport type Theme = {\n /* Background */\n [\"--overlay-background\"]: string;\n [\"--primary-background\"]: string;\n [\"--secondary-background\"]: string;\n [\"--divider\"]: string;\n [\"--strong-divider\"]: string;\n [\"--pressed-background\"]: string;\n [\"--hovered-background\"]: string;\n [\"--selected-background\"]: string;\n [\"--nav-bar\"]: string;\n /* Effects */\n [\"--warning\"]: string;\n [\"--highlight\"]: string;\n [\"--outline\"]: string;\n [\"--light-highlight\"]: string;\n /* Text */\n [\"--primary-text\"]: string;\n [\"--secondary-text\"]: string;\n [\"--subtle-text\"]: string;\n [\"--highlight-text\"]: string;\n [\"--negative-text\"]: string;\n [\"--light-text\"]: string;\n\n [\"--font-xsmall\"]: string;\n [\"--font-small\"]: string;\n [\"--font-medium\"]: string;\n [\"--font-large\"]: string;\n [\"--font-xlarge\"]: string;\n [\"--font-xxlarge\"]: string;\n [\"--font-xxxlarge\"]: string;\n\n /* Buttons */\n [\"--background-button-positive\"]: string;\n [\"--background-button-secondary\"]: string;\n [\"--background-button-negative\"]: string;\n [\"--background-button-disabled\"]: string;\n /* Spacing */\n [\"--spacing-xs\"]: string;\n [\"--spacing-s\"]: string;\n [\"--spacing-m\"]: string;\n [\"--spacing-l\"]: string;\n [\"--spacing-xl\"]: string;\n [\"--spacing-xxl\"]: string;\n [\"--spacing-xxxl\"]: string;\n [\"--border-radius-s\"]: string;\n [\"--border-radius-m\"]: string;\n [\"--border-radius-l\"]: string;\n [\"--nav-bar-height\"]: string;\n /* Shadows */\n [\"--shadow-sm\"]: string;\n [\"--shadow-md\"]: string;\n [\"--shadow-lg\"]: string;\n /* Transitions */\n [\"--transition-fast\"]: string;\n [\"--transition-normal\"]: string;\n};\n\nexport const lightTheme: Theme = {\n /* Background */\n [\"--overlay-background\"]: \"rgb(245, 246, 250)\",\n [\"--primary-background\"]: \"rgb(239, 239, 244)\",\n [\"--secondary-background\"]: \"rgb(232, 232, 234)\",\n [\"--divider\"]: \"rgb(200, 200, 200)\",\n [\"--strong-divider\"]: \"rgb(100, 100, 100)\",\n [\"--pressed-background\"]: \"rgb(220, 222, 224)\",\n [\"--hovered-background\"]: \"rgb(232, 235, 237)\",\n [\"--selected-background\"]: \"rgb(227, 230, 232)\",\n [\"--nav-bar\"]: \"rgb(232, 232, 234)\",\n /* Effects */\n [\"--warning\"]: \"rgb(255, 204, 0)\",\n [\"--highlight\"]: \"rgb(0, 122, 255)\",\n [\"--outline\"]: \"rgb(103, 176, 255)\",\n [\"--light-highlight\"]: \"rgb(220, 232, 245)\",\n /* Text */\n [\"--primary-text\"]: \"rgb(0, 0, 0)\",\n [\"--secondary-text\"]: \"rgb(100, 100, 100)\",\n [\"--subtle-text\"]: \"rgb(180, 180, 180)\",\n [\"--highlight-text\"]: \"rgb(0, 122, 255)\",\n [\"--negative-text\"]: \"rgb(255, 59, 48)\",\n [\"--light-text\"]: \"rgb(255, 255, 255)\",\n [\"--font-xsmall\"]: \"8px\",\n [\"--font-small\"]: \"12px\",\n [\"--font-medium\"]: \"14px\",\n [\"--font-large\"]: \"18px\",\n [\"--font-xlarge\"]: \"22px\",\n [\"--font-xxlarge\"]: \"26px\",\n [\"--font-xxxlarge\"]: \"34px\",\n /* Buttons */\n [\"--background-button-positive\"]: \"rgb(0, 122, 255)\",\n [\"--background-button-secondary\"]: \"rgb(218, 218, 223)\",\n [\"--background-button-negative\"]: \"rgb(255, 59, 48)\",\n [\"--background-button-disabled\"]: \"rgb(218, 218, 223)\",\n /* Spacing */\n [\"--spacing-xs\"]: \"2px\",\n [\"--spacing-s\"]: \"4px\",\n [\"--spacing-m\"]: \"8px\",\n [\"--spacing-l\"]: \"12px\",\n [\"--spacing-xl\"]: \"16px\",\n [\"--spacing-xxl\"]: \"24px\",\n [\"--spacing-xxxl\"]: \"32px\",\n [\"--border-radius-s\"]: \"2px\",\n [\"--border-radius-m\"]: \"4px\",\n [\"--border-radius-l\"]: \"8px\",\n [\"--nav-bar-height\"]: \"50px\",\n /* Shadows */\n [\"--shadow-sm\"]: \"0 1px 2px rgba(0, 0, 0, 0.05), 0 1px 3px rgba(0, 0, 0, 0.1)\",\n [\"--shadow-md\"]: \"0 4px 6px rgba(0, 0, 0, 0.07), 0 2px 4px rgba(0, 0, 0, 0.05)\",\n [\"--shadow-lg\"]: \"0 10px 25px rgba(0, 0, 0, 0.15), 0 4px 10px rgba(0, 0, 0, 0.1)\",\n /* Transitions */\n [\"--transition-fast\"]: \"0.15s ease\",\n [\"--transition-normal\"]: \"0.2s ease\",\n};\n\nexport const darkTheme: Theme = {\n /* Background */\n [\"--overlay-background\"]: \"rgb(35, 36, 37)\",\n [\"--primary-background\"]: \"rgb(42, 43, 46)\",\n [\"--secondary-background\"]: \"rgb(65, 66, 67)\",\n [\"--divider\"]: \"rgb(70, 72, 73)\",\n [\"--strong-divider\"]: \"rgb(100, 100, 100)\",\n [\"--pressed-background\"]: \"rgb(90, 92, 93)\",\n [\"--hovered-background\"]: \"rgb(50, 53, 54)\",\n [\"--selected-background\"]: \"rgb(65, 68, 69)\",\n [\"--nav-bar\"]: \"rgb(34, 35, 36)\",\n /* Effects */\n [\"--warning\"]: \"rgb(255, 204, 0)\",\n [\"--highlight\"]: \"rgb(50, 140, 220)\",\n [\"--outline\"]: \"rgb(91, 170, 255)\",\n [\"--light-highlight\"]: \"rgba(49, 57, 63)\",\n /* Text */\n [\"--primary-text\"]: \"rgb(255, 255, 255)\",\n [\"--secondary-text\"]: \"rgb(200, 200, 200)\",\n [\"--subtle-text\"]: \"rgb(140, 140, 140)\",\n [\"--highlight-text\"]: \"#4ca7f8\",\n [\"--negative-text\"]: \"rgb(255, 59, 48)\",\n [\"--light-text\"]: \"rgb(255, 255, 255)\",\n [\"--font-xsmall\"]: \"8px\",\n [\"--font-small\"]: \"12px\",\n [\"--font-medium\"]: \"14px\",\n [\"--font-large\"]: \"18px\",\n [\"--font-xlarge\"]: \"22px\",\n [\"--font-xxlarge\"]: \"26px\",\n [\"--font-xxxlarge\"]: \"34px\",\n /* Buttons */\n [\"--background-button-positive\"]: \"rgb(50, 140, 220)\",\n [\"--background-button-secondary\"]: \"rgb(82, 83, 86)\",\n [\"--background-button-negative\"]: \"rgb(255, 59, 48)\",\n [\"--background-button-disabled\"]: \"rgb(70, 72, 73)\",\n /* Spacing */\n [\"--spacing-xs\"]: \"2px\",\n [\"--spacing-s\"]: \"4px\",\n [\"--spacing-m\"]: \"8px\",\n [\"--spacing-l\"]: \"12px\",\n [\"--spacing-xl\"]: \"16px\",\n [\"--spacing-xxl\"]: \"24px\",\n [\"--spacing-xxxl\"]: \"32px\",\n [\"--border-radius-s\"]: \"2px\",\n [\"--border-radius-m\"]: \"4px\",\n [\"--border-radius-l\"]: \"8px\",\n [\"--nav-bar-height\"]: \"50px\",\n /* Shadows - stronger for dark mode to be visible */\n [\"--shadow-sm\"]: \"0 1px 2px rgba(0, 0, 0, 0.2), 0 1px 3px rgba(0, 0, 0, 0.3)\",\n [\"--shadow-md\"]: \"0 4px 6px rgba(0, 0, 0, 0.25), 0 2px 4px rgba(0, 0, 0, 0.2)\",\n [\"--shadow-lg\"]: \"0 10px 25px rgba(0, 0, 0, 0.35), 0 4px 10px rgba(0, 0, 0, 0.25)\",\n /* Transitions */\n [\"--transition-fast\"]: \"0.15s ease\",\n [\"--transition-normal\"]: \"0.2s ease\",\n};\n\nexport const baseStyles = `\n* {\n box-sizing: border-box;\n border: none;\n touch-action: manipulation;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n*:focus {\n outline-color: ${cssVar(\"--highlight\")};\n}\n\nhtml,\nbody {\n margin: 0;\n height: 100%;\n width: 100%;\n overflow: hidden;\n background-color: ${cssVar(\"--primary-background\")};\n}\n\n@keyframes dialogFadeIn {\n from {\n opacity: 0;\n transform: scale(0.95) translateY(-10px);\n }\n to {\n opacity: 1;\n transform: scale(1) translateY(0);\n }\n}\n\n@keyframes backdropFadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n@keyframes popoverFadeIn {\n from {\n opacity: 0;\n transform: scale(0.95);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n\n`;\n\nconst backgroundStyles = {\n highlight: {\n backgroundColor: cssVar(\"--highlight\"),\n },\n light: {\n backgroundColor: cssVar(\"--light-text\"),\n },\n dark: {\n backgroundColor: cssVar(\"--primary-text\"),\n },\n warning: {\n backgroundColor: cssVar(\"--warning\"),\n },\n \"primary-background\": {\n backgroundColor: cssVar(\"--primary-background\"),\n },\n negative: {\n backgroundColor: cssVar(\"--negative-text\"),\n },\n \"secondary-background\": {\n backgroundColor: cssVar(\"--secondary-background\"),\n },\n divider: {\n backgroundColor: cssVar(\"--divider\"),\n },\n inherit: {\n backgroundColor: \"inherit\",\n },\n};\n\nexport const getBackground = (color: Color): JSS => {\n return backgroundStyles[color];\n};\n\nexport const MOBILE = 750;\nexport const TABLET = 1000;\nexport const LAPTOP = 1200;\n\nexport const MOBILE_MEDIA = `@media (min-width: 0px) and (max-width: ${MOBILE}px)`;\nexport const TABLET_MEDIA = `@media (min-width: ${MOBILE}px) and (max-width: ${TABLET}px)`;\nexport const LAPTOP_MEDIA = `@media (min-width: ${TABLET}px) and (max-width: ${LAPTOP}px)`;\nexport const DESKTOP_MEDIA = `@media (min-width: ${LAPTOP}px)`;\n\nexport function mobile(jss: JSS): { [key: string]: JSS } {\n return {\n [MOBILE_MEDIA]: jss,\n };\n}\n\nexport function tablet(jss: JSS): { [key: string]: JSS } {\n return {\n [TABLET_MEDIA]: jss,\n };\n}\n\nexport function laptop(jss: JSS): { [key: string]: JSS } {\n return {\n [LAPTOP_MEDIA]: jss,\n };\n}\n\nexport function desktop(jss: JSS): { [key: string]: JSS } {\n return {\n [DESKTOP_MEDIA]: jss,\n };\n}\n\nconst textColorStyles = {\n primary: {\n color: cssVar(\"--primary-text\"),\n },\n secondary: {\n color: cssVar(\"--secondary-text\"),\n },\n highlight: {\n color: cssVar(\"--highlight-text\"),\n },\n negative: {\n color: cssVar(\"--negative-text\"),\n },\n subtle: {\n color: cssVar(\"--subtle-text\"),\n },\n light: {\n color: cssVar(\"--light-text\"),\n },\n inherit: {\n color: \"inherit\",\n },\n};\n\nexport const getTextColor = (color: TextColor) => {\n return textColorStyles[color];\n};\n\nexport function getBaseStyles(themes: { light: Theme; dark: Theme }): string[] {\n const css: string[] = [];\n\n css.push(baseStyles);\n\n css.push(`body {\n color-scheme: light;\n ${Object.entries(themes.light)\n .map(([key, value]) => `${key}: ${value};`)\n .join(\"\\n \")}\n }`);\n\n css.push(`body.dark-mode {\n color-scheme: dark;\n ${Object.entries(themes.dark)\n .map(([key, value]) => `${key}: ${value};`)\n .join(\"\\n \")}\n }`);\n\n return css;\n}\n","import React from \"react\";\nimport { JSS, toClassnames } from \"./jss\";\n\nconst styles: { [key: string]: JSS } = {\n relative: {\n position: \"relative\",\n },\n grow: {\n flexGrow: 1,\n },\n shrink: {\n flexShrink: 1,\n },\n};\n\nexport interface BaseViewProps extends React.HTMLAttributes<HTMLElement> {\n jss?: JSS;\n ref?: React.Ref<HTMLDivElement>;\n className?: undefined;\n grow?: boolean;\n shrink?: boolean;\n relative?: boolean;\n tag?: keyof HTMLElementTagNameMap;\n}\n\nexport const BaseView = React.forwardRef(\n (\n {\n jss,\n children,\n tag,\n grow,\n shrink,\n relative,\n ...otherProps\n }: BaseViewProps,\n ref?: React.Ref<HTMLElement>\n ) => {\n const Tag: string = tag ?? \"div\";\n\n return (\n // @ts-ignore\n <Tag\n ref={ref}\n className={toClassnames([\n jss,\n grow && styles.grow,\n shrink && styles.shrink,\n relative && styles.relative,\n ])}\n {...otherProps}\n >\n {children}\n </Tag>\n );\n }\n);\n","import React from \"react\";\n\nimport { BaseView } from \"./BaseView\";\nimport { Color, JSS, Size, getBackground } from \"./jss\";\n\nconst sizes = {\n xsmall: 4,\n small: 6,\n medium: 12,\n large: 18,\n xlarge: 24,\n};\n\nexport function Badge({\n size = \"medium\",\n color = \"highlight\",\n jss,\n}: {\n size?: Size;\n color?: Color;\n jss?: JSS;\n}) {\n return (\n <BaseView\n jss={[\n {\n width: sizes[size],\n height: sizes[size],\n borderRadius: sizes[size] / 2,\n },\n getBackground(color),\n jss,\n ]}\n />\n );\n}\n","import { JSS, Padding, TextColor, cssVar, getPadding } from \"./jss\";\n\nexport type InteractableColor =\n | \"positive\"\n | \"primary\"\n | \"negative\"\n | \"dark\"\n | \"light\";\n\nconst styles = {\n root: {\n cursor: \"pointer\",\n display: \"inline-flex\",\n alignItems: \"center\",\n transition: \"opacity 0.1s ease-in\",\n outlineColor: cssVar(\"--outline\"),\n \"[aria-disabled=true]\": {\n color: cssVar(\"--secondary-text\"),\n backgroundColor: cssVar(\"--background-button-secondary\"),\n },\n \":focus-visible\": {\n outlineWidth: \"2px\",\n outlineStyle: \"solid\",\n outlineOffset: -2,\n },\n },\n dark: {\n backgroundColor: \"black\",\n \"[aria-disabled=true]\": {\n backgroundColor: cssVar(\"--background-button-disabled\"),\n },\n },\n light: {\n backgroundColor: \"white\",\n \"[aria-disabled=true]\": {\n backgroundColor: cssVar(\"--background-button-disabled\"),\n },\n },\n positive: {\n backgroundColor: cssVar(\"--background-button-positive\"),\n \"[aria-disabled=true]\": {\n backgroundColor: cssVar(\"--background-button-disabled\"),\n },\n },\n primary: {\n backgroundColor: cssVar(\"--background-button-secondary\"),\n \"[aria-disabled=true]\": {\n backgroundColor: cssVar(\"--background-button-disabled\"),\n },\n },\n negative: {\n backgroundColor: cssVar(\"--background-button-negative\"),\n \"[aria-disabled=true]\": {\n backgroundColor: cssVar(\"--background-button-disabled\"),\n },\n },\n disabled: {\n cursor: \"default\",\n },\n bare: {\n backgroundColor: \"inherit\",\n outlineColor: cssVar(\"--outline\"),\n \"[aria-disabled=true]\": {\n backgroundColor: \"inherit\",\n },\n \"[aria-disabled=true]:hover\": {\n backgroundColor: \"inherit\",\n },\n },\n opacityHover: {\n \":hover\": {\n opacity: 0.8,\n },\n \"[aria-disabled=true]:hover\": {\n opacity: 1,\n },\n },\n colorHover: {},\n};\n\nexport function getInteractableJSS({\n color,\n bare,\n disabled,\n animateInteraction,\n padding,\n border,\n}: {\n color: InteractableColor;\n bare: boolean;\n disabled: boolean;\n animateInteraction: boolean;\n padding: Padding;\n border: boolean;\n}): Array<JSS> {\n return [\n styles.root,\n color === \"dark\" && styles.dark,\n color === \"light\" && styles.light,\n color === \"positive\" && styles.positive,\n color === \"primary\" && styles.primary,\n color === \"negative\" && styles.negative,\n border && {\n border: `1px solid ${getCSSColor(color, disabled, bare)}`,\n },\n bare && styles.bare,\n disabled && styles.disabled,\n !bare && styles.opacityHover,\n animateInteraction &&\n !disabled && {\n position: \"relative\",\n \":active\": {\n opacity: 0.95,\n top: 1,\n },\n \"[aria-disabled=true]:active\": {\n top: 0,\n opacity: 1,\n },\n },\n getPadding(padding),\n ];\n}\n\nexport const getGlyphColor = (\n color: InteractableColor,\n disabled: boolean | undefined,\n bare: boolean | undefined\n): TextColor => {\n if (disabled) {\n return \"subtle\";\n }\n\n switch (color) {\n case \"positive\":\n return bare ? \"highlight\" : \"light\";\n case \"negative\":\n return bare ? \"negative\" : \"light\";\n case \"primary\":\n return bare ? \"primary\" : \"secondary\";\n case \"dark\":\n return bare ? \"primary\" : \"light\";\n case \"light\":\n return bare ? \"light\" : \"primary\";\n }\n};\n\nexport const getCSSColor = (\n color: InteractableColor,\n disabled: boolean | undefined,\n bare: boolean | undefined\n): string => {\n if (disabled) {\n return cssVar(\"--subtle-text\");\n }\n\n switch (color) {\n case \"positive\":\n return bare ? cssVar(\"--highlight\") : cssVar(\"--light-text\");\n case \"negative\":\n return bare ? cssVar(\"--negative-text\") : cssVar(\"--light-text\");\n case \"primary\":\n return bare ? cssVar(\"--primary-text\") : cssVar(\"--secondary-text\");\n case \"dark\":\n return bare ? cssVar(\"--primary-text\") : cssVar(\"--light-text\");\n case \"light\":\n return bare ? cssVar(\"--light-text\") : cssVar(\"--primary-text\");\n }\n};\n\nexport const getInteractableListItemJSS = ({\n bare,\n selected,\n}: {\n bare: boolean;\n selected: boolean;\n}) => {\n return [\n {\n overflow: \"hidden\",\n flexGrow: 1,\n borderRadius: bare ? cssVar(\"--border-radius-m\") : null,\n textDecoration: \"none\",\n \":hover\": {\n backgroundColor: cssVar(\"--hovered-background\"),\n },\n \":active:hover\": {\n backgroundColor: cssVar(\"--pressed-background\"),\n },\n \"[aria-disabled=true]\": {\n backgroundColor: cssVar(\"--primary-background\"),\n },\n \"[aria-disabled=true]:active:hover\": {\n backgroundColor: cssVar(\"--primary-background\"),\n },\n },\n selected && {\n backgroundColor: bare\n ? cssVar(\"--light-highlight\")\n : cssVar(\"--selected-background\"),\n boxShadow: bare ? \"\" : \"inset 1px 1px 2px -1px #0000004a\",\n \":hover\": {\n backgroundColor: cssVar(\"--hovered-background\"),\n },\n \":active:hover\": {\n backgroundColor: cssVar(\"--pressed-background\"),\n },\n },\n ];\n};\n","import React from \"react\";\nimport { InteractableColor, getInteractableJSS } from \"./Interactable\";\nimport { JSS, Padding, toClassnames } from \"./jss\";\n\nexport interface BaseButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n onClick: (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;\n jss?: JSS;\n color: InteractableColor;\n bare?: boolean;\n border?: boolean;\n className?: undefined;\n animateInteraction?: boolean;\n padding?: Padding;\n}\n\nexport const BaseButton = React.forwardRef(\n (\n {\n onClick,\n children,\n jss,\n color,\n bare = false,\n border = false,\n disabled,\n animateInteraction = true,\n padding,\n ...otherProps\n }: BaseButtonProps,\n ref?: React.Ref<HTMLButtonElement>\n ) => {\n return (\n <button\n type=\"button\"\n {...otherProps}\n aria-disabled={disabled ? true : undefined}\n ref={ref}\n onClick={(event) => {\n if (disabled) {\n return;\n }\n\n onClick?.(event);\n }}\n className={toClassnames([\n ...getInteractableJSS({\n color,\n bare,\n border,\n disabled,\n animateInteraction,\n padding,\n }),\n jss,\n ])}\n >\n {children}\n </button>\n );\n }\n);\n","import React, { ReactNode } from \"react\";\nimport {\n JSS,\n Size,\n TextColor,\n cssVar,\n getTextColor,\n toClassnames,\n} from \"./jss\";\n\nconst fontSize = {\n xsmall: cssVar(\"--font-xsmall\"),\n small: cssVar(\"--font-small\"),\n medium: cssVar(\"--font-medium\"),\n large: cssVar(\"--font-large\"),\n xlarge: cssVar(\"--font-xlarge\"),\n xxlarge: cssVar(\"--font-xxlarge\"),\n xxxlarge: cssVar(\"--font-xxxlarge\"),\n};\n\nexport type Display = \"inline\" | \"block\";\n\nexport interface TextProps {\n children: ReactNode;\n color?: TextColor;\n size?: Size;\n bold?: boolean;\n ellipsis?: boolean | \"default\";\n align?: \"center\" | \"none\";\n type?: TextType;\n grow?: boolean;\n jss?: JSS;\n id?: string;\n htmlFor?: string;\n}\n\nexport type TextType =\n | \"label\"\n | \"span\"\n | \"p\"\n | \"h1\"\n | \"h2\"\n | \"h3\"\n | \"h4\"\n | \"li\";\n\nexport function Text({\n children,\n color = \"primary\",\n size = \"medium\",\n align = \"none\",\n bold = false,\n ellipsis = \"default\",\n grow,\n type: Type = \"span\",\n jss,\n id,\n htmlFor,\n}: TextProps) {\n if (ellipsis === \"default\") {\n ellipsis = Type === \"span\" || Type === \"label\";\n }\n\n const className = toClassnames([\n getTextColor(color),\n { fontSize: fontSize[size], padding: 0, margin: 0 },\n bold && { fontWeight: \"bold\" },\n align === \"center\" && { textAlign: \"center\" },\n ellipsis && {\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n },\n grow && { flexGrow: 1 },\n jss,\n ]);\n\n return (\n <Type id={id} className={className} htmlFor={htmlFor}>\n {children}\n </Type>\n );\n}\n\nexport function Label({ size = \"medium\", type = \"label\", ...rest }: TextProps) {\n return <Text size={size} type={type} {...rest} />;\n}\n\nexport function Span({ size = \"medium\", type = \"span\", ...rest }: TextProps) {\n return <Text size={size} type={type} {...rest} />;\n}\n\nexport function P({ size = \"medium\", type = \"p\", ...rest }: TextProps) {\n return <Text size={size} type={type} {...rest} />;\n}\n\nexport function H1({ size = \"xxlarge\", type = \"h1\", ...rest }: TextProps) {\n return <Text size={size} type={type} {...rest} />;\n}\n\nexport function H2({ size = \"xlarge\", type = \"h2\", ...rest }: TextProps) {\n return <Text size={size} type={type} {...rest} />;\n}\n\nexport function H3({ size = \"large\", type = \"h3\", ...rest }: TextProps) {\n return <Text size={size} type={type} {...rest} />;\n}\n\nexport function Li({ size = \"medium\", type = \"li\", ...rest }: TextProps) {\n return <Text size={size} type={type} {...rest} />;\n}\n","import React, { ReactNode, useId } from \"react\";\nimport { JSS, Size, TextColor, toClassnames } from \"./jss\";\nimport { Label } from \"./Text\";\n\nexport interface BaseInputProps\n extends React.InputHTMLAttributes<HTMLInputElement> {\n jss?: JSS;\n className?: undefined;\n size?: undefined;\n children?: undefined;\n label?: ReactNode;\n labelSize?: Size;\n labelColor?: TextColor;\n labelBold?: boolean;\n labelPosition?: \"start\" | \"end\";\n}\n\nexport const BaseInput = React.forwardRef(\n (\n {\n jss,\n label,\n labelPosition = \"end\",\n labelSize,\n labelColor,\n labelBold,\n id: propId,\n ...otherProps\n }: BaseInputProps,\n ref?: React.Ref<HTMLInputElement>\n ) => {\n const hookid = useId();\n const id = propId ?? hookid;\n const labelElement = (\n <Label\n size={labelSize}\n bold={labelBold}\n color={labelColor}\n jss={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n htmlFor={id}\n >\n {label}\n </Label>\n );\n\n return (\n <>\n {label && labelPosition === \"start\" && labelElement}\n <input\n id={id}\n ref={ref}\n className={toClassnames(jss)}\n {...otherProps}\n />\n {label && labelPosition === \"end\" && labelElement}\n </>\n );\n }\n);\n","import React, { useContext } from \"react\";\nimport { InteractableColor, getInteractableJSS } from \"./Interactable\";\nimport { JSS, Padding, toClassnames } from \"./jss\";\n\nexport interface BaseLinkProps\n extends React.LinkHTMLAttributes<HTMLAnchorElement> {\n onClick?: (e: React.MouseEvent<HTMLAnchorElement, MouseEvent>) => void;\n target?: string;\n jss?: JSS;\n color: InteractableColor;\n href: string;\n disabled?: boolean;\n bare?: boolean;\n border?: boolean;\n className?: undefined;\n animateInteraction?: boolean;\n padding?: Padding;\n}\n\n// This only exists to make NextJS happy, it should not be used in any other case\nexport const BaseLinkComponentOverrideContext = React.createContext((props) => (\n <a {...props} />\n));\n\nexport const BaseLink = React.forwardRef(\n (\n {\n onClick,\n children,\n jss,\n color,\n bare = false,\n disabled,\n animateInteraction = true,\n padding,\n href,\n border,\n role = \"link\",\n ...otherProps\n }: BaseLinkProps,\n ref?: React.Ref<HTMLAnchorElement>\n ) => {\n const Link = useContext(BaseLinkComponentOverrideContext);\n\n return (\n <Link\n {...otherProps}\n aria-disabled={disabled ? true : undefined}\n href={href}\n role={role}\n ref={ref}\n onClick={\n onClick\n ? (event) => {\n if (disabled) {\n return;\n }\n\n onClick(event);\n }\n : undefined\n }\n className={toClassnames([\n ...getInteractableJSS({\n color,\n border,\n bare,\n disabled,\n animateInteraction,\n padding,\n }),\n disabled && { pointerEvents: \"none\" },\n jss,\n ])}\n >\n {children}\n </Link>\n );\n }\n);\n","import React from \"react\";\n\nimport { BaseView, BaseViewProps } from \"./BaseView\";\nimport {\n Justify,\n Gap,\n Align,\n Padding,\n FlexDirection,\n getPadding,\n getSpacing,\n} from \"./jss\";\n\nexport interface FlexLayoutProps extends BaseViewProps {\n justify?: Justify;\n gap?: Gap;\n align?: Align;\n padding?: Padding;\n direction?: FlexDirection;\n}\n\nexport const FlexLayout = React.forwardRef(\n (\n {\n jss,\n gap = \"none\",\n justify = \"none\",\n align = \"none\",\n padding = \"none\",\n direction = \"column\",\n ...otherProps\n }: FlexLayoutProps,\n ref?: React.Ref<HTMLElement>\n ) => {\n return (\n <BaseView\n ref={ref}\n jss={[\n {\n display: \"flex\",\n flexDirection: direction,\n gap: getSpacing(gap),\n justifyContent: justify,\n alignItems: align,\n },\n getPadding(padding),\n jss,\n ]}\n {...otherProps}\n />\n );\n }\n);\n","import React from \"react\";\nimport { FlexLayout, FlexLayoutProps } from \"./FlexLayout\";\n\nexport interface ColumnProps extends FlexLayoutProps {\n direction?: \"column\";\n}\n\nexport const Column = React.forwardRef(\n (props: ColumnProps, ref?: React.Ref<HTMLDivElement>) => {\n return <FlexLayout ref={ref} direction=\"column\" {...props} />;\n }\n);\n","import React from \"react\";\nimport { Column, ColumnProps } from \"./Column\";\n\nexport interface BaseListProps extends ColumnProps {\n tag?: undefined;\n}\n\nexport const BaseList = React.forwardRef(\n ({ jss, ...otherProps }: BaseListProps, ref?: React.Ref<HTMLDivElement>) => {\n return (\n <Column\n {...otherProps}\n tag=\"ul\"\n jss={[\n {\n listStyle: \"none\",\n margin: 0,\n padding: 0,\n },\n jss,\n ]}\n ref={ref}\n />\n );\n }\n);\n","import React from \"react\";\nimport { BaseView, BaseViewProps } from \"./BaseView\";\n\nexport interface BaseListAddOnProps extends BaseViewProps {}\n\nexport const BaseListAddOn = React.forwardRef(\n (props: BaseListAddOnProps, ref?: React.Ref<HTMLDivElement>) => {\n return <BaseView {...props} ref={ref} />;\n }\n);\n","import React from \"react\";\nimport { BaseView } from \"./BaseView\";\n\nconst styles = {\n root: {\n width: \"100%\",\n borderBottom: \"1px solid var(--divider)\",\n },\n};\n\nexport function ListDivider() {\n return <BaseView jss={styles.root} />;\n}\n","import React from \"react\";\nimport { FlexLayout, FlexLayoutProps } from \"./FlexLayout\";\n\nexport interface RowProps extends FlexLayoutProps {\n direction?: \"row\";\n}\n\nexport const Row = React.forwardRef(\n (props: RowProps, ref?: React.Ref<HTMLElement>) => {\n return <FlexLayout ref={ref} direction=\"row\" {...props} />;\n }\n);\n","import React, { ReactNode } from \"react\";\n\nimport { Text, TextType } from \"./Text\";\nimport { Row } from \"./Row\";\nimport { BaseView } from \"./BaseView\";\nimport { Column } from \"./Column\";\nimport {\n TextColor,\n Size,\n Position,\n Gap,\n Padding,\n Align,\n cssVar,\n JSS,\n} from \"./jss\";\n\nexport interface TextPairingProps {\n headline: ReactNode;\n body?: ReactNode;\n headlineColor?: TextColor;\n headlineSize?: Size;\n headlineAddOn?: ReactNode;\n bodyColor?: TextColor;\n bodySize?: Size;\n addOn?: ReactNode;\n addOnPosition?: Position;\n gap?: Gap;\n padding?: Padding;\n align?: Align;\n grow?: boolean;\n shrink?: boolean;\n headlineBold?: boolean;\n jss?: JSS;\n}\n\nexport function TextPairing({\n headline,\n body,\n headlineColor = \"primary\",\n headlineSize = \"medium\",\n headlineAddOn,\n bodyColor = \"secondary\",\n bodySize = \"medium\",\n addOn,\n addOnPosition = \"start\",\n gap = \"small\",\n align = \"stretch\",\n grow,\n shrink,\n headlineBold,\n padding,\n jss,\n}: TextPairingProps) {\n const textElement = (\n <Column\n grow={grow}\n shrink={shrink}\n padding={addOn ? undefined : padding}\n align={align}\n jss={[\n {\n overflow: \"hidden\",\n },\n jss,\n ]}\n >\n <Row\n align=\"center\"\n jss={{\n textAlign: \"start\",\n }}\n >\n <Text bold={headlineBold} color={headlineColor} size={headlineSize}>\n {headline}\n </Text>\n {headlineAddOn && <BaseView>{headlineAddOn}</BaseView>}\n </Row>\n {body && (\n <Row\n align=\"center\"\n jss={{\n marginTop: cssVar(\"--spacing-xs\"),\n textAlign: \"start\",\n }}\n >\n <Text ellipsis={true} color={bodyColor} size={bodySize}>\n {body}\n </Text>\n </Row>\n )}\n </Column>\n );\n\n if (addOn) {\n return (\n <Row\n grow={grow}\n shrink={shrink}\n gap={gap}\n align=\"center\"\n padding={padding}\n jss={{\n overflow: \"hidden\",\n }}\n >\n {addOnPosition === \"start\" && addOn}\n {textElement}\n {addOnPosition === \"end\" && addOn}\n </Row>\n );\n }\n\n return textElement;\n}\n","type Focusable = HTMLElement;\n\nexport function queryFocusables(root: HTMLElement): Focusable[] {\n const focusables: Focusable[] = Array.from(\n root.querySelectorAll(\n \"button,input,textarea,a,[tabindex='0'],[tabindex='-1']\"\n )\n );\n\n return focusables.filter((element: Focusable) => !element[\"disabled\"]);\n}\n\nexport function queryGrid(root: HTMLElement): HTMLElement[][] {\n const rows: HTMLLIElement[] = Array.from(\n root.querySelectorAll('li[role=\"row\"]')\n );\n\n const rowsWithColumns = rows\n .map((row) => Array.from(queryFocusables(row)))\n .filter((row) => row.length > 0);\n\n return rowsWithColumns;\n}\n\nexport const normalizeGrid = (\n rows: HTMLElement[][],\n rowIndex: number,\n columnIndex: number\n): void => {\n for (const row of rows) {\n for (const column of row) {\n column.tabIndex = -1;\n }\n }\n\n const row = rows[rowIndex];\n const column = row[columnIndex] ?? row[row.length - 1];\n column.tabIndex = 0;\n};\n\nexport const focusGridElement = (\n rows: HTMLElement[][],\n rowIndex: number,\n columnIndex: number\n): void => {\n normalizeGrid(rows, rowIndex, columnIndex);\n const row = rows[rowIndex];\n const column = row[columnIndex] ?? row[row.length - 1];\n column.focus();\n column.scrollIntoView(false);\n};\n\nexport const normalizeElements = (\n focusables: HTMLElement[],\n index: number\n): void => {\n for (const element of focusables) {\n element.tabIndex = -1;\n }\n const element = focusables[index] ?? focusables[focusables.length - 1];\n element.tabIndex = 0;\n};\n\nexport const focusElement = (\n focusables: HTMLElement[],\n index: number\n): void => {\n normalizeElements(focusables, index);\n const element = focusables[index] ?? focusables[focusables.length - 1];\n element.focus();\n // element.scrollIntoView(false);\n};\n","import { useRef, useCallback } from \"react\";\n\nexport function useRefEffect<T>(\n callback: (root: T) => (() => void) | void\n): (root: T) => void {\n const unsubscribeRef = useRef<(() => void) | void>(null);\n\n const refCallback = useCallback((root: T | null) => {\n if (root === null) {\n unsubscribeRef.current && unsubscribeRef.current();\n } else {\n const unsubscribe = callback(root);\n unsubscribeRef.current = unsubscribe;\n }\n }, []);\n\n return refCallback;\n}\n","import { useRef, useCallback, useEffect } from \"react\";\n\nimport { queryFocusables, focusElement, normalizeElements } from \"./aria\";\nimport { useRefEffect } from \"./useRefEffect\";\n\nexport function useNavigation({\n autofocus = false,\n rowLength = 1,\n enabled = true,\n} = {}) {\n return useRefEffect((root: HTMLElement) => {\n if (!enabled) {\n return;\n }\n\n let index = 0;\n\n const elements = queryFocusables(root);\n\n if (elements.length === 0) {\n return;\n }\n\n if (elements.length !== 0 && autofocus) {\n focusElement(elements, index);\n } else {\n normalizeElements(elements, index);\n }\n\n const onKeyDown = (e: KeyboardEvent) => {\n const elements = queryFocusables(root);\n\n if (elements.length === 0) {\n return;\n }\n\n let newIndex: number = -1;\n\n if (e.code === \"ArrowUp\") {\n if (index - rowLength < 0) {\n newIndex = elements.length - (elements.length % rowLength) + index;\n } else {\n newIndex = index - rowLength;\n }\n } else if (e.code === \"ArrowLeft\") {\n if (index <= 0) {\n newIndex = elements.length - 1;\n } else {\n newIndex = index - 1;\n }\n } else if (e.code === \"ArrowRight\") {\n if (index >= elements.length - 1) {\n newIndex = 0;\n } else {\n newIndex = index + 1;\n }\n } else if (e.code === \"ArrowDown\") {\n if (index + rowLength > elements.length - 1) {\n newIndex = (index + rowLength) % rowLength;\n } else {\n newIndex = index + rowLength;\n }\n }\n\n if (newIndex !== -1 && index !== newIndex) {\n index = newIndex;\n focusElement(elements, index);\n e.preventDefault();\n e.stopPropagation();\n }\n };\n\n root.addEventListener(\"keydown\", onKeyDown);\n\n const observer = new MutationObserver((mutationList) => {\n if (mutationList.filter((m) => m.type === \"childList\").length > 0) {\n const elements = queryFocusables(root);\n if (elements.length > 0) {\n normalizeElements(elements, index);\n }\n }\n });\n observer.observe(root, { childList: true });\n\n return () => {\n root.removeEventListener(\"keydown\", onKeyDown);\n };\n });\n}\n","import React, { useContext, useMemo } from \"react\";\nimport { BaseList, BaseListProps } from \"./BaseList\";\nimport { useNavigation } from \"./useNavigation\";\nimport { cssVar } from \"./jss\";\n\ninterface ListProps extends BaseListProps {\n ariaLabel: string;\n bare?: boolean;\n autofocus?: boolean;\n role?: undefined;\n navigation?: boolean;\n carded?: boolean;\n}\n\nconst ListContext = React.createContext({ bare: false, carded: true });\n\nexport function List({\n ariaLabel,\n jss,\n autofocus = false,\n navigation = true,\n bare,\n carded = true,\n ...otherProps\n}: ListProps) {\n const rootRef = useNavigation({ autofocus, enabled: navigation });\n const contextValue = useMemo(() => ({ bare, carded }), [bare, carded]);\n\n return (\n <ListContext.Provider value={contextValue}>\n <BaseList\n role=\"grid\"\n aria-label={ariaLabel}\n ref={rootRef}\n jss={[\n { overflow: \"hidden\" },\n !bare && {\n backgroundColor: cssVar(\"--overlay-background\"),\n },\n !bare &&\n !carded && {\n borderBottom: `1px solid ${cssVar(\"--divider\")}`,\n borderTop: `1px solid ${cssVar(\"--divider\")}`,\n },\n !bare &&\n carded && {\n border: `1px solid ${cssVar(\"--divider\")}`,\n borderRadius: cssVar(\"--border-radius-l\"),\n },\n jss,\n ]}\n {...otherProps}\n />\n </ListContext.Provider>\n );\n}\n\nexport const useListContext = () => useContext(ListContext);\n","import React, { ReactNode } from \"react\";\n\nimport { ListDivider } from \"./ListDivider\";\nimport { Row, RowProps } from \"./Row\";\nimport { JSS, Size, Position, Spacing, TextColor, cssVar } from \"./jss\";\nimport { InteractableColor } from \"./Interactable\";\nimport { TextPairing } from \"./TextPairing\";\nimport { BaseView } from \"./BaseView\";\nimport { useListContext } from \"./List\";\n\n// @ts-ignore\nexport interface BaseListItemProps extends RowProps {\n children: (elements: { content: React.JSX.Element }) => ReactNode;\n jss?: JSS;\n withDivider?: boolean;\n headline: string;\n headlineSize?: Size;\n headlineColor?: TextColor;\n headlineAddOn?: ReactNode;\n headlineBold?: boolean;\n body?: string;\n bodySize?: Size;\n bodyColor?: TextColor;\n addOn?: ReactNode;\n addOnPosition?: Position;\n outerAddOn?: ReactNode;\n disabled?: boolean;\n role?: undefined;\n gap?: Spacing;\n selected?: boolean;\n}\n\nexport const BaseListItem = React.forwardRef(\n (\n {\n children,\n jss,\n withDivider = true,\n headline,\n headlineSize = \"medium\",\n headlineColor = \"primary\",\n headlineAddOn,\n body,\n bodySize = \"small\",\n bodyColor = \"secondary\",\n addOn,\n addOnPosition,\n outerAddOn,\n disabled = false,\n padding = \"medium\",\n gap = \"medium\",\n selected,\n headlineBold,\n ...otherProps\n }: BaseListItemProps,\n ref?: React.Ref<HTMLElement>\n ) => {\n const { bare, carded } = useListContext();\n\n const content = (\n <TextPairing\n headlineBold={headlineBold}\n padding={padding}\n gap={gap}\n addOn={addOn}\n addOnPosition={addOnPosition}\n headline={headline}\n headlineSize={headlineSize}\n headlineColor={\n disabled ? \"subtle\" : bare && selected ? \"highlight\" : headlineColor\n }\n headlineAddOn={headlineAddOn}\n body={body}\n bodySize={bodySize}\n bodyColor={disabled ? \"subtle\" : bodyColor}\n grow={true}\n shrink={false}\n />\n );\n\n return (\n <>\n <Row\n {...otherProps}\n ref={ref}\n relative\n tag=\"li\"\n role=\"row\"\n jss={[\n !bare &&\n carded && {\n [\":first-child *\"]: {\n borderTopLeftRadius: cssVar(\"--border-radius-l\"),\n borderTopRightRadius: cssVar(\"--border-radius-l\"),\n },\n [\":last-child *\"]: {\n borderBottomLeftRadius: cssVar(\"--border-radius-l\"),\n borderBottomRightRadius: cssVar(\"--border-radius-l\"),\n },\n },\n jss,\n ]}\n >\n <Row\n grow\n role=\"gridcell\"\n jss={{\n overflow: \"hidden\",\n }}\n >\n {children({ content })}\n </Row>\n {outerAddOn && <BaseView role=\"gridcell\">{outerAddOn}</BaseView>}\n </Row>\n {withDivider && <ListDivider />}\n </>\n );\n }\n);\n","import React from \"react\";\nimport { FlexLayout, FlexLayoutProps } from \"./FlexLayout\";\n\nexport interface BoxProps extends FlexLayoutProps {}\n\nexport function Box({\n padding = \"medium\",\n align = \"center\",\n justify = \"center\",\n ...otherProps\n}: BoxProps) {\n return (\n <FlexLayout\n padding={padding}\n align={align}\n justify={justify}\n {...otherProps}\n />\n );\n}\n","import React from \"react\";\nimport { Icon as IconifyIcon } from \"@iconify/react\";\nimport { BaseView } from \"./BaseView\";\nimport { IconType } from \"./IconType\";\nimport { Size, TextColor, getTextColor } from \"./jss\";\n\nconst styles = {\n root: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n \" svg\": {\n height: \"inherit\",\n width: \"inherit\",\n },\n },\n xsmall: {\n height: 8,\n width: 8,\n },\n small: {\n height: 12,\n width: 12,\n },\n medium: {\n height: 18,\n width: 18,\n },\n large: {\n height: 24,\n width: 24,\n },\n xlarge: {\n height: 32,\n width: 32,\n },\n xxlarge: {\n height: 48,\n width: 48,\n },\n xxxlarge: {\n height: 64,\n width: 64,\n },\n};\n\nexport function IconProvider({ children }: { children: React.JSX.Element }) {\n return children;\n}\n\nexport function Icon({\n icon,\n size,\n color,\n ariaLabel,\n}: {\n ariaLabel?: string;\n icon: IconType;\n size: Size;\n color: TextColor;\n}) {\n return (\n <BaseView\n aria-label={ariaLabel}\n jss={[\n styles.root,\n size === \"xsmall\" && styles.xsmall,\n size === \"small\" && styles.small,\n size === \"medium\" && styles.medium,\n size === \"large\" && styles.large,\n size === \"xlarge\" && styles.xlarge,\n size === \"xxlarge\" && styles.xxlarge,\n size === \"xxxlarge\" && styles.xxxlarge,\n getTextColor(color),\n ]}\n >\n <IconifyIcon icon={icon} width=\"100%\" height=\"100%\" />\n </BaseView>\n );\n}\n","import React from \"react\";\n\nimport { BaseButton, BaseButtonProps } from \"./BaseButton\";\nimport { Text } from \"./Text\";\nimport { IconType } from \"./IconType\";\nimport { Row } from \"./Row\";\nimport { Icon } from \"./Icon\";\nimport { FlexLayoutProps } from \"./FlexLayout\";\nimport { InteractableColor, getGlyphColor } from \"./Interactable\";\nimport { Align, Gap, Justify, Size, cssVar, getPadding } from \"./jss\";\n\nexport interface ButtonProps extends BaseButtonProps {\n children: string;\n color: InteractableColor;\n size?: Size;\n icon?: IconType;\n iconSize?: Size;\n iconPosition?: \"left\" | \"right\";\n rowProps?: FlexLayoutProps;\n align?: Align;\n gap?: Gap;\n justify?: Justify;\n bold?: boolean;\n}\n\nexport const Button = React.forwardRef(\n (\n {\n children,\n color,\n bare,\n disabled,\n icon,\n iconSize = \"medium\",\n iconPosition = \"left\",\n align = \"center\",\n gap = \"small\",\n justify = \"center\",\n jss,\n size = \"medium\",\n bold,\n padding = \"medium\",\n ...otherProps\n }: ButtonProps,\n ref?: React.Ref<HTMLButtonElement>\n ) => {\n return (\n <BaseButton\n {...otherProps}\n bare={bare}\n ref={ref}\n color={color}\n disabled={disabled}\n padding={padding}\n jss={[\n {\n borderRadius: cssVar(\"--border-radius-m\"),\n justifyContent: \"center\",\n userSelect: \"none\",\n },\n jss,\n ]}\n >\n <Row grow={true} align={align} gap={gap} justify={justify}>\n {icon && iconPosition === \"left\" && (\n <Icon\n icon={icon}\n size={iconSize}\n color={getGlyphColor(color, disabled, bare)}\n />\n )}\n <Text\n bold={bold}\n size={size}\n color={getGlyphColor(color, disabled, bare)}\n >\n {children}\n </Text>\n {icon && iconPosition === \"right\" && (\n <Icon\n icon={icon}\n size={iconSize}\n color={getGlyphColor(color, disabled, bare)}\n />\n )}\n </Row>\n </BaseButton>\n );\n }\n);\n","import React, { cloneElement, useMemo } from \"react\";\nimport { BaseView } from \"./BaseView\";\nimport { JSS } from \"./jss\";\n\nconst dateFormatter = Intl.DateTimeFormat(\"en-UK\", {\n weekday: \"short\",\n});\n\nconst MON = dateFormatter.format(new Date(2000, 1, 7));\nconst TUE = dateFormatter.format(new Date(2000, 1, 8));\nconst WED = dateFormatter.format(new Date(2000, 1, 9));\nconst THU = dateFormatter.format(new Date(2000, 1, 10));\nconst FRI = dateFormatter.format(new Date(2000, 1, 11));\nconst SAT = dateFormatter.format(new Date(2000, 1, 12));\nconst SUN = dateFormatter.format(new Date(2000, 1, 13));\n\nexport const Calendar = React.forwardRef(\n (\n {\n date,\n cell,\n header,\n jss,\n }: {\n date: Date;\n header: (props: { weekday: string }) => React.JSX.Element;\n jss?: JSS;\n cell: (props: {\n today?: boolean;\n date: Date;\n outOfMonth: boolean;\n top: boolean;\n left: boolean;\n right: boolean;\n bottom: boolean;\n }) => React.JSX.Element;\n },\n ref?: React.Ref<HTMLElement>\n ) => {\n const year = date.getFullYear();\n const month = date.getMonth();\n\n const daysInMonth = new Date(year, month + 1, 0).getDate();\n\n const firstDayOfTheMonth = new Date(year, month, 1).getDay();\n const offset = firstDayOfTheMonth === 0 ? 6 : firstDayOfTheMonth - 1;\n const headers = useMemo(() => {\n return (\n <>\n {header({ weekday: MON })}\n {header({ weekday: TUE })}\n {header({ weekday: WED })}\n {header({ weekday: THU })}\n {header({ weekday: FRI })}\n {header({ weekday: SAT })}\n {header({ weekday: SUN })}\n </>\n );\n }, []);\n\n return (\n <BaseView\n ref={ref}\n jss={[\n {\n display: \"grid\",\n gridTemplateColumns: \"1fr 1fr 1fr 1fr 1fr 1fr 1fr\",\n gridTemplateRows: \"1fr\",\n },\n jss,\n ]}\n >\n {headers}\n {Array.from(Array(offset).keys()).map((index) => {\n const dayDate = new Date(\n date.getFullYear(),\n date.getMonth(),\n index + 1 - offset\n );\n\n return cloneElement(\n cell({\n date: dayDate,\n today: false,\n top: true,\n left: index % 7 === 0,\n outOfMonth: true,\n right: false,\n bottom: false,\n }),\n { key: dayDate.toISOString() }\n );\n })}\n\n {Array.from(Array(daysInMonth).keys()).map((index) => {\n const dayDate = new Date(\n date.getFullYear(),\n date.getMonth(),\n index + 1,\n 12 // If we do not add this the ISO string would be from the day before at midnight\n );\n\n return cloneElement(\n cell({\n date: dayDate,\n top: index + offset < 7,\n left: (index + offset) % 7 === 0,\n right:\n (index + offset) % 7 === 7 - 1 || index === daysInMonth - 1,\n bottom: index > daysInMonth - 7 - 1,\n outOfMonth: false,\n today:\n dayDate.getDate() == new Date().getDate() &&\n dayDate.getMonth() == new Date().getMonth() &&\n dayDate.getFullYear() == new Date().getFullYear(),\n }),\n { key: dayDate.toISOString() }\n );\n })}\n </BaseView>\n );\n }\n);\n","import { FlexLayout, FlexLayoutProps } from \"./FlexLayout\";\nimport { cssVar } from \"./jss\";\n\nexport interface CardProps extends FlexLayoutProps {}\n\nexport function Card({\n children,\n jss,\n padding = \"large\",\n gap = \"large\",\n ...otherProps\n}: CardProps) {\n return (\n <FlexLayout\n {...otherProps}\n padding={padding}\n gap={gap}\n jss={[\n {\n backgroundColor: cssVar(\"--overlay-background\"),\n borderRadius: cssVar(\"--border-radius-l\"),\n boxShadow: cssVar(\"--shadow-sm\"),\n },\n jss,\n ]}\n >\n {children}\n </FlexLayout>\n );\n}\n","import React from \"react\";\nimport { BaseView } from \"./BaseView\";\nimport { Icon } from \"./Icon\";\nimport { JSS, Size, cssVar } from \"./jss\";\nimport { IconType } from \"./IconType\";\n\ntype StaticCheckboxProps = {\n checked: boolean;\n size: Size;\n icon?: IconType;\n};\n\nconst styles: { [key: string]: JSS } = {\n border: {\n position: \"absolute\",\n top: \"var(--spacing-xs)\",\n bottom: \"var(--spacing-xs)\",\n left: \"var(--spacing-xs)\",\n right: \"var(--spacing-xs)\",\n border: \"1px solid var(--divider)\",\n borderRadius: \"50%\",\n },\n borderChecked: {\n border: \"none\",\n backgroundColor: \"var(--highlight)\",\n },\n icon: {\n position: \"absolute\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n top: \"var(--spacing-xs)\",\n bottom: \"var(--spacing-xs)\",\n left: \"var(--spacing-xs)\",\n right: \"var(--spacing-xs)\",\n },\n};\n\nexport const sizes = {\n xsmall: 20,\n small: 24,\n medium: 32,\n large: 40,\n xlarge: 48,\n};\n\nexport function StaticCheckbox({\n checked,\n size,\n icon = \"fa-check\",\n}: StaticCheckboxProps) {\n return (\n <BaseView\n jss={{\n position: \"relative\",\n backgroundColor: cssVar(\"--primary-background\"),\n overflow: \"hidden\",\n padding: cssVar(\"--spacing-xs\"),\n borderRadius: sizes[size] / 2,\n height: sizes[size],\n width: sizes[size],\n }}\n >\n <BaseView jss={[styles.border, checked && styles.borderChecked]} />\n {checked && (\n <BaseView jss={styles.icon}>\n <Icon size={size} color=\"light\" icon={icon} />\n </BaseView>\n )}\n </BaseView>\n );\n}\n","import React from \"react\";\nimport { BaseInput, BaseInputProps } from \"./BaseInput\";\nimport {} from \"./BaseView\";\nimport { Size, toClassnames } from \"./jss\";\nimport { StaticCheckbox, sizes } from \"./StaticCheckbox\";\n\n// @ts-ignore\ninterface CheckboxProps extends BaseInputProps {\n checked: boolean;\n onClick: () => void;\n size: Size;\n value?: undefined;\n onChange?: undefined;\n}\n\nexport function Checkbox({\n checked,\n onClick,\n size,\n ...inputProps\n}: CheckboxProps) {\n return (\n <label\n className={toClassnames({\n position: \"relative\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n height: sizes[size],\n width: sizes[size],\n \":has(:focus-visible)\": {\n outline: \"2px solid var(--outline)\",\n borderRadius: \"50%\",\n },\n \":has(:active)\": {\n transform: \"scale(0.92)\",\n },\n })}\n >\n <StaticCheckbox checked={checked} size={size} />\n <BaseInput\n {...inputProps}\n type=\"checkbox\"\n role=\"checkbox\"\n aria-checked={`${checked}`}\n tabIndex={0}\n checked={checked}\n onChange={onClick}\n jss={{\n position: \"absolute\",\n opacity: 0,\n cursor: \"pointer\",\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n width: \"100%\",\n height: \"100%\",\n }}\n />\n </label>\n );\n}\n","import React from \"react\";\nimport { Box, BoxProps } from \"./Box\";\n\ninterface CircleProps extends BoxProps {}\n\nexport function Circle({\n jss,\n padding = \"medium\",\n ...otherProps\n}: CircleProps) {\n return (\n <Box\n padding={padding}\n jss={[\n {\n borderRadius: \"50%\",\n overflow: \"hidden\",\n },\n jss,\n ]}\n {...otherProps}\n />\n );\n}\n","import React from \"react\";\nimport { BaseButton, BaseButtonProps } from \"./BaseButton\";\nimport { Icon } from \"./Icon\";\nimport { IconType } from \"./IconType\";\nimport { getGlyphColor } from \"./Interactable\";\nimport { Size } from \"./jss\";\nimport { Span } from \"./Text\";\n\nconst sizes: {\n [key in Size]: number;\n} = {\n xsmall: 20,\n small: 24,\n medium: 32,\n large: 40,\n xlarge: 48,\n xxlarge: 56,\n xxxlarge: 64,\n};\n\nexport interface IconButtonProps extends BaseButtonProps {\n icon: IconType;\n size: Size;\n label?: string;\n labelSize?: Size;\n}\n\nexport const IconButton = React.forwardRef(\n (\n {\n icon,\n size,\n color,\n bare,\n disabled,\n jss,\n label,\n labelSize = \"medium\",\n ...buttonProps\n }: IconButtonProps,\n ref?: React.Ref<HTMLButtonElement>\n ) => {\n return (\n <BaseButton\n {...buttonProps}\n aria-label={buttonProps[\"aria-label\"] ?? label}\n bare={bare}\n jss={[\n {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n height: sizes[size],\n width: sizes[size],\n borderRadius: sizes[size] / 2,\n },\n !disabled && {\n \":active\": {\n transform: \"scale(0.92)\",\n },\n },\n jss,\n ]}\n color={color}\n ref={ref}\n disabled={disabled}\n >\n <Icon\n size={size}\n icon={icon}\n color={getGlyphColor(color, disabled, bare)}\n />\n {label && (\n <Span size={labelSize} color={getGlyphColor(color, disabled, bare)}>\n {label}\n </Span>\n )}\n </BaseButton>\n );\n }\n);\n","import React, { ReactNode, useContext, useEffect, useState } from \"react\";\nimport { IconButton } from \"./IconButton\";\nimport { BaseView } from \"./BaseView\";\nimport { isServer } from \"./isServer\";\n\ntype State = {\n enabled: boolean;\n toggle: () => void;\n};\n\nexport const DarkModeContext = React.createContext<State>({\n enabled: false,\n toggle: () => {},\n});\n\nif (!isServer()) {\n const darkMode = document.cookie\n .split(\";\")\n .map((c) => c.trim())\n .filter((c) => c.startsWith(\"dark-mode=\"))\n .map((s) => s.split(\"=\")[1])\n .map((s) => s)\n .pop();\n\n if (darkMode === \"true\") {\n document.body.classList.add(\"dark-mode\");\n }\n}\n\nexport function DarkModeProvider({\n children,\n enabled,\n toggle,\n}: {\n children: ReactNode;\n enabled: boolean;\n toggle: () => void;\n}) {\n useEffect(() => {\n const statusBarMeta = document.head.querySelector(\n 'meta[name=\"apple-mobile-web-app-status-bar-style\"]'\n );\n const themeColorMeta = document.head.querySelector(\n 'meta[name=\"theme-color\"]'\n );\n\n if (enabled) {\n document.body.classList.add(\"dark-mode\");\n if (statusBarMeta != null) {\n // @ts-ignore\n statusBarMeta.content = \"black-translucent\";\n }\n if (themeColorMeta != null) {\n // @ts-ignore\n themeColorMeta.content = \"rgb(42, 43, 46)\";\n }\n } else {\n document.body.classList.remove(\"dark-mode\");\n if (statusBarMeta != null) {\n // @ts-ignore\n statusBarMeta.content = \"default\";\n }\n if (themeColorMeta != null) {\n // @ts-ignore\n themeColorMeta.content = \"rgb(239, 239, 244)\";\n }\n }\n }, [enabled]);\n\n return (\n <DarkModeContext.Provider value={{ enabled, toggle }}>\n {children}\n </DarkModeContext.Provider>\n );\n}\n\nexport function DarkModeToggle() {\n const darkMode = useContext(DarkModeContext);\n\n const [show, setShow] = useState(false);\n\n useEffect(() => {\n setShow(true);\n }, []);\n\n if (!show) {\n return <BaseView jss={{ width: 32, height: 32 }} />;\n }\n\n return (\n <IconButton\n aria-label=\"Toggle dark mode\"\n icon={darkMode.enabled ? \"fa-sun-o\" : \"fa-moon-o\"}\n size=\"medium\"\n onClick={darkMode.toggle}\n color=\"primary\"\n bare\n />\n );\n}\n","import React, { ReactNode } from \"react\";\nimport { BaseInput, BaseInputProps } from \"./BaseInput\";\nimport { Box } from \"./Box\";\nimport { Icon } from \"./Icon\";\nimport { IconType } from \"./IconType\";\nimport { Row } from \"./Row\";\nimport { JSS } from \"./jss\";\n\nexport interface DateInputProps extends BaseInputProps {\n onDateChange: (date: Date) => void;\n date: Date;\n icon?: IconType;\n addOn?: ReactNode;\n onChange?: undefined;\n jss?: JSS;\n}\n\nexport const DateInput = React.forwardRef(\n (\n { date, onDateChange, jss, icon, addOn, ...inputProps }: DateInputProps,\n ref?: React.Ref<HTMLInputElement>\n ) => {\n return (\n <Row\n jss={{\n backgroundColor: \"inherit\",\n }}\n >\n {icon && (\n <Box padding=\"medium\">\n <Icon size=\"medium\" color=\"secondary\" icon={icon} />\n </Box>\n )}\n <BaseInput\n {...inputProps}\n type=\"date\"\n ref={ref}\n value={date.toISOString().substring(0, 10)}\n onChange={(e) => onDateChange(new Date(e.target.value))}\n jss={[\n {\n flexGrow: 1,\n backgroundColor: \"inherit\",\n color: \"var(--primary-text)\",\n outline: \"none\",\n border: \"none\",\n fontSize: 20,\n lineHeight: 24 / 20,\n \"::placeholder\": {\n color: \"var(--subtle-text);\",\n },\n \":disabled\": {\n color: \"var(--subtle-text);\",\n },\n },\n jss,\n ]}\n />\n {addOn}\n </Row>\n );\n }\n);\n","import React, { useRef } from \"react\";\nimport { Text } from \"./Text\";\nimport { TextColor, toClassnames } from \"./jss\";\n\nconst styles = {\n dateInput: {\n border: \"1px solid var(--divider)\",\n backgroundColor: \"var(--primary-background)\",\n padding: \"var(--spacing-m)\",\n color: \"var(--primary-text)\",\n fontSize: 20,\n lineHeight: 24 / 20,\n },\n};\n\nexport interface DatePickerProps {\n id: string;\n label: string;\n date: Date;\n color?: TextColor;\n min?: string;\n max?: string;\n onDateChange: (date: Date) => void;\n}\n\nexport function DatePicker({\n id,\n label,\n color = \"primary\",\n date,\n onDateChange,\n}: DatePickerProps) {\n const initialDate = useRef(date);\n const year = initialDate.current.getFullYear();\n const month = initialDate.current.getMonth();\n const day = initialDate.current.getDate();\n const min = new Date(year - 1, month, day).toISOString().substring(0, 10);\n const max = new Date(year + 1, month, day).toISOString().substring(0, 10);\n\n return (\n <>\n <label htmlFor={id}>\n <Text size=\"small\" color={color}>\n {label}\n </Text>\n </label>\n <input\n min={min}\n max={max}\n className={toClassnames(styles.dateInput)}\n type=\"date\"\n id={id}\n value={date.toISOString().substring(0, 10)}\n onChange={(event) => {\n let parsedDate;\n try {\n parsedDate = new Date(event.target.value);\n } finally {\n if (parsedDate != null) {\n onDateChange(parsedDate);\n }\n }\n }}\n ></input>\n </>\n );\n}\n","import React, { ReactNode } from \"react\";\nimport { BaseInput, BaseInputProps } from \"./BaseInput\";\nimport { Box } from \"./Box\";\nimport { Icon } from \"./Icon\";\nimport { IconType } from \"./IconType\";\nimport { Row } from \"./Row\";\nimport { JSS } from \"./jss\";\n\nexport interface DatetimeInputProps extends BaseInputProps {\n onDateChange: (date: Date) => void;\n date: Date;\n icon?: IconType;\n addOn?: ReactNode;\n onChange?: undefined;\n jss?: JSS;\n}\n\nconst styles = {\n root: {\n backgroundColor: \"var(--primary-background)\",\n },\n input: {\n padding: \"var(--spacing-m)\",\n flexGrow: 1,\n backgroundColor: \"var(--primary-background)\",\n color: \"var(--primary-text)\",\n outline: \"none\",\n border: \"none\",\n fontSize: 20,\n lineHeight: 24 / 20,\n \"::placeholder\": {\n color: \"var(--subtle-text);\",\n },\n \":disabled\": {\n color: \"var(--subtle-text);\",\n },\n },\n};\n\nexport const DatetimeInput = React.forwardRef(\n (\n { date, onDateChange, jss, icon, addOn, ...inputProps }: DatetimeInputProps,\n ref?: React.Ref<HTMLInputElement>\n ) => {\n return (\n <Row jss={styles.root}>\n {icon && (\n <Box padding=\"medium\">\n <Icon size=\"medium\" color=\"secondary\" icon={icon} />\n </Box>\n )}\n <BaseInput\n {...inputProps}\n type=\"datetime-local\"\n ref={ref}\n value={date.toISOString().substring(0, 16)}\n onChange={(e) => onDateChange(new Date(e.target.value))}\n jss={[styles.input, jss]}\n />\n {addOn}\n </Row>\n );\n }\n);\n","import React, { useContext, useMemo, useRef, useState } from \"react\";\n\nimport { BaseView } from \"./BaseView\";\nimport { Text } from \"./Text\";\nimport { ListDivider } from \"./ListDivider\";\nimport { Column } from \"./Column\";\nimport { Row } from \"./Row\";\nimport { IconButton } from \"./IconButton\";\nimport { toClassnames } from \"./jss\";\n\nconst styles = {\n dialog: {\n border: \"1px solid var(--divider)\",\n borderRadius: \"var(--border-radius-l)\",\n padding: 0,\n boxShadow: \"var(--shadow-lg)\",\n animation: \"dialogFadeIn 0.2s ease-out\",\n \"::backdrop\": {\n backgroundColor: \"rgba(0, 0, 0, 0.4)\",\n animation: \"backdropFadeIn 0.2s ease-out\",\n },\n },\n root: {\n display: \"grid\",\n width: \"calc(100vw - 48px)\",\n gridTemplateAreas: `\n \"header\"\n \"content\"\n `,\n \"@media (min-width: 750px)\": {\n maxWidth: 750,\n },\n backgroundColor: \"var(--secondary-background)\",\n },\n header: {\n gridArea: \"header\",\n },\n content: {\n gridArea: \"content\",\n },\n};\n\nexport const Dialog = ({\n label,\n children,\n close,\n}: {\n label: string;\n children: React.JSX.Element;\n close: () => void;\n}) => {\n return (\n <BaseView jss={styles.root}>\n <Column jss={styles.header}>\n <Row padding=\"medium\" justify=\"space-between\" align=\"center\">\n <Text size=\"medium\" color=\"secondary\">\n {label}\n </Text>\n <IconButton\n autoFocus={true}\n bare={true}\n icon=\"fa-close\"\n size=\"medium\"\n onClick={close}\n color=\"primary\"\n />\n </Row>\n <ListDivider />\n </Column>\n <BaseView jss={styles.content}>{children}</BaseView>\n </BaseView>\n );\n};\n\nconst DialogContext = React.createContext<{ setDialog: React.Dispatch<any> }>({\n setDialog: () => {},\n});\n\nexport function DialogProvider({ children }) {\n const [dialog, setDialog] = useState<React.JSX.Element>(null);\n const value = useMemo(() => ({ setDialog }), []);\n\n return (\n <DialogContext.Provider value={value}>\n {dialog}\n {children}\n </DialogContext.Provider>\n );\n}\n\nexport function useDialog<Input>(\n DialogComponent: (props: { close: () => void } & Input) => React.JSX.Element,\n options: { closeOnOutsideClick: boolean }\n) {\n const { setDialog } = useContext(DialogContext);\n const dialogRef = useRef<null | HTMLDialogElement>(null);\n const activeElementRef = useRef(null);\n const closeRef = useRef(null);\n\n closeRef.current = () => {\n dialogRef.current && dialogRef.current.close();\n activeElementRef.current && activeElementRef.current.focus();\n dialogRef.current = null;\n activeElementRef.current = null;\n setDialog(null);\n };\n\n const open = (input: Input) => {\n activeElementRef.current = document.activeElement;\n setDialog(\n <dialog\n ref={(ref: null | HTMLDialogElement) => {\n dialogRef.current = ref;\n ref && ref.showModal();\n }}\n className={toClassnames(styles.dialog)}\n onClose={() => {\n closeRef.current();\n }}\n onClick={(e) => {\n if (dialogRef.current == null) {\n return;\n }\n\n const dialogDimensions = dialogRef.current.getBoundingClientRect();\n\n if (options.closeOnOutsideClick === false) {\n return;\n }\n\n if (\n e.clientX < dialogDimensions.left ||\n e.clientX > dialogDimensions.right ||\n e.clientY > dialogDimensions.bottom ||\n e.clientY < dialogDimensions.top\n ) {\n dialogRef.current.close();\n }\n }}\n >\n <DialogComponent {...input} close={() => closeRef.current()} />\n </dialog>\n );\n };\n\n return {\n open,\n close: () => closeRef.current(),\n };\n}\n","import React, { useEffect, useId, useRef, useState } from \"react\";\n\nimport { BaseView } from \"./BaseView\";\nimport { Button } from \"./Button\";\nimport { Column } from \"./Column\";\nimport { useNavigation } from \"./useNavigation\";\nimport { useRefEffect } from \"./useRefEffect\";\nimport { Gap, JSS, Padding, Size, getBackground } from \"./jss\";\n\nconst styles: { [key: string]: JSS } = {\n root: {\n position: \"relative\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"stretch\",\n flexGrow: 1,\n },\n button: {\n flexGrow: 1,\n },\n dropdown: {\n position: \"absolute\",\n top: \"100%\",\n left: 0,\n right: 0,\n borderRadius: \"var(--border-radius-m)\",\n boxShadow: \"var(--shadow-sm)\",\n zIndex: 1,\n },\n};\nexport function Dropdown<T extends string | number>({\n id: propId,\n label,\n options,\n selection,\n setSelection,\n jss,\n jssButton,\n optionLabel,\n padding,\n size,\n gap = \"medium\",\n}: {\n id?: string;\n label: string;\n options: Set<T>;\n setSelection: (selection: T) => void;\n selection: T;\n jss?: JSS;\n jssButton?: JSS;\n optionLabel: (option: T) => string;\n padding?: Padding;\n gap?: Gap;\n size?: Size;\n}) {\n const hookId = useId();\n const id = propId ?? hookId;\n const triggerRef = useRef(null);\n const [expanded, setExpanded] = useState(false);\n const dropdownRef = useNavigation({ autofocus: true });\n const rootRef = useRefEffect<HTMLElement>((root) => {\n const onKeyDown = (e) => {\n if (e.code === \"Escape\") {\n setExpanded(false);\n }\n };\n\n root.addEventListener(\"keydown\", onKeyDown);\n return () => root.removeEventListener(\"keydown\", onKeyDown);\n });\n\n useEffect(() => {\n if (!expanded) {\n triggerRef.current && triggerRef.current.focus();\n }\n }, [expanded]);\n\n return (\n <BaseView ref={rootRef} jss={[styles.root, jss]}>\n <Button\n size={size}\n padding={padding}\n aria-expanded={expanded ? \"true\" : \"false\"}\n aria-controls={id}\n aria-haspopup=\"true\"\n aria-label={label}\n role=\"combobox\"\n justify=\"space-between\"\n tabIndex={0}\n jss={[styles.button, jssButton]}\n color=\"positive\"\n icon=\"fa-chevron-down\"\n iconPosition=\"right\"\n onClick={() => {\n setExpanded((x) => !x);\n }}\n ref={triggerRef}\n >\n {optionLabel(selection)}\n </Button>\n {expanded && (\n <Column\n gap={gap}\n jss={[styles.dropdown, getBackground(\"secondary-background\")]}\n id={id}\n role=\"listbox\"\n aria-label={label}\n tabIndex={-1}\n ref={dropdownRef}\n onBlur={(e) => {\n if (!e.currentTarget.contains(e.relatedTarget)) {\n setExpanded(false);\n }\n }}\n >\n {Array.from(options).map((option, index) => {\n const optionId = `${id}-${index}`;\n const selected = option === selection;\n return (\n <Button\n size={size}\n padding={padding}\n justify={selected ? \"space-between\" : \"flex-start\"}\n align=\"center\"\n bare={true}\n iconPosition=\"right\"\n icon={selected ? \"fa-check\" : undefined}\n key={optionId}\n role=\"option\"\n id={optionId}\n aria-selected={selected ? \"true\" : \"false\"}\n color=\"positive\"\n onClick={() => {\n setSelection(option);\n setExpanded(false);\n }}\n >\n {optionLabel(option)}\n </Button>\n );\n })}\n </Column>\n )}\n </BaseView>\n );\n}\n","export type Callback<Value> = (value: Value) => void;\n\nexport type Subscribe<Value> = (callback: Callback<Value>) => () => void;\n\nexport function createEmitter<Value>() {\n const subscriptions = new Set<Callback<Value>>();\n\n const subscribe: Subscribe<Value> = (callback: Callback<Value>) => {\n subscriptions.add(callback);\n\n return () => {\n subscriptions.delete(callback);\n };\n };\n\n const emit = (value: Value) => {\n subscriptions.forEach((subscription) => {\n subscription(value);\n });\n };\n\n return {\n subscribe,\n emit,\n };\n}\n","export function guid(): string {\n return \"ID-xxxxxxxx\".replace(/[xy]/g, function (c) {\n const r = (Math.random() * 16) | 0,\n v = c === \"x\" ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n","import React from \"react\";\nimport { Icon } from \"./Icon\";\nimport { IconType } from \"./IconType\";\nimport { getGlyphColor } from \"./Interactable\";\nimport { Size } from \"./jss\";\nimport { BaseLink, BaseLinkProps } from \"./BaseLink\";\n\nconst sizes = {\n xsmall: 20,\n small: 24,\n medium: 32,\n large: 40,\n xlarge: 48,\n};\n\nexport interface IconLinkProps extends BaseLinkProps {\n icon: IconType;\n size: Size;\n}\n\nexport const IconLink = React.forwardRef(\n (\n { icon, size, color, bare, disabled, jss, ...otherProps }: IconLinkProps,\n ref?: React.Ref<HTMLAnchorElement>\n ) => {\n return (\n <BaseLink\n {...otherProps}\n bare={bare}\n jss={[\n {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n height: sizes[size],\n width: sizes[size],\n borderRadius: sizes[size] / 2,\n textDecoration: \"none\",\n },\n !disabled && {\n \":active\": {\n transform: \"scale(0.92)\",\n },\n },\n jss,\n ]}\n color={color}\n ref={ref}\n disabled={disabled}\n >\n <Icon\n size={size}\n icon={icon}\n color={getGlyphColor(color, disabled, bare)}\n />\n </BaseLink>\n );\n }\n);\n","import React, { ReactNode } from \"react\";\n\nimport { BaseLink, BaseLinkProps } from \"./BaseLink\";\nimport { Text } from \"./Text\";\nimport { IconType } from \"./IconType\";\nimport { Row } from \"./Row\";\nimport { Icon } from \"./Icon\";\nimport { FlexLayoutProps } from \"./FlexLayout\";\nimport { InteractableColor, getGlyphColor, getCSSColor } from \"./Interactable\";\nimport { Size, Align, Gap, Justify, cssVar } from \"./jss\";\n\nexport interface LinkProps extends BaseLinkProps {\n children?: ReactNode;\n color: InteractableColor;\n size?: Size;\n icon?: IconType;\n underline?: boolean;\n iconSize?: Size;\n iconPosition?: \"left\" | \"right\";\n rowProps?: FlexLayoutProps;\n align?: Align;\n gap?: Gap;\n justify?: Justify;\n bold?: boolean;\n inline?: boolean;\n}\n\nexport const Link = React.forwardRef(\n (\n {\n children,\n color,\n bare,\n disabled,\n icon,\n underline,\n iconSize = \"medium\",\n iconPosition = \"left\",\n align = \"center\",\n gap = \"small\",\n justify = \"center\",\n jss,\n size = \"medium\",\n padding = \"medium\",\n inline = true,\n bold,\n ...otherProps\n }: LinkProps,\n ref?: React.Ref<HTMLAnchorElement>\n ) => {\n return (\n <BaseLink\n {...otherProps}\n bare={bare}\n ref={ref}\n color={color}\n disabled={disabled}\n padding={padding}\n jss={[\n {\n borderRadius: cssVar(\"--border-radius-m\"),\n justifyContent: \"center\",\n userSelect: \"none\",\n display: inline ? \"inline-flex\" : \"flex\",\n textDecoration: \"none\",\n },\n underline && {\n textDecorationLine: \"underline\",\n textDecorationThickness: \"2px\",\n textUnderlineOffset: \"2px\",\n textDecorationColor: getCSSColor(color, disabled, bare),\n },\n jss,\n ]}\n >\n <Row\n jss={{\n display: inline ? \"inline-flex\" : \"flex\",\n }}\n grow={true}\n align={align}\n gap={gap}\n justify={justify}\n >\n {icon && iconPosition === \"left\" && (\n <Icon\n icon={icon}\n size={iconSize}\n color={getGlyphColor(color, disabled, bare)}\n />\n )}\n <Text\n bold={bold}\n size={size}\n color={getGlyphColor(color, disabled, bare)}\n >\n {children}\n </Text>\n {icon && iconPosition === \"right\" && (\n <Icon\n icon={icon}\n size={iconSize}\n color={getGlyphColor(color, disabled, bare)}\n />\n )}\n </Row>\n </BaseLink>\n );\n }\n);\n","import React from \"react\";\n\nimport { BaseListItem, BaseListItemProps } from \"./BaseListItem\";\nimport {\n InteractableColor,\n getGlyphColor,\n getInteractableListItemJSS,\n} from \"./Interactable\";\nimport { BaseButton } from \"./BaseButton\";\nimport { useListContext } from \"./List\";\n\n// @ts-ignore\ninterface ListButtonItemProps extends BaseListItemProps {\n color: InteractableColor;\n onClick: () => void;\n headline: string;\n body?: string;\n disabled?: boolean;\n selected?: boolean;\n children?: void;\n}\n\nexport const ListButtonItem = React.forwardRef(\n (\n {\n onClick,\n color = \"primary\",\n disabled = false,\n padding = \"medium\",\n jss,\n gap,\n selected,\n ...otherProps\n }: ListButtonItemProps,\n ref?: React.Ref<HTMLButtonElement>\n ) => {\n const { bare } = useListContext();\n\n return (\n <BaseListItem\n withDivider={!bare}\n disabled={disabled}\n padding=\"none\"\n gap={gap}\n headlineColor={getGlyphColor(color, disabled, true)}\n bodyColor={getGlyphColor(color, disabled, true)}\n selected={selected}\n aria-selected={selected}\n {...otherProps}\n jss={jss}\n >\n {({ content }) => (\n <BaseButton\n padding={padding}\n disabled={disabled}\n animateInteraction={false}\n bare={true}\n color={bare ? \"primary\" : color}\n ref={ref}\n jss={getInteractableListItemJSS({ bare, selected })}\n onClick={onClick}\n >\n {content}\n </BaseButton>\n )}\n </BaseListItem>\n );\n }\n);\n","import React, { ReactNode } from \"react\";\nimport { BaseListItem } from \"./BaseListItem\";\nimport { Position, cssVar } from \"./jss\";\nimport { useListContext } from \"./List\";\n\nexport function ListHeaderItem({\n highlight,\n headline,\n body,\n withDivider,\n addOn,\n addOnPosition,\n}: {\n highlight?: boolean;\n headline: string;\n body?: string;\n withDivider?: boolean;\n addOn?: ReactNode;\n addOnPosition?: Position;\n}) {\n const { bare } = useListContext();\n\n return (\n <BaseListItem\n headline={headline}\n headlineColor={highlight ? (bare ? \"highlight\" : \"light\") : \"primary\"}\n headlineBold={true}\n body={body}\n addOn={addOn}\n addOnPosition={addOnPosition}\n withDivider={bare ? false : withDivider}\n jss={\n bare\n ? null\n : {\n backgroundColor: highlight\n ? cssVar(\"--highlight\")\n : cssVar(\"--secondary-background\"),\n }\n }\n >\n {({ content }) => content}\n </BaseListItem>\n );\n}\n","import React from \"react\";\n\nimport { BaseListItem, BaseListItemProps } from \"./BaseListItem\";\nimport { cssVar } from \"./jss\";\nimport { useListContext } from \"./List\";\n\n// @ts-ignore\ninterface ListItemProps extends BaseListItemProps {\n headline: string;\n body?: string;\n children?: void;\n}\n\nexport const ListItem = React.forwardRef(\n (props: ListItemProps, ref?: React.Ref<HTMLLIElement>) => {\n const { bare } = useListContext();\n\n return (\n <BaseListItem withDivider={!bare} {...props} jss={props.jss} ref={ref}>\n {({ content }) => content}\n </BaseListItem>\n );\n }\n);\n","import React from \"react\";\n\nimport { BaseListItem, BaseListItemProps } from \"./BaseListItem\";\nimport {\n InteractableColor,\n getGlyphColor,\n getInteractableListItemJSS,\n} from \"./Interactable\";\nimport { BaseLink } from \"./BaseLink\";\nimport { useListContext } from \"./List\";\n\n// @ts-ignore\ninterface ListLinkItemProps extends BaseListItemProps {\n color?: InteractableColor;\n children?: void;\n onClick?: () => void;\n href: string;\n headline: string;\n body?: string;\n disabled?: boolean;\n selected?: boolean;\n target?: string;\n}\n\nexport const ListLinkItem = React.forwardRef(\n (\n {\n onClick,\n href,\n disabled = false,\n padding = \"medium\",\n jss,\n gap,\n selected,\n color = \"primary\",\n target,\n ...otherProps\n }: ListLinkItemProps,\n ref?: React.Ref<HTMLAnchorElement>\n ) => {\n const { bare } = useListContext();\n\n return (\n <BaseListItem\n withDivider={!bare}\n disabled={disabled}\n aria-selected={selected}\n padding=\"none\"\n gap={gap}\n headlineColor={getGlyphColor(color, disabled, true)}\n bodyColor={getGlyphColor(color, disabled, true)}\n selected={selected}\n {...otherProps}\n jss={jss}\n >\n {({ content }) => (\n <BaseLink\n target={target}\n padding={padding}\n aria-current={selected ? \"page\" : undefined}\n disabled={disabled}\n animateInteraction={false}\n bare={true}\n color={color}\n href={href}\n ref={ref}\n jss={getInteractableListItemJSS({ bare, selected })}\n onClick={onClick}\n >\n {content}\n </BaseLink>\n )}\n </BaseListItem>\n );\n }\n);\n","import React from \"react\";\nimport { BaseView } from \"./BaseView\";\n\nconst styles = {\n root: {\n height: \"var(--spacing-xl)\",\n backgroundColor: \"var(--secondary-background)\",\n width: \"100%\",\n },\n};\n\nexport function ListSpacer() {\n return <BaseView jss={styles.root} />;\n}\n","import { BaseView } from \"./BaseView\";\nimport { Column } from \"./Column\";\nimport { Color, JSS, getBackground } from \"./jss\";\n\nexport function MenuIcon({ open, color }: { open: boolean; color: Color }) {\n return (\n <Column gap=\"small\">\n <Bar\n color={color}\n jss={{\n transform: open ? \"rotateZ(135deg)\" : \"\",\n transformOrigin: \"center\",\n top: open ? 8 : 0,\n }}\n />\n <Bar\n color={color}\n jss={{\n opacity: open ? 0 : 1,\n }}\n />\n <Bar\n color={color}\n jss={{\n transform: open ? \"rotateZ(-135deg)\" : \"\",\n transformOrigin: \"center\",\n top: open ? -8 : 0,\n }}\n />\n </Column>\n );\n}\n\nfunction Bar({ jss, color }: { jss: JSS; color: Color }) {\n return (\n <BaseView\n jss={[\n {\n position: \"relative\",\n width: 24,\n height: 4,\n borderRadius: \"1px\",\n transition: \"all 200ms ease-out\",\n },\n getBackground(color),\n jss,\n ]}\n />\n );\n}\n","const LETTERS_26 = [\n \"a\",\n \"b\",\n \"c\",\n \"d\",\n \"e\",\n \"f\",\n \"g\",\n \"h\",\n \"i\",\n \"j\",\n \"k\",\n \"l\",\n \"m\",\n \"n\",\n \"o\",\n \"p\",\n \"q\",\n \"r\",\n \"s\",\n \"t\",\n \"u\",\n \"v\",\n \"w\",\n \"x\",\n \"y\",\n \"z\",\n];\n\nexport function numberToBase(\n number: number,\n base: Array<string> = LETTERS_26\n): string {\n if (number <= -1) {\n return \"\";\n }\n\n let result = [];\n\n // To make numbers 1 indexed\n number += 1;\n\n while (number >= base.length) {\n const index = number % base.length;\n number = Math.floor(number / base.length) - 1;\n result.push(base[index]);\n }\n\n result.push(base[number]);\n\n return result.reverse().join(\"\");\n}\n","import React, { useRef, useCallback, ReactElement } from \"react\";\n\nexport function OnVisible({\n children,\n onVisible,\n}: {\n children: (refCallback: React.RefCallback<HTMLElement>) => ReactElement;\n onVisible: () => void;\n}) {\n const intersectionObserverRef = useRef<IntersectionObserver | null>(null);\n\n const refCallback = useCallback((element) => {\n if (element == null) {\n return;\n }\n\n const intersectionObserver = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting || entry.intersectionRatio > 0) {\n onVisible();\n }\n });\n },\n {\n root: null,\n rootMargin: \"0px\",\n }\n );\n\n intersectionObserverRef.current = intersectionObserver;\n intersectionObserver.observe(element);\n\n return () => {\n intersectionObserver.unobserve(element);\n intersectionObserverRef.current = null;\n };\n // eslint-disable-next-line\n }, []);\n\n return children(refCallback);\n}\n","import React, { useRef, useState } from \"react\";\nimport { queryFocusables } from \"./aria\";\n\nimport { BaseView } from \"./BaseView\";\nimport { useRefEffect } from \"./useRefEffect\";\nimport { JSS, toClassnames } from \"./jss\";\n\nconst styles: { [key: string]: JSS } = {\n popover: {\n padding: 0,\n zIndex: 1,\n backgroundColor: \"var(--primary-background)\",\n borderRadius: \"var(--border-radius-l)\",\n border: \"1px solid var(--divider)\",\n overflow: \"hidden\",\n boxShadow: \"var(--shadow-lg)\",\n animation: \"popoverFadeIn 0.15s ease-out\",\n },\n};\n\nexport function Popover({ children, close }) {\n const activeElementRef = useRef(null);\n\n const focusTrapRoot = useRefEffect((root: HTMLElement) => {\n activeElementRef.current = document.activeElement;\n const [element] = queryFocusables(root);\n element ? element.focus() : root.focus();\n\n const keydown = (e) => {\n if (e.key === \"Escape\") {\n close();\n } else if (e.key === \"Tab\") {\n const focusables = queryFocusables(root).filter(\n (element) => element.tabIndex !== -1\n );\n\n if (focusables.length === 0) {\n e.stopPropagation();\n e.preventDefault();\n }\n\n const focusedIndex = focusables.findIndex(\n (x) => x === document.activeElement\n );\n\n if (focusables.length === 0) {\n e.stopPropagation();\n e.preventDefault();\n } else if (focusedIndex === focusables.length - 1) {\n // Cycle back to the first element\n focusables[0].focus();\n e.stopPropagation();\n e.preventDefault();\n } else {\n // Just do the usual thing\n }\n }\n };\n\n const click = () => {\n close();\n };\n\n // This is needed so that the trigger click is not captured immediatly, which would close the popover as it opens\n setTimeout(() => {\n window.addEventListener(\"keydown\", keydown);\n window.addEventListener(\"click\", click);\n }, 0);\n\n return () => {\n activeElementRef.current && activeElementRef.current.focus();\n window.removeEventListener(\"keydown\", keydown);\n window.removeEventListener(\"click\", click);\n };\n });\n\n return <BaseView ref={focusTrapRoot}>{children}</BaseView>;\n}\n\ninterface PopoverTriggerProps<Input> {\n PopoverComponent: (props: { close: () => void } & Input) => React.JSX.Element;\n jss?: JSS;\n jssDialog?: JSS;\n className?: undefined;\n grow?: boolean;\n shrink?: boolean;\n tag?: keyof HTMLElementTagNameMap;\n children: (props: { toggle: (input: Input) => void }) => React.JSX.Element;\n}\n\nexport function PopoverTrigger<Input>({\n PopoverComponent,\n jss,\n jssDialog,\n grow,\n shrink,\n tag,\n children,\n}: PopoverTriggerProps<Input>) {\n const [popover, setPopover] = useState<React.JSX.Element>(null);\n const dialogRef = useRef<null | HTMLDialogElement>(null);\n\n const toggle = (input: Input) => {\n if (popover == null) {\n dialogRef && dialogRef.current.show();\n setPopover(\n <PopoverComponent\n {...input}\n close={() => {\n dialogRef && dialogRef.current.close();\n }}\n />\n );\n } else {\n dialogRef && dialogRef.current.close();\n }\n };\n\n return (\n <BaseView\n grow={grow}\n shrink={shrink}\n tag={tag}\n relative={true}\n jss={[jss, { position: \"relative\", display: \"inline-block\" }]}\n >\n {children({ toggle })}\n <dialog\n ref={(ref: null | HTMLDialogElement) => {\n dialogRef.current = ref;\n }}\n className={toClassnames([styles.popover, jssDialog])}\n onClose={() => {\n setPopover(null);\n }}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n >\n {popover}\n </dialog>\n </BaseView>\n );\n}\n","import React from \"react\";\nimport { BaseView } from \"./BaseView\";\nimport { Color, Size, JSS, getBackground } from \"./jss\";\n\nconst styles: { [key: string]: JSS } = {\n root: {\n width: \"100%\",\n display: \"flex\",\n position: \"relative\",\n backgroundColor: \"var(--primary-background)\",\n borderRadius: \"var(--border-radius-s)\",\n border: \"1px solid var(--divider)\",\n overflow: \"hidden\",\n },\n fill: {\n borderRadius: \"var(--border-radius-s)\",\n position: \"absolute\",\n transformOrigin: \"center left\",\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n },\n};\n\nconst sizes = {\n xsmall: 4,\n small: 8,\n medium: 12,\n large: 16,\n xlarge: 20,\n};\n\nexport function ProgressBar({\n color,\n progress,\n size,\n jss,\n}: {\n progress: number;\n color: Color;\n size: Size;\n jss?: JSS;\n}) {\n return (\n <BaseView\n jss={[\n styles.root,\n {\n height: sizes[size],\n },\n jss,\n ]}\n >\n <BaseView\n jss={[styles.fill, getBackground(color)]}\n style={{\n transform: `scaleX(${progress > 1 ? 1 : progress})`,\n }}\n />\n </BaseView>\n );\n}\n","import React from \"react\";\nimport { cssVar, toClassnames } from \"./jss\";\n\nexport function ProgressCircle({\n progress,\n stroke = 4,\n outerRadius,\n}: {\n progress: number;\n stroke?: number;\n outerRadius: number;\n}) {\n const circumference = outerRadius * 2 * Math.PI;\n const strokeDashoffset = circumference - progress * circumference;\n\n return (\n <svg\n className={toClassnames({\n backgroundColor: cssVar(\"--secondary-background\"),\n transform: \"rotate(-90deg)\",\n borderRadius: \"50%\",\n })}\n width={(outerRadius + stroke) * 2}\n height={(outerRadius + stroke) * 2}\n >\n <circle\n stroke=\"var(--highlight)\"\n fill=\"transparent\"\n strokeWidth={stroke}\n strokeDasharray={`${circumference} ${circumference}`}\n style={{ strokeDashoffset }}\n r={outerRadius}\n cx={outerRadius + stroke}\n cy={outerRadius + stroke}\n />\n </svg>\n );\n}\n","import { useState, useCallback, useEffect, useRef } from \"react\";\nimport { isServer } from \"./isServer\";\n\nexport function hasCookie(key: string): boolean {\n return (\n document.cookie\n .split(\";\")\n .map((c) => c.trim())\n .filter((c) => c.startsWith(`${key}=`)).length > 0\n );\n}\n\nexport function getCookie<T>(\n key: string,\n deserialize: (s: string) => T = JSON.parse\n): T {\n return document.cookie\n .split(\";\")\n .map((c) => c.trim())\n .filter((c) => c.startsWith(`${key}=`))\n .map((s) => s.split(\"=\")[1])\n .map((s) => deserialize(s))\n .reverse()\n .pop();\n}\n\nexport function useCookie<T, L>(\n key: string,\n {\n initialValue = null,\n loadingValue,\n serialize = JSON.stringify,\n deserialize = JSON.parse,\n maxAge = 60 * 60 * 24 * 365,\n }: {\n initialValue: T;\n loadingValue: L;\n serialize?: (t: T) => string;\n deserialize?: (s: string) => T;\n maxAge?: number;\n }\n): [T | L, (t: T | ((prevValue: T | L) => T)) => void] {\n const initializationRef = useRef(false);\n const [cookie, setCookie] = useState<T | L>(() => {\n if (!isServer()) {\n const hasPersistedCookie = hasCookie(key);\n if (hasPersistedCookie) {\n return getCookie(key, deserialize);\n } else {\n return loadingValue;\n }\n }\n\n return loadingValue;\n });\n\n useEffect(() => {\n if (initializationRef.current === true) {\n return;\n }\n\n const hasPersistedCookie = hasCookie(key);\n\n if (hasPersistedCookie) {\n const persistedCookie = getCookie(key, deserialize);\n setCookie(persistedCookie);\n } else {\n document.cookie = `${key}=${serialize(\n initialValue\n )}; max-age=${maxAge};path=/;`;\n setCookie(initialValue);\n }\n initializationRef.current = true;\n }, []);\n\n return [\n cookie,\n useCallback((t: T | ((prevValue: T | L) => T)) => {\n if (typeof t === \"function\") {\n // @ts-ignore\n const callback: (prevValue: T | L) => T = t;\n setCookie((oldCookie) => {\n const newValue = callback(oldCookie);\n document.cookie = `${key}=${serialize(\n newValue\n )}; max-age=${maxAge};path=/;`;\n return newValue;\n });\n } else {\n setCookie(t);\n document.cookie = `${key}=${serialize(t)}; max-age=${maxAge};path=/;`;\n }\n }, []),\n ];\n}\n","import React, { ReactElement, useEffect } from \"react\";\nimport { DarkModeProvider } from \"./DarkMode\";\nimport { DialogProvider } from \"./Dialog\";\nimport { IconProvider } from \"./Icon\";\nimport { useCookie } from \"./useCookie\";\nimport { JSSProvider, Theme } from \"./jss\";\n\nexport function Providers({\n children,\n themes,\n}: {\n children: React.JSX.Element;\n themes: { light: Theme; dark: Theme };\n}) {\n const [darkModeEnabled, setDarkModeEnabled] = useCookie(\"dark-mode\", {\n initialValue: false,\n loadingValue: false,\n });\n const toggleDarkMode = React.useCallback(\n () => setDarkModeEnabled((x) => !x),\n []\n );\n\n return (\n <JSSProvider themes={themes}>\n <IconProvider>\n <DarkModeProvider enabled={darkModeEnabled} toggle={toggleDarkMode}>\n <DialogProvider>{children}</DialogProvider>\n </DarkModeProvider>\n </IconProvider>\n </JSSProvider>\n );\n}\n","import React from \"react\";\nimport { BaseInput, BaseInputProps } from \"./BaseInput\";\nimport { Row } from \"./Row\";\nimport { Gap, JSS, Padding, cssVar } from \"./jss\";\n\nexport interface RangeInputProps extends BaseInputProps {\n onValueChange: (value: number) => void;\n value: number;\n jssRoot?: JSS;\n onChange?: undefined;\n padding?: Padding;\n gap?: Gap;\n addOn?: React.JSX.Element;\n addOnPosition?: \"start\" | \"end\";\n}\n\nexport const RangeInput = React.forwardRef(\n (\n {\n value,\n onValueChange,\n jssRoot,\n jss,\n gap = \"medium\",\n padding = \"none\",\n min = 0,\n max = 100,\n step = 1,\n label,\n addOn,\n addOnPosition = \"start\",\n ...inputProps\n }: RangeInputProps,\n ref?: React.Ref<HTMLInputElement>\n ) => {\n return (\n <Row\n gap={gap}\n padding={padding}\n align=\"center\"\n jss={[\n {\n \":has(:focus-visible)\": {\n borderRadius: cssVar(\"--border-radius-m\"),\n backgroundColor: cssVar(\"--light-highlight\"),\n },\n },\n jssRoot,\n ]}\n >\n {addOnPosition === \"start\" && addOn}\n <BaseInput\n {...inputProps}\n label={label}\n min={min}\n max={max}\n type=\"range\"\n ref={ref}\n value={value}\n onChange={(e) => {\n onValueChange(parseFloat(e.target.value));\n }}\n jss={[\n {\n backgroundColor: cssVar(\"--primary-background\"),\n flexGrow: 1,\n color: cssVar(\"--primary-text\"),\n margin: 0,\n paddingTop: cssVar(\"--spacing-m\"),\n paddingBottom: cssVar(\"--spacing-m\"),\n \":disabled\": {\n color: cssVar(\"--subtle-text\"),\n },\n },\n jss,\n ]}\n />\n {addOnPosition === \"end\" && addOn}\n </Row>\n );\n }\n);\n","import React, {\n useContext,\n useState,\n ReactNode,\n useMemo,\n useRef,\n useEffect,\n} from \"react\";\nimport { createEmitter, Subscribe } from \"./Emitter\";\n\ntype State = {\n subscribe: Subscribe<boolean>;\n};\n\nconst StackContext = React.createContext<State>({\n subscribe: () => {\n return () => {};\n },\n});\n\ntype Props = {\n children: ReactNode;\n isTopOfStack: boolean;\n};\n\nexport function StackContextProvider({ children, isTopOfStack }: Props) {\n const emitterRef = useRef(createEmitter<boolean>());\n\n useEffect(() => {\n emitterRef.current.emit(isTopOfStack);\n }, [isTopOfStack]);\n\n const value = useMemo(\n () => ({ subscribe: emitterRef.current.subscribe }),\n []\n );\n\n return (\n <StackContext.Provider value={value}>{children}</StackContext.Provider>\n );\n}\n\nexport function useIsTopOfStack() {\n const [isTopOfStack, setIsTopOfStack] = useState<boolean>(true);\n const { subscribe } = useContext(StackContext);\n\n useEffect(() => {\n return subscribe(setIsTopOfStack);\n }, [subscribe]);\n\n return isTopOfStack;\n}\n","import React, { ReactNode, useRef, useCallback } from \"react\";\n\nimport { Column } from \"./Column\";\nimport { useIsTopOfStack } from \"./StackContext\";\nimport { queryFocusables } from \"./aria\";\nimport { cssVar } from \"./jss\";\n\nexport function RootView({\n children,\n focusOnlyOnFirstMount = true,\n}: {\n children: ReactNode;\n focusOnlyOnFirstMount?: boolean;\n}) {\n const isTopOfStack = useIsTopOfStack();\n const firstMountRef = useRef(true);\n const refCallback = useCallback(\n (element) => {\n if (!element) {\n return;\n }\n\n if (!isTopOfStack) {\n return;\n }\n\n if (focusOnlyOnFirstMount && !firstMountRef.current) {\n return;\n }\n\n const focusables = queryFocusables(element);\n const firstFocusable = focusables[0];\n firstMountRef.current = false;\n firstFocusable && firstFocusable.focus();\n },\n [isTopOfStack, focusOnlyOnFirstMount]\n );\n\n return (\n <Column\n ref={refCallback}\n jss={{\n marginBottom: 0,\n flexGrow: 1,\n flexShrink: 1,\n flexBasis: \"0%\",\n overflow: \"auto\",\n backgroundColor: cssVar(\"--secondary-background\"),\n minHeight: \"600px\",\n }}\n >\n {children}\n </Column>\n );\n}\n","import { forwardRef } from \"react\";\nimport { JSS, cssVar, toClassnames } from \"./jss\";\n\nexport interface SelectProps extends React.HTMLAttributes<HTMLSelectElement> {\n value: string;\n onValueChange: (value: string) => void;\n jss?: JSS;\n ref?: React.Ref<HTMLSelectElement>;\n className?: undefined;\n}\n\nexport const Select = forwardRef(\n (\n { jss, children, onValueChange, value, ...otherProps }: SelectProps,\n ref?: React.Ref<HTMLSelectElement>\n ) => {\n return (\n <select\n ref={ref}\n className={toClassnames([\n {\n fontSize: 20,\n border: `1px solid ${cssVar(\"--divider\")}`,\n backgroundColor: cssVar(\"--overlay-background\"),\n borderRadius: cssVar(\"--border-radius-m\"),\n },\n jss,\n ])}\n value={value}\n onChange={(e) => {\n onValueChange(e.target.value);\n }}\n {...otherProps}\n >\n {children}\n </select>\n );\n }\n);\n","import React, {\n useContext,\n useCallback,\n ReactNode,\n useMemo,\n useRef,\n} from \"react\";\nimport { Subscribe, createEmitter, Callback } from \"./Emitter\";\n\nexport type Reducer<State, Context> = <Data extends any>({\n state,\n context,\n data,\n}: {\n state: State;\n context: Context;\n data: Data;\n}) => { state: State; context: Context };\n\ntype StateMachineConfig<State, Transition, Context> = {\n states: {\n [state: string]: {\n // @ts-ignore\n on: { [transition: Transition]: Reducer<State, Context> };\n };\n };\n context: Context;\n state: State;\n};\n\ntype Send = <Transition, Data>(transition: Transition, data: Data) => void;\n\ntype StateMachineContextType<State, Context> = {\n subscribe: Subscribe<{ state: State; context: Context }>;\n send: Send;\n};\n\nexport function stateMachineContextFactory<State, Transition, Context>(\n stateMachineConfig: StateMachineConfig<State, Transition, Context>\n) {\n const StateMachineContext = React.createContext<\n StateMachineContextType<State, Context>\n >({\n subscribe: () => {\n throw new Error(\"Not implemented\");\n },\n send: (_) => {\n throw new Error(\"Not implemented\");\n },\n });\n\n type StateMachineState = {\n state: State;\n context: Context;\n };\n\n function Provider({ children }: { children: ReactNode }) {\n const stateMachineRef = useRef<StateMachineState>({\n state: stateMachineConfig.state,\n context: stateMachineConfig.context,\n });\n\n const emitterRef = useRef(\n createEmitter<{ state: State; context: Context }>()\n );\n\n const subscribe = useCallback((callback: Callback<StateMachineState>) => {\n const unsbuscribe = emitterRef.current.subscribe(callback);\n callback(stateMachineRef.current);\n\n return unsbuscribe;\n }, []);\n\n const send = useCallback(\n <Transition, Data extends any>(transition: Transition, data: Data) => {\n const state = stateMachineRef.current.state;\n // @ts-ignore I don't know how to fix this\n const transitions = stateMachineConfig.states[state].on;\n const reducer: Reducer<State, Context> = transitions[transition];\n\n if (!reducer) {\n // No transition available in the current state, so no update needed\n return;\n }\n\n const newState = reducer({\n ...stateMachineRef.current,\n data,\n });\n\n stateMachineRef.current = newState;\n emitterRef.current.emit(newState);\n },\n []\n );\n\n const value = useMemo(() => ({ subscribe, send }), [subscribe, send]);\n\n return (\n <StateMachineContext.Provider value={value}>\n {children}\n </StateMachineContext.Provider>\n );\n }\n\n function useStateMachine() {\n return useContext(StateMachineContext);\n }\n\n return { Provider, useStateMachine };\n}\n","import React from \"react\";\nimport {\n useState,\n useCallback,\n useEffect,\n createContext,\n ReactNode,\n useRef,\n} from \"react\";\nimport { Callback, createEmitter } from \"./Emitter\";\n\nconst VERSION = 1;\n\nexport function createStorage<State>({\n initialState,\n name = \"aidos-storage\",\n}: {\n initialState: State;\n name?: string;\n}) {\n const StorageContext = createContext<{\n subscribe: <T>(selector: (state: State) => T) => () => void;\n mutate: (mutator: (state: State) => State) => void;\n persist: () => Promise<void>;\n }>({\n subscribe: () => {\n throw new Error(\"Not implemented\");\n },\n mutate: () => {\n throw new Error(\"Not implemented\");\n },\n persist: () => {\n throw new Error(\"Not implemented\");\n },\n });\n\n const state = { current: initialState };\n\n function Storage({ children }: { children: ReactNode }): React.JSX.Element {\n const emitterRef = useRef(createEmitter<State>());\n\n const subscribe = useCallback((callback: Callback<State>) => {\n return emitterRef.current.subscribe(callback);\n }, []);\n\n const mutate = useCallback((mutator: (state: State) => State) => {\n state.current = mutator(state.current);\n emitterRef.current.emit(state.current);\n }, []);\n\n const persist = useCallback(async () => {\n const s = JSON.stringify(state.current);\n const bytes = new TextEncoder().encode(s);\n const blob = new Blob([bytes], {\n type: \"application/json;charset=utf-8\",\n });\n return saveBlob(blob);\n }, []);\n\n useEffect(() => {\n getBlob().then((blob) => {\n if (blob == null) {\n return;\n }\n\n const fr = new FileReader();\n\n fr.onload = (event) => {\n const text = event.target.result.toString();\n state.current = JSON.parse(text);\n emitterRef.current.emit(state.current);\n };\n\n fr.onerror = (error) => {\n // reject(error);\n };\n\n fr.readAsText(blob);\n });\n }, []);\n\n return (\n <StorageContext.Provider\n value={{\n subscribe,\n mutate,\n persist,\n }}\n >\n {children}\n </StorageContext.Provider>\n );\n }\n\n function useStorage<T>(selector: (state: State) => T): T {\n const [localState, setLocalState] = useState(() => selector(state.current));\n const { subscribe } = React.useContext(StorageContext);\n\n useEffect(() => {\n return subscribe((newState) => {\n const newLocalState = selector(newState);\n setLocalState((prev) => (newLocalState != prev ? newLocalState : prev));\n });\n }, []);\n\n return localState;\n }\n\n function useMutation(): (mutator: (state: State) => State) => void {\n const { mutate } = React.useContext(StorageContext);\n return mutate;\n }\n\n function usePersist() {\n const { persist } = React.useContext(StorageContext);\n return persist;\n }\n\n const dbPromise: Promise<IDBDatabase> = new Promise((resolve, reject) => {\n const request = window.indexedDB.open(name, VERSION);\n\n request.onerror = (event) => {\n reject(event);\n };\n\n request.onupgradeneeded = (event) => {\n // @ts-ignore\n const db: IDBDatabase = event.target.result;\n const table = db.createObjectStore(\"blobs\", {\n keyPath: \"key\",\n });\n table.createIndex(\"key\", \"key\", { unique: true });\n };\n\n request.onsuccess = (event) => {\n // @ts-ignore\n const db: IDBDatabase = event.target.result;\n resolve(db);\n };\n });\n\n const getBlob = async (): Promise<Blob | null> => {\n const db = await dbPromise;\n return new Promise((resolve, reject) => {\n const transaction = db.transaction([\"blobs\"]);\n const objectStore = transaction.objectStore(\"blobs\");\n const get: IDBRequest<Blob> = objectStore.get(1);\n\n transaction.onerror = (event) => {\n db.close();\n reject(event);\n };\n\n get.onsuccess = (event) => {\n // @ts-ignore\n const result: DBStorage = event.target.result;\n\n if (result && result.blob) {\n resolve(result.blob);\n } else {\n resolve(null);\n }\n db.close();\n };\n\n get.onerror = (event) => {\n reject(event);\n };\n });\n };\n\n const saveBlob = async (blob: Blob): Promise<void> => {\n const db = await dbPromise;\n return new Promise((resolve, reject) => {\n const transaction = db.transaction([\"blobs\"], \"readwrite\");\n\n transaction.oncomplete = () => {\n db.close();\n resolve();\n };\n\n transaction.onerror = (event) => {\n db.close();\n reject(event);\n };\n\n const objectStore = transaction.objectStore(\"blobs\");\n objectStore.put({ blob, key: 1 });\n });\n };\n\n return {\n Storage,\n useStorage,\n useMutation,\n usePersist,\n };\n}\n","import { startTransition, useEffect, useRef, useState } from \"react\";\n\nexport const useStream = ({\n render,\n bufferStart,\n bufferEnd,\n index,\n debounce = 100,\n}) => {\n const cache = useRef({\n [index]: render(index),\n });\n const [frame, setFrame] = useState(cache.current[index]);\n const timeout = useRef(null);\n\n useEffect(() => {\n clearTimeout(timeout.current);\n const subscriptions = [];\n\n timeout.current = setTimeout(() => {\n for (let i = index - bufferStart; i < index + bufferEnd; i++) {\n subscriptions.push(\n requestIdleCallback(() => {\n if (!(i in cache.current)) {\n cache.current[i] = render(i);\n\n if (i === index) {\n setFrame(cache.current[index]);\n }\n }\n })\n );\n }\n\n startTransition(() => {\n setFrame(cache.current[index]);\n });\n }, debounce);\n\n return () => {\n subscriptions.forEach((handle) => {\n cancelIdleCallback(handle);\n });\n };\n }, [index]);\n\n return {\n frame,\n };\n};\n","import React, { ReactNode } from \"react\";\nimport { ListButtonItem } from \"./ListButtonItem\";\nimport { Icon } from \"./Icon\";\nimport { Box } from \"./Box\";\nimport { Row } from \"./Row\";\nimport { JSS } from \"./jss\";\n\nexport function Sublist({\n children,\n label,\n labelBold,\n initialState = { collapsed: false },\n jss,\n secondaryAddOn,\n}: {\n children: React.ReactNode;\n label: string;\n labelBold?: boolean;\n initialState?: {\n collapsed: boolean;\n };\n jss?: JSS;\n secondaryAddOn?: ReactNode;\n}) {\n const [collapsed, setCollapsed] = React.useState(initialState.collapsed);\n return (\n <>\n <ListButtonItem\n headline={label}\n headlineBold={labelBold}\n onClick={() => setCollapsed((x) => !x)}\n jss={jss}\n addOn={\n <Row gap=\"medium\" align=\"center\">\n {secondaryAddOn}\n <Box\n padding=\"medium\"\n jss={[\n {\n transition: \"transform 0.15s ease-in\",\n },\n !collapsed && {\n transform: \"rotateZ(90deg)\",\n },\n ]}\n >\n <Icon\n color=\"primary\"\n size=\"medium\"\n icon=\"fa-solid:chevron-right\"\n />\n </Box>\n </Row>\n }\n addOnPosition=\"end\"\n color=\"primary\"\n />\n {collapsed ? null : children}\n </>\n );\n}\n","import React from \"react\";\nimport { BaseInput, BaseInputProps } from \"./BaseInput\";\nimport { Box } from \"./Box\";\nimport { Icon } from \"./Icon\";\nimport { IconType } from \"./IconType\";\n\ninterface SubmitIconInputProps extends BaseInputProps {\n icon: IconType;\n type?: \"submit\";\n}\n\nexport function SubmitIconInput({ icon, ...otherProps }: SubmitIconInputProps) {\n return (\n <BaseInput\n label={\n <Box\n jss={{\n cursor: \"pointer\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n \":hover\": {\n backgroundColor: \"var(--secondary-background)\",\n opacity: 0.8,\n },\n \":active\": {\n transform: \"scale(0.92)\",\n },\n height: 32,\n width: 32,\n borderRadius: 16,\n }}\n >\n <Icon icon={icon} size=\"medium\" color=\"primary\" />\n </Box>\n }\n {...otherProps}\n type=\"submit\"\n jss={{\n visibility: \"hidden\",\n }}\n value=\"\"\n />\n );\n}\n","import { BaseLink } from \"./BaseLink\";\nimport { Row, RowProps } from \"./Row\";\nimport { JSS, Padding, Size, cssVar, getPadding } from \"./jss\";\nimport { useNavigation } from \"./useNavigation\";\nimport { Text } from \"./Text\";\nimport { ReactNode } from \"react\";\nimport { BaseButton } from \"./BaseButton\";\n\nexport type Tab = {\n label: string;\n href?: string;\n onClick?: () => void;\n selected?: boolean;\n addOn?: ReactNode;\n addOnPosition?: \"start\" | \"end\";\n};\n\nexport interface TabsProps extends RowProps {\n [\"aria-controls\"]: string;\n tabs: Array<Tab>;\n labelSize?: Size;\n bare?: boolean;\n tabPadding?: Padding;\n jssTab?: JSS | ((data: { selected: boolean }) => JSS);\n labelRenderer?: (label: string) => ReactNode;\n}\n\nexport function Tabs({\n tabs,\n gap = \"none\",\n padding = \"none\",\n tabPadding = \"medium\",\n labelSize = \"large\",\n jss,\n jssTab,\n labelRenderer,\n [\"aria-controls\"]: ariaControls,\n ...otherProps\n}: TabsProps) {\n const root = useNavigation();\n\n return (\n <Row\n role=\"tablist\"\n jss={jss}\n gap={gap}\n padding={padding}\n ref={root}\n {...otherProps}\n >\n {tabs.map(\n ({\n label,\n href,\n onClick,\n selected,\n addOn,\n addOnPosition = \"start\",\n }) => {\n const BaseComponent = href != null ? BaseLink : BaseButton;\n\n return (\n <BaseComponent\n aria-controls={ariaControls}\n role=\"tab\"\n aria-selected={selected ? \"true\" : undefined}\n key={label}\n bare\n color={selected ? \"positive\" : \"primary\"}\n href={href}\n onClick={onClick}\n animateInteraction={false}\n jss={[\n {\n textDecoration: \"none\",\n borderBottom: selected\n ? `3px solid ${cssVar(\"--highlight\")}`\n : `3px solid transparent`,\n \":active span\": {\n transform: \"scale(0.97)\",\n },\n \":first-child\": {\n borderTopLeftRadius: cssVar(\"--border-radius-m\"),\n },\n \":last-child\": {\n borderTopRightRadius: cssVar(\"--border-radius-m\"),\n },\n \":hover\": {\n backgroundColor: cssVar(\"--hovered-background\"),\n },\n \":active:hover\": {\n backgroundColor: cssVar(\"--pressed-background\"),\n },\n },\n getPadding(tabPadding),\n typeof jssTab === \"function\" ? jssTab({ selected }) : jssTab,\n ]}\n >\n {addOnPosition === \"start\" && addOn}\n <Text size={labelSize} color={selected ? \"primary\" : \"secondary\"}>\n {labelRenderer ? labelRenderer(label) : label}\n </Text>\n {addOnPosition === \"end\" && addOn}\n </BaseComponent>\n );\n }\n )}\n </Row>\n );\n}\n","import React from \"react\";\nimport { JSS, Padding, cssVar, getPadding, toClassnames } from \"./jss\";\n\nexport interface TextAreaProps\n extends React.InputHTMLAttributes<HTMLTextAreaElement> {\n jss?: JSS;\n onValueChange?: (value: string) => void;\n value?: string;\n className?: undefined;\n size?: undefined;\n padding?: Padding;\n}\n\nexport const TextArea = React.forwardRef(\n (\n {\n jss,\n onValueChange,\n value,\n onChange,\n padding = \"medium\",\n ...otherProps\n }: TextAreaProps,\n ref?: React.Ref<HTMLTextAreaElement>\n ) => {\n return (\n <textarea\n {...otherProps}\n ref={ref}\n className={toClassnames([\n {\n flexGrow: 1,\n color: cssVar(\"--primary-text\"),\n outline: \"none\",\n fontSize: 20,\n lineHeight: 24 / 20,\n backgroundColor: cssVar(\"--overlay-background\"),\n border: `1px solid ${cssVar(\"--divider\")}`,\n borderRadius: cssVar(\"--border-radius-m\"),\n \"::placeholder\": {\n color: cssVar(\"--subtle-text\"),\n },\n \":focus-visible\": {\n outline: `2px solid ${cssVar(\"--highlight\")}`,\n outlineOffset: -2,\n },\n },\n getPadding(padding),\n jss,\n ])}\n value={value}\n onChange={\n onValueChange ? (e) => onValueChange(e.target.value) : undefined\n }\n />\n );\n }\n);\n","import React, { ReactNode } from \"react\";\nimport { BaseInput, BaseInputProps } from \"./BaseInput\";\nimport { Column } from \"./Column\";\nimport { Row } from \"./Row\";\nimport { Gap, JSS, Padding, Size, cssVar, getPadding } from \"./jss\";\n\nconst fontSize = {\n xsmall: cssVar(\"--font-xsmall\"),\n small: cssVar(\"--font-small\"),\n medium: cssVar(\"--font-medium\"),\n large: cssVar(\"--font-large\"),\n xlarge: cssVar(\"--font-xlarge\"),\n xxlarge: cssVar(\"--font-xxlarge\"),\n xxxlarge: cssVar(\"--font-xxxlarge\"),\n};\n\nexport interface TextInputProps extends Omit<BaseInputProps, \"size\"> {\n onValueChange?: (value: string) => void;\n jssRoot?: JSS;\n addOn?: ReactNode;\n addOnPosition?: \"start\" | \"end\";\n gap?: Gap;\n onChange?: undefined;\n padding?: Padding;\n bare?: boolean;\n size?: Size;\n}\n\nexport const TextInput = React.forwardRef(\n (\n {\n value,\n onValueChange,\n jssRoot,\n jss,\n addOn,\n gap = \"small\",\n addOnPosition = \"start\",\n padding = \"medium\",\n bare,\n size = \"medium\",\n ...inputProps\n }: TextInputProps,\n ref?: React.Ref<HTMLInputElement>\n ) => {\n return (\n <Row\n gap={gap}\n jss={[\n {\n borderRadius: cssVar(\"--border-radius-m\"),\n overflow: \"hidden\",\n },\n bare\n ? {\n backgroundColor: \"inherit\",\n \":has(:focus-visible)\": {\n backgroundColor: cssVar(\"--light-highlight\"),\n },\n }\n : {\n border: `1px solid ${cssVar(\"--divider\")}`,\n backgroundColor: cssVar(\"--overlay-background\"),\n \":has(:focus-visible)\": {\n outline: `2px solid ${cssVar(\"--highlight\")}`,\n outlineOffset: -2,\n },\n },\n jssRoot,\n ]}\n >\n {addOnPosition === \"start\" && addOn && (\n <Column\n justify=\"center\"\n align=\"center\"\n jss={[getPadding(padding), { paddingRight: 0 }]}\n >\n {addOn}\n </Column>\n )}\n <BaseInput\n {...inputProps}\n ref={ref}\n value={value}\n onChange={\n onValueChange ? (e) => onValueChange(e.target.value) : undefined\n }\n jss={[\n {\n minWidth: 0,\n flexGrow: 1,\n backgroundColor: \"inherit\",\n color: cssVar(\"--primary-text\"),\n outline: \"none\",\n border: \"none\",\n fontSize: fontSize[size],\n lineHeight: 1.2,\n \"::placeholder\": {\n color: cssVar(\"--subtle-text\"),\n },\n \":disabled\": {\n color: cssVar(\"--subtle-text\"),\n },\n },\n getPadding(padding),\n addOn && addOnPosition === \"start\" ? { paddingLeft: 0 } : null,\n addOn && addOnPosition === \"end\" ? { paddingRight: 0 } : null,\n jss,\n ]}\n />\n {addOnPosition === \"end\" && addOn && (\n <Column\n justify=\"center\"\n align=\"center\"\n jss={[getPadding(padding), { paddingLeft: 0 }]}\n >\n {addOn}\n </Column>\n )}\n </Row>\n );\n }\n);\n","import React, { useCallback } from \"react\";\n\nimport { TextInput } from \"./TextInput\";\nimport { BaseInputProps } from \"./BaseInput\";\nimport { useState } from \"react\";\n\nexport interface TextInputWithStateProps extends BaseInputProps {\n onValueChange?: (value: string) => void;\n valueRef: React.MutableRefObject<string>;\n onChange?: undefined;\n}\n\nexport function TextInputWithState({\n valueRef,\n onValueChange: externalOnChange,\n ...otherProps\n}: TextInputWithStateProps) {\n const [value, setValue] = useState(valueRef.current);\n\n const onValueChange = useCallback(\n (value) => {\n valueRef.current = value;\n setValue(value);\n externalOnChange && externalOnChange(value);\n },\n [setValue, externalOnChange, valueRef]\n );\n\n return (\n <TextInput {...otherProps} value={value} onValueChange={onValueChange} />\n );\n}\n","import React, { ReactNode } from \"react\";\nimport { BaseInput, BaseInputProps } from \"./BaseInput\";\nimport { Row } from \"./Row\";\nimport { Gap, Padding, cssVar } from \"./jss\";\n\nexport interface TimeInputProps extends BaseInputProps {\n onTimeChange: (date: Date) => void;\n time: Date;\n gap?: Gap;\n padding?: Padding;\n addOn?: ReactNode;\n addOnPosition?: \"start\" | \"end\";\n onChange?: undefined;\n bare?: boolean;\n}\n\nexport const timeFormatter = Intl.DateTimeFormat(\"en-UK\", {\n hour: \"2-digit\",\n minute: \"2-digit\",\n});\n\nfunction TimeInputInternal(\n {\n time: date,\n onTimeChange: onDateChange,\n jss,\n addOn,\n padding = \"small\",\n gap = \"none\",\n addOnPosition = \"start\",\n bare,\n ...inputProps\n }: TimeInputProps,\n ref?: React.Ref<HTMLInputElement>\n) {\n return (\n <Row\n padding={padding}\n gap={gap}\n align=\"center\"\n jss={[\n {\n borderRadius: cssVar(\"--border-radius-m\"),\n overflow: \"hidden\",\n },\n bare\n ? {\n backgroundColor: \"inherit\",\n \":has(:focus-visible)\": {\n backgroundColor: cssVar(\"--light-highlight\"),\n },\n }\n : {\n border: `1px solid ${cssVar(\"--divider\")}`,\n backgroundColor: cssVar(\"--overlay-background\"),\n \":has(:focus-visible)\": {\n outline: `2px solid ${cssVar(\"--highlight\")}`,\n outlineOffset: -2,\n },\n },\n ]}\n >\n {addOnPosition === \"start\" && addOn}\n <BaseInput\n {...inputProps}\n type=\"time\"\n ref={ref}\n value={timeFormatter.format(date)}\n onChange={(e) => {\n const value = e.target.value;\n const [hour, minute] = value.split(\":\");\n onDateChange(\n new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n parseInt(hour),\n parseInt(minute)\n )\n );\n }}\n jss={[\n {\n flexGrow: 1,\n backgroundColor: \"inherit\",\n color: \"var(--primary-text)\",\n outline: \"none\",\n border: \"none\",\n fontSize: 20,\n lineHeight: 24 / 20,\n \"::placeholder\": {\n color: \"var(--subtle-text);\",\n },\n \":disabled\": {\n color: \"var(--subtle-text);\",\n },\n \"::-webkit-calendar-picker-indicator\": {\n backgroundColor: \"none\",\n },\n },\n jss,\n ]}\n />\n {addOnPosition === \"end\" && addOn}\n </Row>\n );\n}\n\nexport const TimeInput = React.forwardRef(TimeInputInternal);\n","import React, { useRef, useState } from \"react\";\n\nimport { BaseView } from \"./BaseView\";\nimport { useRefEffect } from \"./useRefEffect\";\nimport { Text } from \"./Text\";\nimport { JSS, cssVar, toClassnames } from \"./jss\";\n\nconst styles: { [key: string]: JSS } = {\n tooltip: {\n top: \"-100%\",\n transform: \"translateY(50%)\",\n backgroundColor: cssVar(\"--primary-background\"),\n padding: `${cssVar(\"--spacing-s\")} ${cssVar(\"--spacing-m\")}`,\n borderRadius: cssVar(\"--border-radius-m\"),\n border: `1px solid ${cssVar(\"--divider\")}`,\n boxShadow: cssVar(\"--shadow-md\"),\n overflow: \"hidden\",\n animation: \"popoverFadeIn 0.15s ease-out\",\n },\n};\n\ninterface TooltipProps {\n content: string;\n jss?: JSS;\n className?: undefined;\n tag?: keyof HTMLElementTagNameMap;\n children: React.JSX.Element;\n}\n\nexport function Tooltip({ content, jss, tag, children }: TooltipProps) {\n const [tooltip, setTooltip] = useState<React.JSX.Element>(null);\n const dialogRef = useRef(null);\n const focusTrapRoot = useRefEffect((root: HTMLDialogElement) => {\n dialogRef.current = root;\n\n const keydown = (e) => {\n if (e.key === \"Escape\") {\n dialogRef.current?.close();\n } else if (e.key === \"Tab\") {\n dialogRef.current?.close();\n }\n };\n\n const click = () => {\n dialogRef.current?.close();\n };\n\n window.addEventListener(\"keydown\", keydown);\n window.addEventListener(\"click\", click);\n\n const activeElement = document.activeElement;\n root.show();\n // @ts-ignore\n activeElement.focus();\n\n return () => {\n window.removeEventListener(\"keydown\", keydown);\n window.removeEventListener(\"click\", click);\n };\n });\n\n const toggle = () => {\n if (tooltip == null) {\n setTooltip(\n <dialog\n ref={(ref: null | HTMLDialogElement) => {\n dialogRef.current = ref;\n focusTrapRoot(ref);\n }}\n className={toClassnames(styles.tooltip)}\n onClose={() => {\n setTooltip(null);\n }}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n >\n <Text size=\"medium\" color=\"secondary\">\n {content}\n </Text>\n </dialog>\n );\n } else {\n setTooltip(null);\n }\n };\n\n return (\n <BaseView\n tag={tag}\n relative={true}\n jss={[{ display: \"inline-block\" }, jss]}\n onMouseEnter={() => {\n if (tooltip == null) {\n toggle();\n }\n }}\n onMouseLeave={() => {\n if (tooltip != null) {\n toggle();\n }\n }}\n >\n {children}\n {tooltip}\n </BaseView>\n );\n}\n","import { useRefEffect } from \"./useRefEffect\";\n\nexport type KeyboardShortcut<T> = {\n key: string;\n metaKey?: boolean;\n ctrlKey?: boolean;\n action: (root: T) => void;\n onlyWhenFocused?: boolean;\n};\n\nexport function useKeyboard<T extends HTMLElement>(\n shortcuts: Array<KeyboardShortcut<T>>\n) {\n return useRefEffect<T>((root: T) => {\n const onKeyDown = (e: KeyboardEvent) => {\n for (const {\n metaKey,\n key,\n action,\n ctrlKey,\n onlyWhenFocused,\n } of shortcuts) {\n if (metaKey && e.metaKey !== true) {\n continue;\n } else if (ctrlKey && e.ctrlKey !== true) {\n continue;\n } else if (onlyWhenFocused && document.activeElement !== root) {\n continue;\n }\n\n if (e.key.toLowerCase() === key.toLowerCase()) {\n action(root);\n }\n }\n };\n\n window.addEventListener(\"keydown\", onKeyDown);\n\n return () => {\n window.removeEventListener(\"keydown\", onKeyDown);\n };\n });\n}\n","import { useState, useEffect } from \"react\";\n\nexport function usePromise<T>(\n promiseFactory: () => Promise<T>,\n inputs: Array<any>,\n initialValue: T\n): [T | null, any] {\n const [value, setValue] = useState(initialValue);\n const [error, setError] = useState(null);\n\n useEffect(() => {\n promiseFactory()\n .then((value) => setValue(value))\n .catch((error) => setError(error));\n }, inputs);\n\n return [value, error];\n}\n"]}