@dxos/react-ui 0.1.20 → 0.1.22

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 (331) hide show
  1. package/README.md +13 -137
  2. package/dist/lib/browser/index.mjs +160 -2022
  3. package/dist/lib/browser/index.mjs.map +4 -4
  4. package/dist/lib/browser/meta.json +1 -1
  5. package/dist/types/src/components/IdentityListItem/IdentityListItem.d.ts +6 -0
  6. package/dist/types/src/components/IdentityListItem/IdentityListItem.d.ts.map +1 -0
  7. package/dist/types/src/components/IdentityListItem/IdentityListItem.stories.d.ts +20 -0
  8. package/dist/types/src/components/IdentityListItem/IdentityListItem.stories.d.ts.map +1 -0
  9. package/dist/types/src/composites/IdentityPopover/IdentityPopover.d.ts +9 -0
  10. package/dist/types/src/composites/IdentityPopover/IdentityPopover.d.ts.map +1 -0
  11. package/dist/types/src/composites/IdentityPopover/index.d.ts +2 -0
  12. package/dist/types/src/composites/IdentityPopover/index.d.ts.map +1 -0
  13. package/dist/types/src/composites/index.d.ts +2 -0
  14. package/dist/types/src/composites/index.d.ts.map +1 -0
  15. package/dist/types/src/index.d.ts +4 -4
  16. package/dist/types/src/index.d.ts.map +1 -1
  17. package/dist/types/src/layouts/PanelPopover/PanelPopover.d.ts +11 -0
  18. package/dist/types/src/layouts/PanelPopover/PanelPopover.d.ts.map +1 -0
  19. package/dist/types/src/layouts/PanelPopover/index.d.ts +2 -0
  20. package/dist/types/src/layouts/PanelPopover/index.d.ts.map +1 -0
  21. package/dist/types/src/layouts/PanelSidebar/PanelSidebar.d.ts +20 -0
  22. package/dist/types/src/layouts/PanelSidebar/PanelSidebar.d.ts.map +1 -0
  23. package/dist/types/src/layouts/PanelSidebar/index.d.ts +2 -0
  24. package/dist/types/src/layouts/PanelSidebar/index.d.ts.map +1 -0
  25. package/dist/types/src/layouts/index.d.ts +3 -0
  26. package/dist/types/src/layouts/index.d.ts.map +1 -0
  27. package/dist/types/src/panels/IdentityPanel/IdentityPanel.d.ts +6 -0
  28. package/dist/types/src/panels/IdentityPanel/IdentityPanel.d.ts.map +1 -0
  29. package/dist/types/src/panels/IdentityPanel/index.d.ts +2 -0
  30. package/dist/types/src/panels/IdentityPanel/index.d.ts.map +1 -0
  31. package/dist/types/src/panels/index.d.ts +2 -0
  32. package/dist/types/src/panels/index.d.ts.map +1 -0
  33. package/dist/types/src/styles/index.d.ts +1 -11
  34. package/dist/types/src/styles/index.d.ts.map +1 -1
  35. package/dist/types/src/styles/panelStyles.d.ts +3 -0
  36. package/dist/types/src/styles/panelStyles.d.ts.map +1 -0
  37. package/dist/types/src/testing/ClientProvider.d.ts +3 -0
  38. package/dist/types/src/testing/ClientProvider.d.ts.map +1 -0
  39. package/dist/types/src/testing/index.d.ts +1 -1
  40. package/dist/types/src/testing/index.d.ts.map +1 -1
  41. package/dist/types/src/translations/index.d.ts +5 -0
  42. package/dist/types/src/translations/index.d.ts.map +1 -0
  43. package/dist/types/src/translations/locales/en-US.d.ts +6 -0
  44. package/dist/types/src/translations/locales/en-US.d.ts.map +1 -0
  45. package/package.json +16 -32
  46. package/src/components/IdentityListItem/IdentityListItem.stories.tsx +23 -0
  47. package/src/components/IdentityListItem/IdentityListItem.tsx +32 -0
  48. package/src/composites/IdentityPopover/IdentityPopover.tsx +54 -0
  49. package/src/composites/IdentityPopover/index.ts +5 -0
  50. package/src/composites/index.ts +4 -0
  51. package/src/index.ts +4 -4
  52. package/src/layouts/PanelPopover/PanelPopover.tsx +40 -0
  53. package/src/layouts/PanelPopover/index.ts +5 -0
  54. package/src/layouts/PanelSidebar/PanelSidebar.tsx +126 -0
  55. package/src/layouts/PanelSidebar/index.ts +5 -0
  56. package/src/layouts/index.ts +6 -0
  57. package/src/panels/IdentityPanel/IdentityPanel.tsx +39 -0
  58. package/src/panels/IdentityPanel/index.ts +5 -0
  59. package/src/panels/index.ts +5 -0
  60. package/src/styles/index.ts +2 -12
  61. package/src/styles/panelStyles.ts +6 -0
  62. package/src/testing/ClientProvider.tsx +18 -0
  63. package/src/testing/index.ts +1 -1
  64. package/src/translations/index.ts +7 -0
  65. package/src/translations/locales/en-US.ts +9 -0
  66. package/dist/plugin/node/esbuild-plugin.cjs +0 -469
  67. package/dist/plugin/node/esbuild-plugin.cjs.map +0 -7
  68. package/dist/plugin/node/meta.json +0 -1
  69. package/dist/plugin/node/plugin.cjs +0 -460
  70. package/dist/plugin/node/plugin.cjs.map +0 -7
  71. package/dist/plugin/node/theme.css +0 -61
  72. package/dist/plugin/node/theme.css.map +0 -7
  73. package/dist/types/src/components/Alert/Alert.d.ts +0 -15
  74. package/dist/types/src/components/Alert/Alert.d.ts.map +0 -1
  75. package/dist/types/src/components/Alert/Alert.stories.d.ts +0 -9
  76. package/dist/types/src/components/Alert/Alert.stories.d.ts.map +0 -1
  77. package/dist/types/src/components/Alert/index.d.ts +0 -2
  78. package/dist/types/src/components/Alert/index.d.ts.map +0 -1
  79. package/dist/types/src/components/AlertDialog/AlertDialog.d.ts +0 -26
  80. package/dist/types/src/components/AlertDialog/AlertDialog.d.ts.map +0 -1
  81. package/dist/types/src/components/AlertDialog/AlertDialog.stories.d.ts +0 -9
  82. package/dist/types/src/components/AlertDialog/AlertDialog.stories.d.ts.map +0 -1
  83. package/dist/types/src/components/AlertDialog/index.d.ts +0 -2
  84. package/dist/types/src/components/AlertDialog/index.d.ts.map +0 -1
  85. package/dist/types/src/components/Avatar/Avatar.d.ts +0 -22
  86. package/dist/types/src/components/Avatar/Avatar.d.ts.map +0 -1
  87. package/dist/types/src/components/Avatar/Avatar.stories.d.ts +0 -12
  88. package/dist/types/src/components/Avatar/Avatar.stories.d.ts.map +0 -1
  89. package/dist/types/src/components/Avatar/index.d.ts +0 -2
  90. package/dist/types/src/components/Avatar/index.d.ts.map +0 -1
  91. package/dist/types/src/components/Button/Button.d.ts +0 -4
  92. package/dist/types/src/components/Button/Button.d.ts.map +0 -1
  93. package/dist/types/src/components/Button/Button.stories.d.ts +0 -13
  94. package/dist/types/src/components/Button/Button.stories.d.ts.map +0 -1
  95. package/dist/types/src/components/Button/ButtonGroup.d.ts +0 -6
  96. package/dist/types/src/components/Button/ButtonGroup.d.ts.map +0 -1
  97. package/dist/types/src/components/Button/ButtonProps.d.ts +0 -7
  98. package/dist/types/src/components/Button/ButtonProps.d.ts.map +0 -1
  99. package/dist/types/src/components/Button/buttonStyles.d.ts +0 -6
  100. package/dist/types/src/components/Button/buttonStyles.d.ts.map +0 -1
  101. package/dist/types/src/components/Button/index.d.ts +0 -5
  102. package/dist/types/src/components/Button/index.d.ts.map +0 -1
  103. package/dist/types/src/components/CompoundButton/CompoundButton.d.ts +0 -10
  104. package/dist/types/src/components/CompoundButton/CompoundButton.d.ts.map +0 -1
  105. package/dist/types/src/components/CompoundButton/CompoundButton.stories.d.ts +0 -10
  106. package/dist/types/src/components/CompoundButton/CompoundButton.stories.d.ts.map +0 -1
  107. package/dist/types/src/components/CompoundButton/index.d.ts +0 -2
  108. package/dist/types/src/components/CompoundButton/index.d.ts.map +0 -1
  109. package/dist/types/src/components/Dialog/Dialog.d.ts +0 -26
  110. package/dist/types/src/components/Dialog/Dialog.d.ts.map +0 -1
  111. package/dist/types/src/components/Dialog/Dialog.stories.d.ts +0 -9
  112. package/dist/types/src/components/Dialog/Dialog.stories.d.ts.map +0 -1
  113. package/dist/types/src/components/Dialog/index.d.ts +0 -2
  114. package/dist/types/src/components/Dialog/index.d.ts.map +0 -1
  115. package/dist/types/src/components/Group/Group.d.ts +0 -10
  116. package/dist/types/src/components/Group/Group.d.ts.map +0 -1
  117. package/dist/types/src/components/Group/Group.stories.d.ts +0 -9
  118. package/dist/types/src/components/Group/Group.stories.d.ts.map +0 -1
  119. package/dist/types/src/components/Group/index.d.ts +0 -2
  120. package/dist/types/src/components/Group/index.d.ts.map +0 -1
  121. package/dist/types/src/components/Heading/Heading.d.ts +0 -266
  122. package/dist/types/src/components/Heading/Heading.d.ts.map +0 -1
  123. package/dist/types/src/components/Heading/Heading.stories.d.ts +0 -274
  124. package/dist/types/src/components/Heading/Heading.stories.d.ts.map +0 -1
  125. package/dist/types/src/components/Heading/index.d.ts +0 -2
  126. package/dist/types/src/components/Heading/index.d.ts.map +0 -1
  127. package/dist/types/src/components/Input/BarePinInput.d.ts +0 -314
  128. package/dist/types/src/components/Input/BarePinInput.d.ts.map +0 -1
  129. package/dist/types/src/components/Input/BareTextInput.d.ts +0 -7
  130. package/dist/types/src/components/Input/BareTextInput.d.ts.map +0 -1
  131. package/dist/types/src/components/Input/BareTextareaInput.d.ts +0 -7
  132. package/dist/types/src/components/Input/BareTextareaInput.d.ts.map +0 -1
  133. package/dist/types/src/components/Input/Input.d.ts +0 -4
  134. package/dist/types/src/components/Input/Input.d.ts.map +0 -1
  135. package/dist/types/src/components/Input/Input.stories.d.ts +0 -27
  136. package/dist/types/src/components/Input/Input.stories.d.ts.map +0 -1
  137. package/dist/types/src/components/Input/InputProps.d.ts +0 -37
  138. package/dist/types/src/components/Input/InputProps.d.ts.map +0 -1
  139. package/dist/types/src/components/Input/index.d.ts +0 -2
  140. package/dist/types/src/components/Input/index.d.ts.map +0 -1
  141. package/dist/types/src/components/Loading/Loading.d.ts +0 -15
  142. package/dist/types/src/components/Loading/Loading.d.ts.map +0 -1
  143. package/dist/types/src/components/Loading/Loading.stories.d.ts +0 -23
  144. package/dist/types/src/components/Loading/Loading.stories.d.ts.map +0 -1
  145. package/dist/types/src/components/Loading/index.d.ts +0 -2
  146. package/dist/types/src/components/Loading/index.d.ts.map +0 -1
  147. package/dist/types/src/components/NavMenu/NavMenu.d.ts +0 -39
  148. package/dist/types/src/components/NavMenu/NavMenu.d.ts.map +0 -1
  149. package/dist/types/src/components/NavMenu/NavMenu.stories.d.ts +0 -9
  150. package/dist/types/src/components/NavMenu/NavMenu.stories.d.ts.map +0 -1
  151. package/dist/types/src/components/NavMenu/index.d.ts +0 -2
  152. package/dist/types/src/components/NavMenu/index.d.ts.map +0 -1
  153. package/dist/types/src/components/Popover/Popover.d.ts +0 -21
  154. package/dist/types/src/components/Popover/Popover.d.ts.map +0 -1
  155. package/dist/types/src/components/Popover/Popover.stories.d.ts +0 -10
  156. package/dist/types/src/components/Popover/Popover.stories.d.ts.map +0 -1
  157. package/dist/types/src/components/Popover/index.d.ts +0 -2
  158. package/dist/types/src/components/Popover/index.d.ts.map +0 -1
  159. package/dist/types/src/components/QrCode/QrCode.d.ts +0 -39
  160. package/dist/types/src/components/QrCode/QrCode.d.ts.map +0 -1
  161. package/dist/types/src/components/QrCode/QrCode.stories.d.ts +0 -10
  162. package/dist/types/src/components/QrCode/QrCode.stories.d.ts.map +0 -1
  163. package/dist/types/src/components/QrCode/index.d.ts +0 -2
  164. package/dist/types/src/components/QrCode/index.d.ts.map +0 -1
  165. package/dist/types/src/components/Tag/Tag.d.ts +0 -8
  166. package/dist/types/src/components/Tag/Tag.d.ts.map +0 -1
  167. package/dist/types/src/components/Tag/Tag.stories.d.ts +0 -10
  168. package/dist/types/src/components/Tag/Tag.stories.d.ts.map +0 -1
  169. package/dist/types/src/components/Tag/index.d.ts +0 -2
  170. package/dist/types/src/components/Tag/index.d.ts.map +0 -1
  171. package/dist/types/src/components/Toast/Toast.d.ts +0 -25
  172. package/dist/types/src/components/Toast/Toast.d.ts.map +0 -1
  173. package/dist/types/src/components/Toast/Toast.stories.d.ts +0 -9
  174. package/dist/types/src/components/Toast/Toast.stories.d.ts.map +0 -1
  175. package/dist/types/src/components/Toast/index.d.ts +0 -2
  176. package/dist/types/src/components/Toast/index.d.ts.map +0 -1
  177. package/dist/types/src/components/Tooltip/Tooltip.d.ts +0 -19
  178. package/dist/types/src/components/Tooltip/Tooltip.d.ts.map +0 -1
  179. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts +0 -9
  180. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts.map +0 -1
  181. package/dist/types/src/components/Tooltip/index.d.ts +0 -2
  182. package/dist/types/src/components/Tooltip/index.d.ts.map +0 -1
  183. package/dist/types/src/components/UiProvider/UiProvider.d.ts +0 -10
  184. package/dist/types/src/components/UiProvider/UiProvider.d.ts.map +0 -1
  185. package/dist/types/src/components/UiProvider/index.d.ts +0 -2
  186. package/dist/types/src/components/UiProvider/index.d.ts.map +0 -1
  187. package/dist/types/src/components/index.d.ts +0 -18
  188. package/dist/types/src/components/index.d.ts.map +0 -1
  189. package/dist/types/src/config/index.d.ts +0 -2
  190. package/dist/types/src/config/index.d.ts.map +0 -1
  191. package/dist/types/src/config/tailwind.d.ts +0 -7
  192. package/dist/types/src/config/tailwind.d.ts.map +0 -1
  193. package/dist/types/src/esbuild-plugin.d.ts +0 -6
  194. package/dist/types/src/esbuild-plugin.d.ts.map +0 -1
  195. package/dist/types/src/hooks/index.d.ts +0 -4
  196. package/dist/types/src/hooks/index.d.ts.map +0 -1
  197. package/dist/types/src/hooks/useForwardedRef.d.ts +0 -2
  198. package/dist/types/src/hooks/useForwardedRef.d.ts.map +0 -1
  199. package/dist/types/src/hooks/useId.d.ts +0 -3
  200. package/dist/types/src/hooks/useId.d.ts.map +0 -1
  201. package/dist/types/src/hooks/useIsFocused.d.ts +0 -3
  202. package/dist/types/src/hooks/useIsFocused.d.ts.map +0 -1
  203. package/dist/types/src/plugin.d.ts +0 -9
  204. package/dist/types/src/plugin.d.ts.map +0 -1
  205. package/dist/types/src/props/Elevation.d.ts +0 -2
  206. package/dist/types/src/props/Elevation.d.ts.map +0 -1
  207. package/dist/types/src/props/MessageValence.d.ts +0 -2
  208. package/dist/types/src/props/MessageValence.d.ts.map +0 -1
  209. package/dist/types/src/props/Size.d.ts +0 -2
  210. package/dist/types/src/props/Size.d.ts.map +0 -1
  211. package/dist/types/src/props/index.d.ts +0 -4
  212. package/dist/types/src/props/index.d.ts.map +0 -1
  213. package/dist/types/src/styles/active.d.ts +0 -2
  214. package/dist/types/src/styles/active.d.ts.map +0 -1
  215. package/dist/types/src/styles/disabled.d.ts +0 -2
  216. package/dist/types/src/styles/disabled.d.ts.map +0 -1
  217. package/dist/types/src/styles/focus.d.ts +0 -3
  218. package/dist/types/src/styles/focus.d.ts.map +0 -1
  219. package/dist/types/src/styles/group.d.ts +0 -7
  220. package/dist/types/src/styles/group.d.ts.map +0 -1
  221. package/dist/types/src/styles/hover.d.ts +0 -4
  222. package/dist/types/src/styles/hover.d.ts.map +0 -1
  223. package/dist/types/src/styles/input.d.ts +0 -11
  224. package/dist/types/src/styles/input.d.ts.map +0 -1
  225. package/dist/types/src/styles/ornament.d.ts +0 -3
  226. package/dist/types/src/styles/ornament.d.ts.map +0 -1
  227. package/dist/types/src/styles/shimmer.d.ts +0 -3
  228. package/dist/types/src/styles/shimmer.d.ts.map +0 -1
  229. package/dist/types/src/styles/size.d.ts +0 -7
  230. package/dist/types/src/styles/size.d.ts.map +0 -1
  231. package/dist/types/src/styles/text.d.ts +0 -5
  232. package/dist/types/src/styles/text.d.ts.map +0 -1
  233. package/dist/types/src/styles/valence.d.ts +0 -19
  234. package/dist/types/src/styles/valence.d.ts.map +0 -1
  235. package/dist/types/src/testing/templateForComponent.d.ts +0 -4
  236. package/dist/types/src/testing/templateForComponent.d.ts.map +0 -1
  237. package/dist/types/src/util/index.d.ts +0 -2
  238. package/dist/types/src/util/index.d.ts.map +0 -1
  239. package/dist/types/src/util/mx.d.ts +0 -2
  240. package/dist/types/src/util/mx.d.ts.map +0 -1
  241. package/dist/types/src/util/withLogical.d.ts +0 -3
  242. package/dist/types/src/util/withLogical.d.ts.map +0 -1
  243. package/plugin.d.ts +0 -5
  244. package/plugin.js +0 -8
  245. package/src/components/Alert/Alert.stories.tsx +0 -31
  246. package/src/components/Alert/Alert.tsx +0 -40
  247. package/src/components/Alert/index.ts +0 -5
  248. package/src/components/AlertDialog/AlertDialog.stories.tsx +0 -35
  249. package/src/components/AlertDialog/AlertDialog.tsx +0 -147
  250. package/src/components/AlertDialog/index.ts +0 -5
  251. package/src/components/Avatar/Avatar.stories.tsx +0 -29
  252. package/src/components/Avatar/Avatar.tsx +0 -104
  253. package/src/components/Avatar/index.ts +0 -5
  254. package/src/components/Button/Button.stories.tsx +0 -45
  255. package/src/components/Button/Button.tsx +0 -20
  256. package/src/components/Button/ButtonGroup.tsx +0 -23
  257. package/src/components/Button/ButtonProps.ts +0 -11
  258. package/src/components/Button/buttonStyles.ts +0 -35
  259. package/src/components/Button/index.ts +0 -8
  260. package/src/components/CompoundButton/CompoundButton.stories.tsx +0 -46
  261. package/src/components/CompoundButton/CompoundButton.tsx +0 -53
  262. package/src/components/CompoundButton/index.ts +0 -5
  263. package/src/components/Dialog/Dialog.stories.tsx +0 -37
  264. package/src/components/Dialog/Dialog.tsx +0 -157
  265. package/src/components/Dialog/index.ts +0 -5
  266. package/src/components/Group/Group.stories.tsx +0 -25
  267. package/src/components/Group/Group.tsx +0 -32
  268. package/src/components/Group/index.ts +0 -5
  269. package/src/components/Heading/Heading.stories.tsx +0 -29
  270. package/src/components/Heading/Heading.tsx +0 -29
  271. package/src/components/Heading/index.ts +0 -5
  272. package/src/components/Input/BarePinInput.tsx +0 -67
  273. package/src/components/Input/BareTextInput.tsx +0 -48
  274. package/src/components/Input/BareTextareaInput.tsx +0 -39
  275. package/src/components/Input/Input.stories.tsx +0 -108
  276. package/src/components/Input/Input.tsx +0 -115
  277. package/src/components/Input/InputProps.ts +0 -47
  278. package/src/components/Input/index.ts +0 -5
  279. package/src/components/Loading/Loading.stories.tsx +0 -34
  280. package/src/components/Loading/Loading.tsx +0 -69
  281. package/src/components/Loading/index.ts +0 -5
  282. package/src/components/NavMenu/NavMenu.stories.tsx +0 -54
  283. package/src/components/NavMenu/NavMenu.tsx +0 -203
  284. package/src/components/NavMenu/index.ts +0 -5
  285. package/src/components/Popover/Popover.stories.tsx +0 -49
  286. package/src/components/Popover/Popover.tsx +0 -110
  287. package/src/components/Popover/index.ts +0 -5
  288. package/src/components/QrCode/QrCode.stories.tsx +0 -42
  289. package/src/components/QrCode/QrCode.tsx +0 -165
  290. package/src/components/QrCode/index.ts +0 -5
  291. package/src/components/Tag/Tag.stories.tsx +0 -23
  292. package/src/components/Tag/Tag.tsx +0 -32
  293. package/src/components/Tag/index.ts +0 -5
  294. package/src/components/Toast/Toast.stories.tsx +0 -31
  295. package/src/components/Toast/Toast.tsx +0 -106
  296. package/src/components/Toast/index.ts +0 -5
  297. package/src/components/Tooltip/Tooltip.stories.tsx +0 -28
  298. package/src/components/Tooltip/Tooltip.tsx +0 -88
  299. package/src/components/Tooltip/index.ts +0 -5
  300. package/src/components/UiProvider/UiProvider.tsx +0 -44
  301. package/src/components/UiProvider/index.ts +0 -5
  302. package/src/components/index.ts +0 -21
  303. package/src/config/index.ts +0 -5
  304. package/src/config/tailwind.ts +0 -250
  305. package/src/esbuild-plugin.ts +0 -42
  306. package/src/hooks/index.ts +0 -7
  307. package/src/hooks/useForwardedRef.ts +0 -22
  308. package/src/hooks/useId.ts +0 -21
  309. package/src/hooks/useIsFocused.ts +0 -38
  310. package/src/plugin.ts +0 -44
  311. package/src/props/Elevation.ts +0 -5
  312. package/src/props/MessageValence.ts +0 -5
  313. package/src/props/Size.ts +0 -40
  314. package/src/props/index.ts +0 -7
  315. package/src/styles/active.ts +0 -11
  316. package/src/styles/disabled.ts +0 -5
  317. package/src/styles/focus.ts +0 -9
  318. package/src/styles/group.ts +0 -35
  319. package/src/styles/hover.ts +0 -10
  320. package/src/styles/input.ts +0 -46
  321. package/src/styles/ornament.ts +0 -6
  322. package/src/styles/shimmer.ts +0 -9
  323. package/src/styles/size.ts +0 -86
  324. package/src/styles/text.ts +0 -10
  325. package/src/styles/valence.ts +0 -71
  326. package/src/testing/templateForComponent.tsx +0 -16
  327. package/src/theme.css +0 -65
  328. package/src/typings.d.ts +0 -7
  329. package/src/util/index.ts +0 -5
  330. package/src/util/mx.ts +0 -28
  331. package/src/util/withLogical.ts +0 -103
@@ -1,897 +1,22 @@
1
- // packages/common/react-ui/src/components/Alert/Alert.tsx
2
- import React from "react";
3
-
4
- // packages/common/react-ui/src/hooks/useId.ts
5
- import alea from "alea";
6
- import { useMemo } from "react";
7
- var Alea = alea;
8
- var prng = new Alea("@dxos/react-ui");
9
- var randomString = (n = 4) => prng().toString(16).slice(2, n + 2);
10
- var useId = (namespace, n) => useMemo(() => `${namespace}-${randomString(n)}`, []);
11
-
12
- // packages/common/react-ui/src/hooks/useForwardedRef.ts
13
- import { useRef, useEffect } from "react";
14
- var useForwardedRef = (ref) => {
15
- const innerRef = useRef(null);
16
- useEffect(() => {
17
- if (!ref) {
18
- return;
19
- }
20
- if (typeof ref === "function") {
21
- ref(innerRef.current);
22
- } else {
23
- ref.current = innerRef.current;
24
- }
25
- });
26
- return innerRef;
27
- };
28
-
29
- // packages/common/react-ui/src/hooks/useIsFocused.ts
30
- import { useEffect as useEffect2, useRef as useRef2, useState } from "react";
31
- var useIsFocused = (inputRef) => {
32
- const [isFocused, setIsFocused] = useState(void 0);
33
- const isFocusedRef = useRef2(isFocused);
34
- isFocusedRef.current = isFocused;
35
- useEffect2(() => {
36
- const input = inputRef.current;
37
- if (!input) {
38
- return;
39
- }
40
- const onFocus = () => setIsFocused(true);
41
- const onBlur = () => setIsFocused(false);
42
- input.addEventListener("focus", onFocus);
43
- input.addEventListener("blur", onBlur);
44
- if (isFocusedRef.current === void 0) {
45
- setIsFocused(document.activeElement === input);
46
- }
47
- return () => {
48
- input.removeEventListener("focus", onFocus);
49
- input.removeEventListener("blur", onBlur);
50
- };
51
- }, [
52
- inputRef,
53
- setIsFocused
54
- ]);
55
- return isFocused;
56
- };
57
-
58
- // packages/common/react-ui/src/util/mx.ts
59
- import { extendTailwindMerge, validators as validators2 } from "tailwind-merge";
60
-
61
- // packages/common/react-ui/src/util/withLogical.ts
62
- import { mergeConfigs, validators } from "tailwind-merge";
63
- var withLogical = (prevConfig) => {
64
- const getLength = () => [
65
- validators.isLength
66
- ];
67
- const getLengthWithAuto = () => [
68
- "auto",
69
- validators.isLength
70
- ];
71
- const getLengthWithEmpty = () => [
72
- "",
73
- validators.isLength
74
- ];
75
- const getAny = () => [
76
- validators.isAny
77
- ];
78
- const getRounded = () => [
79
- "none",
80
- "",
81
- "sm",
82
- "md",
83
- "lg",
84
- "xl",
85
- "2xl",
86
- "3xl",
87
- "full",
88
- validators.isArbitraryLength
89
- ];
90
- return mergeConfigs(prevConfig, {
91
- classGroups: {
92
- float: [
93
- {
94
- float: [
95
- "start",
96
- "end"
97
- ]
98
- }
99
- ],
100
- clear: [
101
- {
102
- clear: [
103
- "start",
104
- "end"
105
- ]
106
- }
107
- ],
108
- resize: [
109
- {
110
- resize: [
111
- "block ",
112
- "inline"
113
- ]
114
- }
115
- ],
116
- "text-alignment": [
117
- {
118
- text: [
119
- "start",
120
- "end"
121
- ]
122
- }
123
- ],
124
- "logical.overscroll-b": [
125
- {
126
- "overscroll-b": [
127
- "auto ",
128
- "contain",
129
- "auto"
130
- ]
131
- }
132
- ],
133
- "logical.overscroll-i": [
134
- {
135
- "overscroll-b": [
136
- "auto ",
137
- "contain",
138
- "auto"
139
- ]
140
- }
141
- ],
142
- "logical.bs": [
143
- {
144
- bs: getLength()
145
- }
146
- ],
147
- "logical.min-bs": [
148
- {
149
- "min-bs": getLength()
150
- }
151
- ],
152
- "logical.max-bs": [
153
- {
154
- "max-bs": getLength()
155
- }
156
- ],
157
- "logical.is": [
158
- {
159
- is: getLength()
160
- }
161
- ],
162
- "logical.min-is": [
163
- {
164
- "min-is": getLength()
165
- }
166
- ],
167
- "logical.max-is": [
168
- {
169
- "max-is": getLength()
170
- }
171
- ],
172
- "logical.mlb": [
173
- {
174
- mlb: getLength()
175
- }
176
- ],
177
- "logical.mli": [
178
- {
179
- mli: getLength()
180
- }
181
- ],
182
- "logical.mbs": [
183
- {
184
- mbs: getLength()
185
- }
186
- ],
187
- "logical.mbe": [
188
- {
189
- mbe: getLength()
190
- }
191
- ],
192
- "logical.mis": [
193
- {
194
- mis: getLength()
195
- }
196
- ],
197
- "logical.mie": [
198
- {
199
- mie: getLength()
200
- }
201
- ],
202
- "logical.plb": [
203
- {
204
- plb: getLength()
205
- }
206
- ],
207
- "logical.pli": [
208
- {
209
- pli: getLength()
210
- }
211
- ],
212
- "logical.pbs": [
213
- {
214
- pbs: getLength()
215
- }
216
- ],
217
- "logical.pbe": [
218
- {
219
- pbe: getLength()
220
- }
221
- ],
222
- "logical.pis": [
223
- {
224
- pis: getLength()
225
- }
226
- ],
227
- "logical.pie": [
228
- {
229
- pie: getLength()
230
- }
231
- ],
232
- "logical.space-b": [
233
- {
234
- "space-b": getLength()
235
- }
236
- ],
237
- "logical.space-i": [
238
- {
239
- "space-i": getLength()
240
- }
241
- ],
242
- "logical.inset-block": [
243
- {
244
- "inset-block": getLengthWithAuto()
245
- }
246
- ],
247
- "logical.inset-inline": [
248
- {
249
- "inset-inline": getLengthWithAuto()
250
- }
251
- ],
252
- "logical.block-start": [
253
- {
254
- "block-start": getLengthWithAuto()
255
- }
256
- ],
257
- "logical.block-end": [
258
- {
259
- "block-end": getLengthWithAuto()
260
- }
261
- ],
262
- "logical.inline-start": [
263
- {
264
- "inline-start": getLengthWithAuto()
265
- }
266
- ],
267
- "logical.inline-end": [
268
- {
269
- "inline-end": getLengthWithAuto()
270
- }
271
- ],
272
- "logical.border-bs": [
273
- {
274
- "border-bs": getLengthWithEmpty()
275
- }
276
- ],
277
- "logical.border-be": [
278
- {
279
- "border-be": getLengthWithEmpty()
280
- }
281
- ],
282
- "logical.border-is": [
283
- {
284
- "border-is": getLengthWithEmpty()
285
- }
286
- ],
287
- "logical.border-ie": [
288
- {
289
- "border-ie": getLengthWithEmpty()
290
- }
291
- ],
292
- "logical.border-color-bs": [
293
- {
294
- "border-bs": getAny()
295
- }
296
- ],
297
- "logical.border-color-be": [
298
- {
299
- "border-be": getAny()
300
- }
301
- ],
302
- "logical.border-color-is": [
303
- {
304
- "border-is": getAny()
305
- }
306
- ],
307
- "logical.border-color-ie": [
308
- {
309
- "border-ie": getAny()
310
- }
311
- ],
312
- "logical.rounded-bs": [
313
- {
314
- "rounded-bs": getRounded()
315
- }
316
- ],
317
- "logical.rounded-be": [
318
- {
319
- "rounded-be": getRounded()
320
- }
321
- ],
322
- "logical.rounded-is": [
323
- {
324
- "rounded-is": getRounded()
325
- }
326
- ],
327
- "logical.rounded-ie": [
328
- {
329
- "rounded-ie": getRounded()
330
- }
331
- ],
332
- "logical.rounded-ss": [
333
- {
334
- "rounded-ss": getRounded()
335
- }
336
- ],
337
- "logical.rounded-se": [
338
- {
339
- "rounded-se": getRounded()
340
- }
341
- ],
342
- "logical.rounded-es": [
343
- {
344
- "rounded-es": getRounded()
345
- }
346
- ],
347
- "logical.rounded-ee": [
348
- {
349
- "rounded-ee": getRounded()
350
- }
351
- ],
352
- "logical.divide-b": [
353
- {
354
- "divide-b": getLengthWithEmpty()
355
- }
356
- ],
357
- "logical.divide-i": [
358
- {
359
- "divide-i": getLengthWithEmpty()
360
- }
361
- ]
362
- },
363
- conflictingClassGroups: {
364
- "inset-block": [
365
- "logical.block-start",
366
- "logical.block-end"
367
- ],
368
- "inset-inline": [
369
- "logical.inline-start",
370
- "logical.inline-end"
371
- ],
372
- p: [
373
- "logical.plb",
374
- "logical.pli",
375
- "logical.pbs",
376
- "logical.pbe",
377
- "logical.pis",
378
- "logical.pie"
379
- ],
380
- pli: [
381
- "logical.pis",
382
- "logical.pie"
383
- ],
384
- plb: [
385
- "logical.pbs",
386
- "logical.pbe"
387
- ],
388
- m: [
389
- "logical.mlb",
390
- "logical.mli",
391
- "logical.mbs",
392
- "logical.mbe",
393
- "logical.mis",
394
- "logical.mie"
395
- ],
396
- mli: [
397
- "logical.mis",
398
- "logical.mie"
399
- ],
400
- mlb: [
401
- "logical.mbs",
402
- "logical.mbe"
403
- ],
404
- overscroll: [
405
- "overscroll-i",
406
- "overscroll-b"
407
- ],
408
- rounded: [
409
- "logical.rounded-bs",
410
- "logical.rounded-be",
411
- "logical.rounded-is",
412
- "logical.rounded-ie",
413
- "logical.rounded-ss",
414
- "logical.rounded-se",
415
- "logical.rounded-es",
416
- "logical.rounded-ee"
417
- ],
418
- "logical.rounded-bs": [
419
- "logical.rounded-ss",
420
- "logical.rounded-se"
421
- ],
422
- "logical.rounded-be": [
423
- "logical.rounded-es",
424
- "logical.rounded-ee"
425
- ],
426
- "logical.rounded-is": [
427
- "logical.rounded-ss",
428
- "logical.rounded-es"
429
- ],
430
- "logical.rounded-ie": [
431
- "logical.rounded-ee",
432
- "logical.rounded-se"
433
- ],
434
- "border-color": [
435
- "logical.border-color-bs",
436
- "logical.border-color-be",
437
- "logical.border-color-is",
438
- "logical.border-color-ie"
439
- ],
440
- border: [
441
- "logical.border-bs",
442
- "logical.border-be",
443
- "logical.border-is",
444
- "logical.border-ie"
445
- ]
446
- }
447
- });
448
- };
449
-
450
- // packages/common/react-ui/src/util/mx.ts
451
- var mx = extendTailwindMerge({
452
- classGroups: {
453
- fontFamily: [
454
- "font-body",
455
- "font-display",
456
- "font-mono"
457
- ],
458
- fontWeight: [
459
- "font-thin",
460
- "font-extralight",
461
- "font-light",
462
- "font-normal",
463
- "font-medium",
464
- "font-semibold",
465
- "font-bold",
466
- "font-extrabold",
467
- "font-black",
468
- validators2.isArbitraryNumber
469
- ]
470
- }
471
- }, withLogical);
472
-
473
- // packages/common/react-ui/src/styles/active.ts
474
- var defaultActive = mx("radix-state-open:outline-2 radix-state-open:outline-offset-1 radix-state-open:outline-primary-300 radix-state-open:outline-offset-transparent dark:radix-state-open:outline-primary-400 dark:radix-state-open:outline-offset-transparent", "radix-state-on:outline-2 radix-state-on:outline-offset-1 radix-state-on:outline-primary-300 radix-state-on:outline-offset-transparent dark:radix-state-on:outline-primary-400 dark:radix-state-on:outline-offset-transparent", "radix-state-instant-open:outline-2 radix-state-instant-open:outline-offset-1 radix-state-instant-open:outline-primary-300 radix-state-instant-open:outline-offset-transparent dark:radix-state-instant-open:outline-primary-400 dark:radix-state-instant-open:outline-offset-transparent");
475
-
476
- // packages/common/react-ui/src/styles/disabled.ts
477
- var defaultDisabled = "opacity-50 cursor-not-allowed shadow-none";
478
-
479
- // packages/common/react-ui/src/styles/focus.ts
480
- var defaultFocus = "focus:outline-none focus-visible:z-[1] focus-visible:hover:outline-none dark:focus-visible:hover:outline-none focus-visible:ring focus-visible:ring-offset-1 focus-visible:ring-primary-500 focus-visible:ring-offset-white dark:focus-visible:ring-primary-200 dark:focus-visible:ring-offset-black";
481
- var staticFocus = "ring ring-offset-1 ring-primary-500 ring-offset-white dark:ring-primary-200 dark:ring-offset-black";
482
-
483
- // packages/common/react-ui/src/styles/group.ts
484
- var elevationClassNameMap = /* @__PURE__ */ new Map([
485
- [
486
- 0,
487
- "shadow-none"
488
- ],
489
- [
490
- 1,
491
- "shadow-sm"
492
- ],
493
- [
494
- 2,
495
- "shadow"
496
- ],
497
- [
498
- 3,
499
- "shadow-md"
500
- ],
501
- [
502
- 4,
503
- "shadow-lg"
504
- ],
505
- [
506
- 5,
507
- "shadow-xl"
508
- ],
509
- [
510
- 6,
511
- "shadow-2xl"
512
- ]
513
- ]);
514
- var defaultGroup = ({ elevation, rounding, spacing }) => {
515
- return mx(rounding != null ? rounding : "rounded-lg", spacing != null ? spacing : "p-4", elevation === 0 ? "bg-transparent border border-neutral-200 dark:border-neutral-700" : "bg-white dark:bg-neutral-800 elevated-buttons", elevationClassNameMap.get(elevation));
1
+ var __defProp = Object.defineProperty;
2
+ var __export = (target, all) => {
3
+ for (var name in all)
4
+ __defProp(target, name, { get: all[name], enumerable: true });
516
5
  };
517
6
 
518
- // packages/common/react-ui/src/styles/hover.ts
519
- var defaultHover = ({ disabled }) => {
520
- return !disabled && "outline outline-3 outline-transparent hover:z-[1] hover:outline-primary-300 dark:hover:outline-primary-400 hover:focus:outline-primary-300 dark:hover:focus:outline-primary-400";
521
- };
522
-
523
- // packages/common/react-ui/src/styles/ornament.ts
524
- var defaultInlineSeparator = "border-is border-neutral-300 dark:border-neutral-700";
525
- var defaultBlockSeparator = "border-bs border-neutral-300 dark:border-neutral-700";
526
-
527
- // packages/common/react-ui/src/styles/shimmer.ts
528
- var defaultShimmer = "relative before:absolute before:inset-0 before:-translate-x-full before:animate-shimmer before:bg-gradient-to-r before:from-transparent before:via-neutral-100/10 before:to-transparent isolate overflow-hidden";
529
- var strongShimmer = "relative before:absolute before:inset-0 before:-translate-x-full before:animate-shimmer before:bg-gradient-to-r before:from-transparent before:via-primary-100/80 before:to-transparent isolate overflow-hidden";
530
-
531
- // packages/common/react-ui/src/styles/size.ts
532
- var sizeWidthMap = /* @__PURE__ */ new Map([
533
- [
534
- 0,
535
- "w-0"
536
- ],
537
- [
538
- "px",
539
- "w-px"
540
- ],
541
- [
542
- 0.5,
543
- "w-0.5"
544
- ],
545
- [
546
- 1,
547
- "w-1"
548
- ],
549
- [
550
- 1.5,
551
- "w-1.5"
552
- ],
553
- [
554
- 2,
555
- "w-2"
556
- ],
557
- [
558
- 2.5,
559
- "w-2.5"
560
- ],
561
- [
562
- 3,
563
- "w-3"
564
- ],
565
- [
566
- 3.5,
567
- "w-3.5"
568
- ],
569
- [
570
- 4,
571
- "w-4"
572
- ],
573
- [
574
- 5,
575
- "w-5"
576
- ],
577
- [
578
- 6,
579
- "w-6"
580
- ],
581
- [
582
- 7,
583
- "w-7"
584
- ],
585
- [
586
- 8,
587
- "w-8"
588
- ],
589
- [
590
- 9,
591
- "w-9"
592
- ],
593
- [
594
- 10,
595
- "w-10"
596
- ],
597
- [
598
- 11,
599
- "w-11"
600
- ],
601
- [
602
- 12,
603
- "w-12"
604
- ],
605
- [
606
- 14,
607
- "w-14"
608
- ],
609
- [
610
- 16,
611
- "w-16"
612
- ],
613
- [
614
- 20,
615
- "w-20"
616
- ],
617
- [
618
- 24,
619
- "w-24"
620
- ],
621
- [
622
- 28,
623
- "w-28"
624
- ],
625
- [
626
- 32,
627
- "w-32"
628
- ],
629
- [
630
- 36,
631
- "w-36"
632
- ],
633
- [
634
- 40,
635
- "w-40"
636
- ],
637
- [
638
- 44,
639
- "w-44"
640
- ],
641
- [
642
- 48,
643
- "w-48"
644
- ],
645
- [
646
- 52,
647
- "w-52"
648
- ],
649
- [
650
- 56,
651
- "w-56"
652
- ],
653
- [
654
- 60,
655
- "w-60"
656
- ],
657
- [
658
- 64,
659
- "w-64"
660
- ],
661
- [
662
- 72,
663
- "w-72"
664
- ],
665
- [
666
- 80,
667
- "w-80"
668
- ],
669
- [
670
- 96,
671
- "w-96"
672
- ]
673
- ]);
674
- var sizeHeightMap = /* @__PURE__ */ new Map([
675
- [
676
- 0,
677
- "h-0"
678
- ],
679
- [
680
- "px",
681
- "h-px"
682
- ],
683
- [
684
- 0.5,
685
- "h-0.5"
686
- ],
687
- [
688
- 1,
689
- "h-1"
690
- ],
691
- [
692
- 1.5,
693
- "h-1.5"
694
- ],
695
- [
696
- 2,
697
- "h-2"
698
- ],
699
- [
700
- 2.5,
701
- "h-2.5"
702
- ],
703
- [
704
- 3,
705
- "h-3"
706
- ],
707
- [
708
- 3.5,
709
- "h-3.5"
710
- ],
711
- [
712
- 4,
713
- "h-4"
714
- ],
715
- [
716
- 5,
717
- "h-5"
718
- ],
719
- [
720
- 6,
721
- "h-6"
722
- ],
723
- [
724
- 7,
725
- "h-7"
726
- ],
727
- [
728
- 8,
729
- "h-8"
730
- ],
731
- [
732
- 9,
733
- "h-9"
734
- ],
735
- [
736
- 10,
737
- "h-10"
738
- ],
739
- [
740
- 11,
741
- "h-11"
742
- ],
743
- [
744
- 12,
745
- "h-12"
746
- ],
747
- [
748
- 14,
749
- "h-14"
750
- ],
751
- [
752
- 16,
753
- "h-16"
754
- ],
755
- [
756
- 20,
757
- "h-20"
758
- ],
759
- [
760
- 24,
761
- "h-24"
762
- ],
763
- [
764
- 28,
765
- "h-28"
766
- ],
767
- [
768
- 32,
769
- "h-32"
770
- ],
771
- [
772
- 36,
773
- "h-36"
774
- ],
775
- [
776
- 40,
777
- "h-40"
778
- ],
779
- [
780
- 44,
781
- "h-44"
782
- ],
783
- [
784
- 48,
785
- "h-48"
786
- ],
787
- [
788
- 52,
789
- "h-52"
790
- ],
791
- [
792
- 56,
793
- "h-56"
794
- ],
795
- [
796
- 60,
797
- "h-60"
798
- ],
799
- [
800
- 64,
801
- "h-64"
802
- ],
803
- [
804
- 72,
805
- "h-72"
806
- ],
807
- [
808
- 80,
809
- "h-80"
810
- ],
811
- [
812
- 96,
813
- "h-96"
814
- ]
815
- ]);
816
- var getSizeHeight = sizeHeightMap.get.bind(sizeHeightMap);
817
- var getSizeWidth = sizeWidthMap.get.bind(sizeWidthMap);
818
- var getSize = (size) => mx(getSizeHeight(size), getSizeWidth(size));
819
-
820
- // packages/common/react-ui/src/styles/text.ts
821
- var defaultPlaceholder = "placeholder-neutral-500 dark:placeholder-neutral-400";
822
- var defaultDescription = "text-xs font-normal text-neutral-650 dark:text-neutral-300";
823
- var primaryDescription = "text-xs font-normal text-white/90";
824
- var defaultTooltip = "text-xs font-normal text-neutral-900 dark:text-neutral-50";
7
+ // packages/apps/patterns/react-ui/src/composites/IdentityPopover/IdentityPopover.tsx
8
+ import React4 from "react";
9
+ import { Avatar as Avatar2, mx as mx3 } from "@dxos/react-components";
825
10
 
826
- // packages/common/react-ui/src/styles/valence.ts
827
- var successText = "text-xs font-medium text-success-700 dark:text-success-300";
828
- var infoText = "text-xs font-medium text-info-700 dark:text-info-300";
829
- var warningText = "text-xs font-medium text-warning-700 dark:text-warning-300";
830
- var errorText = "text-xs font-medium text-error-700 dark:text-error-300";
831
- var valenceColorText = (valence) => {
832
- switch (valence) {
833
- case "success":
834
- return successText;
835
- case "info":
836
- return infoText;
837
- case "warning":
838
- return warningText;
839
- case "error":
840
- return errorText;
841
- default:
842
- return void 0;
843
- }
844
- };
845
- var neutralInputBorder = "border-neutral-500 dark:border-neutral-600";
846
- var successInputBorder = "border-success-500 dark:border-success-600";
847
- var infoInputBorder = "border-info-500 dark:border-info-600";
848
- var warningInputBorder = "border-warning-500 dark:border-warning-600";
849
- var errorInputBorder = "border-error-500 dark:border-error-600";
850
- var valenceInputBorder = (valence) => {
851
- switch (valence) {
852
- case "success":
853
- return successInputBorder;
854
- case "info":
855
- return infoInputBorder;
856
- case "warning":
857
- return warningInputBorder;
858
- case "error":
859
- return errorInputBorder;
860
- default:
861
- return neutralInputBorder;
862
- }
863
- };
864
- var neutralAlertColors = "border-neutral-500 dark:border-neutral-600";
865
- var successAlertColors = "border-success-500 dark:border-success-600 text-success-700 dark:text-success-100 bg-success-50 dark:bg-success-900";
866
- var infoAlertColors = "border-info-500 dark:border-info-600 text-info-700 dark:text-info-100 bg-info-50 dark:bg-info-900";
867
- var warningAlertColors = "border-warning-500 dark:border-warning-600 text-warning-700 dark:text-warning-100 bg-warning-50 dark:bg-warning-900";
868
- var errorAlertColors = "border-error-500 dark:border-error-600 text-error-700 dark:text-error-100 bg-error-50 dark:bg-error-900";
869
- var valenceAlertColors = (valence) => {
870
- switch (valence) {
871
- case "success":
872
- return successAlertColors;
873
- case "info":
874
- return infoAlertColors;
875
- case "warning":
876
- return warningAlertColors;
877
- case "error":
878
- return errorAlertColors;
879
- default:
880
- return neutralAlertColors;
881
- }
882
- };
11
+ // packages/apps/patterns/react-ui/src/layouts/PanelPopover/PanelPopover.tsx
12
+ import React from "react";
13
+ import { mx, Popover } from "@dxos/react-components";
883
14
 
884
- // packages/common/react-ui/src/styles/input.ts
885
- var defaultInput = ({ disabled, validationValence }) => {
886
- return mx("text-base border rounded bg-white/50 text-neutral-900 dark:bg-neutral-700/50 dark:text-white", defaultFocus, defaultPlaceholder, defaultHover({
887
- disabled
888
- }), valenceInputBorder(validationValence), disabled && defaultDisabled);
889
- };
890
- var staticInput = ({ disabled, focused, validationValence }) => {
891
- return mx(defaultPlaceholder, "text-base border rounded bg-white/50 text-neutral-900 dark:bg-neutral-700/50 dark:text-white", valenceInputBorder(validationValence), disabled && defaultDisabled, focused && staticFocus);
892
- };
15
+ // packages/apps/patterns/react-ui/src/styles/panelStyles.ts
16
+ var defaultPanel = "p-2 backdrop-blur-md bg-neutral-50/[.66] dark:bg-neutral-950/[.66]";
17
+ var defaultArrow = "text-neutral-50/[.66] dark:text-neutral-950/[.66]";
893
18
 
894
- // packages/common/react-ui/src/components/Alert/Alert.tsx
19
+ // packages/apps/patterns/react-ui/src/layouts/PanelPopover/PanelPopover.tsx
895
20
  function _extends() {
896
21
  _extends = Object.assign || function(target) {
897
22
  for (var i = 1; i < arguments.length; i++) {
@@ -906,30 +31,33 @@ function _extends() {
906
31
  };
907
32
  return _extends.apply(this, arguments);
908
33
  }
909
- var Alert = ({ title, children, assertive, valence, slots = {} }) => {
910
- var _a, _b;
911
- const labelId = useId("alertLabel");
912
- return /* @__PURE__ */ React.createElement("div", _extends({}, slots.root, {
913
- role: assertive ? "alert" : "group",
914
- "aria-labelledby": labelId,
915
- className: mx("p-3 border rounded-md", valenceAlertColors(valence), (_a = slots.root) == null ? void 0 : _a.className)
916
- }), /* @__PURE__ */ React.createElement("p", _extends({}, slots.title, {
917
- id: labelId,
918
- className: mx("font-medium mb-2", (_b = slots.title) == null ? void 0 : _b.className)
919
- }), title), children);
34
+ var PanelPopover = ({ slots, children, ...popoverProps }) => {
35
+ var _a, _b, _c;
36
+ return /* @__PURE__ */ React.createElement(Popover, _extends({
37
+ slots: {
38
+ arrow: {
39
+ ...slots == null ? void 0 : slots.arrow,
40
+ className: mx(defaultArrow, (_a = slots == null ? void 0 : slots.arrow) == null ? void 0 : _a.className)
41
+ },
42
+ content: {
43
+ collisionPadding: 8,
44
+ sideOffset: 4,
45
+ ...slots == null ? void 0 : slots.content,
46
+ className: mx(defaultPanel, (_b = slots == null ? void 0 : slots.content) == null ? void 0 : _b.className)
47
+ },
48
+ trigger: {
49
+ ...slots == null ? void 0 : slots.trigger,
50
+ className: mx("", (_c = slots == null ? void 0 : slots.trigger) == null ? void 0 : _c.className)
51
+ },
52
+ ...slots
53
+ }
54
+ }, popoverProps), children);
920
55
  };
921
56
 
922
- // packages/common/react-ui/src/components/AlertDialog/AlertDialog.tsx
923
- import { Transition } from "@headlessui/react";
924
- import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog";
925
- import React6, { cloneElement, Fragment, useEffect as useEffect3, useState as useState3 } from "react";
926
-
927
- // packages/common/react-ui/src/components/Input/Input.tsx
928
- import React5, { useCallback as useCallback2, useState as useState2, useTransition } from "react";
929
-
930
- // packages/common/react-ui/src/components/Input/BarePinInput.tsx
931
- import { CodeInput, getSegmentCssWidth } from "rci";
932
- import React2, { forwardRef, useCallback } from "react";
57
+ // packages/apps/patterns/react-ui/src/layouts/PanelSidebar/PanelSidebar.tsx
58
+ import * as DialogPrimitive from "@radix-ui/react-dialog";
59
+ import React2, { createContext, Fragment, useCallback, useContext, useState } from "react";
60
+ import { defaultOverlay, mx as mx2, useMediaQuery, useTranslation } from "@dxos/react-components";
933
61
  function _extends2() {
934
62
  _extends2 = Object.assign || function(target) {
935
63
  for (var i = 1; i < arguments.length; i++) {
@@ -944,846 +72,99 @@ function _extends2() {
944
72
  };
945
73
  return _extends2.apply(this, arguments);
946
74
  }
947
- var bareInputStyleProps = {
948
- padding: "8px",
949
- spacing: "8px",
950
- fontFamily: ""
951
- };
952
- var BarePinInput = /* @__PURE__ */ forwardRef(({ initialValue, size, validationMessage, validationValence, value, onChange, placeholder, disabled, inputSlot }, ref) => {
953
- const width = getSegmentCssWidth("13px");
954
- const inputRef = useForwardedRef(ref);
955
- const inputFocused = useIsFocused(inputRef);
956
- const renderSegment = useCallback(({ state, index }) => /* @__PURE__ */ React2.createElement("div", {
957
- key: index,
958
- className: staticInput({
959
- focused: inputFocused && !!state,
960
- disabled,
961
- ...validationMessage && {
962
- validationValence
963
- }
964
- }),
965
- "data-state": state,
966
- style: {
967
- width,
968
- height: "100%"
969
- }
970
- }), [
971
- inputFocused,
972
- validationValence,
973
- validationMessage,
974
- disabled
975
- ]);
976
- return /* @__PURE__ */ React2.createElement(CodeInput, _extends2({}, {
977
- spellCheck: false,
978
- ...bareInputStyleProps,
979
- ...inputSlot,
980
- placeholder,
981
- onChange,
982
- inputRef,
983
- renderSegment,
984
- className: mx("font-mono selection:bg-transparent mli-auto", disabled && "cursor-not-allowed", inputSlot == null ? void 0 : inputSlot.className)
985
- }));
75
+ var sidebarWidth = 272;
76
+ var PanelSidebarContext = /* @__PURE__ */ createContext({
77
+ displayState: "hide",
78
+ setDisplayState: () => {
79
+ }
986
80
  });
987
-
988
- // packages/common/react-ui/src/components/Input/BareTextInput.tsx
989
- import React3 from "react";
990
- function _extends3() {
991
- _extends3 = Object.assign || function(target) {
992
- for (var i = 1; i < arguments.length; i++) {
993
- var source = arguments[i];
994
- for (var key in source) {
995
- if (Object.prototype.hasOwnProperty.call(source, key)) {
996
- target[key] = source[key];
997
- }
998
- }
999
- }
1000
- return target;
1001
- };
1002
- return _extends3.apply(this, arguments);
1003
- }
1004
- var sizeMap = {
1005
- md: "text-base",
1006
- lg: "text-lg",
1007
- pin: "",
1008
- textarea: ""
1009
- };
1010
- var BareTextInput = ({ validationValence, validationMessage, size, disabled, placeholder, onChange, value, inputSlot }) => {
1011
- return /* @__PURE__ */ React3.createElement("input", _extends3({}, inputSlot, {
1012
- placeholder,
1013
- onChange,
1014
- value,
1015
- className: mx(defaultInput({
1016
- disabled,
1017
- ...validationMessage && {
1018
- validationValence
1019
- }
1020
- }), sizeMap[size != null ? size : "md"], "block w-full px-2.5 py-2", inputSlot == null ? void 0 : inputSlot.className)
1021
- }));
1022
- };
1023
-
1024
- // packages/common/react-ui/src/components/Input/BareTextareaInput.tsx
1025
- import React4 from "react";
1026
- function _extends4() {
1027
- _extends4 = Object.assign || function(target) {
1028
- for (var i = 1; i < arguments.length; i++) {
1029
- var source = arguments[i];
1030
- for (var key in source) {
1031
- if (Object.prototype.hasOwnProperty.call(source, key)) {
1032
- target[key] = source[key];
1033
- }
1034
- }
1035
- }
1036
- return target;
1037
- };
1038
- return _extends4.apply(this, arguments);
1039
- }
1040
- var BareTextareaInput = ({ validationValence, validationMessage, onChange, value, disabled, placeholder, inputSlot }) => {
1041
- return /* @__PURE__ */ React4.createElement("textarea", _extends4({}, inputSlot, {
1042
- placeholder,
1043
- onChange,
1044
- value,
1045
- className: mx(defaultInput({
1046
- disabled,
1047
- ...validationMessage && {
1048
- validationValence
1049
- }
1050
- }), "block w-full px-2.5 py-2", inputSlot == null ? void 0 : inputSlot.className)
1051
- }));
1052
- };
1053
-
1054
- // packages/common/react-ui/src/components/Input/Input.tsx
1055
- function _extends5() {
1056
- _extends5 = Object.assign || function(target) {
1057
- for (var i = 1; i < arguments.length; i++) {
1058
- var source = arguments[i];
1059
- for (var key in source) {
1060
- if (Object.prototype.hasOwnProperty.call(source, key)) {
1061
- target[key] = source[key];
1062
- }
1063
- }
1064
- }
1065
- return target;
1066
- };
1067
- return _extends5.apply(this, arguments);
1068
- }
1069
- var Input = ({ label, labelVisuallyHidden, description, descriptionVisuallyHidden, initialValue, onChange, disabled, placeholder, size, length = 6, validationMessage, validationValence, slots = {} }) => {
1070
- var _a, _b, _c, _d, _e, _f, _g;
1071
- const inputId = (_b = (_a = slots.input) == null ? void 0 : _a.id) != null ? _b : useId("input");
1072
- const descriptionId = useId("input-description");
1073
- const validationId = useId("input-validation");
1074
- const isInvalid = !!validationMessage && validationValence === "error";
1075
- const [_isPending, startTransition] = useTransition();
1076
- const [internalValue, setInternalValue] = useState2((initialValue == null ? void 0 : initialValue.toString()) || "");
1077
- const onInternalChange = useCallback2((e) => {
1078
- var _a2;
1079
- const nextValue = ((_a2 = e.target) == null ? void 0 : _a2.value) || "";
1080
- setInternalValue(nextValue);
1081
- onChange && startTransition(() => {
1082
- onChange(nextValue);
1083
- });
81
+ var useTogglePanelSidebar = () => {
82
+ const { displayState, setDisplayState } = useContext(PanelSidebarContext);
83
+ return useCallback(() => {
84
+ setDisplayState(displayState === "hide" ? "show" : "hide");
1084
85
  }, [
1085
- onChange
86
+ displayState
1086
87
  ]);
1087
- const bareInputBaseProps = {
1088
- ...slots.input,
1089
- id: inputId,
1090
- ...((_c = slots.input) == null ? void 0 : _c.required) && {
1091
- required: true
1092
- },
1093
- ...disabled && {
1094
- disabled: true
1095
- },
1096
- ...description && {
1097
- "aria-describedby": descriptionId
1098
- },
1099
- ...isInvalid && {
1100
- "aria-invalid": "true",
1101
- "aria-errormessage": validationId
1102
- },
1103
- placeholder,
1104
- value: internalValue,
1105
- onChange: onInternalChange,
1106
- inputSlot: slots.input,
1107
- validationMessage,
1108
- validationValence
1109
- };
1110
- const bareInput = size === "pin" ? /* @__PURE__ */ React5.createElement(BarePinInput, _extends5({}, bareInputBaseProps, {
1111
- length
1112
- })) : size === "textarea" ? /* @__PURE__ */ React5.createElement(BareTextareaInput, _extends5({}, bareInputBaseProps)) : /* @__PURE__ */ React5.createElement(BareTextInput, _extends5({}, bareInputBaseProps, {
1113
- size
1114
- }));
1115
- return /* @__PURE__ */ React5.createElement("div", {
1116
- role: "none",
1117
- className: mx("mlb-4", (_d = slots.root) == null ? void 0 : _d.className)
1118
- }, /* @__PURE__ */ React5.createElement("label", _extends5({}, slots.label, {
1119
- htmlFor: inputId,
1120
- className: mx("block pbe-1 text-sm font-medium text-neutral-900 dark:text-neutral-100", labelVisuallyHidden && "sr-only", (_e = slots.label) == null ? void 0 : _e.className)
1121
- }), label), bareInput, (description || validationMessage) && /* @__PURE__ */ React5.createElement("p", _extends5({}, !isInvalid && {
1122
- id: descriptionId
1123
- }, {
1124
- className: mx(descriptionVisuallyHidden && !isInvalid && "sr-only")
1125
- }), validationMessage && /* @__PURE__ */ React5.createElement("span", {
1126
- id: validationId,
1127
- className: mx(valenceColorText(validationValence), (_f = slots.validation) == null ? void 0 : _f.className)
1128
- }, validationMessage, " "), /* @__PURE__ */ React5.createElement("span", _extends5({}, isInvalid && {
1129
- id: descriptionId
1130
- }, {
1131
- className: mx(defaultDescription, descriptionVisuallyHidden && "sr-only", (_g = slots.description) == null ? void 0 : _g.className)
1132
- }), description)));
1133
88
  };
1134
-
1135
- // packages/common/react-ui/src/components/AlertDialog/AlertDialog.tsx
1136
- function _extends6() {
1137
- _extends6 = Object.assign || function(target) {
1138
- for (var i = 1; i < arguments.length; i++) {
1139
- var source = arguments[i];
1140
- for (var key in source) {
1141
- if (Object.prototype.hasOwnProperty.call(source, key)) {
1142
- target[key] = source[key];
1143
- }
1144
- }
1145
- }
1146
- return target;
1147
- };
1148
- return _extends6.apply(this, arguments);
1149
- }
1150
- var AlertDialog = ({ title, titleVisuallyHidden, description, openTrigger, cancelTrigger, confirmTrigger, destructiveConfirmString, destructiveConfirmInputProps, children, initiallyOpen, mountAsSibling, slots = {} }) => {
1151
- var _a, _b, _c, _d, _e;
1152
- const [isOpen, setIsOpen] = useState3(!!initiallyOpen);
1153
- const [confirmDisabled, setConfirmDisabled] = useState3(!!destructiveConfirmString);
1154
- const [confirmStringValue, setConfirmStringValue] = useState3("");
1155
- useEffect3(() => {
1156
- if (destructiveConfirmString) {
1157
- setConfirmDisabled(confirmStringValue !== destructiveConfirmString);
1158
- }
1159
- }, [
1160
- confirmStringValue
1161
- ]);
1162
- const dialogOverlayAndContent = /* @__PURE__ */ React6.createElement(Transition.Root, {
1163
- show: isOpen
1164
- }, /* @__PURE__ */ React6.createElement(Transition.Child, {
1165
- as: Fragment,
1166
- enter: "ease-out duration-300",
1167
- enterFrom: "opacity-0",
1168
- enterTo: "opacity-100",
1169
- leave: "ease-in duration-200",
1170
- leaveFrom: "opacity-100",
1171
- leaveTo: "opacity-0"
1172
- }, /* @__PURE__ */ React6.createElement(AlertDialogPrimitive.Overlay, {
1173
- forceMount: true,
1174
- className: mx("fixed inset-0 z-20 bg-black/50", (_a = slots.overlay) == null ? void 0 : _a.className)
1175
- })), /* @__PURE__ */ React6.createElement(Transition.Child, {
1176
- as: Fragment,
1177
- enter: "ease-out duration-300",
1178
- enterFrom: "opacity-0 scale-95",
1179
- enterTo: "opacity-100 scale-100",
1180
- leave: "ease-in duration-200",
1181
- leaveFrom: "opacity-100 scale-100",
1182
- leaveTo: "opacity-0 scale-95"
1183
- }, /* @__PURE__ */ React6.createElement(AlertDialogPrimitive.Content, _extends6({
1184
- forceMount: true
1185
- }, slots.content, {
1186
- className: mx("fixed z-50", "w-[95vw] max-w-md rounded-xl p-4 md:w-full", "top-[50%] left-[50%] -translate-x-[50%] -translate-y-[50%]", "shadow-2xl bg-white dark:bg-neutral-800 elevated-buttons", defaultFocus, (_b = slots.content) == null ? void 0 : _b.className)
1187
- }), /* @__PURE__ */ React6.createElement(AlertDialogPrimitive.Title, _extends6({
1188
- tabIndex: 0
1189
- }, slots.title, {
1190
- className: mx("text-2xl font-display font-medium text-neutral-900 dark:text-neutral-100 rounded-md", titleVisuallyHidden && "sr-only", defaultFocus, (_c = slots.title) == null ? void 0 : _c.className)
1191
- }), title), description && /* @__PURE__ */ React6.createElement(AlertDialogPrimitive.Description, _extends6({}, slots.description, {
1192
- className: mx("my-2", defaultDescription, (_d = slots.description) == null ? void 0 : _d.className)
1193
- }), description), children, destructiveConfirmInputProps && /* @__PURE__ */ React6.createElement(Input, _extends6({}, destructiveConfirmInputProps, {
1194
- onChange: setConfirmStringValue
1195
- })), /* @__PURE__ */ React6.createElement("div", _extends6({}, slots.actions, {
1196
- className: mx("flex flex-wrap justify-end gap-4", (_e = slots.actions) == null ? void 0 : _e.className)
1197
- }), cancelTrigger && /* @__PURE__ */ React6.createElement(AlertDialogPrimitive.Cancel, {
1198
- asChild: typeof cancelTrigger !== "string"
1199
- }, cancelTrigger), /* @__PURE__ */ React6.createElement(AlertDialogPrimitive.Action, {
1200
- asChild: true
1201
- }, /* @__PURE__ */ cloneElement(confirmTrigger, {
1202
- disabled: confirmDisabled
1203
- }))))));
1204
- return /* @__PURE__ */ React6.createElement(AlertDialogPrimitive.Root, {
89
+ var PanelSidebarProvider = ({ children, slots }) => {
90
+ var _a, _b;
91
+ const { t } = useTranslation("os");
92
+ const [displayState, setInternalDisplayState] = useState("hide");
93
+ const [transitionShow, setTransitionShow] = useState(false);
94
+ const isOpen = displayState === "show";
95
+ const [isLg] = useMediaQuery("lg");
96
+ const internalHide = () => {
97
+ setTransitionShow(false);
98
+ setTimeout(() => {
99
+ setInternalDisplayState("hide");
100
+ }, 200);
101
+ };
102
+ const internalShow = () => {
103
+ setInternalDisplayState("show");
104
+ setTimeout(() => {
105
+ setTransitionShow(true);
106
+ }, 0);
107
+ };
108
+ const setDisplayState = (displayState2) => displayState2 === "show" ? internalShow() : internalHide();
109
+ return /* @__PURE__ */ React2.createElement(PanelSidebarContext.Provider, {
110
+ value: {
111
+ setDisplayState,
112
+ displayState
113
+ }
114
+ }, /* @__PURE__ */ React2.createElement(DialogPrimitive.Root, {
1205
115
  open: isOpen,
1206
- onOpenChange: setIsOpen
1207
- }, openTrigger && /* @__PURE__ */ React6.createElement(AlertDialogPrimitive.Trigger, {
1208
- asChild: true
1209
- }, openTrigger), mountAsSibling ? dialogOverlayAndContent : /* @__PURE__ */ React6.createElement(AlertDialogPrimitive.Portal, null, dialogOverlayAndContent));
1210
- };
1211
-
1212
- // packages/common/react-ui/src/components/Avatar/Avatar.tsx
1213
- import * as AvatarPrimitive from "@radix-ui/react-avatar";
1214
- import * as PortalPrimitive from "@radix-ui/react-portal";
1215
- import { toSvg } from "jdenticon";
1216
- import React7, { cloneElement as cloneElement2, forwardRef as forwardRef2, useMemo as useMemo2 } from "react";
1217
- function _extends7() {
1218
- _extends7 = Object.assign || function(target) {
1219
- for (var i = 1; i < arguments.length; i++) {
1220
- var source = arguments[i];
1221
- for (var key in source) {
1222
- if (Object.prototype.hasOwnProperty.call(source, key)) {
1223
- target[key] = source[key];
1224
- }
1225
- }
1226
- }
1227
- return target;
1228
- };
1229
- return _extends7.apply(this, arguments);
1230
- }
1231
- var shapeStyles = {
1232
- circle: "rounded-full",
1233
- square: "rounded"
1234
- };
1235
- var Avatar = /* @__PURE__ */ forwardRef2(({ mediaSrc, mediaAlt, fallbackValue, label, variant = "square", size = 10, slots = {} }, ref) => {
1236
- var _a, _b, _c;
1237
- const labelId = useId("avatarLabel");
1238
- const imgSrc = useMemo2(() => `data:image/svg+xml;utf8,${encodeURIComponent(toSvg(fallbackValue, size === "px" ? 1 : size * 4))}`, [
1239
- fallbackValue
1240
- ]);
1241
- return /* @__PURE__ */ React7.createElement(React7.Fragment, null, /* @__PURE__ */ React7.createElement(AvatarPrimitive.Root, _extends7({}, slots.root, {
1242
- className: mx("relative inline-flex", getSize(size), (_a = slots.root) == null ? void 0 : _a.className),
1243
- "aria-labelledby": labelId,
1244
- ref
1245
- }), mediaSrc && /* @__PURE__ */ React7.createElement(AvatarPrimitive.Image, _extends7({}, slots.image, {
1246
- src: mediaSrc,
1247
- alt: mediaAlt != null ? mediaAlt : "Avatar",
1248
- className: mx("h-full w-full object-cover overflow-hidden", shapeStyles[variant], (_b = slots.image) == null ? void 0 : _b.className)
1249
- })), /* @__PURE__ */ React7.createElement(AvatarPrimitive.Fallback, _extends7({
1250
- delayMs: 0
1251
- }, slots.fallback, {
1252
- className: mx("shrink-0 flex h-full w-full items-center justify-center bg-white dark:bg-neutral-800 overflow-hidden", shapeStyles[variant], (_c = slots.fallback) == null ? void 0 : _c.className)
1253
- }), /* @__PURE__ */ React7.createElement("img", {
1254
- role: "none",
1255
- alt: fallbackValue,
1256
- src: imgSrc,
1257
- className: "h-full w-full"
1258
- }))), typeof label === "string" ? /* @__PURE__ */ React7.createElement(PortalPrimitive.Root, {
1259
- asChild: true
1260
- }, /* @__PURE__ */ React7.createElement("span", {
1261
- id: labelId,
116
+ modal: !isLg
117
+ }, /* @__PURE__ */ React2.createElement(DialogPrimitive.Content, {
118
+ className: mx2("fixed block-start-0 block-end-0 is-[272px] z-50 transition-[inset-inline-start,inset-inline-end] duration-200 ease-in-out", "bg-neutral-50 dark:bg-neutral-950", transitionShow ? "inline-start-0" : `inline-start-[-${sidebarWidth}px]`)
119
+ }, /* @__PURE__ */ React2.createElement(DialogPrimitive.Title, {
1262
120
  className: "sr-only"
1263
- }, label)) : /* @__PURE__ */ cloneElement2(label, {
1264
- id: labelId
1265
- }));
1266
- });
1267
-
1268
- // packages/common/react-ui/src/components/Button/Button.tsx
1269
- import React8, { forwardRef as forwardRef3 } from "react";
1270
-
1271
- // packages/common/react-ui/src/components/Button/buttonStyles.ts
1272
- var primaryButtonColors = "bg-primary-600 text-white hover:bg-primary-650";
1273
- var defaultButtonColors = "bg-white text-neutral-900 dark:bg-neutral-750 dark:text-neutral-50";
1274
- var ghostButtonColors = "";
1275
- var buttonStyles = (props) => {
1276
- const resolvedVariant = props.variant || "default";
1277
- return mx(
1278
- "inline-flex select-none items-center justify-center text-sm font-medium rounded-md transition-color duration-100",
1279
- props.compact ? "p-1.5" : "pli-4 plb-2",
1280
- defaultHover(props),
1281
- resolvedVariant === "default" && "border border-neutral-100 dark:border-neutral-650",
1282
- resolvedVariant !== "ghost" && !props.disabled && "hover:focus:border-neutral-100 hover:border-transparent",
1283
- resolvedVariant === "default" && defaultButtonColors,
1284
- resolvedVariant === "ghost" && ghostButtonColors,
1285
- resolvedVariant === "primary" && "border border-primary-550 hover:border-transparent",
1286
- resolvedVariant === "primary" && primaryButtonColors,
1287
- resolvedVariant === "outline" && "text-neutral-700 border border-neutral-600 dark:border-neutral-300 dark:text-neutral-150",
1288
- defaultFocus,
1289
- props.disabled ? defaultDisabled : resolvedVariant !== "outline" && resolvedVariant !== "ghost" && "button-elevation",
1290
- "group",
1291
- defaultActive
1292
- );
1293
- };
1294
-
1295
- // packages/common/react-ui/src/components/Button/Button.tsx
1296
- function _extends8() {
1297
- _extends8 = Object.assign || function(target) {
1298
- for (var i = 1; i < arguments.length; i++) {
1299
- var source = arguments[i];
1300
- for (var key in source) {
1301
- if (Object.prototype.hasOwnProperty.call(source, key)) {
1302
- target[key] = source[key];
1303
- }
1304
- }
1305
- }
1306
- return target;
1307
- };
1308
- return _extends8.apply(this, arguments);
1309
- }
1310
- var Button = /* @__PURE__ */ forwardRef3(({ children, compact, variant, ...rootSlot }, ref) => /* @__PURE__ */ React8.createElement("button", _extends8({
1311
- ref
1312
- }, rootSlot, {
1313
- className: mx(buttonStyles({
1314
- compact,
1315
- variant,
1316
- disabled: rootSlot.disabled
1317
- }), rootSlot.className)
1318
- }, rootSlot.disabled && {
1319
- disabled: true
1320
- }), children));
1321
-
1322
- // packages/common/react-ui/src/components/Button/ButtonGroup.tsx
1323
- import React9 from "react";
1324
- function _extends9() {
1325
- _extends9 = Object.assign || function(target) {
1326
- for (var i = 1; i < arguments.length; i++) {
1327
- var source = arguments[i];
1328
- for (var key in source) {
1329
- if (Object.prototype.hasOwnProperty.call(source, key)) {
1330
- target[key] = source[key];
1331
- }
1332
- }
1333
- }
1334
- return target;
1335
- };
1336
- return _extends9.apply(this, arguments);
1337
- }
1338
- var ButtonGroup = ({ children, ...divProps }) => {
1339
- return /* @__PURE__ */ React9.createElement("div", _extends9({
121
+ }, t("sidebar label")), /* @__PURE__ */ React2.createElement(Fragment, _extends2({}, slots == null ? void 0 : slots.content))), (slots == null ? void 0 : slots.fixedBlockStart) && /* @__PURE__ */ React2.createElement("div", _extends2({
1340
122
  role: "none"
1341
- }, divProps, {
1342
- className: mx("button-elevation [&>*]:grouped-buttons rounded-md", divProps.className)
1343
- }), children);
1344
- };
1345
-
1346
- // packages/common/react-ui/src/components/CompoundButton/CompoundButton.tsx
1347
- import React10 from "react";
1348
- function _extends10() {
1349
- _extends10 = Object.assign || function(target) {
1350
- for (var i = 1; i < arguments.length; i++) {
1351
- var source = arguments[i];
1352
- for (var key in source) {
1353
- if (Object.prototype.hasOwnProperty.call(source, key)) {
1354
- target[key] = source[key];
1355
- }
1356
- }
1357
- }
1358
- return target;
1359
- };
1360
- return _extends10.apply(this, arguments);
1361
- }
1362
- var CompoundButton = ({ children, description, before, after, ...buttonProps }) => {
1363
- const variant = buttonProps.variant || "default";
1364
- const labelId = useId("compoundButton-label");
1365
- const descriptionId = useId("compoundButton-description");
1366
- return /* @__PURE__ */ React10.createElement("button", _extends10({}, buttonProps, {
1367
- className: mx(buttonStyles(buttonProps), "flex items-center gap-4 py-2.5", buttonProps.className),
1368
- "aria-labelledby": labelId
1369
- }, description && {
1370
- "aria-describedby": descriptionId
1371
- }), before && /* @__PURE__ */ React10.createElement("div", {
1372
- role: "none",
1373
- className: "grow-0"
1374
- }, before), /* @__PURE__ */ React10.createElement("div", {
1375
- role: "none",
1376
- className: "grow flex flex-col gap-1 text-left"
1377
- }, /* @__PURE__ */ React10.createElement("p", {
1378
- id: labelId
1379
- }, children), description && /* @__PURE__ */ React10.createElement("p", {
1380
- id: descriptionId,
1381
- className: mx("text-xs font-normal mb-1", variant === "primary" ? primaryDescription : defaultDescription)
1382
- }, description)), after && /* @__PURE__ */ React10.createElement("div", {
1383
- role: "none",
1384
- className: "grow-0"
1385
- }, after));
1386
- };
1387
-
1388
- // packages/common/react-ui/src/components/Dialog/Dialog.tsx
1389
- import { Transition as Transition2 } from "@headlessui/react";
1390
- import * as DialogPrimitive from "@radix-ui/react-dialog";
1391
- import { X } from "phosphor-react";
1392
- import React12, { Fragment as Fragment2, useState as useState5 } from "react";
1393
-
1394
- // packages/common/react-ui/src/components/Tooltip/Tooltip.tsx
1395
- import * as PortalPrimitive2 from "@radix-ui/react-portal";
1396
- import { Button as ToolbarButtonItem } from "@radix-ui/react-toolbar";
1397
- import * as TooltipPrimitive from "@radix-ui/react-tooltip";
1398
- import React11, { useState as useState4 } from "react";
1399
- function _extends11() {
1400
- _extends11 = Object.assign || function(target) {
1401
- for (var i = 1; i < arguments.length; i++) {
1402
- var source = arguments[i];
1403
- for (var key in source) {
1404
- if (Object.prototype.hasOwnProperty.call(source, key)) {
1405
- target[key] = source[key];
1406
- }
1407
- }
1408
- }
1409
- return target;
1410
- };
1411
- return _extends11.apply(this, arguments);
1412
- }
1413
- var Tooltip = ({ content, children, side, compact, tooltipLabelsTrigger, mountAsSibling, triggerIsInToolbar, zIndex = "z-[2]", slots = {} }) => {
1414
- var _a, _b, _c, _d;
1415
- const [isOpen, setIsOpen] = useState4(false);
1416
- const labelId = useId("tooltipLabel");
1417
- const tooltipContent = /* @__PURE__ */ React11.createElement(TooltipPrimitive.Content, _extends11({
1418
- forceMount: true
1419
- }, slots.content, {
1420
- side: (_b = side != null ? side : (_a = slots.content) == null ? void 0 : _a.side) != null ? _b : "top",
1421
- className: mx("radix-side-top:animate-slide-down-fade", "radix-side-right:animate-slide-left-fade", "radix-side-bottom:animate-slide-up-fade", "radix-side-left:animate-slide-right-fade", "inline-flex items-center rounded-md", zIndex, !compact && "px-4 py-2.5", "shadow-lg bg-white dark:bg-neutral-800", !isOpen && "sr-only", defaultTooltip, (_c = slots.content) == null ? void 0 : _c.className)
1422
- }), /* @__PURE__ */ React11.createElement(TooltipPrimitive.Arrow, {
1423
- className: mx("fill-current text-white dark:text-neutral-800", (_d = slots.arrow) == null ? void 0 : _d.className)
1424
- }), content);
1425
- const triggerContent = /* @__PURE__ */ React11.createElement(TooltipPrimitive.Trigger, _extends11({
1426
- asChild: true
1427
- }, tooltipLabelsTrigger && {
1428
- "aria-labelledby": labelId
1429
- }), children);
1430
- return /* @__PURE__ */ React11.createElement(TooltipPrimitive.Root, {
1431
- open: isOpen,
1432
- onOpenChange: setIsOpen
1433
- }, triggerIsInToolbar ? /* @__PURE__ */ React11.createElement(ToolbarButtonItem, {
1434
- asChild: true
1435
- }, triggerContent) : triggerContent, tooltipLabelsTrigger && /* @__PURE__ */ React11.createElement(PortalPrimitive2.Root, {
1436
- asChild: true
1437
- }, /* @__PURE__ */ React11.createElement("span", {
1438
- id: labelId,
1439
- className: "sr-only"
1440
- }, content)), mountAsSibling ? tooltipContent : /* @__PURE__ */ React11.createElement(TooltipPrimitive.Portal, {
1441
- forceMount: true
1442
- }, tooltipContent));
1443
- };
1444
-
1445
- // packages/common/react-ui/src/components/Dialog/Dialog.tsx
1446
- function _extends12() {
1447
- _extends12 = Object.assign || function(target) {
1448
- for (var i = 1; i < arguments.length; i++) {
1449
- var source = arguments[i];
1450
- for (var key in source) {
1451
- if (Object.prototype.hasOwnProperty.call(source, key)) {
1452
- target[key] = source[key];
1453
- }
1454
- }
1455
- }
1456
- return target;
1457
- };
1458
- return _extends12.apply(this, arguments);
1459
- }
1460
- var Dialog = ({ title, titleVisuallyHidden, description, openTrigger, children, closeTriggers, closeLabel, initiallyOpen, mountAsSibling, slots = {} }) => {
1461
- var _a, _b, _c, _d, _e, _f, _g;
1462
- const [isOpen, setIsOpen] = useState5(!!initiallyOpen);
1463
- const dialogOverlayAndContent = /* @__PURE__ */ React12.createElement(Transition2.Root, {
1464
- show: isOpen
1465
- }, /* @__PURE__ */ React12.createElement(Transition2.Child, {
1466
- as: Fragment2,
1467
- enter: "linear duration-300",
1468
- enterFrom: "opacity-0",
1469
- enterTo: "opacity-100",
1470
- leave: "linear duration-200",
1471
- leaveFrom: "opacity-100",
1472
- leaveTo: "opacity-0"
1473
- }, /* @__PURE__ */ React12.createElement(DialogPrimitive.Overlay, _extends12({
1474
- forceMount: true
1475
- }, slots.overlay, {
1476
- className: mx("fixed inset-0 z-20 bg-black/50", (_a = slots.overlay) == null ? void 0 : _a.className)
1477
- }))), /* @__PURE__ */ React12.createElement(Transition2.Child, {
1478
- as: Fragment2,
1479
- enter: "ease-out duration-300",
1480
- enterFrom: "opacity-0 scale-95",
1481
- enterTo: "opacity-100 scale-100",
1482
- leave: "ease-in duration-200",
1483
- leaveFrom: "opacity-100 scale-100",
1484
- leaveTo: "opacity-0 scale-95"
1485
- }, /* @__PURE__ */ React12.createElement(DialogPrimitive.Content, _extends12({
1486
- forceMount: true
1487
- }, slots.content, {
1488
- className: mx("fixed z-50", "w-[95vw] max-w-md rounded-xl p-4 md:w-full", "top-[50%] left-[50%] -translate-x-[50%] -translate-y-[50%]", "shadow-2xl bg-white dark:bg-neutral-800 elevated-buttons", defaultFocus, (_b = slots.content) == null ? void 0 : _b.className)
1489
- }), /* @__PURE__ */ React12.createElement(DialogPrimitive.Title, _extends12({}, slots.title, {
1490
- className: mx("text-2xl font-display font-medium text-neutral-900 dark:text-neutral-100 rounded-md", titleVisuallyHidden && "sr-only", defaultFocus, (_c = slots.content) == null ? void 0 : _c.className),
1491
- tabIndex: 0
1492
- }), title), description && /* @__PURE__ */ React12.createElement(DialogPrimitive.Description, _extends12({}, slots.description, {
1493
- className: mx("mt-2", defaultDescription, (_d = slots.description) == null ? void 0 : _d.className)
1494
- }), description), children, closeLabel && /* @__PURE__ */ React12.createElement(Tooltip, {
1495
- zIndex: "z-[51]",
1496
- content: closeLabel
1497
- }, /* @__PURE__ */ React12.createElement(DialogPrimitive.Close, {
1498
- className: mx("absolute top-3.5 right-3.5 inline-flex items-center justify-center rounded-sm p-1", defaultFocus, defaultHover({}), (_e = slots.close) == null ? void 0 : _e.className)
1499
- }, /* @__PURE__ */ React12.createElement(X, {
1500
- className: mx(getSize(4), "text-neutral-500 hover:text-neutral-700 dark:text-neutral-500 dark:hover:text-neutral-400", (_f = slots.closeIcon) == null ? void 0 : _f.className)
1501
- }))), closeTriggers && /* @__PURE__ */ React12.createElement("div", _extends12({}, slots.closeTriggers, {
1502
- className: mx("flex flex-wrap justify-end gap-4", (_g = slots.closeTriggers) == null ? void 0 : _g.className)
1503
- }), closeTriggers.map((closeTrigger, key) => /* @__PURE__ */ React12.createElement(DialogPrimitive.Close, {
1504
- key
1505
- }, closeTrigger))))));
1506
- return /* @__PURE__ */ React12.createElement(DialogPrimitive.Root, {
1507
- open: isOpen,
1508
- onOpenChange: setIsOpen
1509
- }, openTrigger && /* @__PURE__ */ React12.createElement(DialogPrimitive.Trigger, {
1510
- asChild: true
1511
- }, openTrigger), mountAsSibling ? dialogOverlayAndContent : /* @__PURE__ */ React12.createElement(DialogPrimitive.Portal, null, dialogOverlayAndContent));
1512
- };
1513
-
1514
- // packages/common/react-ui/src/components/Group/Group.tsx
1515
- import React14 from "react";
1516
-
1517
- // packages/common/react-ui/src/components/Heading/Heading.tsx
1518
- import { createElement } from "react";
1519
- var levelClassNameMap = /* @__PURE__ */ new Map([
1520
- [
1521
- 1,
1522
- "text-5xl"
1523
- ],
1524
- [
1525
- 2,
1526
- "text-4xl"
1527
- ],
1528
- [
1529
- 3,
1530
- "text-3xl"
1531
- ],
1532
- [
1533
- 4,
1534
- "text-2xl"
1535
- ],
1536
- [
1537
- 5,
1538
- "text-xl"
1539
- ],
1540
- [
1541
- 6,
1542
- "text-lg"
1543
- ]
1544
- ]);
1545
- var Heading = ({ level, ...rootSlot }) => {
1546
- const resolvedLevel = level || 1;
1547
- return /* @__PURE__ */ createElement(`h${resolvedLevel}`, {
1548
- ...rootSlot,
1549
- className: mx("font-bold font-display", levelClassNameMap.get(resolvedLevel), rootSlot.className)
1550
- });
1551
- };
1552
-
1553
- // packages/common/react-ui/src/components/Group/Group.tsx
1554
- function _extends13() {
1555
- _extends13 = Object.assign || function(target) {
1556
- for (var i = 1; i < arguments.length; i++) {
1557
- var source = arguments[i];
1558
- for (var key in source) {
1559
- if (Object.prototype.hasOwnProperty.call(source, key)) {
1560
- target[key] = source[key];
1561
- }
1562
- }
1563
- }
1564
- return target;
1565
- };
1566
- return _extends13.apply(this, arguments);
1567
- }
1568
- var Group = ({ elevation = 3, children, label, labelVisuallyHidden, ...rootSlot }) => {
1569
- const labelId = useId("groupLabel");
1570
- return /* @__PURE__ */ React14.createElement("div", _extends13({
1571
- role: "group",
1572
- "aria-labelledby": labelId
1573
- }, rootSlot, {
1574
- className: mx(defaultGroup({
1575
- elevation
1576
- }), rootSlot == null ? void 0 : rootSlot.className)
1577
- }), /* @__PURE__ */ React14.createElement(Heading, _extends13({}, label, {
1578
- id: labelId,
1579
- className: mx(labelVisuallyHidden && "sr-only", "mb-2", label == null ? void 0 : label.className)
1580
- })), children);
1581
- };
1582
-
1583
- // packages/common/react-ui/src/components/Loading/Loading.tsx
1584
- import React15 from "react";
1585
- function _extends14() {
1586
- _extends14 = Object.assign || function(target) {
1587
- for (var i = 1; i < arguments.length; i++) {
1588
- var source = arguments[i];
1589
- for (var key in source) {
1590
- if (Object.prototype.hasOwnProperty.call(source, key)) {
1591
- target[key] = source[key];
1592
- }
1593
- }
1594
- }
1595
- return target;
1596
- };
1597
- return _extends14.apply(this, arguments);
1598
- }
1599
- var sizeMap2 = /* @__PURE__ */ new Map([
1600
- [
1601
- "sm",
1602
- "w-4 h-4"
1603
- ],
1604
- [
1605
- "md",
1606
- "w-8 h-8"
1607
- ],
1608
- [
1609
- "lg",
1610
- "w-12 h-12"
1611
- ],
1612
- [
1613
- "xl",
1614
- "w-16 h-16"
1615
- ]
1616
- ]);
1617
- var Loading = ({ size, color, label, slots = {} }) => {
1618
- var _a, _b;
1619
- const labelId = useId("loading-label");
1620
- const sizeClassName = sizeMap2.get(size != null ? size : "md");
1621
- return /* @__PURE__ */ React15.createElement("div", _extends14({}, slots.root, {
1622
- className: mx("flex justify-center p-4", (_a = slots.root) == null ? void 0 : _a.className),
1623
- role: "status",
1624
- "aria-labelledby": labelId
1625
- }), /* @__PURE__ */ React15.createElement("svg", {
123
+ }, slots == null ? void 0 : slots.fixedBlockStart, {
124
+ className: mx2("fixed inline-end-0 block-start-0 z-[49] transition-[inset-inline-start,inset-inline-end] duration-200 ease-in-out", transitionShow ? "inline-start-[272px]" : "inline-start-0", (_a = slots == null ? void 0 : slots.fixedBlockStart) == null ? void 0 : _a.className)
125
+ }), (_b = slots == null ? void 0 : slots.fixedBlockStart) == null ? void 0 : _b.children), !isLg && /* @__PURE__ */ React2.createElement(DialogPrimitive.Overlay, {
126
+ className: mx2(defaultOverlay, "transition-opacity duration-200 ease-in-out", transitionShow ? "opacity-100" : "opacity-0"),
127
+ onClick: internalHide
128
+ }), /* @__PURE__ */ React2.createElement("div", {
1626
129
  role: "none",
1627
- className: mx(sizeClassName, "text-neutral-200/50 animate-spin dark:text-neutral-600/50", color === "neutral" ? "fill-neutral-400" : "fill-primary-400", (_b = slots.svg) == null ? void 0 : _b.className),
1628
- viewBox: "0 0 100 101",
1629
- fill: "none",
1630
- xmlns: "http://www.w3.org/2000/svg"
1631
- }, /* @__PURE__ */ React15.createElement("path", {
1632
- d: "M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z",
1633
- fill: "currentColor"
1634
- }), /* @__PURE__ */ React15.createElement("path", {
1635
- d: "M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z",
1636
- fill: "currentFill"
1637
- })), /* @__PURE__ */ React15.createElement("span", {
1638
- className: "sr-only",
1639
- id: labelId
1640
- }, label));
130
+ className: mx2("bs-full transition-[padding-inline-start] duration-200 ease-in-out", isLg && isOpen ? "pis-[272px]" : "pis-0")
131
+ }, children)));
1641
132
  };
1642
133
 
1643
- // packages/common/react-ui/src/components/NavMenu/NavMenu.tsx
1644
- import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu";
1645
- import React16, { forwardRef as forwardRef4 } from "react";
1646
- function _extends15() {
1647
- _extends15 = Object.assign || function(target) {
1648
- for (var i = 1; i < arguments.length; i++) {
1649
- var source = arguments[i];
1650
- for (var key in source) {
1651
- if (Object.prototype.hasOwnProperty.call(source, key)) {
1652
- target[key] = source[key];
1653
- }
1654
- }
1655
- }
1656
- return target;
1657
- };
1658
- return _extends15.apply(this, arguments);
1659
- }
1660
- var NavMenuInvokerItem = /* @__PURE__ */ forwardRef4(({ content, children, active }, ref) => {
1661
- return /* @__PURE__ */ React16.createElement(NavigationMenuPrimitive.Item, {
1662
- ref
1663
- }, /* @__PURE__ */ React16.createElement(NavigationMenuPrimitive.Trigger, {
1664
- className: mx("px-3 py-2 text-sm rounded-md text-sm font-medium transition-color", active ? primaryButtonColors : defaultButtonColors, defaultFocus, defaultHover({}))
1665
- }, children), /* @__PURE__ */ React16.createElement(NavigationMenuPrimitive.Content, {
1666
- className: mx("absolute w-auto top-0 left-0 rounded-lg", "radix-motion-from-start:animate-enter-from-left", "radix-motion-from-end:animate-enter-from-right", "radix-motion-to-start:animate-exit-to-left", "radix-motion-to-end:animate-exit-to-right")
1667
- }, content));
1668
- });
1669
- var NavMenuLinkItem = /* @__PURE__ */ forwardRef4(({ triggerLinkProps, children, active }, ref) => /* @__PURE__ */ React16.createElement(NavigationMenuPrimitive.Item, {
1670
- asChild: true,
1671
- ref
1672
- }, /* @__PURE__ */ React16.createElement(NavigationMenuPrimitive.Link, _extends15({}, triggerLinkProps, {
1673
- active,
1674
- className: mx("px-3 py-2 text-sm rounded-md transition-color", active ? primaryButtonColors : defaultButtonColors, active ? "font-medium" : "font-normal", defaultFocus, defaultHover({}), triggerLinkProps.className)
1675
- }), children)));
1676
- var NavMenuTooltipLinkItem = /* @__PURE__ */ forwardRef4(({ tooltip, triggerLinkProps, active, children }, ref) => /* @__PURE__ */ React16.createElement(Tooltip, _extends15({}, tooltip), /* @__PURE__ */ React16.createElement(NavigationMenuPrimitive.Item, {
1677
- asChild: true,
1678
- ref
1679
- }, /* @__PURE__ */ React16.createElement(NavigationMenuPrimitive.Link, _extends15({}, triggerLinkProps, {
1680
- active,
1681
- className: mx("px-3 py-2 text-sm rounded-md transition-color", active ? primaryButtonColors : defaultButtonColors, active ? "font-medium" : "font-normal", defaultFocus, defaultHover({}), triggerLinkProps.className)
1682
- }), children))));
1683
- var NavMenuLink = NavigationMenuPrimitive.Link;
1684
- var NavMenuSeparatorItem = (_props) => {
1685
- return /* @__PURE__ */ React16.createElement("span", {
1686
- role: "none",
1687
- className: mx(defaultInlineSeparator, "bs-5")
1688
- });
1689
- };
1690
- var isTooltipLinkItem = (o) => "tooltip" in o;
1691
- var isLinkItem = (o) => "triggerLinkProps" in o;
1692
- var isSeparator = (o) => "separator" in o;
1693
- var NavMenu = ({ items, slots = {} }) => {
1694
- var _a, _b, _c, _d, _e;
1695
- return /* @__PURE__ */ React16.createElement(NavigationMenuPrimitive.Root, _extends15({}, slots.root, {
1696
- className: mx("flex justify-center", (_a = slots.root) == null ? void 0 : _a.className)
1697
- }), /* @__PURE__ */ React16.createElement(NavigationMenuPrimitive.List, _extends15({}, slots.list, {
1698
- className: mx("relative flex flex-row items-center gap-1 rounded-lg bg-white dark:bg-neutral-750 p-1 button-elevation overflow-x-auto", (_b = slots.list) == null ? void 0 : _b.className)
1699
- }), items.map((item, i) => {
1700
- return isTooltipLinkItem(item) ? /* @__PURE__ */ React16.createElement(NavMenuTooltipLinkItem, _extends15({
1701
- key: i
1702
- }, item)) : isLinkItem(item) ? /* @__PURE__ */ React16.createElement(NavMenuLinkItem, _extends15({
1703
- key: i
1704
- }, item)) : isSeparator(item) ? /* @__PURE__ */ React16.createElement(NavMenuSeparatorItem, _extends15({
1705
- key: i
1706
- }, item)) : /* @__PURE__ */ React16.createElement(NavMenuInvokerItem, _extends15({
1707
- key: i
1708
- }, item));
1709
- }), /* @__PURE__ */ React16.createElement(NavigationMenuPrimitive.Indicator, _extends15({}, slots.indicator, {
1710
- className: mx("z-10 top-[100%] flex items-end justify-center h-2 overflow-hidden", "radix-state-visible:animate-fade-in", "radix-state-hidden:animate-fade-out", "transition-[width_transform] duration-[250ms] ease-[ease]", (_c = slots.indicator) == null ? void 0 : _c.className)
1711
- }), /* @__PURE__ */ React16.createElement("div", {
1712
- className: mx("top-1 relative bg-white dark:bg-neutral-750 w-2 h-2 rotate-45", (_d = slots.indicatorIcon) == null ? void 0 : _d.className)
1713
- }))), /* @__PURE__ */ React16.createElement("div", {
1714
- className: mx("absolute flex justify-center", "w-[140%] left-[-20%] top-[100%]"),
1715
- style: {
1716
- perspective: "2000px"
1717
- }
1718
- }, /* @__PURE__ */ React16.createElement(NavigationMenuPrimitive.Viewport, _extends15({}, slots.viewport, {
1719
- className: mx("relative mbs-2 shadow-lg rounded-md bg-white dark:bg-neutral-750 overflow-hidden", "w-radix-navigation-menu-viewport", "h-radix-navigation-menu-viewport", "radix-state-open:animate-scale-in-content", "radix-state-closed:animate-scale-out-content", "origin-[top_center] transition-[width_height] duration-300 ease-[ease]", (_e = slots.viewport) == null ? void 0 : _e.className)
1720
- }))));
1721
- };
1722
-
1723
- // packages/common/react-ui/src/components/Popover/Popover.tsx
1724
- import * as PopoverPrimitive from "@radix-ui/react-popover";
1725
- import { Button as ToolbarButtonItem2 } from "@radix-ui/react-toolbar";
1726
- import { X as X2 } from "phosphor-react";
1727
- import React17, { useCallback as useCallback3, useState as useState6 } from "react";
1728
- function _extends16() {
1729
- _extends16 = Object.assign || function(target) {
1730
- for (var i = 1; i < arguments.length; i++) {
1731
- var source = arguments[i];
1732
- for (var key in source) {
1733
- if (Object.prototype.hasOwnProperty.call(source, key)) {
1734
- target[key] = source[key];
1735
- }
1736
- }
1737
- }
1738
- return target;
1739
- };
1740
- return _extends16.apply(this, arguments);
1741
- }
1742
- var Popover = ({ openTrigger, children, closeLabel, initiallyOpen, mountAsSibling, triggerIsInToolbar, slots = {} }) => {
1743
- var _a, _b, _c, _d, _e, _f;
1744
- const [isOpen, setIsOpen] = useState6(!!initiallyOpen);
1745
- const onKeyUp = useCallback3((e) => {
1746
- var _a2, _b2;
1747
- const keyUpId = document.activeElement.dataset.keyupid;
1748
- if (keyUpId && e.key === " ") {
1749
- setIsOpen(keyUpId === "open");
1750
- }
1751
- (_b2 = (_a2 = slots.trigger) == null ? void 0 : _a2.onKeyUp) == null ? void 0 : _b2.call(_a2, e);
1752
- }, [
1753
- (_a = slots.trigger) == null ? void 0 : _a.onKeyUp
1754
- ]);
1755
- const popoverContent = /* @__PURE__ */ React17.createElement(PopoverPrimitive.Content, _extends16({
1756
- align: "center"
1757
- }, slots.content, {
1758
- className: mx("radix-side-top:animate-slide-up radix-side-bottom:animate-slide-down", "rounded-lg p-4 shadow-xl elevated-buttons", "bg-white dark:bg-neutral-800", defaultFocus, (_b = slots.content) == null ? void 0 : _b.className)
1759
- }), /* @__PURE__ */ React17.createElement(PopoverPrimitive.Arrow, {
1760
- className: mx("fill-current text-white dark:text-neutral-800", (_c = slots.arrow) == null ? void 0 : _c.className)
1761
- }), children, closeLabel && /* @__PURE__ */ React17.createElement(PopoverPrimitive.Close, _extends16({}, slots.close, {
1762
- className: mx("absolute top-3.5 right-3.5 inline-flex items-center justify-center rounded-sm p-1", defaultFocus, defaultHover({}), (_d = slots.close) == null ? void 0 : _d.className),
1763
- "aria-label": closeLabel,
1764
- "data-keyupid": "close"
1765
- }), /* @__PURE__ */ React17.createElement(X2, _extends16({}, slots.closeIcon, {
1766
- className: mx(getSize(4), "text-neutral-500 hover:text-neutral-700 dark:text-neutral-500 dark:hover:text-neutral-400", (_e = slots.closeIcon) == null ? void 0 : _e.className)
1767
- }))));
1768
- const trigger = /* @__PURE__ */ React17.createElement(PopoverPrimitive.Trigger, _extends16({}, slots.trigger, {
1769
- onKeyUp,
1770
- "data-keyupid": "open",
1771
- className: mx(defaultHover({}), defaultFocus, defaultActive, (_f = slots.trigger) == null ? void 0 : _f.className)
1772
- }), openTrigger);
1773
- return /* @__PURE__ */ React17.createElement(PopoverPrimitive.Root, {
1774
- open: isOpen,
1775
- onOpenChange: setIsOpen
1776
- }, triggerIsInToolbar ? /* @__PURE__ */ React17.createElement(ToolbarButtonItem2, {
1777
- asChild: true
1778
- }, trigger) : trigger, mountAsSibling ? popoverContent : /* @__PURE__ */ React17.createElement(PopoverPrimitive.Portal, null, popoverContent));
134
+ // packages/apps/patterns/react-ui/src/panels/IdentityPanel/IdentityPanel.tsx
135
+ import React3 from "react";
136
+ import { useClient } from "@dxos/react-client";
137
+ import { Avatar, Button, ThemeContext, useTranslation as useTranslation2 } from "@dxos/react-components";
138
+ var IdentityPanel = ({ identity, onClickManageProfile }) => {
139
+ var _a;
140
+ const { t } = useTranslation2("os");
141
+ const client = useClient();
142
+ const defaultManageProfile = () => {
143
+ const remoteSource = new URL((client == null ? void 0 : client.config.get("runtime.client.remoteSource")) || "https://halo.dxos.org");
144
+ const tab = window.open(remoteSource.origin, "_blank");
145
+ tab == null ? void 0 : tab.focus();
146
+ };
147
+ return /* @__PURE__ */ React3.createElement(ThemeContext.Provider, {
148
+ value: {
149
+ themeVariant: "os"
150
+ }
151
+ }, /* @__PURE__ */ React3.createElement("div", {
152
+ className: "flex flex-col gap-2 justify-center items-center"
153
+ }, /* @__PURE__ */ React3.createElement(Avatar, {
154
+ size: 16,
155
+ variant: "circle",
156
+ fallbackValue: identity.identityKey.toHex(),
157
+ label: (_a = identity.displayName) != null ? _a : ""
158
+ }), /* @__PURE__ */ React3.createElement(Button, {
159
+ compact: true,
160
+ onClick: onClickManageProfile != null ? onClickManageProfile : defaultManageProfile,
161
+ className: "is-full"
162
+ }, t("manage profile label"))));
1779
163
  };
1780
164
 
1781
- // packages/common/react-ui/src/components/QrCode/QrCode.tsx
1782
- import { QrCode as QrCodeIcon, CopySimple } from "phosphor-react";
1783
- import { QRCodeSVG } from "qrcode.react";
1784
- import React18, { useCallback as useCallback4 } from "react";
1785
- function _extends17() {
1786
- _extends17 = Object.assign || function(target) {
165
+ // packages/apps/patterns/react-ui/src/composites/IdentityPopover/IdentityPopover.tsx
166
+ function _extends3() {
167
+ _extends3 = Object.assign || function(target) {
1787
168
  for (var i = 1; i < arguments.length; i++) {
1788
169
  var source = arguments[i];
1789
170
  for (var key in source) {
@@ -1794,299 +175,56 @@ function _extends17() {
1794
175
  }
1795
176
  return target;
1796
177
  };
1797
- return _extends17.apply(this, arguments);
178
+ return _extends3.apply(this, arguments);
1798
179
  }
1799
- var FullQrCode = ({ value, label, size, buttonCompact = true, slots = {} }) => {
180
+ var IdentityPopover = ({ identity, openTrigger, slots, triggerIsInToolbar = true, onClickManageProfile, ...popoverProps }) => {
1800
181
  var _a, _b;
1801
- const labelId = useId("qr-label");
1802
- const copyValue = useCallback4(() => {
1803
- void navigator.clipboard.writeText(value);
1804
- }, [
1805
- value
1806
- ]);
1807
- return /* @__PURE__ */ React18.createElement(Tooltip, _extends17({
1808
- content: label
1809
- }, slots.tooltipContent), /* @__PURE__ */ React18.createElement(Button, _extends17({
1810
- compact: buttonCompact
1811
- }, slots.button, {
1812
- className: mx("overflow-hidden p-0", getSize(size != null ? size : 32), (_a = slots.button) == null ? void 0 : _a.className),
1813
- onClick: copyValue
1814
- }), /* @__PURE__ */ React18.createElement(QRCodeSVG, _extends17({
1815
- includeMargin: true,
1816
- role: "none"
1817
- }, slots.qrSvg, {
1818
- value,
1819
- className: mx("w-full h-auto", (_b = slots.qrSvg) == null ? void 0 : _b.className)
1820
- })), /* @__PURE__ */ React18.createElement("div", {
1821
- id: labelId,
1822
- className: "sr-only"
1823
- }, label)));
1824
- };
1825
- var CompactQrCode = ({ value, displayQrLabel, copyLabel, buttonCompact, slots = {} }) => {
1826
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
1827
- const labelId = useId("qr-label");
1828
- const copyValue = useCallback4(() => {
1829
- void navigator.clipboard.writeText(value);
1830
- }, [
1831
- value
1832
- ]);
1833
- return /* @__PURE__ */ React18.createElement(React18.Fragment, null, /* @__PURE__ */ React18.createElement(ButtonGroup, {
1834
- className: "inline-flex grow md:hidden"
1835
- }, /* @__PURE__ */ React18.createElement("span", {
1836
- className: "sr-only",
1837
- id: labelId
1838
- }, displayQrLabel), /* @__PURE__ */ React18.createElement(Tooltip, {
1839
- compact: true,
1840
- slots: {
1841
- content: {
1842
- ...slots.qrTooltipContent,
1843
- side: (_b = (_a = slots == null ? void 0 : slots.qrTooltipContent) == null ? void 0 : _a.side) != null ? _b : "left"
1844
- }
1845
- },
1846
- content: /* @__PURE__ */ React18.createElement("div", {
1847
- role: "none",
1848
- className: "overflow-hidden rounded-md"
1849
- }, /* @__PURE__ */ React18.createElement(QRCodeSVG, _extends17({
1850
- includeMargin: true,
1851
- role: "none"
1852
- }, slots.qrSvg, {
1853
- value,
1854
- className: mx(getSize(32), (_c = slots.qrSvg) == null ? void 0 : _c.className)
1855
- })))
1856
- }, /* @__PURE__ */ React18.createElement(Button, _extends17({
1857
- compact: buttonCompact
1858
- }, slots.qrButton, {
1859
- className: mx("border-ie-0 grow rounded-is-md", (_d = slots.qrButton) == null ? void 0 : _d.className),
1860
- "aria-labelledby": labelId
1861
- }), /* @__PURE__ */ React18.createElement(QrCodeIcon, {
1862
- className: getSize(5)
1863
- }))), /* @__PURE__ */ React18.createElement(Tooltip, {
1864
- content: copyLabel,
1865
- tooltipLabelsTrigger: true,
1866
- slots: {
1867
- content: slots.qrTooltipContent
1868
- }
1869
- }, /* @__PURE__ */ React18.createElement(Button, _extends17({
1870
- compact: buttonCompact
1871
- }, slots.copyButton, {
1872
- className: mx("rounded-ie-md grow", (_e = slots.copyButton) == null ? void 0 : _e.className),
1873
- onClick: copyValue
1874
- }), /* @__PURE__ */ React18.createElement(CopySimple, {
1875
- className: getSize(5)
1876
- })))), /* @__PURE__ */ React18.createElement(ButtonGroup, {
1877
- className: "hidden md:inline-flex"
1878
- }, /* @__PURE__ */ React18.createElement(Tooltip, {
1879
- compact: true,
182
+ return /* @__PURE__ */ React4.createElement(PanelPopover, _extends3({}, popoverProps, {
183
+ openTrigger: openTrigger != null ? openTrigger : /* @__PURE__ */ React4.createElement(Avatar2, {
184
+ size: 10,
185
+ variant: "circle",
186
+ fallbackValue: identity.identityKey.toHex(),
187
+ label: (_a = identity.displayName) != null ? _a : ""
188
+ }),
1880
189
  slots: {
1881
- content: {
1882
- ...slots.qrTooltipContent,
1883
- side: (_g = (_f = slots == null ? void 0 : slots.qrTooltipContent) == null ? void 0 : _f.side) != null ? _g : "left"
190
+ ...slots,
191
+ trigger: {
192
+ ...slots == null ? void 0 : slots.trigger,
193
+ className: mx3("flex justify-self-end pointer-events-auto bg-white dark:bg-neutral-700 p-0.5 button-elevation rounded-full", (_b = slots == null ? void 0 : slots.trigger) == null ? void 0 : _b.className)
1884
194
  }
1885
195
  },
1886
- content: /* @__PURE__ */ React18.createElement("div", {
1887
- role: "none",
1888
- className: "overflow-hidden rounded-md"
1889
- }, /* @__PURE__ */ React18.createElement(QRCodeSVG, _extends17({
1890
- includeMargin: true,
1891
- role: "none"
1892
- }, slots.qrSvg, {
1893
- value,
1894
- className: mx(getSize(32), (_h = slots.qrSvg) == null ? void 0 : _h.className)
1895
- })))
1896
- }, /* @__PURE__ */ React18.createElement(Button, _extends17({
1897
- compact: buttonCompact
1898
- }, slots.qrButton, {
1899
- className: mx("border-ie-0 flex gap-1 rounded-is-md", (_i = slots.qrButton) == null ? void 0 : _i.className)
1900
- }), /* @__PURE__ */ React18.createElement(QrCodeIcon, {
1901
- className: getSize(5)
1902
- }), displayQrLabel)), /* @__PURE__ */ React18.createElement(Button, _extends17({
1903
- compact: buttonCompact
1904
- }, slots.copyButton, {
1905
- className: mx("flex gap-1 rounded-ie-md", (_j = slots.copyButton) == null ? void 0 : _j.className),
1906
- onClick: copyValue
1907
- }), /* @__PURE__ */ React18.createElement(CopySimple, {
1908
- className: getSize(5)
1909
- }), copyLabel)));
1910
- };
1911
- var QrCode = FullQrCode;
1912
-
1913
- // packages/common/react-ui/src/components/Tag/Tag.tsx
1914
- import React19 from "react";
1915
- function _extends18() {
1916
- _extends18 = Object.assign || function(target) {
1917
- for (var i = 1; i < arguments.length; i++) {
1918
- var source = arguments[i];
1919
- for (var key in source) {
1920
- if (Object.prototype.hasOwnProperty.call(source, key)) {
1921
- target[key] = source[key];
1922
- }
1923
- }
1924
- }
1925
- return target;
1926
- };
1927
- return _extends18.apply(this, arguments);
1928
- }
1929
- var valenceColorMap = {
1930
- neutral: "bg-neutral-100 text-neutral-800 dark:bg-neutral-700 dark:text-neutral-300",
1931
- success: "bg-success-100 text-success-800 dark:bg-success-700 dark:text-success-300",
1932
- info: "bg-info-100 text-info-800 dark:bg-info-700 dark:text-info-300",
1933
- warning: "bg-warning-100 text-warning-800 dark:bg-warning-700 dark:text-warning-300",
1934
- error: "bg-error-100 text-error-800 dark:bg-error-700 dark:text-error-300"
1935
- };
1936
- var Tag = ({ children, valence = "neutral", ...rootSlot }) => {
1937
- return /* @__PURE__ */ React19.createElement("span", _extends18({}, rootSlot, {
1938
- className: mx("text-xs font-semibold px-2.5 py-0.5 rounded", valenceColorMap[valence], rootSlot == null ? void 0 : rootSlot.className)
1939
- }), children);
196
+ triggerIsInToolbar
197
+ }), /* @__PURE__ */ React4.createElement(IdentityPanel, _extends3({}, {
198
+ identity,
199
+ onClickManageProfile
200
+ })));
1940
201
  };
1941
202
 
1942
- // packages/common/react-ui/src/components/Toast/Toast.tsx
1943
- import * as ToastPrimitive from "@radix-ui/react-toast";
1944
- import React20, { cloneElement as cloneElement3, useState as useState7 } from "react";
1945
- function _extends19() {
1946
- _extends19 = Object.assign || function(target) {
1947
- for (var i = 1; i < arguments.length; i++) {
1948
- var source = arguments[i];
1949
- for (var key in source) {
1950
- if (Object.prototype.hasOwnProperty.call(source, key)) {
1951
- target[key] = source[key];
1952
- }
1953
- }
1954
- }
1955
- return target;
1956
- };
1957
- return _extends19.apply(this, arguments);
1958
- }
1959
- var Toast = ({ title, titleVisuallyHidden, description, openTrigger, closeTrigger, actionTriggers, initiallyOpen, slots = {} }) => {
1960
- var _a, _b, _c, _d;
1961
- const [isOpen, setIsOpen] = useState7(!!initiallyOpen);
1962
- return /* @__PURE__ */ React20.createElement(React20.Fragment, null, openTrigger && (typeof openTrigger === "string" ? /* @__PURE__ */ React20.createElement(Button, {
1963
- onClick: () => setIsOpen(true)
1964
- }, openTrigger) : /* @__PURE__ */ cloneElement3(openTrigger, {
1965
- onClick: () => setIsOpen(true)
1966
- })), /* @__PURE__ */ React20.createElement(ToastPrimitive.Root, _extends19({
1967
- open: isOpen,
1968
- onOpenChange: setIsOpen
1969
- }, slots.root, {
1970
- className: mx("shadow-lg rounded-lg elevated-buttons flex", "bg-white dark:bg-neutral-800", "radix-state-open:animate-toast-slide-in-bottom md:radix-state-open:animate-toast-slide-in-right", "radix-state-closed:animate-toast-hide", "radix-swipe-end:animate-toast-swipe-out", "translate-x-radix-toast-swipe-move-x", "radix-swipe-cancel:translate-x-0 radix-swipe-cancel:duration-200 radix-swipe-cancel:ease-[ease]", defaultFocus, (_a = slots.root) == null ? void 0 : _a.className)
1971
- }), /* @__PURE__ */ React20.createElement("div", _extends19({
1972
- role: "none"
1973
- }, slots.heading, {
1974
- className: mx("w-0 flex-1 flex items-center pl-5 py-4 min-h-full", (_b = slots.heading) == null ? void 0 : _b.className)
1975
- }), /* @__PURE__ */ React20.createElement("div", _extends19({
1976
- role: "none"
1977
- }, slots.headingInner, {
1978
- className: mx("w-full radix flex flex-col justify-center min-h-full gap-1", (_c = slots.headingInner) == null ? void 0 : _c.className)
1979
- }), /* @__PURE__ */ React20.createElement(ToastPrimitive.Title, {
1980
- className: mx("text-md font-medium", titleVisuallyHidden && "sr-only")
1981
- }, title), description && /* @__PURE__ */ React20.createElement(ToastPrimitive.Description, {
1982
- className: defaultDescription
1983
- }, description))), /* @__PURE__ */ React20.createElement("div", _extends19({
1984
- role: "none"
1985
- }, slots.actions, {
1986
- className: mx("flex flex-col px-3 py-2 gap-1 items-stretch justify-center min-h-full", (_d = slots.actions) == null ? void 0 : _d.className)
1987
- }), (actionTriggers || []).map(({ altText, trigger }, index) => /* @__PURE__ */ React20.createElement(ToastPrimitive.Action, {
1988
- key: index,
1989
- altText,
1990
- asChild: typeof trigger !== "string"
1991
- }, trigger)), closeTrigger && /* @__PURE__ */ React20.createElement(ToastPrimitive.Close, {
1992
- asChild: typeof closeTrigger !== "string"
1993
- }, closeTrigger))));
203
+ // packages/apps/patterns/react-ui/src/translations/locales/en-US.ts
204
+ var en_US_exports = {};
205
+ __export(en_US_exports, {
206
+ os: () => os
207
+ });
208
+ var os = {
209
+ "manage profile label": "Manage identity",
210
+ "identity offline description": "Offline",
211
+ "sidebar label": "DXOS sidebar"
1994
212
  };
1995
213
 
1996
- // packages/common/react-ui/src/components/UiProvider/UiProvider.tsx
1997
- import { Provider as ToastProvider, Viewport as ToastViewport } from "@radix-ui/react-toast";
1998
- import { Provider as TooltipProvider } from "@radix-ui/react-tooltip";
1999
- import React21 from "react";
2000
- function _extends20() {
2001
- _extends20 = Object.assign || function(target) {
2002
- for (var i = 1; i < arguments.length; i++) {
2003
- var source = arguments[i];
2004
- for (var key in source) {
2005
- if (Object.prototype.hasOwnProperty.call(source, key)) {
2006
- target[key] = source[key];
2007
- }
2008
- }
2009
- }
2010
- return target;
2011
- };
2012
- return _extends20.apply(this, arguments);
2013
- }
2014
- var UiProvider = ({ children, tooltipProviderProps, toastProviderProps, toastViewportProps }) => {
2015
- return /* @__PURE__ */ React21.createElement(ToastProvider, _extends20({}, toastProviderProps), /* @__PURE__ */ React21.createElement(TooltipProvider, _extends20({
2016
- delayDuration: 0
2017
- }, tooltipProviderProps), children), /* @__PURE__ */ React21.createElement(ToastViewport, _extends20({}, toastViewportProps, {
2018
- className: mx("z-50 fixed bottom-4 inset-x-4 w-auto md:top-4 md:right-4 md:left-auto md:bottom-auto md:w-full md:max-w-sm rounded-lg flex flex-col gap-2", defaultFocus, toastViewportProps == null ? void 0 : toastViewportProps.className)
2019
- })));
214
+ // packages/apps/patterns/react-ui/src/translations/index.ts
215
+ var osTranslations = {
216
+ "en-US": en_US_exports
2020
217
  };
2021
218
  export {
2022
- Alert,
2023
- AlertDialog,
2024
- Avatar,
2025
- Button,
2026
- ButtonGroup,
2027
- CompactQrCode,
2028
- CompoundButton,
2029
- Dialog,
2030
- FullQrCode,
2031
- Group,
2032
- Heading,
2033
- Input,
2034
- Loading,
2035
- NavMenu,
2036
- NavMenuLink,
2037
- NavMenuSeparatorItem,
2038
- Popover,
2039
- QrCode,
2040
- Tag,
2041
- Toast,
2042
- Tooltip,
2043
- UiProvider,
2044
- buttonStyles,
2045
- defaultActive,
2046
- defaultBlockSeparator,
2047
- defaultButtonColors,
2048
- defaultDescription,
2049
- defaultDisabled,
2050
- defaultFocus,
2051
- defaultGroup,
2052
- defaultHover,
2053
- defaultInlineSeparator,
2054
- defaultInput,
2055
- defaultPlaceholder,
2056
- defaultShimmer,
2057
- defaultTooltip,
2058
- errorAlertColors,
2059
- errorInputBorder,
2060
- errorText,
2061
- getSize,
2062
- getSizeHeight,
2063
- getSizeWidth,
2064
- ghostButtonColors,
2065
- infoAlertColors,
2066
- infoInputBorder,
2067
- infoText,
2068
- mx,
2069
- neutralAlertColors,
2070
- neutralInputBorder,
2071
- primaryButtonColors,
2072
- primaryDescription,
2073
- randomString,
2074
- sizeHeightMap,
2075
- sizeWidthMap,
2076
- staticFocus,
2077
- staticInput,
2078
- strongShimmer,
2079
- successAlertColors,
2080
- successInputBorder,
2081
- successText,
2082
- useForwardedRef,
2083
- useId,
2084
- useIsFocused,
2085
- valenceAlertColors,
2086
- valenceColorText,
2087
- valenceInputBorder,
2088
- warningAlertColors,
2089
- warningInputBorder,
2090
- warningText
219
+ IdentityPanel,
220
+ IdentityPopover,
221
+ PanelPopover,
222
+ PanelSidebarContext,
223
+ PanelSidebarProvider,
224
+ defaultArrow,
225
+ defaultPanel,
226
+ osTranslations,
227
+ sidebarWidth,
228
+ useTogglePanelSidebar
2091
229
  };
2092
230
  //# sourceMappingURL=index.mjs.map