@dxos/react-ui 0.8.4-main.c85a9c8dae → 0.8.4-main.cb12b3f963

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 (301) hide show
  1. package/dist/lib/browser/{chunk-2FKSMWNY.mjs → chunk-BDBC6H6V.mjs} +79 -5
  2. package/dist/lib/browser/chunk-BDBC6H6V.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +1203 -1020
  4. package/dist/lib/browser/index.mjs.map +4 -4
  5. package/dist/lib/browser/meta.json +1 -1
  6. package/dist/lib/browser/testing/index.mjs +44 -14
  7. package/dist/lib/browser/testing/index.mjs.map +4 -4
  8. package/dist/lib/browser/translations.mjs +18 -0
  9. package/dist/lib/browser/translations.mjs.map +7 -0
  10. package/dist/lib/node-esm/{chunk-ZNBLTSHI.mjs → chunk-3JSJK2ZY.mjs} +79 -5
  11. package/dist/lib/node-esm/chunk-3JSJK2ZY.mjs.map +7 -0
  12. package/dist/lib/node-esm/index.mjs +1203 -1020
  13. package/dist/lib/node-esm/index.mjs.map +4 -4
  14. package/dist/lib/node-esm/meta.json +1 -1
  15. package/dist/lib/node-esm/testing/index.mjs +44 -14
  16. package/dist/lib/node-esm/testing/index.mjs.map +4 -4
  17. package/dist/lib/node-esm/translations.mjs +20 -0
  18. package/dist/lib/node-esm/translations.mjs.map +7 -0
  19. package/dist/types/src/components/Avatars/Avatar.d.ts +1 -1
  20. package/dist/types/src/components/Avatars/Avatar.d.ts.map +1 -1
  21. package/dist/types/src/components/Avatars/Avatar.stories.d.ts.map +1 -1
  22. package/dist/types/src/components/Avatars/AvatarGroup.stories.d.ts.map +1 -1
  23. package/dist/types/src/components/Breadcrumb/Breadcrumb.d.ts.map +1 -1
  24. package/dist/types/src/components/Breadcrumb/Breadcrumb.stories.d.ts.map +1 -1
  25. package/dist/types/src/components/Button/Button.d.ts +2 -2
  26. package/dist/types/src/components/Button/Button.d.ts.map +1 -1
  27. package/dist/types/src/components/Button/Button.stories.d.ts +1 -1
  28. package/dist/types/src/components/Button/Button.stories.d.ts.map +1 -1
  29. package/dist/types/src/components/Button/IconButton.d.ts +1 -0
  30. package/dist/types/src/components/Button/IconButton.d.ts.map +1 -1
  31. package/dist/types/src/components/Button/IconButton.stories.d.ts +3 -0
  32. package/dist/types/src/components/Button/IconButton.stories.d.ts.map +1 -1
  33. package/dist/types/src/components/Button/Toggle.d.ts +2 -2
  34. package/dist/types/src/components/Button/Toggle.d.ts.map +1 -1
  35. package/dist/types/src/components/Button/Toggle.stories.d.ts.map +1 -1
  36. package/dist/types/src/components/Button/ToggleGroup.d.ts +6 -6
  37. package/dist/types/src/components/Button/ToggleGroup.d.ts.map +1 -1
  38. package/dist/types/src/components/Button/ToggleGroup.stories.d.ts +2 -2
  39. package/dist/types/src/components/Button/ToggleGroup.stories.d.ts.map +1 -1
  40. package/dist/types/src/components/Card/Card.d.ts +70 -64
  41. package/dist/types/src/components/Card/Card.d.ts.map +1 -1
  42. package/dist/types/src/components/Card/Card.stories.d.ts +2 -2
  43. package/dist/types/src/components/Card/Card.stories.d.ts.map +1 -1
  44. package/dist/types/src/components/Clipboard/ClipboardProvider.d.ts.map +1 -1
  45. package/dist/types/src/components/Clipboard/CopyButton.d.ts.map +1 -1
  46. package/dist/types/src/components/Clipboard/index.d.ts +10 -1
  47. package/dist/types/src/components/Clipboard/index.d.ts.map +1 -1
  48. package/dist/types/src/components/DensityProvider/DensityProvider.d.ts.map +1 -1
  49. package/dist/types/src/components/Dialog/AlertDialog.d.ts +42 -31
  50. package/dist/types/src/components/Dialog/AlertDialog.d.ts.map +1 -1
  51. package/dist/types/src/components/Dialog/AlertDialog.stories.d.ts.map +1 -1
  52. package/dist/types/src/components/Dialog/Dialog.d.ts +47 -30
  53. package/dist/types/src/components/Dialog/Dialog.d.ts.map +1 -1
  54. package/dist/types/src/components/Dialog/Dialog.stories.d.ts +3 -2
  55. package/dist/types/src/components/Dialog/Dialog.stories.d.ts.map +1 -1
  56. package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts.map +1 -1
  57. package/dist/types/src/components/ErrorFallback/ErrorFallback.d.ts.map +1 -1
  58. package/dist/types/src/components/ErrorFallback/ErrorFallback.stories.d.ts.map +1 -1
  59. package/dist/types/src/components/ErrorFallback/ErrorStack.d.ts +14 -3
  60. package/dist/types/src/components/ErrorFallback/ErrorStack.d.ts.map +1 -1
  61. package/dist/types/src/components/ErrorFallback/ThrowError.d.ts.map +1 -1
  62. package/dist/types/src/components/Focus/Focus.d.ts +36 -0
  63. package/dist/types/src/components/Focus/Focus.d.ts.map +1 -0
  64. package/dist/types/src/components/Focus/Focus.stories.d.ts +9 -0
  65. package/dist/types/src/components/Focus/Focus.stories.d.ts.map +1 -0
  66. package/dist/types/src/components/Focus/index.d.ts +2 -0
  67. package/dist/types/src/components/Focus/index.d.ts.map +1 -0
  68. package/dist/types/src/components/Icon/Icon.d.ts +3 -0
  69. package/dist/types/src/components/Icon/Icon.d.ts.map +1 -1
  70. package/dist/types/src/components/Icon/Icon.stories.d.ts +11 -3
  71. package/dist/types/src/components/Icon/Icon.stories.d.ts.map +1 -1
  72. package/dist/types/src/components/Image/Image.d.ts +2 -1
  73. package/dist/types/src/components/Image/Image.d.ts.map +1 -1
  74. package/dist/types/src/components/Image/Image.stories.d.ts +3 -2
  75. package/dist/types/src/components/Image/Image.stories.d.ts.map +1 -1
  76. package/dist/types/src/components/Input/Input.d.ts +14 -17
  77. package/dist/types/src/components/Input/Input.d.ts.map +1 -1
  78. package/dist/types/src/components/Input/Input.stories.d.ts +3 -3
  79. package/dist/types/src/components/Input/Input.stories.d.ts.map +1 -1
  80. package/dist/types/src/components/Link/Link.stories.d.ts.map +1 -1
  81. package/dist/types/src/components/List/List.d.ts +5 -3
  82. package/dist/types/src/components/List/List.d.ts.map +1 -1
  83. package/dist/types/src/components/List/List.stories.d.ts +3 -1
  84. package/dist/types/src/components/List/List.stories.d.ts.map +1 -1
  85. package/dist/types/src/components/List/ListDropIndicator.d.ts.map +1 -1
  86. package/dist/types/src/components/List/Tree.d.ts +2 -2
  87. package/dist/types/src/components/List/Tree.d.ts.map +1 -1
  88. package/dist/types/src/components/List/Tree.stories.d.ts.map +1 -1
  89. package/dist/types/src/components/List/TreeDropIndicator.d.ts.map +1 -1
  90. package/dist/types/src/components/List/Treegrid.d.ts +5 -9
  91. package/dist/types/src/components/List/Treegrid.d.ts.map +1 -1
  92. package/dist/types/src/components/List/Treegrid.stories.d.ts.map +1 -1
  93. package/dist/types/src/components/Main/Main.d.ts +7 -3
  94. package/dist/types/src/components/Main/Main.d.ts.map +1 -1
  95. package/dist/types/src/components/Main/Main.stories.d.ts.map +1 -1
  96. package/dist/types/src/components/Main/useSwipeToDismiss.d.ts.map +1 -1
  97. package/dist/types/src/components/Menu/ContextMenu.d.ts.map +1 -1
  98. package/dist/types/src/components/Menu/ContextMenu.stories.d.ts.map +1 -1
  99. package/dist/types/src/components/Menu/DropdownMenu.d.ts +58 -49
  100. package/dist/types/src/components/Menu/DropdownMenu.d.ts.map +1 -1
  101. package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts +14 -1
  102. package/dist/types/src/components/Menu/DropdownMenu.stories.d.ts.map +1 -1
  103. package/dist/types/src/components/Message/Message.d.ts +1 -1
  104. package/dist/types/src/components/Message/Message.d.ts.map +1 -1
  105. package/dist/types/src/components/Message/Message.stories.d.ts +2 -2
  106. package/dist/types/src/components/Message/Message.stories.d.ts.map +1 -1
  107. package/dist/types/src/components/Popover/Popover.d.ts +38 -22
  108. package/dist/types/src/components/Popover/Popover.d.ts.map +1 -1
  109. package/dist/types/src/components/Popover/Popover.stories.d.ts.map +1 -1
  110. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts +12 -11
  111. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts.map +1 -1
  112. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts +21 -10
  113. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts.map +1 -1
  114. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts +42 -13
  115. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts.map +1 -1
  116. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts +5 -6
  117. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts.map +1 -1
  118. package/dist/types/src/components/Select/Select.d.ts.map +1 -1
  119. package/dist/types/src/components/Select/Select.stories.d.ts +2 -2
  120. package/dist/types/src/components/Select/Select.stories.d.ts.map +1 -1
  121. package/dist/types/src/components/Separator/Separator.d.ts +3 -3
  122. package/dist/types/src/components/Separator/Separator.d.ts.map +1 -1
  123. package/dist/types/src/components/Skeleton/Skeleton.stories.d.ts.map +1 -1
  124. package/dist/types/src/components/Splitter/Splitter.d.ts +19 -21
  125. package/dist/types/src/components/Splitter/Splitter.d.ts.map +1 -1
  126. package/dist/types/src/components/Splitter/Splitter.stories.d.ts.map +1 -1
  127. package/dist/types/src/components/Status/Status.d.ts +3 -4
  128. package/dist/types/src/components/Status/Status.d.ts.map +1 -1
  129. package/dist/types/src/components/Status/Status.stories.d.ts.map +1 -1
  130. package/dist/types/src/components/Tag/Tag.stories.d.ts.map +1 -1
  131. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts +1 -1
  132. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts.map +1 -1
  133. package/dist/types/src/components/ThemeProvider/ThemeProvider.stories.d.ts +1 -1
  134. package/dist/types/src/components/ThemeProvider/ThemeProvider.stories.d.ts.map +1 -1
  135. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts +54 -55
  136. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts.map +1 -1
  137. package/dist/types/src/components/ThemeProvider/index.d.ts +1 -1
  138. package/dist/types/src/components/ThemeProvider/index.d.ts.map +1 -1
  139. package/dist/types/src/components/Toast/Toast.d.ts +16 -16
  140. package/dist/types/src/components/Toast/Toast.d.ts.map +1 -1
  141. package/dist/types/src/components/Toast/Toast.stories.d.ts.map +1 -1
  142. package/dist/types/src/components/Toolbar/Toolbar.d.ts +10 -20
  143. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
  144. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts.map +1 -1
  145. package/dist/types/src/components/Tooltip/Tooltip.d.ts +10 -10
  146. package/dist/types/src/components/Tooltip/Tooltip.d.ts.map +1 -1
  147. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts +2 -2
  148. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts.map +1 -1
  149. package/dist/types/src/components/index.d.ts +1 -0
  150. package/dist/types/src/components/index.d.ts.map +1 -1
  151. package/dist/types/src/exemplars/generics.stories.d.ts +6 -5
  152. package/dist/types/src/exemplars/generics.stories.d.ts.map +1 -1
  153. package/dist/types/src/exemplars/slot.stories.d.ts +1 -0
  154. package/dist/types/src/exemplars/slot.stories.d.ts.map +1 -1
  155. package/dist/types/src/exemplars/tabster.stories.d.ts.map +1 -1
  156. package/dist/types/src/exemplars/virtualizer.stories.d.ts.map +1 -1
  157. package/dist/types/src/hooks/index.d.ts +1 -0
  158. package/dist/types/src/hooks/index.d.ts.map +1 -1
  159. package/dist/types/src/hooks/useDensityContext.d.ts +1 -1
  160. package/dist/types/src/hooks/useDensityContext.d.ts.map +1 -1
  161. package/dist/types/src/hooks/useElevationContext.d.ts.map +1 -1
  162. package/dist/types/src/hooks/useIconHref.d.ts.map +1 -1
  163. package/dist/types/src/hooks/useSafeArea.d.ts.map +1 -1
  164. package/dist/types/src/hooks/useSafeCollisionPadding.d.ts.map +1 -1
  165. package/dist/types/src/hooks/useVisualViewport.d.ts.map +1 -1
  166. package/dist/types/src/playground/Controls.stories.d.ts.map +1 -1
  167. package/dist/types/src/playground/Custom.stories.d.ts +1 -1
  168. package/dist/types/src/playground/Custom.stories.d.ts.map +1 -1
  169. package/dist/types/src/playground/Typography.stories.d.ts.map +1 -1
  170. package/dist/types/src/primitives/Column/Column.d.ts +20 -19
  171. package/dist/types/src/primitives/Column/Column.d.ts.map +1 -1
  172. package/dist/types/src/primitives/Column/Column.stories.d.ts +19 -0
  173. package/dist/types/src/primitives/Column/Column.stories.d.ts.map +1 -1
  174. package/dist/types/src/primitives/Container/Container.d.ts +7 -0
  175. package/dist/types/src/primitives/Container/Container.d.ts.map +1 -0
  176. package/dist/types/src/primitives/Container/Container.stories.d.ts +6 -0
  177. package/dist/types/src/primitives/Container/Container.stories.d.ts.map +1 -0
  178. package/dist/types/src/primitives/Container/index.d.ts +2 -0
  179. package/dist/types/src/primitives/Container/index.d.ts.map +1 -0
  180. package/dist/types/src/primitives/Flex/Flex.d.ts +8 -5
  181. package/dist/types/src/primitives/Flex/Flex.d.ts.map +1 -1
  182. package/dist/types/src/primitives/Flex/Flex.stories.d.ts.map +1 -1
  183. package/dist/types/src/primitives/Grid/Grid.d.ts +6 -5
  184. package/dist/types/src/primitives/Grid/Grid.d.ts.map +1 -1
  185. package/dist/types/src/primitives/Grid/Grid.stories.d.ts.map +1 -1
  186. package/dist/types/src/primitives/Panel/Panel.d.ts +23 -22
  187. package/dist/types/src/primitives/Panel/Panel.d.ts.map +1 -1
  188. package/dist/types/src/primitives/Panel/Panel.stories.d.ts.map +1 -1
  189. package/dist/types/src/primitives/index.d.ts +1 -0
  190. package/dist/types/src/primitives/index.d.ts.map +1 -1
  191. package/dist/types/src/testing/Loading.d.ts +9 -0
  192. package/dist/types/src/testing/Loading.d.ts.map +1 -0
  193. package/dist/types/src/testing/decorators/withLayout.d.ts.map +1 -1
  194. package/dist/types/src/testing/decorators/withLayoutVariants.d.ts.map +1 -1
  195. package/dist/types/src/testing/decorators/withTheme.d.ts +1 -1
  196. package/dist/types/src/testing/decorators/withTheme.d.ts.map +1 -1
  197. package/dist/types/src/testing/index.d.ts +1 -0
  198. package/dist/types/src/testing/index.d.ts.map +1 -1
  199. package/dist/types/src/translations.d.ts +3 -3
  200. package/dist/types/src/translations.d.ts.map +1 -1
  201. package/dist/types/src/util/usePx.d.ts.map +1 -1
  202. package/dist/types/tsconfig.tsbuildinfo +1 -1
  203. package/package.json +28 -25
  204. package/src/components/Avatars/Avatar.stories.tsx +2 -3
  205. package/src/components/Avatars/Avatar.tsx +1 -2
  206. package/src/components/Avatars/AvatarGroup.stories.tsx +0 -1
  207. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +1 -2
  208. package/src/components/Button/Button.stories.tsx +0 -1
  209. package/src/components/Button/Button.tsx +5 -13
  210. package/src/components/Button/IconButton.stories.tsx +6 -4
  211. package/src/components/Button/IconButton.tsx +3 -4
  212. package/src/components/Button/Toggle.stories.tsx +0 -1
  213. package/src/components/Button/Toggle.tsx +4 -4
  214. package/src/components/Button/ToggleGroup.stories.tsx +0 -1
  215. package/src/components/Button/ToggleGroup.tsx +12 -16
  216. package/src/components/Card/Card.stories.tsx +12 -12
  217. package/src/components/Card/Card.tsx +283 -128
  218. package/src/components/Clipboard/CopyButton.tsx +3 -4
  219. package/src/components/Dialog/AlertDialog.stories.tsx +5 -6
  220. package/src/components/Dialog/AlertDialog.tsx +67 -126
  221. package/src/components/Dialog/Dialog.stories.tsx +64 -9
  222. package/src/components/Dialog/Dialog.tsx +84 -88
  223. package/src/components/ErrorFallback/ErrorFallback.stories.tsx +3 -8
  224. package/src/components/ErrorFallback/ErrorStack.tsx +36 -2
  225. package/src/components/Focus/AUDIT.md +43 -0
  226. package/src/components/Focus/Focus.stories.tsx +230 -0
  227. package/src/components/Focus/Focus.tsx +201 -0
  228. package/src/components/Focus/index.ts +5 -0
  229. package/src/components/Icon/Icon.stories.tsx +43 -13
  230. package/src/components/Icon/Icon.tsx +5 -1
  231. package/src/components/Image/Image.stories.tsx +3 -3
  232. package/src/components/Image/Image.tsx +31 -8
  233. package/src/components/Input/Input.stories.tsx +3 -4
  234. package/src/components/Input/Input.tsx +7 -7
  235. package/src/components/Link/Link.stories.tsx +0 -1
  236. package/src/components/List/List.stories.tsx +2 -3
  237. package/src/components/List/List.tsx +6 -5
  238. package/src/components/List/Tree.stories.tsx +1 -2
  239. package/src/components/List/Tree.tsx +0 -1
  240. package/src/components/List/TreeDropIndicator.tsx +1 -1
  241. package/src/components/List/Treegrid.stories.tsx +26 -27
  242. package/src/components/List/Treegrid.tsx +14 -14
  243. package/src/components/Main/Main.stories.tsx +0 -1
  244. package/src/components/Main/Main.tsx +1 -2
  245. package/src/components/Menu/ContextMenu.stories.tsx +0 -1
  246. package/src/components/Menu/DropdownMenu.stories.tsx +0 -1
  247. package/src/components/Menu/DropdownMenu.tsx +48 -42
  248. package/src/components/Message/Message.stories.tsx +7 -8
  249. package/src/components/Message/Message.tsx +23 -10
  250. package/src/components/Popover/Popover.stories.tsx +4 -5
  251. package/src/components/Popover/Popover.tsx +42 -42
  252. package/src/components/ScrollArea/ScrollArea.stories.tsx +93 -30
  253. package/src/components/ScrollArea/ScrollArea.tsx +41 -25
  254. package/src/components/ScrollContainer/ScrollContainer.stories.tsx +20 -18
  255. package/src/components/ScrollContainer/ScrollContainer.tsx +200 -91
  256. package/src/components/Select/Select.stories.tsx +5 -6
  257. package/src/components/Separator/Separator.tsx +4 -7
  258. package/src/components/Skeleton/Skeleton.stories.tsx +0 -1
  259. package/src/components/Splitter/Splitter.stories.tsx +29 -29
  260. package/src/components/Splitter/Splitter.tsx +35 -46
  261. package/src/components/Status/Status.stories.tsx +0 -1
  262. package/src/components/Status/Status.tsx +8 -5
  263. package/src/components/Tag/Tag.stories.tsx +0 -1
  264. package/src/components/ThemeProvider/ThemeProvider.stories.tsx +0 -1
  265. package/src/components/ThemeProvider/ThemeProvider.tsx +5 -4
  266. package/src/components/ThemeProvider/index.ts +1 -1
  267. package/src/components/Toast/Toast.stories.tsx +0 -1
  268. package/src/components/Toast/Toast.tsx +16 -31
  269. package/src/components/Toolbar/Toolbar.stories.tsx +0 -1
  270. package/src/components/Toolbar/Toolbar.tsx +34 -47
  271. package/src/components/Tooltip/Tooltip.stories.tsx +6 -7
  272. package/src/components/Tooltip/Tooltip.tsx +15 -16
  273. package/src/components/index.ts +1 -0
  274. package/src/exemplars/generics.stories.tsx +7 -15
  275. package/src/exemplars/slot.stories.tsx +66 -68
  276. package/src/exemplars/tabster.stories.tsx +1 -1
  277. package/src/exemplars/virtualizer.stories.tsx +4 -4
  278. package/src/hooks/index.ts +1 -0
  279. package/src/hooks/useDensityContext.ts +2 -2
  280. package/src/playground/Custom.stories.tsx +6 -9
  281. package/src/primitives/Column/AUDIT.md +148 -0
  282. package/src/primitives/Column/Column.stories.tsx +128 -19
  283. package/src/primitives/Column/Column.tsx +89 -80
  284. package/src/primitives/Container/Container.stories.tsx +29 -0
  285. package/src/primitives/Container/Container.tsx +19 -0
  286. package/src/primitives/Container/index.ts +5 -0
  287. package/src/primitives/Flex/Flex.stories.tsx +0 -1
  288. package/src/primitives/Flex/Flex.tsx +20 -20
  289. package/src/primitives/Grid/Grid.stories.tsx +0 -1
  290. package/src/primitives/Grid/Grid.tsx +23 -36
  291. package/src/primitives/Panel/Panel.stories.tsx +9 -8
  292. package/src/primitives/Panel/Panel.tsx +43 -60
  293. package/src/primitives/index.ts +1 -0
  294. package/src/testing/Loading.tsx +47 -0
  295. package/src/testing/decorators/withLayout.tsx +6 -6
  296. package/src/testing/decorators/withTheme.tsx +10 -7
  297. package/src/testing/index.ts +2 -0
  298. package/src/translations.ts +3 -3
  299. package/src/util/usePx.ts +1 -0
  300. package/dist/lib/browser/chunk-2FKSMWNY.mjs.map +0 -7
  301. package/dist/lib/node-esm/chunk-ZNBLTSHI.mjs.map +0 -7
@@ -3,6 +3,7 @@ import {
3
3
  DensityProvider,
4
4
  ElevationContext,
5
5
  ElevationProvider,
6
+ ErrorStack,
6
7
  ThemeContext,
7
8
  ThemeProvider,
8
9
  Tooltip,
@@ -10,12 +11,13 @@ import {
10
11
  createTooltipScope,
11
12
  hasIosKeyboard,
12
13
  initialSafeArea,
14
+ parseCaptureOwnerStack,
13
15
  useElevationContext,
14
16
  useSafeArea,
15
17
  useThemeContext,
16
18
  useTooltipContext,
17
19
  useTranslation
18
- } from "./chunk-2FKSMWNY.mjs";
20
+ } from "./chunk-BDBC6H6V.mjs";
19
21
 
20
22
  // src/index.ts
21
23
  import { Trans } from "react-i18next";
@@ -23,13 +25,13 @@ export * from "@dxos/react-hooks";
23
25
  export * from "@dxos/ui-types";
24
26
 
25
27
  // src/components/ThemeProvider/index.ts
26
- import { isLabel, toLocalizedString } from "@dxos/ui-types";
28
+ import { isLabel, toLocalizedString } from "@dxos/ui-types/translations";
27
29
 
28
30
  // src/hooks/useDensityContext.ts
29
31
  import { useContext } from "react";
30
- var useDensityContext = (propsDensity) => {
32
+ var useDensityContext = (densityProp) => {
31
33
  const { density } = useContext(DensityContext);
32
- return propsDensity ?? density;
34
+ return densityProp ?? density;
33
35
  };
34
36
 
35
37
  // src/hooks/useIconHref.ts
@@ -40,6 +42,26 @@ var useIconHref = (icon) => {
40
42
  return icon ? `${url}#${icon}` : void 0;
41
43
  };
42
44
 
45
+ // src/hooks/useSafeCollisionPadding.ts
46
+ import { useMemo } from "react";
47
+ var propIsNumber = (prop) => Number.isFinite(prop);
48
+ var propsIsRecord = (prop) => !!(prop && typeof prop === "object");
49
+ var safePadding = (propsPadding, safePadding2, side) => {
50
+ return (propIsNumber(safePadding2[side]) ? safePadding2[side] : 0) + (propIsNumber(propsPadding) ? propsPadding : propsIsRecord(propsPadding) ? propsPadding[side] ?? 0 : 0);
51
+ };
52
+ var useSafeCollisionPadding = (collisionPadding) => {
53
+ const { safeAreaPadding } = useThemeContext();
54
+ return useMemo(() => ({
55
+ top: safePadding(collisionPadding, safeAreaPadding, "top"),
56
+ right: safePadding(collisionPadding, safeAreaPadding, "right"),
57
+ bottom: safePadding(collisionPadding, safeAreaPadding, "bottom"),
58
+ left: safePadding(collisionPadding, safeAreaPadding, "left")
59
+ }), [
60
+ collisionPadding,
61
+ safeAreaPadding
62
+ ]);
63
+ };
64
+
43
65
  // src/hooks/useTranslationsContext.ts
44
66
  import { useContext as useContext2 } from "react";
45
67
  var useTranslationsContext = () => useContext2(TranslationsContext);
@@ -64,7 +86,7 @@ var useVisualViewport = (deps) => {
64
86
  };
65
87
 
66
88
  // src/util/usePx.ts
67
- import { useCallback as useCallback2, useEffect, useMemo, useState as useState2 } from "react";
89
+ import { useCallback as useCallback2, useEffect, useMemo as useMemo2, useState as useState2 } from "react";
68
90
  var getDocumentElementFontSize = () => parseFloat(getComputedStyle(document.documentElement).fontSize);
69
91
  var usePx = (rem) => {
70
92
  const [fontSize, setFontSize] = useState2(() => {
@@ -100,17 +122,17 @@ var usePx = (rem) => {
100
122
  }
101
123
  };
102
124
  }, []);
103
- return useMemo(() => rem * fontSize, [
125
+ return useMemo2(() => rem * fontSize, [
104
126
  fontSize
105
127
  ]);
106
128
  };
107
129
 
108
130
  // src/components/Avatars/Avatar.tsx
109
- import "@dxos/lit-ui/dx-avatar.pcss";
110
131
  import { createContext } from "@radix-ui/react-context";
111
132
  import { Primitive } from "@radix-ui/react-primitive";
112
133
  import { Slot } from "@radix-ui/react-slot";
113
134
  import React, { forwardRef } from "react";
135
+ import "@dxos/lit-ui/dx-avatar.pcss";
114
136
  import { DxAvatar } from "@dxos/lit-ui/react";
115
137
  import { useId } from "@dxos/react-hooks";
116
138
  import { mx } from "@dxos/ui-theme";
@@ -176,7 +198,7 @@ import React4, { forwardRef as forwardRef4 } from "react";
176
198
 
177
199
  // src/components/Icon/Icon.tsx
178
200
  import React2, { forwardRef as forwardRef2, memo } from "react";
179
- var Icon = /* @__PURE__ */ memo(/* @__PURE__ */ forwardRef2(({ icon, classNames, size = 4, ...props }, forwardedRef) => {
201
+ var Icon = /* @__PURE__ */ memo(/* @__PURE__ */ forwardRef2(({ icon, classNames, size, ...props }, forwardedRef) => {
180
202
  const { tx } = useThemeContext();
181
203
  const href = useIconHref(icon);
182
204
  return /* @__PURE__ */ React2.createElement("svg", {
@@ -284,11 +306,11 @@ var BUTTON_NAME = "Button";
284
306
  var [ButtonGroupProvider, useButtonGroupContext] = createContext2(BUTTON_GROUP_NAME, {
285
307
  inGroup: false
286
308
  });
287
- var Button = /* @__PURE__ */ memo2(/* @__PURE__ */ forwardRef5(({ classNames, children, density: propsDensity, elevation: propsElevation, variant = "default", asChild, ...props }, ref) => {
309
+ var Button = /* @__PURE__ */ memo2(/* @__PURE__ */ forwardRef5(({ classNames, children, density: densityProp, elevation: elevationProp, variant = "default", asChild, ...props }, ref) => {
288
310
  const { inGroup } = useButtonGroupContext(BUTTON_NAME);
289
311
  const { tx } = useThemeContext();
290
- const elevation = useElevationContext(propsElevation);
291
- const density = useDensityContext(propsDensity);
312
+ const elevation = useElevationContext(elevationProp);
313
+ const density = useDensityContext(densityProp);
292
314
  const Comp = asChild ? Slot4 : Primitive4.button;
293
315
  return /* @__PURE__ */ React5.createElement(Comp, {
294
316
  ref,
@@ -351,12 +373,13 @@ var IconOnlyButton = /* @__PURE__ */ forwardRef6(({ noTooltip, tooltipSide, ...p
351
373
  ref: forwardedRef
352
374
  }));
353
375
  });
354
- var LabelledIconButton = /* @__PURE__ */ forwardRef6(({ size = 5, icon, iconOnly, iconEnd, iconClassNames, label, caretDown, noTooltip: _, classNames, ...props }, forwardedRef) => {
376
+ var LabelledIconButton = /* @__PURE__ */ forwardRef6(({ size, icon, iconOnly, square, iconEnd, iconClassNames, label, caretDown, noTooltip: _, classNames, ...props }, forwardedRef) => {
355
377
  const { tx } = useThemeContext();
356
378
  return /* @__PURE__ */ React6.createElement(Button, {
357
379
  ...props,
358
380
  classNames: tx("iconButton.root", {
359
- iconOnly
381
+ iconOnly,
382
+ square
360
383
  }, classNames),
361
384
  ref: forwardedRef
362
385
  }, icon && !iconEnd && /* @__PURE__ */ React6.createElement(Icon, {
@@ -376,10 +399,10 @@ var LabelledIconButton = /* @__PURE__ */ forwardRef6(({ size = 5, icon, iconOnly
376
399
  });
377
400
 
378
401
  // src/components/Button/Toggle.tsx
379
- import { Toggle as TogglePrimitive } from "@radix-ui/react-toggle";
402
+ import * as TogglePrimitive from "@radix-ui/react-toggle";
380
403
  import React7, { forwardRef as forwardRef7 } from "react";
381
404
  var Toggle = /* @__PURE__ */ forwardRef7(({ defaultPressed, pressed, onPressedChange, ...props }, forwardedRef) => {
382
- return /* @__PURE__ */ React7.createElement(TogglePrimitive, {
405
+ return /* @__PURE__ */ React7.createElement(TogglePrimitive.Root, {
383
406
  defaultPressed,
384
407
  pressed,
385
408
  onPressedChange,
@@ -391,10 +414,10 @@ var Toggle = /* @__PURE__ */ forwardRef7(({ defaultPressed, pressed, onPressedCh
391
414
  });
392
415
 
393
416
  // src/components/Button/ToggleGroup.tsx
394
- import { ToggleGroupItem as ToggleGroupItemPrimitive, ToggleGroup as ToggleGroupPrimitive } from "@radix-ui/react-toggle-group";
417
+ import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group";
395
418
  import React8, { forwardRef as forwardRef8 } from "react";
396
419
  var ToggleGroup = /* @__PURE__ */ forwardRef8(({ classNames, children, ...props }, forwardedRef) => {
397
- return /* @__PURE__ */ React8.createElement(ToggleGroupPrimitive, {
420
+ return /* @__PURE__ */ React8.createElement(ToggleGroupPrimitive.Root, {
398
421
  ...props,
399
422
  asChild: true
400
423
  }, /* @__PURE__ */ React8.createElement(ButtonGroup, {
@@ -404,7 +427,7 @@ var ToggleGroup = /* @__PURE__ */ forwardRef8(({ classNames, children, ...props
404
427
  }));
405
428
  });
406
429
  var ToggleGroupItem = /* @__PURE__ */ forwardRef8(({ variant, elevation, density, classNames, children, ...props }, forwardedRef) => {
407
- return /* @__PURE__ */ React8.createElement(ToggleGroupItemPrimitive, {
430
+ return /* @__PURE__ */ React8.createElement(ToggleGroupPrimitive.Item, {
408
431
  ...props,
409
432
  asChild: true
410
433
  }, /* @__PURE__ */ React8.createElement(Button, {
@@ -417,7 +440,7 @@ var ToggleGroupItem = /* @__PURE__ */ forwardRef8(({ variant, elevation, density
417
440
  }));
418
441
  });
419
442
  var ToggleGroupIconItem = /* @__PURE__ */ forwardRef8(({ variant, label, icon, size, elevation, density, classNames, ...props }, forwardedRef) => {
420
- return /* @__PURE__ */ React8.createElement(ToggleGroupItemPrimitive, {
443
+ return /* @__PURE__ */ React8.createElement(ToggleGroupPrimitive.Item, {
421
444
  ...props,
422
445
  asChild: true
423
446
  }, /* @__PURE__ */ React8.createElement(IconButton, {
@@ -433,31 +456,35 @@ var ToggleGroupIconItem = /* @__PURE__ */ forwardRef8(({ variant, label, icon, s
433
456
  });
434
457
 
435
458
  // src/components/Card/Card.tsx
436
- import { Primitive as Primitive10 } from "@radix-ui/react-primitive";
437
- import { Slot as Slot10 } from "@radix-ui/react-slot";
438
- import React18, { createContext as createContext3, forwardRef as forwardRef15, useContext as useContext3 } from "react";
439
- import { mx as mx5 } from "@dxos/ui-theme";
459
+ import { Primitive as Primitive12 } from "@radix-ui/react-primitive";
460
+ import { Slot as Slot12 } from "@radix-ui/react-slot";
461
+ import DOMPurify from "dompurify";
462
+ import React19, { createContext as createContext3, forwardRef as forwardRef13, useContext as useContext3, useMemo as useMemo4 } from "react";
463
+ import { composable as composable3, composableProps as composableProps7, iconSize, mx as mx6, slottable as slottable6 } from "@dxos/ui-theme";
440
464
 
441
465
  // src/primitives/Column/Column.tsx
442
466
  import { Primitive as Primitive5 } from "@radix-ui/react-primitive";
443
467
  import { Slot as Slot5 } from "@radix-ui/react-slot";
444
- import React9, { forwardRef as forwardRef9 } from "react";
468
+ import React9 from "react";
469
+ import { composableProps, slottable } from "@dxos/ui-theme";
445
470
  var COLUMN_ROOT_NAME = "Column.Root";
446
471
  var gutterSizes = {
472
+ xs: "var(--dx-gutter-xs)",
447
473
  sm: "var(--dx-gutter-sm)",
448
474
  md: "var(--dx-gutter-md)",
449
- lg: "var(--dx-gutter-lg)",
450
- rail: "var(--dx-rail-item)"
475
+ lg: "var(--dx-gutter-lg)"
451
476
  };
452
- var Root = /* @__PURE__ */ forwardRef9(({ classNames, className, asChild, role, children, gutter = "md", ...props }, forwardedRef) => {
477
+ var ColumnRoot = slottable(({ children, asChild, role, gutter = "md", ...props }, forwardedRef) => {
478
+ const { className, ...rest } = composableProps(props);
479
+ const Comp = asChild ? Slot5 : Primitive5.div;
453
480
  const { tx } = useThemeContext();
454
- const Component = asChild ? Slot5 : Primitive5.div;
455
481
  const gutterSize = gutterSizes[gutter];
456
- return /* @__PURE__ */ React9.createElement(Component, {
457
- ...props,
482
+ return /* @__PURE__ */ React9.createElement(Comp, {
483
+ ...rest,
458
484
  role: role ?? "none",
459
485
  style: {
460
486
  "--gutter": gutterSize,
487
+ "--dx-col": "2 / span 1",
461
488
  gridTemplateColumns: [
462
489
  gutterSize,
463
490
  "minmax(0,1fr)",
@@ -466,169 +493,179 @@ var Root = /* @__PURE__ */ forwardRef9(({ classNames, className, asChild, role,
466
493
  },
467
494
  className: tx("column.root", {
468
495
  gutter
469
- }, [
470
- className,
471
- classNames
472
- ]),
496
+ }, className),
473
497
  ref: forwardedRef
474
498
  }, children);
475
499
  });
476
- Root.displayName = COLUMN_ROOT_NAME;
500
+ ColumnRoot.displayName = COLUMN_ROOT_NAME;
477
501
  var COLUMN_ROW_NAME = "Column.Row";
478
- var Row = /* @__PURE__ */ forwardRef9(({ classNames, className, asChild, role, children, ...props }, forwardedRef) => {
502
+ var ColumnRow = slottable(({ children, asChild, role, ...props }, forwardedRef) => {
503
+ const { className, ...rest } = composableProps(props);
504
+ const Comp = asChild ? Slot5 : Primitive5.div;
479
505
  const { tx } = useThemeContext();
480
- const Component = asChild ? Slot5 : Primitive5.div;
481
- return /* @__PURE__ */ React9.createElement(Component, {
482
- ...props,
483
- className: tx("column.row", {}, [
484
- className,
485
- classNames
486
- ]),
506
+ return /* @__PURE__ */ React9.createElement(Comp, {
507
+ ...rest,
487
508
  role: role ?? "none",
509
+ className: tx("column.row", {}, className),
488
510
  ref: forwardedRef
489
511
  }, children);
490
512
  });
491
- Row.displayName = COLUMN_ROW_NAME;
492
- var COLUMN_SEGMENT_NAME = "Column.Segment";
493
- var Segment = /* @__PURE__ */ forwardRef9(({ classNames, className, asChild, role, children, ...props }, forwardedRef) => {
513
+ ColumnRow.displayName = COLUMN_ROW_NAME;
514
+ var COLUMN_BLEED_NAME = "Column.Bleed";
515
+ var ColumnBleed = slottable(({ children, asChild, ...props }, forwardedRef) => {
494
516
  const { tx } = useThemeContext();
495
- const Component = asChild ? Slot5 : Primitive5.div;
496
- if (asChild) {
497
- return /* @__PURE__ */ React9.createElement(Component, {
498
- ...props,
499
- role: role ?? "none",
500
- className: tx("column.segment", {}, [
501
- className,
502
- classNames
503
- ]),
504
- ref: forwardedRef
505
- }, children);
506
- }
507
- return /* @__PURE__ */ React9.createElement(Component, {
508
- ...props,
509
- className: tx("column.segment", {}, [
510
- className,
511
- classNames
512
- ]),
513
- role,
517
+ const { className, ...rest } = composableProps(props);
518
+ const Comp = asChild ? Slot5 : Primitive5.div;
519
+ return /* @__PURE__ */ React9.createElement(Comp, {
520
+ ...rest,
521
+ className: tx("column.bleed", {}, className),
514
522
  ref: forwardedRef
515
- }, /* @__PURE__ */ React9.createElement("div", {
516
- className: "contents"
517
- }, children));
523
+ }, children);
518
524
  });
519
- Segment.displayName = COLUMN_SEGMENT_NAME;
525
+ ColumnBleed.displayName = COLUMN_BLEED_NAME;
526
+ var COLUMN_CENTER_NAME = "Column.Center";
527
+ var ColumnCenter = slottable(({ children, asChild, ...props }, forwardedRef) => {
528
+ const { tx } = useThemeContext();
529
+ const { className, ...rest } = composableProps(props);
530
+ const Comp = asChild ? Slot5 : Primitive5.div;
531
+ return /* @__PURE__ */ React9.createElement(Comp, {
532
+ ...rest,
533
+ className: tx("column.center", {}, className),
534
+ ref: forwardedRef
535
+ }, children);
536
+ });
537
+ ColumnCenter.displayName = COLUMN_CENTER_NAME;
520
538
  var Column = {
521
- Root,
522
- Row,
523
- Segment
539
+ Root: ColumnRoot,
540
+ Row: ColumnRow,
541
+ Bleed: ColumnBleed,
542
+ Center: ColumnCenter
524
543
  };
525
544
 
526
- // src/primitives/Flex/Flex.tsx
545
+ // src/primitives/Container/Container.tsx
546
+ import { Primitive as Primitive6 } from "@radix-ui/react-primitive";
547
+ import { Slot as Slot6 } from "@radix-ui/react-slot";
527
548
  import React10 from "react";
528
- import { mx as mx2 } from "@dxos/ui-theme";
529
- var Flex = ({ children, classNames, className, role, column, grow, ...props }) => {
530
- return /* @__PURE__ */ React10.createElement("div", {
531
- ...props,
532
- role: role ?? "none",
533
- className: mx2("flex", column && "flex-col", grow && "flex-1 overflow-hidden", className, classNames)
549
+ import { composableProps as composableProps2, mx as mx2, slottable as slottable2 } from "@dxos/ui-theme";
550
+ var Container = slottable2(({ children, asChild, ...props }, forwardedRef) => {
551
+ const { className, ...rest } = composableProps2(props);
552
+ const Comp = asChild ? Slot6 : Primitive6.div;
553
+ return /* @__PURE__ */ React10.createElement(Comp, {
554
+ ...rest,
555
+ className: mx2("dx-container", className),
556
+ ref: forwardedRef
534
557
  }, children);
535
- };
558
+ });
536
559
 
537
- // src/primitives/Grid/Grid.tsx
560
+ // src/primitives/Flex/Flex.tsx
561
+ import { Primitive as Primitive7 } from "@radix-ui/react-primitive";
562
+ import { Slot as Slot7 } from "@radix-ui/react-slot";
538
563
  import React11 from "react";
539
- import { mx as mx3 } from "@dxos/ui-theme";
540
- var Grid = ({ children, classNames, className, style, role, cols, rows, grow = true, ...props }) => {
541
- return /* @__PURE__ */ React11.createElement("div", {
542
- ...props,
564
+ import { composableProps as composableProps3, mx as mx3, slottable as slottable3 } from "@dxos/ui-theme";
565
+ var Flex = slottable3(({ children, asChild, column, grow, ...props }, forwardedRef) => {
566
+ const { className, ...rest } = composableProps3(props);
567
+ const Comp = asChild ? Slot7 : Primitive7.div;
568
+ return /* @__PURE__ */ React11.createElement(Comp, {
569
+ ref: forwardedRef,
570
+ ...rest,
571
+ className: mx3("flex", column && "flex-col", grow && "flex-1 overflow-hidden", className)
572
+ }, children);
573
+ });
574
+
575
+ // src/primitives/Grid/Grid.tsx
576
+ import React12 from "react";
577
+ import { composable, composableProps as composableProps4, mx as mx4 } from "@dxos/ui-theme";
578
+ var Grid = composable(({ children, style, role, cols, rows, grow = true, ...props }, forwardedRef) => {
579
+ const { className, ...rest } = composableProps4(props);
580
+ return /* @__PURE__ */ React12.createElement("div", {
581
+ ref: forwardedRef,
582
+ ...rest,
543
583
  role: role ?? "none",
584
+ className: mx4("grid overflow-hidden", grow && "dx-container", className),
544
585
  style: {
545
586
  gridTemplateColumns: cols ? `repeat(${cols}, 1fr)` : void 0,
546
587
  gridTemplateRows: rows ? `repeat(${rows}, 1fr)` : void 0,
547
588
  ...style
548
- },
549
- className: mx3("grid overflow-hidden", grow && "dx-container", className, classNames)
589
+ }
550
590
  }, children);
551
- };
591
+ });
552
592
 
553
593
  // src/primitives/Panel/Panel.tsx
554
- import { Primitive as Primitive6 } from "@radix-ui/react-primitive";
555
- import { Slot as Slot6 } from "@radix-ui/react-slot";
556
- import React12, { forwardRef as forwardRef10 } from "react";
594
+ import { Primitive as Primitive8 } from "@radix-ui/react-primitive";
595
+ import { Slot as Slot8 } from "@radix-ui/react-slot";
596
+ import React13 from "react";
597
+ import { composableProps as composableProps5, slottable as slottable4 } from "@dxos/ui-theme";
557
598
  var GRID_TEMPLATE_ROWS = "auto 1fr auto";
558
599
  var GRID_TEMPLATE_AREAS = '"toolbar" "content" "statusbar"';
559
- var Root2 = /* @__PURE__ */ forwardRef10(({ classNames, className, asChild, children, role, ...props }, forwardedRef) => {
600
+ var PanelRoot = slottable4(({ children, asChild, role, style, ...props }, forwardedRef) => {
601
+ const { className, ...rest } = composableProps5(props);
602
+ const Comp = asChild ? Slot8 : Primitive8.div;
560
603
  const { tx } = useThemeContext();
561
- const Comp = asChild ? Slot6 : Primitive6.div;
562
- return /* @__PURE__ */ React12.createElement(Comp, {
563
- ref: forwardedRef,
604
+ return /* @__PURE__ */ React13.createElement(Comp, {
605
+ ...rest,
564
606
  role: role ?? "none",
565
- ...props,
566
607
  style: {
567
608
  gridTemplateRows: GRID_TEMPLATE_ROWS,
568
609
  gridTemplateAreas: GRID_TEMPLATE_AREAS,
569
- ...props.style
610
+ ...style
570
611
  },
571
- className: tx("panel.root", {}, [
572
- className,
573
- classNames
574
- ])
612
+ className: tx("panel.root", {}, className),
613
+ ref: forwardedRef
575
614
  }, children);
576
615
  });
577
- Root2.displayName = "Panel.Root";
578
- var Toolbar = /* @__PURE__ */ forwardRef10(({ classNames, className, asChild, children, ...props }, forwardedRef) => {
616
+ PanelRoot.displayName = "Panel.Root";
617
+ var PanelToolbar = slottable4(({ children, asChild, size, ...props }, forwardedRef) => {
618
+ const { className, ...rest } = composableProps5(props);
619
+ const Comp = asChild ? Slot8 : Primitive8.div;
579
620
  const { tx } = useThemeContext();
580
- const Comp = asChild ? Slot6 : Primitive6.div;
581
- return /* @__PURE__ */ React12.createElement(Comp, {
582
- ref: forwardedRef,
621
+ return /* @__PURE__ */ React13.createElement(Comp, {
622
+ ...rest,
583
623
  "data-slot": "toolbar",
584
- ...props,
585
- className: tx("panel.toolbar", {}, [
586
- className,
587
- classNames
588
- ])
624
+ className: tx("panel.toolbar", {
625
+ size
626
+ }, className),
627
+ ref: forwardedRef
589
628
  }, children);
590
629
  });
591
- Toolbar.displayName = "Panel.Toolbar";
592
- var Content = /* @__PURE__ */ forwardRef10(({ classNames, className, asChild, children, ...props }, forwardedRef) => {
630
+ PanelToolbar.displayName = "Panel.Toolbar";
631
+ var PanelContent = slottable4(({ children, asChild, ...props }, forwardedRef) => {
632
+ const { className, ...rest } = composableProps5(props);
633
+ const Comp = asChild ? Slot8 : Primitive8.div;
593
634
  const { tx } = useThemeContext();
594
- const Comp = asChild ? Slot6 : Primitive6.div;
595
- return /* @__PURE__ */ React12.createElement(Comp, {
596
- ref: forwardedRef,
635
+ return /* @__PURE__ */ React13.createElement(Comp, {
636
+ ...rest,
597
637
  "data-slot": "content",
598
- ...props,
599
- className: tx("panel.content", {}, [
600
- className,
601
- classNames
602
- ])
638
+ className: tx("panel.content", {}, className),
639
+ ref: forwardedRef
603
640
  }, children);
604
641
  });
605
- Content.displayName = "Panel.Content";
606
- var Statusbar = /* @__PURE__ */ forwardRef10(({ classNames, className, asChild, children, ...props }, forwardedRef) => {
642
+ PanelContent.displayName = "Panel.Content";
643
+ var PanelStatusbar = slottable4(({ children, asChild, size, ...props }, forwardedRef) => {
644
+ const { className, ...rest } = composableProps5(props);
645
+ const Comp = asChild ? Slot8 : Primitive8.div;
607
646
  const { tx } = useThemeContext();
608
- const Comp = asChild ? Slot6 : Primitive6.div;
609
- return /* @__PURE__ */ React12.createElement(Comp, {
610
- ref: forwardedRef,
647
+ return /* @__PURE__ */ React13.createElement(Comp, {
648
+ ...rest,
611
649
  "data-slot": "statusbar",
612
- ...props,
613
- className: tx("panel.statusbar", {}, [
614
- className,
615
- classNames
616
- ])
650
+ className: tx("panel.statusbar", {
651
+ size
652
+ }, className),
653
+ ref: forwardedRef
617
654
  }, children);
618
655
  });
619
- Statusbar.displayName = "Panel.Statusbar";
656
+ PanelStatusbar.displayName = "Panel.Statusbar";
620
657
  var Panel = {
621
- Root: Root2,
622
- Toolbar,
623
- Content,
624
- Statusbar
658
+ Root: PanelRoot,
659
+ Toolbar: PanelToolbar,
660
+ Content: PanelContent,
661
+ Statusbar: PanelStatusbar
625
662
  };
626
663
 
627
664
  // src/components/Image/Image.tsx
628
- import React13, { useCallback as useCallback3, useRef, useState as useState3 } from "react";
629
- import { mx as mx4 } from "@dxos/ui-theme";
665
+ import React14, { useCallback as useCallback3, useRef, useState as useState3 } from "react";
666
+ import { mx as mx5 } from "@dxos/ui-theme";
630
667
  var cache = /* @__PURE__ */ new Map();
631
- var Image = ({ classNames, src, alt = "", crossOrigin = "anonymous", sampleSize = 64, contrast = 0.9 }) => {
668
+ var Image = ({ classNames, src, alt = "", fit = "contain", crossOrigin = "anonymous", sampleSize = 64, contrast = 0.9 }) => {
632
669
  const [crossOriginState, setCrossOriginState] = useState3(crossOrigin);
633
670
  const [dominantColor, setDominantColor] = useState3(void 0);
634
671
  const [imageLoaded, setImageLoaded] = useState3(false);
@@ -666,31 +703,37 @@ var Image = ({ classNames, src, alt = "", crossOrigin = "anonymous", sampleSize
666
703
  contrast,
667
704
  src
668
705
  ]);
669
- return /* @__PURE__ */ React13.createElement("div", {
670
- className: mx4(`relative flex w-full justify-center overflow-hidden transition-all duration-700`, classNames),
706
+ return /* @__PURE__ */ React14.createElement("div", {
707
+ // `isolate` (`isolation: isolate`) creates a new stacking context so
708
+ // the inner <img>'s `z-10` stays scoped to this wrapper. Without it
709
+ // the z-10 leaks into the parent's stacking context and elevates the
710
+ // image above any pseudo-element rings (e.g. Focus.Item's
711
+ // `dx-ring-pseudo` `::after`) painted on ancestors — most visibly,
712
+ // the focus ring on a Card containing a Card.Poster.
713
+ className: mx5(`relative flex w-full justify-center overflow-hidden transition-all duration-700 isolate`, classNames),
671
714
  style: {
672
715
  backgroundColor: dominantColor
673
716
  }
674
- }, /* @__PURE__ */ React13.createElement("canvas", {
717
+ }, /* @__PURE__ */ React14.createElement("canvas", {
675
718
  ref: canvasRef,
676
719
  style: {
677
720
  display: "none"
678
721
  },
679
722
  "aria-hidden": "true"
680
- }), /* @__PURE__ */ React13.createElement("div", {
723
+ }), /* @__PURE__ */ React14.createElement("div", {
681
724
  className: "absolute inset-0 pointer-events-none",
682
725
  style: {
683
726
  background: dominantColor ? `radial-gradient(circle at center, transparent 30%, ${dominantColor} 100%)` : void 0,
684
727
  transition: "opacity 0.7s ease-in-out",
685
728
  opacity: 0.5
686
729
  }
687
- }), /* @__PURE__ */ React13.createElement("img", {
730
+ }), /* @__PURE__ */ React14.createElement("img", {
688
731
  src,
689
732
  alt,
690
733
  crossOrigin: crossOriginState,
691
734
  onError: handleImageError,
692
735
  onLoad: handleImageLoad,
693
- className: "z-10 object-contain transition-opacity duration-500",
736
+ className: mx5("z-10 transition-opacity duration-500", fit === "cover" ? "w-full h-full object-cover" : "object-contain"),
694
737
  style: {
695
738
  opacity: imageLoaded ? 1 : 0
696
739
  }
@@ -728,7 +771,9 @@ var extractDominantColor = (canvas, img, { sampleSize = 64, contrast = 0.95 }) =
728
771
  const green = pixels[i + 1];
729
772
  const blue = pixels[i + 2];
730
773
  const alpha = pixels[i + 3];
731
- if (alpha === 0) continue;
774
+ if (alpha === 0) {
775
+ continue;
776
+ }
732
777
  const max = Math.max(red, green, blue);
733
778
  const min = Math.min(red, green, blue);
734
779
  const saturation = max === 0 ? 0 : (max - min) / max;
@@ -756,75 +801,49 @@ var isTransparent = (pixels, sampleSize, threshold = 0.5) => {
756
801
  const edgePixels = sampleSize * 4 - 4;
757
802
  for (let x = 0; x < sampleSize; x++) {
758
803
  const topIndex = x * 4;
759
- if (pixels[topIndex + 3] === 0) edgeTransparentPixels++;
804
+ if (pixels[topIndex + 3] === 0) {
805
+ edgeTransparentPixels++;
806
+ }
760
807
  const bottomIndex = ((sampleSize - 1) * sampleSize + x) * 4;
761
- if (pixels[bottomIndex + 3] === 0) edgeTransparentPixels++;
808
+ if (pixels[bottomIndex + 3] === 0) {
809
+ edgeTransparentPixels++;
810
+ }
762
811
  }
763
812
  for (let y = 1; y < sampleSize - 1; y++) {
764
813
  const leftIndex = y * sampleSize * 4;
765
- if (pixels[leftIndex + 3] === 0) edgeTransparentPixels++;
814
+ if (pixels[leftIndex + 3] === 0) {
815
+ edgeTransparentPixels++;
816
+ }
766
817
  const rightIndex = (y * sampleSize + sampleSize - 1) * 4;
767
- if (pixels[rightIndex + 3] === 0) edgeTransparentPixels++;
818
+ if (pixels[rightIndex + 3] === 0) {
819
+ edgeTransparentPixels++;
820
+ }
768
821
  }
769
822
  return edgeTransparentPixels / edgePixels > threshold;
770
823
  };
771
824
 
772
825
  // src/components/Toolbar/Toolbar.tsx
773
- import { Primitive as Primitive9 } from "@radix-ui/react-primitive";
774
- import { Slot as Slot9 } from "@radix-ui/react-slot";
826
+ import { Primitive as Primitive11 } from "@radix-ui/react-primitive";
827
+ import { Slot as Slot11 } from "@radix-ui/react-slot";
775
828
  import * as ToolbarPrimitive from "@radix-ui/react-toolbar";
776
- import React17, { Fragment, forwardRef as forwardRef14 } from "react";
829
+ import React18, { forwardRef as forwardRef12 } from "react";
777
830
  import { useTranslation as useTranslation2 } from "react-i18next";
778
-
779
- // src/translations.ts
780
- var translationKey = "@dxos/react-ui";
781
- var translations = [
782
- {
783
- "en-US": {
784
- [translationKey]: {
785
- "toolbar menu label": "Action menu",
786
- "toolbar drag handle label": "Drag to rearrange",
787
- "toolbar close label": "Close"
788
- }
789
- }
790
- }
791
- ];
831
+ import { composable as composable2, composableProps as composableProps6, slottable as slottable5 } from "@dxos/ui-theme";
832
+ import { translationKey } from "#translations";
792
833
 
793
834
  // src/components/Menu/ContextMenu.tsx
794
835
  import * as ContextMenuPrimitive from "@radix-ui/react-context-menu";
795
- import { Primitive as Primitive7 } from "@radix-ui/react-primitive";
796
- import { Slot as Slot7 } from "@radix-ui/react-slot";
797
- import React14, { forwardRef as forwardRef11 } from "react";
798
-
799
- // src/hooks/useSafeCollisionPadding.ts
800
- import { useMemo as useMemo2 } from "react";
801
- var propIsNumber = (prop) => Number.isFinite(prop);
802
- var propsIsRecord = (prop) => !!(prop && typeof prop === "object");
803
- var safePadding = (propsPadding, safePadding2, side) => {
804
- return (propIsNumber(safePadding2[side]) ? safePadding2[side] : 0) + (propIsNumber(propsPadding) ? propsPadding : propsIsRecord(propsPadding) ? propsPadding[side] ?? 0 : 0);
805
- };
806
- var useSafeCollisionPadding = (collisionPadding) => {
807
- const { safeAreaPadding } = useThemeContext();
808
- return useMemo2(() => ({
809
- top: safePadding(collisionPadding, safeAreaPadding, "top"),
810
- right: safePadding(collisionPadding, safeAreaPadding, "right"),
811
- bottom: safePadding(collisionPadding, safeAreaPadding, "bottom"),
812
- left: safePadding(collisionPadding, safeAreaPadding, "left")
813
- }), [
814
- collisionPadding,
815
- safeAreaPadding
816
- ]);
817
- };
818
-
819
- // src/components/Menu/ContextMenu.tsx
836
+ import { Primitive as Primitive9 } from "@radix-ui/react-primitive";
837
+ import { Slot as Slot9 } from "@radix-ui/react-slot";
838
+ import React15, { forwardRef as forwardRef9 } from "react";
820
839
  var ContextMenuRoot = ContextMenuPrimitive.ContextMenu;
821
840
  var ContextMenuTrigger = ContextMenuPrimitive.Trigger;
822
841
  var ContextMenuPortal = ContextMenuPrimitive.Portal;
823
- var ContextMenuContent = /* @__PURE__ */ forwardRef11(({ classNames, children, collisionPadding = 8, ...props }, forwardedRef) => {
842
+ var ContextMenuContent = /* @__PURE__ */ forwardRef9(({ classNames, children, collisionPadding = 8, ...props }, forwardedRef) => {
824
843
  const { tx } = useThemeContext();
825
844
  const elevation = useElevationContext();
826
845
  const safeCollisionPadding = useSafeCollisionPadding(collisionPadding);
827
- return /* @__PURE__ */ React14.createElement(ContextMenuPrimitive.Content, {
846
+ return /* @__PURE__ */ React15.createElement(ContextMenuPrimitive.Content, {
828
847
  ...props,
829
848
  "data-arrow-keys": "up down",
830
849
  collisionPadding: safeCollisionPadding,
@@ -834,18 +853,18 @@ var ContextMenuContent = /* @__PURE__ */ forwardRef11(({ classNames, children, c
834
853
  ref: forwardedRef
835
854
  }, children);
836
855
  });
837
- var ContextMenuViewport = /* @__PURE__ */ forwardRef11(({ classNames, asChild, children, ...props }, forwardedRef) => {
856
+ var ContextMenuViewport = /* @__PURE__ */ forwardRef9(({ classNames, asChild, children, ...props }, forwardedRef) => {
838
857
  const { tx } = useThemeContext();
839
- const Comp = asChild ? Slot7 : Primitive7.div;
840
- return /* @__PURE__ */ React14.createElement(Comp, {
858
+ const Comp = asChild ? Slot9 : Primitive9.div;
859
+ return /* @__PURE__ */ React15.createElement(Comp, {
841
860
  ...props,
842
861
  className: tx("menu.viewport", {}, classNames),
843
862
  ref: forwardedRef
844
863
  }, children);
845
864
  });
846
- var ContextMenuArrow = /* @__PURE__ */ forwardRef11(({ classNames, ...props }, forwardedRef) => {
865
+ var ContextMenuArrow = /* @__PURE__ */ forwardRef9(({ classNames, ...props }, forwardedRef) => {
847
866
  const { tx } = useThemeContext();
848
- return /* @__PURE__ */ React14.createElement(ContextMenuPrimitive.Arrow, {
867
+ return /* @__PURE__ */ React15.createElement(ContextMenuPrimitive.Arrow, {
849
868
  ...props,
850
869
  className: tx("menu.arrow", {}, classNames),
851
870
  ref: forwardedRef
@@ -853,33 +872,33 @@ var ContextMenuArrow = /* @__PURE__ */ forwardRef11(({ classNames, ...props }, f
853
872
  });
854
873
  var ContextMenuGroup = ContextMenuPrimitive.Group;
855
874
  var ContextMenuItemIndicator = ContextMenuPrimitive.ItemIndicator;
856
- var ContextMenuItem = /* @__PURE__ */ forwardRef11(({ classNames, ...props }, forwardedRef) => {
875
+ var ContextMenuItem = /* @__PURE__ */ forwardRef9(({ classNames, ...props }, forwardedRef) => {
857
876
  const { tx } = useThemeContext();
858
- return /* @__PURE__ */ React14.createElement(ContextMenuPrimitive.Item, {
877
+ return /* @__PURE__ */ React15.createElement(ContextMenuPrimitive.Item, {
859
878
  ...props,
860
879
  className: tx("menu.item", {}, classNames),
861
880
  ref: forwardedRef
862
881
  });
863
882
  });
864
- var ContextMenuCheckboxItem = /* @__PURE__ */ forwardRef11(({ classNames, ...props }, forwardedRef) => {
883
+ var ContextMenuCheckboxItem = /* @__PURE__ */ forwardRef9(({ classNames, ...props }, forwardedRef) => {
865
884
  const { tx } = useThemeContext();
866
- return /* @__PURE__ */ React14.createElement(ContextMenuPrimitive.CheckboxItem, {
885
+ return /* @__PURE__ */ React15.createElement(ContextMenuPrimitive.CheckboxItem, {
867
886
  ...props,
868
887
  className: tx("menu.item", {}, classNames),
869
888
  ref: forwardedRef
870
889
  });
871
890
  });
872
- var ContextMenuSeparator = /* @__PURE__ */ forwardRef11(({ classNames, ...props }, forwardedRef) => {
891
+ var ContextMenuSeparator = /* @__PURE__ */ forwardRef9(({ classNames, ...props }, forwardedRef) => {
873
892
  const { tx } = useThemeContext();
874
- return /* @__PURE__ */ React14.createElement(ContextMenuPrimitive.Separator, {
893
+ return /* @__PURE__ */ React15.createElement(ContextMenuPrimitive.Separator, {
875
894
  ...props,
876
895
  className: tx("menu.separator", {}, classNames),
877
896
  ref: forwardedRef
878
897
  });
879
898
  });
880
- var ContextMenuGroupLabel = /* @__PURE__ */ forwardRef11(({ classNames, ...props }, forwardedRef) => {
899
+ var ContextMenuGroupLabel = /* @__PURE__ */ forwardRef9(({ classNames, ...props }, forwardedRef) => {
881
900
  const { tx } = useThemeContext();
882
- return /* @__PURE__ */ React14.createElement(ContextMenuPrimitive.Label, {
901
+ return /* @__PURE__ */ React15.createElement(ContextMenuPrimitive.Label, {
883
902
  ...props,
884
903
  className: tx("menu.groupLabel", {}, classNames),
885
904
  ref: forwardedRef
@@ -907,18 +926,17 @@ import { createContextScope } from "@radix-ui/react-context";
907
926
  import { useId as useId2 } from "@radix-ui/react-id";
908
927
  import * as MenuPrimitive from "@radix-ui/react-menu";
909
928
  import { createMenuScope } from "@radix-ui/react-menu";
910
- import { Primitive as Primitive8 } from "@radix-ui/react-primitive";
911
- import { Slot as Slot8 } from "@radix-ui/react-slot";
929
+ import { Primitive as Primitive10 } from "@radix-ui/react-primitive";
930
+ import { Slot as Slot10 } from "@radix-ui/react-slot";
912
931
  import { useControllableState } from "@radix-ui/react-use-controllable-state";
913
- import React15, { forwardRef as forwardRef12, useCallback as useCallback4, useEffect as useEffect2, useMemo as useMemo3, useRef as useRef2 } from "react";
932
+ import React16, { forwardRef as forwardRef10, useCallback as useCallback4, useEffect as useEffect2, useMemo as useMemo3, useRef as useRef2 } from "react";
914
933
  var DROPDOWN_MENU_NAME = "DropdownMenu";
915
934
  var [createDropdownMenuContext, createDropdownMenuScope] = createContextScope(DROPDOWN_MENU_NAME, [
916
935
  createMenuScope
917
936
  ]);
918
937
  var useMenuScope = createMenuScope();
919
938
  var [DropdownMenuProvider, useDropdownMenuContext] = createDropdownMenuContext(DROPDOWN_MENU_NAME);
920
- var DropdownMenuRoot = (props) => {
921
- const { __scopeDropdownMenu, children, dir, open: openProp, defaultOpen, onOpenChange, modal = true } = props;
939
+ var DropdownMenuRoot = ({ __scopeDropdownMenu, children, dir, modal = true, open: openProp, defaultOpen, onOpenChange }) => {
922
940
  const menuScope = useMenuScope(__scopeDropdownMenu);
923
941
  const triggerRef = useRef2(null);
924
942
  const [open = false, setOpen] = useControllableState({
@@ -926,7 +944,7 @@ var DropdownMenuRoot = (props) => {
926
944
  defaultProp: defaultOpen,
927
945
  onChange: onOpenChange
928
946
  });
929
- return /* @__PURE__ */ React15.createElement(DropdownMenuProvider, {
947
+ return /* @__PURE__ */ React16.createElement(DropdownMenuProvider, {
930
948
  scope: __scopeDropdownMenu,
931
949
  triggerId: useId2(),
932
950
  triggerRef,
@@ -937,24 +955,24 @@ var DropdownMenuRoot = (props) => {
937
955
  setOpen
938
956
  ]),
939
957
  modal
940
- }, /* @__PURE__ */ React15.createElement(MenuPrimitive.Root, {
958
+ }, /* @__PURE__ */ React16.createElement(MenuPrimitive.Root, {
941
959
  ...menuScope,
942
- open,
943
- onOpenChange: setOpen,
944
960
  dir,
945
- modal
961
+ modal,
962
+ open,
963
+ onOpenChange: setOpen
946
964
  }, children));
947
965
  };
948
966
  DropdownMenuRoot.displayName = DROPDOWN_MENU_NAME;
949
967
  var TRIGGER_NAME = "DropdownMenuTrigger";
950
- var DropdownMenuTrigger = /* @__PURE__ */ forwardRef12((props, forwardedRef) => {
968
+ var DropdownMenuTrigger = /* @__PURE__ */ forwardRef10((props, forwardedRef) => {
951
969
  const { __scopeDropdownMenu, disabled = false, ...triggerProps } = props;
952
970
  const context = useDropdownMenuContext(TRIGGER_NAME, __scopeDropdownMenu);
953
971
  const menuScope = useMenuScope(__scopeDropdownMenu);
954
- return /* @__PURE__ */ React15.createElement(MenuPrimitive.Anchor, {
972
+ return /* @__PURE__ */ React16.createElement(MenuPrimitive.Anchor, {
955
973
  asChild: true,
956
974
  ...menuScope
957
- }, /* @__PURE__ */ React15.createElement(Primitive8.button, {
975
+ }, /* @__PURE__ */ React16.createElement(Primitive10.button, {
958
976
  type: "button",
959
977
  id: context.triggerId,
960
978
  "aria-haspopup": "menu",
@@ -1008,7 +1026,7 @@ var DropdownMenuVirtualTrigger = (props) => {
1008
1026
  context.triggerRef.current = virtualRef.current;
1009
1027
  }
1010
1028
  });
1011
- return /* @__PURE__ */ React15.createElement(MenuPrimitive.Anchor, {
1029
+ return /* @__PURE__ */ React16.createElement(MenuPrimitive.Anchor, {
1012
1030
  ...menuScope,
1013
1031
  virtualRef
1014
1032
  });
@@ -1018,23 +1036,23 @@ var PORTAL_NAME = "DropdownMenuPortal";
1018
1036
  var DropdownMenuPortal = (props) => {
1019
1037
  const { __scopeDropdownMenu, ...portalProps } = props;
1020
1038
  const menuScope = useMenuScope(__scopeDropdownMenu);
1021
- return /* @__PURE__ */ React15.createElement(MenuPrimitive.Portal, {
1039
+ return /* @__PURE__ */ React16.createElement(MenuPrimitive.Portal, {
1022
1040
  ...menuScope,
1023
1041
  ...portalProps
1024
1042
  });
1025
1043
  };
1026
1044
  DropdownMenuPortal.displayName = PORTAL_NAME;
1027
- var DropdownMenuViewport = /* @__PURE__ */ forwardRef12(({ classNames, asChild, children, ...props }, forwardedRef) => {
1045
+ var DropdownMenuViewport = /* @__PURE__ */ forwardRef10(({ classNames, asChild, children, ...props }, forwardedRef) => {
1028
1046
  const { tx } = useThemeContext();
1029
- const Comp = asChild ? Slot8 : Primitive8.div;
1030
- return /* @__PURE__ */ React15.createElement(Comp, {
1047
+ const Comp = asChild ? Slot10 : Primitive10.div;
1048
+ return /* @__PURE__ */ React16.createElement(Comp, {
1031
1049
  ...props,
1032
1050
  className: tx("menu.viewport", {}, classNames),
1033
1051
  ref: forwardedRef
1034
1052
  }, children);
1035
1053
  });
1036
1054
  var CONTENT_NAME = "DropdownMenuContent";
1037
- var DropdownMenuContent = /* @__PURE__ */ forwardRef12((props, forwardedRef) => {
1055
+ var DropdownMenuContent = /* @__PURE__ */ forwardRef10((props, forwardedRef) => {
1038
1056
  const { __scopeDropdownMenu, classNames, collisionPadding = 8, collisionBoundary, ...contentProps } = props;
1039
1057
  const { tx } = useThemeContext();
1040
1058
  const context = useDropdownMenuContext(CONTENT_NAME, __scopeDropdownMenu);
@@ -1058,7 +1076,7 @@ var DropdownMenuContent = /* @__PURE__ */ forwardRef12((props, forwardedRef) =>
1058
1076
  collisionBoundary,
1059
1077
  context.triggerRef.current
1060
1078
  ]);
1061
- return /* @__PURE__ */ React15.createElement(MenuPrimitive.Content, {
1079
+ return /* @__PURE__ */ React16.createElement(MenuPrimitive.Content, {
1062
1080
  id: context.contentId,
1063
1081
  "aria-labelledby": context.triggerId,
1064
1082
  ...menuScope,
@@ -1100,10 +1118,10 @@ var DropdownMenuContent = /* @__PURE__ */ forwardRef12((props, forwardedRef) =>
1100
1118
  });
1101
1119
  DropdownMenuContent.displayName = CONTENT_NAME;
1102
1120
  var GROUP_NAME = "DropdownMenuGroup";
1103
- var DropdownMenuGroup = /* @__PURE__ */ forwardRef12((props, forwardedRef) => {
1121
+ var DropdownMenuGroup = /* @__PURE__ */ forwardRef10((props, forwardedRef) => {
1104
1122
  const { __scopeDropdownMenu, ...groupProps } = props;
1105
1123
  const menuScope = useMenuScope(__scopeDropdownMenu);
1106
- return /* @__PURE__ */ React15.createElement(MenuPrimitive.Group, {
1124
+ return /* @__PURE__ */ React16.createElement(MenuPrimitive.Group, {
1107
1125
  ...menuScope,
1108
1126
  ...groupProps,
1109
1127
  ref: forwardedRef
@@ -1111,11 +1129,11 @@ var DropdownMenuGroup = /* @__PURE__ */ forwardRef12((props, forwardedRef) => {
1111
1129
  });
1112
1130
  DropdownMenuGroup.displayName = GROUP_NAME;
1113
1131
  var LABEL_NAME = "DropdownMenuLabel";
1114
- var DropdownMenuGroupLabel = /* @__PURE__ */ forwardRef12((props, forwardedRef) => {
1132
+ var DropdownMenuGroupLabel = /* @__PURE__ */ forwardRef10((props, forwardedRef) => {
1115
1133
  const { __scopeDropdownMenu, classNames, ...labelProps } = props;
1116
1134
  const menuScope = useMenuScope(__scopeDropdownMenu);
1117
1135
  const { tx } = useThemeContext();
1118
- return /* @__PURE__ */ React15.createElement(MenuPrimitive.Label, {
1136
+ return /* @__PURE__ */ React16.createElement(MenuPrimitive.Label, {
1119
1137
  ...menuScope,
1120
1138
  ...labelProps,
1121
1139
  className: tx("menu.groupLabel", {}, classNames),
@@ -1124,11 +1142,11 @@ var DropdownMenuGroupLabel = /* @__PURE__ */ forwardRef12((props, forwardedRef)
1124
1142
  });
1125
1143
  DropdownMenuGroupLabel.displayName = LABEL_NAME;
1126
1144
  var ITEM_NAME = "DropdownMenuItem";
1127
- var DropdownMenuItem = /* @__PURE__ */ forwardRef12((props, forwardedRef) => {
1145
+ var DropdownMenuItem = /* @__PURE__ */ forwardRef10((props, forwardedRef) => {
1128
1146
  const { __scopeDropdownMenu, classNames, ...itemProps } = props;
1129
1147
  const menuScope = useMenuScope(__scopeDropdownMenu);
1130
1148
  const { tx } = useThemeContext();
1131
- return /* @__PURE__ */ React15.createElement(MenuPrimitive.Item, {
1149
+ return /* @__PURE__ */ React16.createElement(MenuPrimitive.Item, {
1132
1150
  ...menuScope,
1133
1151
  ...itemProps,
1134
1152
  className: tx("menu.item", {}, classNames),
@@ -1137,11 +1155,11 @@ var DropdownMenuItem = /* @__PURE__ */ forwardRef12((props, forwardedRef) => {
1137
1155
  });
1138
1156
  DropdownMenuItem.displayName = ITEM_NAME;
1139
1157
  var CHECKBOX_ITEM_NAME = "DropdownMenuCheckboxItem";
1140
- var DropdownMenuCheckboxItem = /* @__PURE__ */ forwardRef12((props, forwardedRef) => {
1158
+ var DropdownMenuCheckboxItem = /* @__PURE__ */ forwardRef10((props, forwardedRef) => {
1141
1159
  const { __scopeDropdownMenu, classNames, ...checkboxItemProps } = props;
1142
1160
  const menuScope = useMenuScope(__scopeDropdownMenu);
1143
1161
  const { tx } = useThemeContext();
1144
- return /* @__PURE__ */ React15.createElement(MenuPrimitive.CheckboxItem, {
1162
+ return /* @__PURE__ */ React16.createElement(MenuPrimitive.CheckboxItem, {
1145
1163
  ...menuScope,
1146
1164
  ...checkboxItemProps,
1147
1165
  className: tx("menu.item", {}, classNames),
@@ -1150,10 +1168,10 @@ var DropdownMenuCheckboxItem = /* @__PURE__ */ forwardRef12((props, forwardedRef
1150
1168
  });
1151
1169
  DropdownMenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME;
1152
1170
  var RADIO_GROUP_NAME = "DropdownMenuRadioGroup";
1153
- var DropdownMenuRadioGroup = /* @__PURE__ */ forwardRef12((props, forwardedRef) => {
1171
+ var DropdownMenuRadioGroup = /* @__PURE__ */ forwardRef10((props, forwardedRef) => {
1154
1172
  const { __scopeDropdownMenu, ...radioGroupProps } = props;
1155
1173
  const menuScope = useMenuScope(__scopeDropdownMenu);
1156
- return /* @__PURE__ */ React15.createElement(MenuPrimitive.RadioGroup, {
1174
+ return /* @__PURE__ */ React16.createElement(MenuPrimitive.RadioGroup, {
1157
1175
  ...menuScope,
1158
1176
  ...radioGroupProps,
1159
1177
  ref: forwardedRef
@@ -1161,11 +1179,11 @@ var DropdownMenuRadioGroup = /* @__PURE__ */ forwardRef12((props, forwardedRef)
1161
1179
  });
1162
1180
  DropdownMenuRadioGroup.displayName = RADIO_GROUP_NAME;
1163
1181
  var RADIO_ITEM_NAME = "DropdownMenuRadioItem";
1164
- var DropdownMenuRadioItem = /* @__PURE__ */ forwardRef12((props, forwardedRef) => {
1182
+ var DropdownMenuRadioItem = /* @__PURE__ */ forwardRef10((props, forwardedRef) => {
1165
1183
  const { __scopeDropdownMenu, classNames, ...itemProps } = props;
1166
1184
  const menuScope = useMenuScope(__scopeDropdownMenu);
1167
1185
  const { tx } = useThemeContext();
1168
- return /* @__PURE__ */ React15.createElement(MenuPrimitive.Item, {
1186
+ return /* @__PURE__ */ React16.createElement(MenuPrimitive.Item, {
1169
1187
  ...menuScope,
1170
1188
  ...itemProps,
1171
1189
  className: tx("menu.item", {}, classNames),
@@ -1174,10 +1192,10 @@ var DropdownMenuRadioItem = /* @__PURE__ */ forwardRef12((props, forwardedRef) =
1174
1192
  });
1175
1193
  DropdownMenuRadioItem.displayName = RADIO_ITEM_NAME;
1176
1194
  var INDICATOR_NAME = "DropdownMenuItemIndicator";
1177
- var DropdownMenuItemIndicator = /* @__PURE__ */ forwardRef12((props, forwardedRef) => {
1195
+ var DropdownMenuItemIndicator = /* @__PURE__ */ forwardRef10((props, forwardedRef) => {
1178
1196
  const { __scopeDropdownMenu, ...itemIndicatorProps } = props;
1179
1197
  const menuScope = useMenuScope(__scopeDropdownMenu);
1180
- return /* @__PURE__ */ React15.createElement(MenuPrimitive.ItemIndicator, {
1198
+ return /* @__PURE__ */ React16.createElement(MenuPrimitive.ItemIndicator, {
1181
1199
  ...menuScope,
1182
1200
  ...itemIndicatorProps,
1183
1201
  ref: forwardedRef
@@ -1185,11 +1203,11 @@ var DropdownMenuItemIndicator = /* @__PURE__ */ forwardRef12((props, forwardedRe
1185
1203
  });
1186
1204
  DropdownMenuItemIndicator.displayName = INDICATOR_NAME;
1187
1205
  var SEPARATOR_NAME = "DropdownMenuSeparator";
1188
- var DropdownMenuSeparator = /* @__PURE__ */ forwardRef12((props, forwardedRef) => {
1206
+ var DropdownMenuSeparator = /* @__PURE__ */ forwardRef10((props, forwardedRef) => {
1189
1207
  const { __scopeDropdownMenu, classNames, ...separatorProps } = props;
1190
1208
  const menuScope = useMenuScope(__scopeDropdownMenu);
1191
1209
  const { tx } = useThemeContext();
1192
- return /* @__PURE__ */ React15.createElement(MenuPrimitive.Separator, {
1210
+ return /* @__PURE__ */ React16.createElement(MenuPrimitive.Separator, {
1193
1211
  ...menuScope,
1194
1212
  ...separatorProps,
1195
1213
  className: tx("menu.separator", {}, classNames),
@@ -1198,11 +1216,11 @@ var DropdownMenuSeparator = /* @__PURE__ */ forwardRef12((props, forwardedRef) =
1198
1216
  });
1199
1217
  DropdownMenuSeparator.displayName = SEPARATOR_NAME;
1200
1218
  var ARROW_NAME = "DropdownMenuArrow";
1201
- var DropdownMenuArrow = /* @__PURE__ */ forwardRef12((props, forwardedRef) => {
1219
+ var DropdownMenuArrow = /* @__PURE__ */ forwardRef10((props, forwardedRef) => {
1202
1220
  const { __scopeDropdownMenu, classNames, ...arrowProps } = props;
1203
1221
  const menuScope = useMenuScope(__scopeDropdownMenu);
1204
1222
  const { tx } = useThemeContext();
1205
- return /* @__PURE__ */ React15.createElement(MenuPrimitive.Arrow, {
1223
+ return /* @__PURE__ */ React16.createElement(MenuPrimitive.Arrow, {
1206
1224
  ...menuScope,
1207
1225
  ...arrowProps,
1208
1226
  className: tx("menu.arrow", {}, classNames),
@@ -1218,17 +1236,17 @@ var DropdownMenuSub = (props) => {
1218
1236
  defaultProp: defaultOpen,
1219
1237
  onChange: onOpenChange
1220
1238
  });
1221
- return /* @__PURE__ */ React15.createElement(MenuPrimitive.Sub, {
1239
+ return /* @__PURE__ */ React16.createElement(MenuPrimitive.Sub, {
1222
1240
  ...menuScope,
1223
1241
  open,
1224
1242
  onOpenChange: setOpen
1225
1243
  }, children);
1226
1244
  };
1227
1245
  var SUB_TRIGGER_NAME = "DropdownMenuSubTrigger";
1228
- var DropdownMenuSubTrigger = /* @__PURE__ */ forwardRef12((props, forwardedRef) => {
1246
+ var DropdownMenuSubTrigger = /* @__PURE__ */ forwardRef10((props, forwardedRef) => {
1229
1247
  const { __scopeDropdownMenu, ...subTriggerProps } = props;
1230
1248
  const menuScope = useMenuScope(__scopeDropdownMenu);
1231
- return /* @__PURE__ */ React15.createElement(MenuPrimitive.SubTrigger, {
1249
+ return /* @__PURE__ */ React16.createElement(MenuPrimitive.SubTrigger, {
1232
1250
  ...menuScope,
1233
1251
  ...subTriggerProps,
1234
1252
  ref: forwardedRef
@@ -1236,10 +1254,10 @@ var DropdownMenuSubTrigger = /* @__PURE__ */ forwardRef12((props, forwardedRef)
1236
1254
  });
1237
1255
  DropdownMenuSubTrigger.displayName = SUB_TRIGGER_NAME;
1238
1256
  var SUB_CONTENT_NAME = "DropdownMenuSubContent";
1239
- var DropdownMenuSubContent = /* @__PURE__ */ forwardRef12((props, forwardedRef) => {
1257
+ var DropdownMenuSubContent = /* @__PURE__ */ forwardRef10((props, forwardedRef) => {
1240
1258
  const { __scopeDropdownMenu, ...subContentProps } = props;
1241
1259
  const menuScope = useMenuScope(__scopeDropdownMenu);
1242
- return /* @__PURE__ */ React15.createElement(MenuPrimitive.SubContent, {
1260
+ return /* @__PURE__ */ React16.createElement(MenuPrimitive.SubContent, {
1243
1261
  ...menuScope,
1244
1262
  ...subContentProps,
1245
1263
  ref: forwardedRef,
@@ -1280,13 +1298,13 @@ var DropdownMenu = {
1280
1298
  var useDropdownMenuMenuScope = useMenuScope;
1281
1299
 
1282
1300
  // src/components/Separator/Separator.tsx
1283
- import { Separator as SeparatorPrimitive } from "@radix-ui/react-separator";
1284
- import React16, { forwardRef as forwardRef13 } from "react";
1285
- var Separator3 = /* @__PURE__ */ forwardRef13(({ classNames, orientation = "horizontal", subdued, ...props }, forwardedRef) => {
1301
+ import * as SeparatorPrimitive from "@radix-ui/react-separator";
1302
+ import React17, { forwardRef as forwardRef11 } from "react";
1303
+ var Separator3 = /* @__PURE__ */ forwardRef11(({ classNames, orientation = "horizontal", subdued, ...props }, forwardedRef) => {
1286
1304
  const { tx } = useThemeContext();
1287
- return /* @__PURE__ */ React16.createElement(SeparatorPrimitive, {
1288
- orientation,
1305
+ return /* @__PURE__ */ React17.createElement(SeparatorPrimitive.Root, {
1289
1306
  ...props,
1307
+ orientation,
1290
1308
  className: tx("separator.root", {
1291
1309
  orientation,
1292
1310
  subdued
@@ -1296,87 +1314,83 @@ var Separator3 = /* @__PURE__ */ forwardRef13(({ classNames, orientation = "hori
1296
1314
  });
1297
1315
 
1298
1316
  // src/components/Toolbar/Toolbar.tsx
1299
- var ToolbarRoot = /* @__PURE__ */ forwardRef14(({ classNames, children, density, disabled, layoutManaged, textBlockWidth: textBlockWidthProp, ...props }, forwardedRef) => {
1317
+ var ToolbarRoot = composable2(({ children, density, disabled, layoutManaged, orientation, ...props }, forwardedRef) => {
1318
+ const { className, role, ...rest } = composableProps6(props);
1300
1319
  const { tx } = useThemeContext();
1301
- const InnerRoot = textBlockWidthProp ? "div" : Fragment;
1302
- const innerRootProps = textBlockWidthProp ? {
1303
- role: "none",
1304
- className: tx("toolbar.inner", {
1305
- layoutManaged
1306
- }, classNames)
1307
- } : {};
1308
- return /* @__PURE__ */ React17.createElement(ToolbarPrimitive.Root, {
1309
- ...props,
1310
- "data-arrow-keys": props.orientation === "vertical" ? "up down" : "left right",
1320
+ return /* @__PURE__ */ React18.createElement(ToolbarPrimitive.Root, {
1321
+ ...rest,
1322
+ ...role !== "none" && {
1323
+ role
1324
+ },
1325
+ orientation,
1326
+ "data-arrow-keys": orientation === "vertical" ? "up down" : "left right",
1311
1327
  className: tx("toolbar.root", {
1312
1328
  density,
1313
1329
  disabled,
1314
1330
  layoutManaged
1315
- }, classNames),
1331
+ }, className),
1316
1332
  ref: forwardedRef
1317
- }, /* @__PURE__ */ React17.createElement(InnerRoot, innerRootProps, children));
1333
+ }, children);
1318
1334
  });
1319
- var ToolbarText = /* @__PURE__ */ forwardRef14(({ classNames, className, asChild, children, ...props }, forwardedRef) => {
1335
+ var ToolbarText = slottable5(({ children, asChild, ...props }, forwardedRef) => {
1336
+ const { className, ...rest } = composableProps6(props);
1337
+ const Comp = asChild ? Slot11 : Primitive11.div;
1320
1338
  const { tx } = useThemeContext();
1321
- const Comp = asChild ? Slot9 : Primitive9.div;
1322
- return /* @__PURE__ */ React17.createElement(Comp, {
1323
- ...props,
1324
- className: tx("toolbar.text", {}, [
1325
- className,
1326
- classNames
1327
- ]),
1339
+ return /* @__PURE__ */ React18.createElement(Comp, {
1340
+ ...rest,
1341
+ className: tx("toolbar.text", {}, className),
1328
1342
  ref: forwardedRef
1329
1343
  }, children);
1330
1344
  });
1331
- var ToolbarButton = /* @__PURE__ */ forwardRef14((props, forwardedRef) => {
1332
- return /* @__PURE__ */ React17.createElement(ToolbarPrimitive.Button, {
1345
+ var ToolbarButton = /* @__PURE__ */ forwardRef12((props, forwardedRef) => {
1346
+ return /* @__PURE__ */ React18.createElement(ToolbarPrimitive.Button, {
1333
1347
  asChild: true
1334
- }, /* @__PURE__ */ React17.createElement(Button, {
1348
+ }, /* @__PURE__ */ React18.createElement(Button, {
1335
1349
  ...props,
1336
1350
  ref: forwardedRef
1337
1351
  }));
1338
1352
  });
1339
- var ToolbarIconButton = /* @__PURE__ */ forwardRef14((props, forwardedRef) => {
1340
- return /* @__PURE__ */ React17.createElement(ToolbarPrimitive.Button, {
1353
+ var ToolbarIconButton = /* @__PURE__ */ forwardRef12((props, forwardedRef) => {
1354
+ return /* @__PURE__ */ React18.createElement(ToolbarPrimitive.Button, {
1341
1355
  asChild: true
1342
- }, /* @__PURE__ */ React17.createElement(IconButton, {
1356
+ }, /* @__PURE__ */ React18.createElement(IconButton, {
1343
1357
  ...props,
1344
1358
  noTooltip: true,
1345
1359
  ref: forwardedRef
1346
1360
  }));
1347
1361
  });
1348
- var ToolbarToggle = /* @__PURE__ */ forwardRef14((props, forwardedRef) => {
1349
- return /* @__PURE__ */ React17.createElement(ToolbarPrimitive.Button, {
1362
+ var ToolbarToggle = /* @__PURE__ */ forwardRef12((props, forwardedRef) => {
1363
+ return /* @__PURE__ */ React18.createElement(ToolbarPrimitive.Button, {
1350
1364
  asChild: true
1351
- }, /* @__PURE__ */ React17.createElement(Toggle, {
1365
+ }, /* @__PURE__ */ React18.createElement(Toggle, {
1352
1366
  ...props,
1353
1367
  ref: forwardedRef
1354
1368
  }));
1355
1369
  });
1356
- var ToolbarLink = /* @__PURE__ */ forwardRef14((props, forwardedRef) => {
1357
- return /* @__PURE__ */ React17.createElement(ToolbarPrimitive.Link, {
1370
+ var ToolbarLink = /* @__PURE__ */ forwardRef12((props, forwardedRef) => {
1371
+ return /* @__PURE__ */ React18.createElement(ToolbarPrimitive.Link, {
1358
1372
  asChild: true
1359
- }, /* @__PURE__ */ React17.createElement(Link, {
1373
+ }, /* @__PURE__ */ React18.createElement(Link, {
1360
1374
  ...props,
1361
1375
  ref: forwardedRef
1362
1376
  }));
1363
1377
  });
1364
- var ToolbarToggleGroup2 = /* @__PURE__ */ forwardRef14(({ classNames, children, elevation, ...props }, forwardedRef) => {
1365
- return /* @__PURE__ */ React17.createElement(ToolbarPrimitive.ToolbarToggleGroup, {
1378
+ var ToolbarToggleGroup2 = /* @__PURE__ */ forwardRef12(({ classNames, children, elevation, ...props }, forwardedRef) => {
1379
+ return /* @__PURE__ */ React18.createElement(ToolbarPrimitive.ToolbarToggleGroup, {
1366
1380
  ...props,
1367
1381
  asChild: true
1368
- }, /* @__PURE__ */ React17.createElement(ButtonGroup, {
1382
+ }, /* @__PURE__ */ React18.createElement(ButtonGroup, {
1369
1383
  classNames,
1370
1384
  children,
1371
1385
  elevation,
1372
1386
  ref: forwardedRef
1373
1387
  }));
1374
1388
  });
1375
- var ToolbarToggleGroupItem = /* @__PURE__ */ forwardRef14(({ variant, density, elevation, classNames, children, ...props }, forwardedRef) => {
1376
- return /* @__PURE__ */ React17.createElement(ToolbarPrimitive.ToolbarToggleItem, {
1389
+ var ToolbarToggleGroupItem = /* @__PURE__ */ forwardRef12(({ variant, density, elevation, classNames, children, ...props }, forwardedRef) => {
1390
+ return /* @__PURE__ */ React18.createElement(ToolbarPrimitive.ToolbarToggleItem, {
1377
1391
  ...props,
1378
1392
  asChild: true
1379
- }, /* @__PURE__ */ React17.createElement(Button, {
1393
+ }, /* @__PURE__ */ React18.createElement(Button, {
1380
1394
  variant,
1381
1395
  density,
1382
1396
  elevation,
@@ -1385,11 +1399,11 @@ var ToolbarToggleGroupItem = /* @__PURE__ */ forwardRef14(({ variant, density, e
1385
1399
  ref: forwardedRef
1386
1400
  }));
1387
1401
  });
1388
- var ToolbarToggleGroupIconItem = /* @__PURE__ */ forwardRef14(({ variant, density, elevation, classNames, icon, label, iconOnly, ...props }, forwardedRef) => {
1389
- return /* @__PURE__ */ React17.createElement(ToolbarPrimitive.ToolbarToggleItem, {
1402
+ var ToolbarToggleGroupIconItem = /* @__PURE__ */ forwardRef12(({ variant, density, elevation, classNames, icon, label, iconOnly, ...props }, forwardedRef) => {
1403
+ return /* @__PURE__ */ React18.createElement(ToolbarPrimitive.ToolbarToggleItem, {
1390
1404
  ...props,
1391
1405
  asChild: true
1392
- }, /* @__PURE__ */ React17.createElement(IconButton, {
1406
+ }, /* @__PURE__ */ React18.createElement(IconButton, {
1393
1407
  variant,
1394
1408
  density,
1395
1409
  elevation,
@@ -1400,61 +1414,61 @@ var ToolbarToggleGroupIconItem = /* @__PURE__ */ forwardRef14(({ variant, densit
1400
1414
  ref: forwardedRef
1401
1415
  }));
1402
1416
  });
1403
- var ToolbarSeparator = /* @__PURE__ */ forwardRef14(({ variant = "gap", ...props }, forwardedRef) => {
1404
- return variant === "line" ? /* @__PURE__ */ React17.createElement(ToolbarPrimitive.Separator, {
1417
+ var ToolbarSeparator = /* @__PURE__ */ forwardRef12(({ variant = "gap", ...props }, forwardedRef) => {
1418
+ return variant === "line" ? /* @__PURE__ */ React18.createElement(ToolbarPrimitive.Separator, {
1405
1419
  asChild: true
1406
- }, /* @__PURE__ */ React17.createElement(Separator3, {
1420
+ }, /* @__PURE__ */ React18.createElement(Separator3, {
1421
+ orientation: "vertical",
1407
1422
  ...props,
1408
1423
  ref: forwardedRef
1409
- })) : /* @__PURE__ */ React17.createElement(ToolbarPrimitive.Separator, {
1424
+ })) : /* @__PURE__ */ React18.createElement(ToolbarPrimitive.Separator, {
1410
1425
  className: "grow",
1411
1426
  ref: forwardedRef
1412
1427
  });
1413
1428
  });
1414
- var ToolbarDragHandle = /* @__PURE__ */ forwardRef14(({ testId = "drag-handle", label }, forwardedRef) => {
1429
+ var ToolbarDragHandle = /* @__PURE__ */ forwardRef12(({ testId = "drag-handle", label }, forwardedRef) => {
1415
1430
  const { t } = useTranslation2(translationKey);
1416
- return /* @__PURE__ */ React17.createElement(ToolbarIconButton, {
1431
+ return /* @__PURE__ */ React18.createElement(ToolbarIconButton, {
1417
1432
  "data-testid": testId,
1433
+ tabIndex: -1,
1418
1434
  noTooltip: true,
1419
1435
  iconOnly: true,
1420
1436
  icon: "ph--dots-six-vertical--regular",
1421
1437
  variant: "ghost",
1422
- label: label ?? t("toolbar drag handle label"),
1423
- classNames: "cursor-pointer",
1424
- size: 5,
1438
+ label: label ?? t("toolbar-drag-handle.label"),
1439
+ classNames: "dx-focus-ring-none cursor-pointer",
1425
1440
  disabled: !forwardedRef,
1426
1441
  ref: forwardedRef
1427
1442
  });
1428
1443
  });
1429
- var ToolbarCloseIconButton = /* @__PURE__ */ forwardRef14(({ onClick, label }, forwardedRef) => {
1444
+ var ToolbarCloseIconButton = /* @__PURE__ */ forwardRef12(({ onClick, label }, forwardedRef) => {
1430
1445
  const { t } = useTranslation2(translationKey);
1431
- return /* @__PURE__ */ React17.createElement(ToolbarIconButton, {
1446
+ return /* @__PURE__ */ React18.createElement(ToolbarIconButton, {
1432
1447
  iconOnly: true,
1433
1448
  icon: "ph--x--regular",
1434
1449
  variant: "ghost",
1435
- label: label ?? t("toolbar close label"),
1450
+ label: label ?? t("toolbar-close.label"),
1436
1451
  classNames: "cursor-pointer",
1437
- size: 5,
1438
1452
  onClick,
1439
1453
  ref: forwardedRef
1440
1454
  });
1441
1455
  });
1442
1456
  var ToolbarMenu = ({ context, items }) => {
1443
1457
  const { t } = useTranslation2(translationKey);
1444
- return /* @__PURE__ */ React17.createElement(DropdownMenu.Root, null, /* @__PURE__ */ React17.createElement(DropdownMenu.Trigger, {
1458
+ return /* @__PURE__ */ React18.createElement(DropdownMenu.Root, null, /* @__PURE__ */ React18.createElement(DropdownMenu.Trigger, {
1445
1459
  disabled: !items?.length,
1446
1460
  asChild: true
1447
- }, /* @__PURE__ */ React17.createElement(ToolbarIconButton, {
1461
+ }, /* @__PURE__ */ React18.createElement(ToolbarIconButton, {
1448
1462
  iconOnly: true,
1449
1463
  variant: "ghost",
1450
1464
  icon: "ph--dots-three-vertical--regular",
1451
- label: t("toolbar menu label")
1452
- })), (items?.length ?? 0) > 0 && /* @__PURE__ */ React17.createElement(DropdownMenu.Portal, null, /* @__PURE__ */ React17.createElement(DropdownMenu.Content, null, /* @__PURE__ */ React17.createElement(DropdownMenu.Viewport, null, items?.map(({ label, onClick: onSelect }, index) => /* @__PURE__ */ React17.createElement(DropdownMenu.Item, {
1465
+ label: t("toolbar-menu.label")
1466
+ })), (items?.length ?? 0) > 0 && /* @__PURE__ */ React18.createElement(DropdownMenu.Portal, null, /* @__PURE__ */ React18.createElement(DropdownMenu.Content, null, /* @__PURE__ */ React18.createElement(DropdownMenu.Viewport, null, items?.map(({ label, onClick: onSelect }, index) => /* @__PURE__ */ React18.createElement(DropdownMenu.Item, {
1453
1467
  key: index,
1454
1468
  onSelect: () => onSelect(context)
1455
- }, label))), /* @__PURE__ */ React17.createElement(DropdownMenu.Arrow, null))));
1469
+ }, label))), /* @__PURE__ */ React18.createElement(DropdownMenu.Arrow, null))));
1456
1470
  };
1457
- var Toolbar2 = {
1471
+ var Toolbar = {
1458
1472
  Root: ToolbarRoot,
1459
1473
  Text: ToolbarText,
1460
1474
  Button: ToolbarButton,
@@ -1472,11 +1486,13 @@ var Toolbar2 = {
1472
1486
 
1473
1487
  // src/components/Card/Card.tsx
1474
1488
  var CardContext = /* @__PURE__ */ createContext3({});
1475
- var CardRoot = /* @__PURE__ */ forwardRef15(({ children, classNames, className, id, asChild, role, border = true, fullWidth, ...props }, forwardedRef) => {
1489
+ var CARD_ROOT_NAME = "Card.Root";
1490
+ var CardRoot = slottable6(({ children, id, asChild, role, border = true, fullWidth, density, ...props }, forwardedRef) => {
1491
+ const { className, ...rest } = composableProps7(props);
1492
+ const Comp = asChild ? Slot12 : Primitive12.div;
1476
1493
  const { tx } = useThemeContext();
1477
- const Comp = asChild ? Slot10 : Primitive10.div;
1478
- return /* @__PURE__ */ React18.createElement(Comp, {
1479
- ...props,
1494
+ return /* @__PURE__ */ React19.createElement(Comp, {
1495
+ ...rest,
1480
1496
  ...id && {
1481
1497
  "data-object-id": id
1482
1498
  },
@@ -1484,226 +1500,290 @@ var CardRoot = /* @__PURE__ */ forwardRef15(({ children, classNames, className,
1484
1500
  className: tx("card.root", {
1485
1501
  border,
1486
1502
  fullWidth
1487
- }, [
1488
- className,
1489
- classNames
1490
- ]),
1503
+ }, className),
1491
1504
  ref: forwardedRef
1492
- }, /* @__PURE__ */ React18.createElement(Column.Root, {
1493
- gutter: "rail"
1505
+ }, /* @__PURE__ */ React19.createElement(Column.Root, {
1506
+ classNames: "overflow-hidden",
1507
+ gutter: density === "coarse" ? "lg" : "md"
1494
1508
  }, children));
1495
1509
  });
1496
- var CardToolbar = /* @__PURE__ */ forwardRef15(({ children, classNames, density = "fine", ...props }, forwardedRef) => {
1510
+ CardRoot.displayName = CARD_ROOT_NAME;
1511
+ var CARD_TOOLBAR_NAME = "Card.Toolbar";
1512
+ var CardToolbar = composable3(({ children, classNames, ...props }, forwardedRef) => {
1497
1513
  const { tx } = useThemeContext();
1498
- return /* @__PURE__ */ React18.createElement(Toolbar2.Root, {
1514
+ return /* @__PURE__ */ React19.createElement(Toolbar.Root, {
1499
1515
  ...props,
1516
+ style: iconSize(5),
1500
1517
  classNames: [
1501
- tx("card.toolbar", {
1502
- coarse: density !== "fine"
1503
- }),
1518
+ tx("card.toolbar", {}),
1504
1519
  classNames
1505
1520
  ],
1506
1521
  ref: forwardedRef
1507
1522
  }, children);
1508
1523
  });
1509
- var CardMenu = ({ context, items }) => {
1524
+ CardToolbar.displayName = CARD_TOOLBAR_NAME;
1525
+ var CARD_DRAG_HANDLE_NAME = "Card.DragHandle";
1526
+ var CardDragHandle = /* @__PURE__ */ forwardRef13((props, forwardedRef) => {
1527
+ return /* @__PURE__ */ React19.createElement(CardIconBlock, {
1528
+ padding: true
1529
+ }, /* @__PURE__ */ React19.createElement(Toolbar.DragHandle, {
1530
+ ...props,
1531
+ ref: forwardedRef
1532
+ }));
1533
+ });
1534
+ CardDragHandle.displayName = CARD_DRAG_HANDLE_NAME;
1535
+ var CARD_CLOSE_ICON_BUTTON_NAME = "Card.CloseIconButton";
1536
+ var CloseIconButton = /* @__PURE__ */ forwardRef13((props, forwardedRef) => {
1537
+ return /* @__PURE__ */ React19.createElement(CardIconBlock, {
1538
+ padding: true
1539
+ }, /* @__PURE__ */ React19.createElement(Toolbar.CloseIconButton, {
1540
+ ...props,
1541
+ ref: forwardedRef
1542
+ }));
1543
+ });
1544
+ CloseIconButton.displayName = CARD_CLOSE_ICON_BUTTON_NAME;
1545
+ var CARD_MENU_NAME = "Card.Menu";
1546
+ var CardMenu = ({ context, items, ...props }) => {
1510
1547
  const { menuItems } = useContext3(CardContext) ?? {};
1511
1548
  const combinedItems = [
1512
1549
  ...items ?? [],
1513
1550
  ...menuItems ?? []
1514
1551
  ];
1515
- return /* @__PURE__ */ React18.createElement(Toolbar2.Menu, {
1552
+ return /* @__PURE__ */ React19.createElement(CardIconBlock, {
1553
+ padding: true
1554
+ }, /* @__PURE__ */ React19.createElement(Toolbar.Menu, {
1555
+ ...props,
1516
1556
  context,
1517
1557
  items: combinedItems
1518
- });
1558
+ }));
1519
1559
  };
1520
- var CardTitle = /* @__PURE__ */ forwardRef15(({ children, classNames, className, asChild, role, ...props }, forwardedRef) => {
1560
+ CardMenu.displayName = CARD_MENU_NAME;
1561
+ var CARD_ICON_NAME = "Card.Icon";
1562
+ var CardIcon = (props) => {
1563
+ return /* @__PURE__ */ React19.createElement(CardIconBlock, null, /* @__PURE__ */ React19.createElement(Icon, props));
1564
+ };
1565
+ CardIcon.displayName = CARD_ICON_NAME;
1566
+ var CARD_ICON_BLOCK_NAME = "Card.IconBlock";
1567
+ var CardIconBlock = /* @__PURE__ */ forwardRef13(({ classNames, children, padding, ...props }, forwardedRef) => {
1521
1568
  const { tx } = useThemeContext();
1522
- const Comp = asChild ? Slot10 : Primitive10.div;
1523
- return /* @__PURE__ */ React18.createElement(Comp, {
1569
+ return /* @__PURE__ */ React19.createElement("div", {
1524
1570
  ...props,
1525
- role: role ?? "heading",
1526
- className: tx("card.title", {}, [
1527
- className,
1528
- classNames
1529
- ]),
1571
+ role: "none",
1572
+ className: tx("card.icon-block", {
1573
+ padding
1574
+ }, classNames),
1530
1575
  ref: forwardedRef
1531
1576
  }, children);
1532
1577
  });
1533
- var CardContent = /* @__PURE__ */ forwardRef15(({ children, role, ...props }, forwardedRef) => {
1578
+ CardIconBlock.displayName = CARD_ICON_BLOCK_NAME;
1579
+ var CARD_TITLE_NAME = "Card.Title";
1580
+ var CardTitle = slottable6(({ children, asChild, ...props }, forwardedRef) => {
1534
1581
  const { tx } = useThemeContext();
1535
- return /* @__PURE__ */ React18.createElement("div", {
1536
- ...props,
1537
- role: role ?? "none",
1538
- className: tx("card.content", {}),
1582
+ const { className, ...rest } = composableProps7(props, {
1583
+ role: "heading"
1584
+ });
1585
+ const Comp = asChild ? Slot12 : Primitive12.div;
1586
+ return /* @__PURE__ */ React19.createElement(Comp, {
1587
+ ...rest,
1588
+ className: tx("card.title", {}, className),
1539
1589
  ref: forwardedRef
1540
1590
  }, children);
1541
1591
  });
1542
- var CardRow = /* @__PURE__ */ forwardRef15(({ children, classNames, className, role, icon, ...props }, forwardedRef) => {
1543
- return /* @__PURE__ */ React18.createElement(Column.Row, {
1544
- ...props,
1545
- role: role ?? "none",
1546
- classNames: [
1547
- classNames,
1548
- className
1549
- ],
1592
+ CardTitle.displayName = CARD_TITLE_NAME;
1593
+ var CARD_CONTENT_NAME = "Card.Content";
1594
+ var CardContent = slottable6(({ children, asChild, ...props }, forwardedRef) => {
1595
+ const { className, ...rest } = composableProps7(props);
1596
+ const Comp = asChild ? Slot12 : Primitive12.div;
1597
+ const { tx } = useThemeContext();
1598
+ return /* @__PURE__ */ React19.createElement(Comp, {
1599
+ ...rest,
1600
+ className: tx("card.content", {}, className),
1550
1601
  ref: forwardedRef
1551
- }, icon && /* @__PURE__ */ React18.createElement(CardIcon, {
1602
+ }, children);
1603
+ });
1604
+ CardContent.displayName = CARD_CONTENT_NAME;
1605
+ var CARD_ROW_NAME = "Card.Row";
1606
+ var CardRow = slottable6(({ children, asChild, icon, ...props }, forwardedRef) => {
1607
+ const { className, ...rest } = composableProps7(props);
1608
+ const Comp = asChild ? Slot12 : Primitive12.div;
1609
+ const { tx } = useThemeContext();
1610
+ return /* @__PURE__ */ React19.createElement(Comp, {
1611
+ ...rest,
1612
+ className: tx("card.row", {}, className),
1613
+ ref: forwardedRef
1614
+ }, icon && /* @__PURE__ */ React19.createElement(CardIcon, {
1552
1615
  classNames: "text-subdued",
1553
- icon
1554
- }) || /* @__PURE__ */ React18.createElement("div", null), children, /* @__PURE__ */ React18.createElement("div", null));
1616
+ icon,
1617
+ size: 4
1618
+ }) || /* @__PURE__ */ React19.createElement("div", null), children);
1555
1619
  });
1556
- var CardSection = /* @__PURE__ */ forwardRef15(({ children, classNames, className, asChild, role, ...props }, forwardedRef) => {
1557
- const Comp = asChild ? Slot10 : Primitive10.div;
1558
- return /* @__PURE__ */ React18.createElement(Comp, {
1559
- ...props,
1620
+ CardRow.displayName = CARD_ROW_NAME;
1621
+ var CARD_SECTION_NAME = "Card.Section";
1622
+ var CardSection = slottable6(({ children, asChild, role, ...props }, forwardedRef) => {
1623
+ const { className, ...rest } = composableProps7(props);
1624
+ const Comp = asChild ? Slot12 : Primitive12.div;
1625
+ return /* @__PURE__ */ React19.createElement(Comp, {
1626
+ ...rest,
1560
1627
  role: role ?? "none",
1561
- className: mx5(classNames, className, "col-span-full"),
1628
+ className: mx6("col-span-full", className),
1562
1629
  ref: forwardedRef
1563
1630
  }, children);
1564
1631
  });
1565
- var CardHeading = /* @__PURE__ */ forwardRef15(({ children, classNames, className, asChild, role, variant = "default", ...props }, forwardedRef) => {
1632
+ CardSection.displayName = CARD_SECTION_NAME;
1633
+ var CARD_HEADING_NAME = "Card.Heading";
1634
+ var CardHeading = slottable6(({ children, asChild, role, variant = "default", ...props }, forwardedRef) => {
1635
+ const { className, ...rest } = composableProps7(props);
1636
+ const Comp = asChild ? Slot12 : Primitive12.div;
1566
1637
  const { tx } = useThemeContext();
1567
- const Comp = asChild ? Slot10 : Primitive10.div;
1568
- return /* @__PURE__ */ React18.createElement(Comp, {
1569
- ...props,
1638
+ return /* @__PURE__ */ React19.createElement(Comp, {
1639
+ ...rest,
1570
1640
  role: role ?? "heading",
1571
1641
  className: tx("card.heading", {
1572
1642
  variant
1573
- }, [
1574
- classNames,
1575
- className
1576
- ]),
1643
+ }, className),
1577
1644
  ref: forwardedRef
1578
1645
  }, children);
1579
1646
  });
1580
- var CardText = /* @__PURE__ */ forwardRef15(({ children, classNames, className, asChild, role, truncate, variant = "default", ...props }, forwardedRef) => {
1647
+ CardHeading.displayName = CARD_HEADING_NAME;
1648
+ var CARD_TEXT_NAME = "Card.Text";
1649
+ var CardText = slottable6(({ children, asChild, role, truncate, variant = "default", ...props }, forwardedRef) => {
1650
+ const { className, ...rest } = composableProps7(props);
1651
+ const Comp = asChild ? Slot12 : Primitive12.div;
1581
1652
  const { tx } = useThemeContext();
1582
- const Comp = asChild ? Slot10 : Primitive10.div;
1583
- return /* @__PURE__ */ React18.createElement(Comp, {
1584
- ...props,
1653
+ return /* @__PURE__ */ React19.createElement(Comp, {
1654
+ ...rest,
1585
1655
  role: role ?? "none",
1586
1656
  className: tx("card.text", {
1587
1657
  variant
1588
- }, [
1589
- classNames,
1590
- className
1591
- ]),
1658
+ }, className),
1592
1659
  ref: forwardedRef
1593
- }, /* @__PURE__ */ React18.createElement("span", {
1660
+ }, /* @__PURE__ */ React19.createElement("span", {
1594
1661
  className: tx("card.text-span", {
1595
1662
  variant,
1596
1663
  truncate
1597
1664
  })
1598
1665
  }, children));
1599
1666
  });
1667
+ CardText.displayName = CARD_TEXT_NAME;
1668
+ var CARD_HTML_NAME = "Card.Html";
1669
+ var CardHtml = ({ html, variant = "default", ...props }) => {
1670
+ const { tx } = useThemeContext();
1671
+ const sanitized = useMemo4(() => DOMPurify.sanitize(html), [
1672
+ html
1673
+ ]);
1674
+ return /* @__PURE__ */ React19.createElement("div", {
1675
+ ...props,
1676
+ role: "none",
1677
+ className: tx("card.text", {
1678
+ variant
1679
+ }),
1680
+ // eslint-disable-next-line react/no-danger
1681
+ dangerouslySetInnerHTML: {
1682
+ __html: sanitized
1683
+ }
1684
+ });
1685
+ };
1686
+ CardHtml.displayName = CARD_HTML_NAME;
1687
+ var CARD_POSTER_NAME = "Card.Poster";
1600
1688
  var CardPoster = (props) => {
1601
1689
  const { tx } = useThemeContext();
1602
1690
  const aspect = props.aspect === "auto" ? "aspect-auto" : "aspect-video";
1603
1691
  if (props.image) {
1604
- return /* @__PURE__ */ React18.createElement("div", {
1692
+ return /* @__PURE__ */ React19.createElement("div", {
1605
1693
  role: "none",
1606
- className: "col-span-full mb-1"
1607
- }, /* @__PURE__ */ React18.createElement(Image, {
1694
+ className: "col-span-full"
1695
+ }, /* @__PURE__ */ React19.createElement(Image, {
1608
1696
  classNames: [
1609
1697
  tx("card.poster", {}),
1610
1698
  aspect,
1611
1699
  props.classNames
1612
1700
  ],
1613
1701
  src: props.image,
1614
- alt: props.alt
1702
+ alt: props.alt,
1703
+ fit: props.fit
1615
1704
  }));
1616
1705
  }
1617
1706
  if (props.icon) {
1618
- return /* @__PURE__ */ React18.createElement("div", {
1707
+ return /* @__PURE__ */ React19.createElement("div", {
1619
1708
  role: "image",
1620
1709
  className: tx("card.poster-icon", {}, [
1621
1710
  aspect,
1622
1711
  props.classNames
1623
1712
  ]),
1624
1713
  "aria-label": props.alt
1625
- }, /* @__PURE__ */ React18.createElement(Icon, {
1714
+ }, /* @__PURE__ */ React19.createElement(Icon, {
1626
1715
  icon: props.icon,
1627
1716
  size: 10
1628
1717
  }));
1629
1718
  }
1630
1719
  };
1720
+ CardPoster.displayName = CARD_POSTER_NAME;
1721
+ var CARD_ACTION_NAME = "Card.Action";
1631
1722
  var CardAction = ({ icon, actionIcon = "ph--arrow-right--regular", label, onClick }) => {
1632
1723
  const { tx } = useThemeContext();
1633
- return /* @__PURE__ */ React18.createElement(Button, {
1724
+ return /* @__PURE__ */ React19.createElement(Button, {
1634
1725
  variant: "ghost",
1635
1726
  classNames: tx("card.action", {}),
1636
1727
  onClick
1637
- }, icon ? /* @__PURE__ */ React18.createElement(CardIcon, {
1728
+ }, icon ? /* @__PURE__ */ React19.createElement(CardIcon, {
1638
1729
  classNames: "text-subdued",
1639
- icon
1640
- }) : /* @__PURE__ */ React18.createElement("div", null), /* @__PURE__ */ React18.createElement("span", {
1730
+ icon,
1731
+ size: 4
1732
+ }) : /* @__PURE__ */ React19.createElement("div", null), /* @__PURE__ */ React19.createElement("span", {
1641
1733
  className: tx("card.action-label", {}, !actionIcon ? "col-span-2" : void 0)
1642
- }, label), actionIcon && /* @__PURE__ */ React18.createElement(CardIcon, {
1643
- icon: actionIcon
1734
+ }, label), actionIcon && /* @__PURE__ */ React19.createElement(CardIcon, {
1735
+ icon: actionIcon,
1736
+ size: 4
1644
1737
  }));
1645
1738
  };
1739
+ CardAction.displayName = CARD_ACTION_NAME;
1740
+ var CARD_LINK_NAME = "Card.Link";
1646
1741
  var CardLink = ({ label, href }) => {
1647
1742
  const { tx } = useThemeContext();
1648
- return /* @__PURE__ */ React18.createElement("a", {
1743
+ return /* @__PURE__ */ React19.createElement("a", {
1649
1744
  className: tx("card.link", {}),
1650
1745
  "data-variant": "ghost",
1651
1746
  href,
1652
1747
  target: "_blank",
1653
1748
  rel: "noreferrer"
1654
- }, /* @__PURE__ */ React18.createElement(CardIcon, {
1749
+ }, /* @__PURE__ */ React19.createElement(CardIcon, {
1655
1750
  classNames: "text-subdued",
1656
1751
  icon: "ph--link--regular"
1657
- }), /* @__PURE__ */ React18.createElement("span", {
1752
+ }), /* @__PURE__ */ React19.createElement("span", {
1658
1753
  className: tx("card.link-label", {})
1659
- }, label), /* @__PURE__ */ React18.createElement(CardIcon, {
1754
+ }, label), /* @__PURE__ */ React19.createElement(CardIcon, {
1660
1755
  classNames: "invisible group-hover:visible",
1661
1756
  icon: "ph--arrow-square-out--regular"
1662
1757
  }));
1663
1758
  };
1664
- var CardIcon = ({ toolbar, ...props }) => {
1665
- return /* @__PURE__ */ React18.createElement(CardIconBlock, null, /* @__PURE__ */ React18.createElement(Icon, {
1666
- ...props,
1667
- size: toolbar ? 5 : 4
1668
- }));
1669
- };
1670
- var CardIconBlock = ({ classNames, children, role, ...props }) => {
1671
- const { tx } = useThemeContext();
1672
- return /* @__PURE__ */ React18.createElement("div", {
1673
- ...props,
1674
- role: role ?? "none",
1675
- className: tx("card.icon-block", {}, classNames)
1676
- }, children);
1677
- };
1759
+ CardLink.displayName = CARD_LINK_NAME;
1678
1760
  var Card = {
1679
1761
  Root: CardRoot,
1680
1762
  // Toolbar
1681
1763
  Toolbar: CardToolbar,
1682
- ToolbarIconButton: Toolbar2.IconButton,
1683
- ToolbarSeparator: Toolbar2.Separator,
1684
- DragHandle: /* @__PURE__ */ forwardRef15((props, ref) => /* @__PURE__ */ React18.createElement(Toolbar2.DragHandle, {
1685
- testId: "card-drag-handle",
1686
- ...props,
1687
- ref
1688
- })),
1689
- CloseIconButton: Toolbar2.CloseIconButton,
1690
- Title: CardTitle,
1764
+ ToolbarIconButton: Toolbar.IconButton,
1765
+ ToolbarSeparator: Toolbar.Separator,
1766
+ // Toolbar blocks
1767
+ IconBlock: CardIconBlock,
1768
+ DragHandle: CardDragHandle,
1769
+ CloseIconButton,
1691
1770
  Menu: CardMenu,
1692
1771
  Icon: CardIcon,
1693
- IconBlock: CardIconBlock,
1772
+ Title: CardTitle,
1694
1773
  // Content
1695
1774
  Content: CardContent,
1696
1775
  Row: CardRow,
1697
1776
  Section: CardSection,
1698
1777
  Heading: CardHeading,
1699
1778
  Text: CardText,
1779
+ Html: CardHtml,
1700
1780
  Poster: CardPoster,
1701
1781
  Action: CardAction,
1702
1782
  Link: CardLink
1703
1783
  };
1704
1784
 
1705
1785
  // src/components/Clipboard/ClipboardProvider.tsx
1706
- import React19, { createContext as createContext4, useCallback as useCallback5, useContext as useContext4, useState as useState4 } from "react";
1786
+ import React20, { createContext as createContext4, useCallback as useCallback5, useContext as useContext4, useState as useState4 } from "react";
1707
1787
  var ClipboardContext = /* @__PURE__ */ createContext4({
1708
1788
  textValue: "",
1709
1789
  setTextValue: async (_) => {
@@ -1716,7 +1796,7 @@ var ClipboardProvider = ({ children }) => {
1716
1796
  await navigator.clipboard.writeText(nextValue);
1717
1797
  return setInternalTextValue(nextValue);
1718
1798
  }, []);
1719
- return /* @__PURE__ */ React19.createElement(ClipboardContext.Provider, {
1799
+ return /* @__PURE__ */ React20.createElement(ClipboardContext.Provider, {
1720
1800
  value: {
1721
1801
  textValue,
1722
1802
  setTextValue
@@ -1725,14 +1805,14 @@ var ClipboardProvider = ({ children }) => {
1725
1805
  };
1726
1806
 
1727
1807
  // src/components/Clipboard/CopyButton.tsx
1728
- import React20 from "react";
1729
- import { mx as mx6, osTranslations } from "@dxos/ui-theme";
1808
+ import React21 from "react";
1809
+ import { mx as mx7, osTranslations } from "@dxos/ui-theme";
1730
1810
  var inactiveLabelStyles = "invisible h-px -mb-px overflow-hidden";
1731
1811
  var CopyButton = ({ classNames, value, size = 5, ...props }) => {
1732
1812
  const { t } = useTranslation(osTranslations);
1733
1813
  const { textValue, setTextValue } = useClipboard();
1734
1814
  const isCopied = textValue === value;
1735
- return /* @__PURE__ */ React20.createElement(Button, {
1815
+ return /* @__PURE__ */ React21.createElement(Button, {
1736
1816
  ...props,
1737
1817
  classNames: [
1738
1818
  "inline-flex flex-col justify-center",
@@ -1740,20 +1820,20 @@ var CopyButton = ({ classNames, value, size = 5, ...props }) => {
1740
1820
  ],
1741
1821
  onClick: () => setTextValue(value),
1742
1822
  "data-testid": "copy-invitation"
1743
- }, /* @__PURE__ */ React20.createElement("div", {
1823
+ }, /* @__PURE__ */ React21.createElement("div", {
1744
1824
  role: "none",
1745
- className: mx6("flex gap-1 items-center", isCopied && inactiveLabelStyles)
1746
- }, /* @__PURE__ */ React20.createElement("span", {
1825
+ className: mx7("flex gap-1 items-center", isCopied && inactiveLabelStyles)
1826
+ }, /* @__PURE__ */ React21.createElement("span", {
1747
1827
  className: "px-1"
1748
- }, t("copy label")), /* @__PURE__ */ React20.createElement(Icon, {
1828
+ }, t("copy.label")), /* @__PURE__ */ React21.createElement(Icon, {
1749
1829
  icon: "ph--copy--regular",
1750
1830
  size
1751
- })), /* @__PURE__ */ React20.createElement("div", {
1831
+ })), /* @__PURE__ */ React21.createElement("div", {
1752
1832
  role: "none",
1753
- className: mx6("flex gap-1 items-center", !isCopied && inactiveLabelStyles)
1754
- }, /* @__PURE__ */ React20.createElement("span", {
1833
+ className: mx7("flex gap-1 items-center", !isCopied && inactiveLabelStyles)
1834
+ }, /* @__PURE__ */ React21.createElement("span", {
1755
1835
  className: "px-1"
1756
- }, t("copy success label")), /* @__PURE__ */ React20.createElement(Icon, {
1836
+ }, t("copy-success.label")), /* @__PURE__ */ React21.createElement(Icon, {
1757
1837
  icon: "ph--check--regular",
1758
1838
  size
1759
1839
  })));
@@ -1762,9 +1842,9 @@ var CopyButtonIconOnly = ({ __scopeTooltip, value, classNames, size, variant, ..
1762
1842
  const { t } = useTranslation(osTranslations);
1763
1843
  const { textValue, setTextValue } = useClipboard();
1764
1844
  const isCopied = textValue === value;
1765
- const label = isCopied ? t("copy success label") : props.label ?? t("copy label");
1845
+ const label = isCopied ? t("copy-success.label") : props.label ?? t("copy.label");
1766
1846
  const { onOpen } = useTooltipContext("CopyButton", __scopeTooltip);
1767
- return /* @__PURE__ */ React20.createElement(IconButton, {
1847
+ return /* @__PURE__ */ React21.createElement(IconButton, {
1768
1848
  iconOnly: true,
1769
1849
  label,
1770
1850
  icon: "ph--copy--regular",
@@ -1788,88 +1868,91 @@ var Clipboard = {
1788
1868
 
1789
1869
  // src/components/Dialog/Dialog.tsx
1790
1870
  import { createContext as createContext5 } from "@radix-ui/react-context";
1791
- import { DialogClose as DialogClosePrimitive, DialogContent as DialogContentPrimitive, DialogDescription as DialogDescriptionPrimitive, DialogOverlay as DialogOverlayPrimitive, DialogPortal as DialogPortalPrimitive, Root as DialogRootPrimitive, DialogTitle as DialogTitlePrimitive, DialogTrigger as DialogTriggerPrimitive } from "@radix-ui/react-dialog";
1792
- import React21, { forwardRef as forwardRef16 } from "react";
1871
+ import * as DialogPrimitive from "@radix-ui/react-dialog";
1872
+ import { Primitive as Primitive13 } from "@radix-ui/react-primitive";
1873
+ import { Slot as Slot13 } from "@radix-ui/react-slot";
1874
+ import React22, { forwardRef as forwardRef14 } from "react";
1793
1875
  import { useTranslation as useTranslation3 } from "react-i18next";
1794
- import { osTranslations as osTranslations2 } from "@dxos/ui-theme";
1795
- var DialogRoot = (props) => /* @__PURE__ */ React21.createElement(ElevationProvider, {
1876
+ import { composableProps as composableProps8, osTranslations as osTranslations2, slottable as slottable7 } from "@dxos/ui-theme";
1877
+ var DialogRoot = (props) => /* @__PURE__ */ React22.createElement(ElevationProvider, {
1796
1878
  elevation: "dialog"
1797
- }, /* @__PURE__ */ React21.createElement(DialogRootPrimitive, props));
1798
- var DialogTrigger = DialogTriggerPrimitive;
1799
- var DialogPortal = DialogPortalPrimitive;
1879
+ }, /* @__PURE__ */ React22.createElement(DialogPrimitive.Root, {
1880
+ // NOTE: Radix warning unless set to undefined.
1881
+ // https://www.radix-ui.com/primitives/docs/components/dialog#description
1882
+ "aria-describedby": void 0,
1883
+ ...props
1884
+ }));
1885
+ var DialogTrigger = DialogPrimitive.Trigger;
1886
+ var DialogPortal = DialogPrimitive.Portal;
1800
1887
  var DIALOG_OVERLAY_NAME = "DialogOverlay";
1801
1888
  var [OverlayLayoutProvider, useOverlayLayoutContext] = createContext5(DIALOG_OVERLAY_NAME, {});
1802
- var DialogOverlay = /* @__PURE__ */ forwardRef16(({ classNames, children, blockAlign, ...props }, forwardedRef) => {
1889
+ var DialogOverlay = /* @__PURE__ */ forwardRef14(({ classNames, children, blockAlign, ...props }, forwardedRef) => {
1803
1890
  const { tx } = useThemeContext();
1804
- return /* @__PURE__ */ React21.createElement(DialogOverlayPrimitive, {
1891
+ return /* @__PURE__ */ React22.createElement(DialogPrimitive.Overlay, {
1805
1892
  ...props,
1806
1893
  "data-block-align": blockAlign,
1807
1894
  className: tx("dialog.overlay", {}, classNames),
1808
1895
  ref: forwardedRef
1809
- }, /* @__PURE__ */ React21.createElement(OverlayLayoutProvider, {
1896
+ }, /* @__PURE__ */ React22.createElement(OverlayLayoutProvider, {
1810
1897
  inOverlayLayout: true
1811
1898
  }, children));
1812
1899
  });
1813
1900
  DialogOverlay.displayName = DIALOG_OVERLAY_NAME;
1814
1901
  var DIALOG_CONTENT_NAME = "DialogContent";
1815
- var DialogContent = /* @__PURE__ */ forwardRef16(({ classNames, children, size = "md", inOverlayLayout: propsInOverlayLayout, ...props }, forwardedRef) => {
1902
+ var DialogContent = /* @__PURE__ */ forwardRef14(({ classNames, children, size = "md", inOverlayLayout: propsInOverlayLayout, ...props }, forwardedRef) => {
1816
1903
  const { tx } = useThemeContext();
1817
1904
  const { inOverlayLayout } = useOverlayLayoutContext(DIALOG_CONTENT_NAME);
1818
- return /* @__PURE__ */ React21.createElement(DialogContentPrimitive, {
1905
+ return /* @__PURE__ */ React22.createElement(DialogPrimitive.Content, {
1819
1906
  ...props,
1820
1907
  // NOTE: Radix warning unless set to undefined.
1821
1908
  // https://www.radix-ui.com/primitives/docs/components/dialog#description
1822
1909
  "aria-describedby": void 0,
1823
1910
  className: tx("dialog.content", {
1824
- inOverlayLayout: propsInOverlayLayout || inOverlayLayout,
1825
- size
1911
+ size,
1912
+ inOverlayLayout: propsInOverlayLayout || inOverlayLayout
1826
1913
  }, classNames),
1827
1914
  ref: forwardedRef
1828
- }, /* @__PURE__ */ React21.createElement(Column.Root, null, children));
1915
+ }, /* @__PURE__ */ React22.createElement(Column.Root, {
1916
+ classNames: "dx-expander",
1917
+ gutter: "sm"
1918
+ }, children));
1829
1919
  });
1830
1920
  DialogContent.displayName = DIALOG_CONTENT_NAME;
1831
- var DialogHeader = /* @__PURE__ */ forwardRef16(({ classNames, srOnly, ...props }, forwardedRef) => {
1921
+ var DialogHeader = slottable7(({ children, asChild, ...props }, forwardedRef) => {
1922
+ const { className, ...rest } = composableProps8(props);
1923
+ const Comp = asChild ? Slot13 : Primitive13.div;
1832
1924
  const { tx } = useThemeContext();
1833
- return /* @__PURE__ */ React21.createElement(Column.Segment, {
1834
- asChild: true
1835
- }, /* @__PURE__ */ React21.createElement("div", {
1836
- role: "heading",
1837
- ...props,
1838
- className: tx("dialog.header", {
1839
- srOnly
1840
- }, [
1841
- classNames
1842
- ]),
1925
+ return /* @__PURE__ */ React22.createElement(Comp, {
1926
+ ...rest,
1927
+ className: tx("dialog.header", {}, className),
1843
1928
  ref: forwardedRef
1844
- }));
1929
+ }, children);
1845
1930
  });
1846
- var DialogCloseIconButton = /* @__PURE__ */ forwardRef16(({ label, ...props }, forwardedRef) => {
1931
+ var DialogCloseIconButton = /* @__PURE__ */ forwardRef14(({ label, ...props }, forwardedRef) => {
1847
1932
  const { t } = useTranslation3(osTranslations2);
1848
- return /* @__PURE__ */ React21.createElement(IconButton, {
1933
+ return /* @__PURE__ */ React22.createElement(IconButton, {
1849
1934
  ...props,
1850
- label: label ?? t("close dialog label"),
1935
+ label: label ?? t("close-dialog.label"),
1851
1936
  icon: "ph--x--regular",
1852
1937
  iconOnly: true,
1853
1938
  size: 4,
1854
- density: "fine",
1855
1939
  variant: "ghost",
1856
1940
  ref: forwardedRef
1857
1941
  });
1858
1942
  });
1859
- var DialogBody = /* @__PURE__ */ forwardRef16(({ children, ...props }, forwardedRef) => {
1943
+ var DialogBody = slottable7(({ children, asChild, ...props }, forwardedRef) => {
1944
+ const { className, ...rest } = composableProps8(props);
1945
+ const Comp = asChild ? Slot13 : Primitive13.div;
1860
1946
  const { tx } = useThemeContext();
1861
- return /* @__PURE__ */ React21.createElement(Column.Segment, {
1862
- asChild: true
1863
- }, /* @__PURE__ */ React21.createElement("div", {
1864
- role: "none",
1865
- ...props,
1866
- className: tx("dialog.body"),
1947
+ return /* @__PURE__ */ React22.createElement(Comp, {
1948
+ ...rest,
1949
+ className: tx("dialog.body", {}, className),
1867
1950
  ref: forwardedRef
1868
- }, children));
1951
+ }, children);
1869
1952
  });
1870
- var DialogTitle = /* @__PURE__ */ forwardRef16(({ classNames, srOnly, ...props }, forwardedRef) => {
1953
+ var DialogTitle = /* @__PURE__ */ forwardRef14(({ classNames, srOnly, ...props }, forwardedRef) => {
1871
1954
  const { tx } = useThemeContext();
1872
- return /* @__PURE__ */ React21.createElement(DialogTitlePrimitive, {
1955
+ return /* @__PURE__ */ React22.createElement(DialogPrimitive.Title, {
1873
1956
  ...props,
1874
1957
  className: tx("dialog.title", {
1875
1958
  srOnly
@@ -1877,9 +1960,9 @@ var DialogTitle = /* @__PURE__ */ forwardRef16(({ classNames, srOnly, ...props }
1877
1960
  ref: forwardedRef
1878
1961
  });
1879
1962
  });
1880
- var DialogDescription = /* @__PURE__ */ forwardRef16(({ classNames, srOnly, ...props }, forwardedRef) => {
1963
+ var DialogDescription = /* @__PURE__ */ forwardRef14(({ classNames, srOnly, ...props }, forwardedRef) => {
1881
1964
  const { tx } = useThemeContext();
1882
- return /* @__PURE__ */ React21.createElement(DialogDescriptionPrimitive, {
1965
+ return /* @__PURE__ */ React22.createElement(DialogPrimitive.Description, {
1883
1966
  ...props,
1884
1967
  className: tx("dialog.description", {
1885
1968
  srOnly
@@ -1887,17 +1970,17 @@ var DialogDescription = /* @__PURE__ */ forwardRef16(({ classNames, srOnly, ...p
1887
1970
  ref: forwardedRef
1888
1971
  });
1889
1972
  });
1890
- var DialogActionBar = /* @__PURE__ */ forwardRef16(({ children, classNames, ...props }, forwardedRef) => {
1973
+ var DialogActionBar = slottable7(({ children, asChild, ...props }, forwardedRef) => {
1974
+ const { className: classNames, ...rest } = composableProps8(props);
1975
+ const Comp = asChild ? Slot13 : Primitive13.div;
1891
1976
  const { tx } = useThemeContext();
1892
- return /* @__PURE__ */ React21.createElement(Column.Segment, {
1893
- asChild: true
1894
- }, /* @__PURE__ */ React21.createElement("div", {
1895
- ...props,
1977
+ return /* @__PURE__ */ React22.createElement(Comp, {
1978
+ ...rest,
1896
1979
  className: tx("dialog.actionbar", {}, classNames),
1897
1980
  ref: forwardedRef
1898
- }, children));
1981
+ }, children);
1899
1982
  });
1900
- var DialogClose = DialogClosePrimitive;
1983
+ var DialogClose = DialogPrimitive.Close;
1901
1984
  var Dialog = {
1902
1985
  Root: DialogRoot,
1903
1986
  Trigger: DialogTrigger,
@@ -1906,117 +1989,94 @@ var Dialog = {
1906
1989
  Content: DialogContent,
1907
1990
  Header: DialogHeader,
1908
1991
  Body: DialogBody,
1909
- Title: DialogTitle,
1910
- Description: DialogDescription,
1911
- ActionBar: DialogActionBar,
1912
- Close: DialogClose,
1913
- CloseIconButton: DialogCloseIconButton
1914
- };
1915
-
1916
- // src/components/Dialog/AlertDialog.tsx
1917
- import { AlertDialogAction as AlertDialogActionPrimitive, AlertDialogCancel as AlertDialogCancelPrimitive, AlertDialogContent as AlertDialogContentPrimitive, AlertDialogDescription as AlertDialogDescriptionPrimitive, AlertDialogOverlay as AlertDialogOverlayPrimitive, AlertDialogPortal as AlertDialogPortalPrimitive, Root as AlertDialogRootPrimitive, AlertDialogTitle as AlertDialogTitlePrimitive, AlertDialogTrigger as AlertDialogTriggerPrimitive } from "@radix-ui/react-alert-dialog";
1918
- import { createContext as createContext6 } from "@radix-ui/react-context";
1919
- import React22, { forwardRef as forwardRef17 } from "react";
1920
- var AlertDialogRoot = (props) => /* @__PURE__ */ React22.createElement(ElevationProvider, {
1921
- elevation: "dialog"
1922
- }, /* @__PURE__ */ React22.createElement(AlertDialogRootPrimitive, props));
1923
- var AlertDialogTrigger = AlertDialogTriggerPrimitive;
1924
- var AlertDialogPortal = AlertDialogPortalPrimitive;
1925
- var AlertDialogCancel = AlertDialogCancelPrimitive;
1926
- var AlertDialogAction = AlertDialogActionPrimitive;
1927
- var AlertDialogTitle = /* @__PURE__ */ forwardRef17(({ classNames, srOnly, ...props }, forwardedRef) => {
1928
- const { tx } = useThemeContext();
1929
- return /* @__PURE__ */ React22.createElement(AlertDialogTitlePrimitive, {
1930
- ...props,
1931
- className: tx("dialog.title", {
1932
- srOnly
1933
- }, classNames),
1934
- ref: forwardedRef
1935
- });
1936
- });
1937
- var AlertDialogDescription = /* @__PURE__ */ forwardRef17(({ classNames, srOnly, ...props }, forwardedRef) => {
1938
- const { tx } = useThemeContext();
1939
- return /* @__PURE__ */ React22.createElement(AlertDialogDescriptionPrimitive, {
1940
- ...props,
1941
- className: tx("dialog.description", {
1942
- srOnly
1943
- }, classNames),
1944
- ref: forwardedRef
1945
- });
1946
- });
1992
+ Title: DialogTitle,
1993
+ Description: DialogDescription,
1994
+ ActionBar: DialogActionBar,
1995
+ Close: DialogClose,
1996
+ CloseIconButton: DialogCloseIconButton
1997
+ };
1998
+
1999
+ // src/components/Dialog/AlertDialog.tsx
2000
+ import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog";
2001
+ import { createContext as createContext6 } from "@radix-ui/react-context";
2002
+ import React23, { forwardRef as forwardRef15 } from "react";
2003
+ var AlertDialogRoot = (props) => /* @__PURE__ */ React23.createElement(ElevationProvider, {
2004
+ elevation: "dialog"
2005
+ }, /* @__PURE__ */ React23.createElement(AlertDialogPrimitive.Root, props));
2006
+ var AlertDialogTrigger = AlertDialogPrimitive.Trigger;
2007
+ var AlertDialogPortal = AlertDialogPrimitive.Portal;
2008
+ var AlertDialogCancel = AlertDialogPrimitive.Cancel;
2009
+ var AlertDialogAction = AlertDialogPrimitive.Action;
1947
2010
  var ALERT_DIALOG_OVERLAY_NAME = "AlertDialogOverlay";
1948
2011
  var ALERT_DIALOG_CONTENT_NAME = "AlertDialogContent";
1949
- var ALERT_DIALOG_BODY_NAME = "AlertDialogBody";
1950
- var ALERT_DIALOG_ACTIONBAR_NAME = "AlertDialogActionBar";
1951
2012
  var [OverlayLayoutProvider2, useOverlayLayoutContext2] = createContext6(ALERT_DIALOG_OVERLAY_NAME, {
1952
2013
  inOverlayLayout: false
1953
2014
  });
1954
- var AlertDialogOverlay = /* @__PURE__ */ forwardRef17(({ classNames, children, blockAlign, ...props }, forwardedRef) => {
2015
+ var AlertDialogOverlay = /* @__PURE__ */ forwardRef15(({ classNames, children, blockAlign, ...props }, forwardedRef) => {
1955
2016
  const { tx } = useThemeContext();
1956
- return /* @__PURE__ */ React22.createElement(AlertDialogOverlayPrimitive, {
2017
+ return /* @__PURE__ */ React23.createElement(AlertDialogPrimitive.Overlay, {
1957
2018
  ...props,
1958
2019
  "data-block-align": blockAlign,
1959
- className: tx(
1960
- "dialog.overlay",
1961
- {},
1962
- classNames,
1963
- // TODO(burdon): Move to dialog.ts.
1964
- "data-[h-align=start]:justify-center",
1965
- "data-[h-align=start]:items-start",
1966
- "data-[h-align=center]:place-content-center"
1967
- ),
1968
- ref: forwardedRef
1969
- }, /* @__PURE__ */ React22.createElement(OverlayLayoutProvider2, {
2020
+ className: tx("dialog.overlay", {}, classNames),
2021
+ ref: forwardedRef
2022
+ }, /* @__PURE__ */ React23.createElement(OverlayLayoutProvider2, {
1970
2023
  inOverlayLayout: true
1971
2024
  }, children));
1972
2025
  });
1973
2026
  AlertDialogOverlay.displayName = ALERT_DIALOG_OVERLAY_NAME;
1974
- var AlertDialogContent = /* @__PURE__ */ forwardRef17(({ classNames, children, size = "md", ...props }, forwardedRef) => {
2027
+ var AlertDialogContent = /* @__PURE__ */ forwardRef15(({ classNames, children, size = "md", ...props }, forwardedRef) => {
1975
2028
  const { tx } = useThemeContext();
1976
2029
  const { inOverlayLayout } = useOverlayLayoutContext2(ALERT_DIALOG_CONTENT_NAME);
1977
- return /* @__PURE__ */ React22.createElement(AlertDialogContentPrimitive, {
2030
+ return /* @__PURE__ */ React23.createElement(AlertDialogPrimitive.Content, {
1978
2031
  ...props,
1979
2032
  className: tx("dialog.content", {
1980
2033
  inOverlayLayout,
1981
2034
  size
1982
2035
  }, classNames),
2036
+ // NOTE: Radix warning unless set to undefined.
2037
+ // https://www.radix-ui.com/primitives/docs/components/dialog#description
2038
+ "aria-describedby": void 0,
1983
2039
  ref: forwardedRef
1984
- }, /* @__PURE__ */ React22.createElement(Column.Root, null, children));
2040
+ }, /* @__PURE__ */ React23.createElement(Column.Root, {
2041
+ classNames: "dx-expander",
2042
+ gutter: "sm"
2043
+ }, children));
1985
2044
  });
1986
2045
  AlertDialogContent.displayName = ALERT_DIALOG_CONTENT_NAME;
1987
- var AlertDialogBody = /* @__PURE__ */ forwardRef17(({ children, ...props }, forwardedRef) => {
2046
+ var AlertDialogTitle = /* @__PURE__ */ forwardRef15(({ classNames, srOnly, ...props }, forwardedRef) => {
1988
2047
  const { tx } = useThemeContext();
1989
- return /* @__PURE__ */ React22.createElement(Column.Segment, {
1990
- asChild: true
1991
- }, /* @__PURE__ */ React22.createElement("div", {
1992
- role: "none",
2048
+ return /* @__PURE__ */ React23.createElement(AlertDialogPrimitive.Title, {
1993
2049
  ...props,
1994
- className: tx("dialog.body"),
2050
+ className: tx("dialog.title", {
2051
+ srOnly
2052
+ }, classNames),
1995
2053
  ref: forwardedRef
1996
- }, children));
2054
+ });
1997
2055
  });
1998
- AlertDialogBody.displayName = ALERT_DIALOG_BODY_NAME;
1999
- var AlertDialogActionBar = /* @__PURE__ */ forwardRef17(({ children, classNames, ...props }, forwardedRef) => {
2056
+ var AlertDialogDescription = /* @__PURE__ */ forwardRef15(({ classNames, srOnly, ...props }, forwardedRef) => {
2000
2057
  const { tx } = useThemeContext();
2001
- return /* @__PURE__ */ React22.createElement(Column.Segment, {
2002
- asChild: true
2003
- }, /* @__PURE__ */ React22.createElement("div", {
2058
+ return /* @__PURE__ */ React23.createElement(AlertDialogPrimitive.Description, {
2004
2059
  ...props,
2005
- className: tx("dialog.actionbar", {}, classNames),
2060
+ className: tx("dialog.description", {
2061
+ srOnly
2062
+ }, classNames),
2006
2063
  ref: forwardedRef
2007
- }, children));
2064
+ });
2008
2065
  });
2009
- AlertDialogActionBar.displayName = ALERT_DIALOG_ACTIONBAR_NAME;
2010
2066
  var AlertDialog = {
2011
2067
  Root: AlertDialogRoot,
2012
2068
  Trigger: AlertDialogTrigger,
2013
2069
  Portal: AlertDialogPortal,
2014
2070
  Overlay: AlertDialogOverlay,
2015
2071
  Content: AlertDialogContent,
2016
- Body: AlertDialogBody,
2072
+ // Shared with Dialog.
2073
+ Header: Dialog.Header,
2074
+ Body: Dialog.Body,
2017
2075
  Title: AlertDialogTitle,
2018
2076
  Description: AlertDialogDescription,
2019
- ActionBar: AlertDialogActionBar,
2077
+ ActionBar: Dialog.ActionBar,
2078
+ CloseIconButton: Dialog.CloseIconButton,
2079
+ // AlertDialog-specific dismissal.
2020
2080
  Cancel: AlertDialogCancel,
2021
2081
  Action: AlertDialogAction
2022
2082
  };
@@ -2027,57 +2087,6 @@ import { ErrorBoundary } from "@dxos/react-error-boundary";
2027
2087
  // src/components/ErrorFallback/ErrorFallback.tsx
2028
2088
  import React24 from "react";
2029
2089
  import { safeStringify } from "@dxos/util";
2030
-
2031
- // src/components/ErrorFallback/ErrorStack.tsx
2032
- import ErrorStackParser from "error-stack-parser";
2033
- import React23 from "react";
2034
- import { mx as mx7 } from "@dxos/ui-theme";
2035
- var ErrorStack = ({ error }) => {
2036
- const frames = ErrorStackParser.parse(error);
2037
- return /* @__PURE__ */ React23.createElement("div", {
2038
- className: "font-mono text-sm"
2039
- }, frames.map((frame, i) => {
2040
- const isLast = i === frames.length - 1;
2041
- const local = frame.fileName ? parseLocalFrame(frame.fileName, frame.lineNumber, frame.columnNumber) : void 0;
2042
- const name = frame.functionName ?? "<anonymous>";
2043
- return /* @__PURE__ */ React23.createElement("div", {
2044
- key: i,
2045
- className: mx7("grid grid-cols-[16px_1fr_auto_auto] items-stretch gap-x-2", local && "cursor-pointer hover:bg-hover-surface")
2046
- }, /* @__PURE__ */ React23.createElement("div", {
2047
- className: "relative"
2048
- }, /* @__PURE__ */ React23.createElement("div", {
2049
- className: mx7("absolute left-1/2 -translate-x-1/2 w-px bg-neutral-500", isLast ? "top-0 h-1/2" : "inset-y-0")
2050
- }), /* @__PURE__ */ React23.createElement("div", {
2051
- className: "absolute top-1/2 -translate-y-1/2 left-1/2 right-0 h-px bg-neutral-500"
2052
- })), local ? /* @__PURE__ */ React23.createElement("a", {
2053
- href: local.href,
2054
- className: "truncate self-center"
2055
- }, name) : /* @__PURE__ */ React23.createElement("span", {
2056
- className: "text-subdued truncate self-center"
2057
- }, name), /* @__PURE__ */ React23.createElement("span", {
2058
- className: "text-xs text-subdued truncate self-center"
2059
- }, local?.fileName ?? ""), /* @__PURE__ */ React23.createElement("span", {
2060
- className: "text-xs text-subdued text-right self-center"
2061
- }, local ? `${frame.lineNumber}:${frame.columnNumber}` : ""));
2062
- }));
2063
- };
2064
- var parseLocalFrame = (fileUrl, line, col) => {
2065
- try {
2066
- const { pathname } = new URL(fileUrl);
2067
- if (!pathname.startsWith("/@fs/")) {
2068
- return void 0;
2069
- }
2070
- const localPath = pathname.slice(4);
2071
- return {
2072
- href: `vscode://file/${localPath}:${line ?? 1}:${col ?? 1}`,
2073
- fileName: pathname.split("/").pop() ?? localPath
2074
- };
2075
- } catch {
2076
- return void 0;
2077
- }
2078
- };
2079
-
2080
- // src/components/ErrorFallback/ErrorFallback.tsx
2081
2090
  var ErrorFallback = ({ children, error, title, data }) => {
2082
2091
  const isDev = true;
2083
2092
  const message = error instanceof Error ? error.message : String(error);
@@ -2145,15 +2154,124 @@ var generator = ({ error, delay }) => {
2145
2154
  return error?.() ?? new Error(`Error generated after ${delay}ms`);
2146
2155
  };
2147
2156
 
2157
+ // src/components/Focus/Focus.tsx
2158
+ import { useArrowNavigationGroup, useFocusableGroup, useMergedTabsterAttributes_unstable } from "@fluentui/react-tabster";
2159
+ import { useComposedRefs } from "@radix-ui/react-compose-refs";
2160
+ import { Primitive as Primitive14 } from "@radix-ui/react-primitive";
2161
+ import { Slot as Slot14 } from "@radix-ui/react-slot";
2162
+ import React25, { createContext as createContext7, useCallback as useCallback6, useContext as useContext5, useRef as useRef3, useState as useState6 } from "react";
2163
+ import { composableProps as composableProps9, slottable as slottable8 } from "@dxos/ui-theme";
2164
+ var FOCUS_STATE_ATTR = "focus-state";
2165
+ var FocusContext = /* @__PURE__ */ createContext7({});
2166
+ var useFocus = () => useContext5(FocusContext);
2167
+ var Group3 = slottable8(({ children, asChild, orientation = "vertical", border = false, ...props }, forwardedRef) => {
2168
+ const Comp = asChild ? Slot14 : Primitive14.div;
2169
+ const { tx } = useThemeContext();
2170
+ const rootRef = useRef3(null);
2171
+ const focusableGroupAttrs = useFocusableGroup({
2172
+ tabBehavior: "limited-trap-focus"
2173
+ });
2174
+ const arrowNavigationAttrs = useArrowNavigationGroup({
2175
+ axis: orientation,
2176
+ memorizeCurrent: true
2177
+ });
2178
+ const tabsterAttrs = useMergedTabsterAttributes_unstable(focusableGroupAttrs, arrowNavigationAttrs);
2179
+ const [state, setState] = useState6();
2180
+ const [groupHasFocus, setGroupHasFocus] = useState6(false);
2181
+ const handleFocusIn = useCallback6(() => setGroupHasFocus(true), []);
2182
+ const handleFocusOut = useCallback6((event) => {
2183
+ const related = event.relatedTarget;
2184
+ if (!related || !rootRef.current?.contains(related)) {
2185
+ setGroupHasFocus(false);
2186
+ }
2187
+ }, []);
2188
+ const { className, ...rest } = composableProps9(props);
2189
+ return /* @__PURE__ */ React25.createElement(FocusContext.Provider, {
2190
+ value: {
2191
+ setFocus: setState,
2192
+ groupHasFocus
2193
+ }
2194
+ }, /* @__PURE__ */ React25.createElement(Comp, {
2195
+ ...rest,
2196
+ tabIndex: 0,
2197
+ className: tx("focus.group", {
2198
+ border
2199
+ }, className),
2200
+ ...tabsterAttrs,
2201
+ ...state && {
2202
+ [`data-${FOCUS_STATE_ATTR}`]: state
2203
+ },
2204
+ onBlur: handleFocusOut,
2205
+ onFocus: handleFocusIn,
2206
+ ref: useComposedRefs(rootRef, forwardedRef)
2207
+ }, children));
2208
+ });
2209
+ var Item4 = slottable8(({ children, asChild, current, border = false, onCurrentChange, onClick, onFocus, onBlur, ...props }, forwardedRef) => {
2210
+ const Comp = asChild ? Slot14 : Primitive14.div;
2211
+ const { tx } = useThemeContext();
2212
+ const focusableGroupAttrs = useFocusableGroup({
2213
+ ignoreDefaultKeydown: {
2214
+ Enter: true
2215
+ }
2216
+ });
2217
+ const [focused, setFocused] = useState6(false);
2218
+ const handleClick = useCallback6((event) => {
2219
+ onCurrentChange?.();
2220
+ onClick?.(event);
2221
+ }, [
2222
+ onCurrentChange,
2223
+ onClick
2224
+ ]);
2225
+ const handleKeyDown = useCallback6((event) => {
2226
+ if (event.key === "Enter") {
2227
+ onCurrentChange?.();
2228
+ }
2229
+ }, [
2230
+ onCurrentChange
2231
+ ]);
2232
+ const handleFocus = useCallback6((event) => {
2233
+ setFocused(true);
2234
+ onFocus?.(event);
2235
+ }, [
2236
+ onFocus
2237
+ ]);
2238
+ const handleBlur = useCallback6((event) => {
2239
+ setFocused(false);
2240
+ onBlur?.(event);
2241
+ }, [
2242
+ onBlur
2243
+ ]);
2244
+ const isCurrent = current ?? focused;
2245
+ const { className, ...rest } = composableProps9(props);
2246
+ return /* @__PURE__ */ React25.createElement(Comp, {
2247
+ ...rest,
2248
+ tabIndex: 0,
2249
+ className: tx("focus.item", {
2250
+ border
2251
+ }, className),
2252
+ ...focusableGroupAttrs,
2253
+ "aria-current": isCurrent || void 0,
2254
+ onClick: handleClick,
2255
+ onKeyDown: handleKeyDown,
2256
+ onFocus: handleFocus,
2257
+ onBlur: handleBlur,
2258
+ ref: forwardedRef
2259
+ }, children);
2260
+ });
2261
+ var Focus = {
2262
+ Group: Group3,
2263
+ Item: Item4
2264
+ };
2265
+
2148
2266
  // src/components/Input/Input.tsx
2149
- import { Root as CheckboxPrimitive } from "@radix-ui/react-checkbox";
2267
+ import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
2150
2268
  import { useControllableState as useControllableState2 } from "@radix-ui/react-use-controllable-state";
2151
- import React25, { forwardRef as forwardRef18 } from "react";
2269
+ import React26, { forwardRef as forwardRef16 } from "react";
2152
2270
  import { DescriptionAndValidation as DescriptionAndValidationPrimitive, Description as DescriptionPrimitive, INPUT_NAME, InputRoot, Label as LabelPrimitive, PinInput as PinInputPrimitive, TextArea as TextAreaPrimitive, TextInput as TextInputPrimitive, Validation as ValidationPrimitive, useInputContext } from "@dxos/react-input";
2153
2271
  import { mx as mx8 } from "@dxos/ui-theme";
2154
- var Label3 = /* @__PURE__ */ forwardRef18(({ classNames, children, srOnly, ...props }, forwardedRef) => {
2272
+ var Label3 = /* @__PURE__ */ forwardRef16(({ classNames, children, srOnly, ...props }, forwardedRef) => {
2155
2273
  const { tx } = useThemeContext();
2156
- return /* @__PURE__ */ React25.createElement(LabelPrimitive, {
2274
+ return /* @__PURE__ */ React26.createElement(LabelPrimitive, {
2157
2275
  ...props,
2158
2276
  className: tx("input.label", {
2159
2277
  srOnly
@@ -2161,9 +2279,9 @@ var Label3 = /* @__PURE__ */ forwardRef18(({ classNames, children, srOnly, ...pr
2161
2279
  ref: forwardedRef
2162
2280
  }, children);
2163
2281
  });
2164
- var Description = /* @__PURE__ */ forwardRef18(({ classNames, children, srOnly, ...props }, forwardedRef) => {
2282
+ var Description3 = /* @__PURE__ */ forwardRef16(({ classNames, children, srOnly, ...props }, forwardedRef) => {
2165
2283
  const { tx } = useThemeContext();
2166
- return /* @__PURE__ */ React25.createElement(DescriptionPrimitive, {
2284
+ return /* @__PURE__ */ React26.createElement(DescriptionPrimitive, {
2167
2285
  ...props,
2168
2286
  className: tx("input.description", {
2169
2287
  srOnly
@@ -2171,10 +2289,10 @@ var Description = /* @__PURE__ */ forwardRef18(({ classNames, children, srOnly,
2171
2289
  ref: forwardedRef
2172
2290
  }, children);
2173
2291
  });
2174
- var Validation = /* @__PURE__ */ forwardRef18(({ __inputScope, classNames, children, srOnly, ...props }, forwardedRef) => {
2292
+ var Validation = /* @__PURE__ */ forwardRef16(({ __inputScope, classNames, children, srOnly, ...props }, forwardedRef) => {
2175
2293
  const { tx } = useThemeContext();
2176
2294
  const { validationValence } = useInputContext(INPUT_NAME, __inputScope);
2177
- return /* @__PURE__ */ React25.createElement(ValidationPrimitive, {
2295
+ return /* @__PURE__ */ React26.createElement(ValidationPrimitive, {
2178
2296
  ...props,
2179
2297
  className: tx("input.validation", {
2180
2298
  srOnly,
@@ -2183,9 +2301,9 @@ var Validation = /* @__PURE__ */ forwardRef18(({ __inputScope, classNames, child
2183
2301
  ref: forwardedRef
2184
2302
  }, children);
2185
2303
  });
2186
- var DescriptionAndValidation = /* @__PURE__ */ forwardRef18(({ classNames, children, srOnly, ...props }, forwardedRef) => {
2304
+ var DescriptionAndValidation = /* @__PURE__ */ forwardRef16(({ classNames, children, srOnly, ...props }, forwardedRef) => {
2187
2305
  const { tx } = useThemeContext();
2188
- return /* @__PURE__ */ React25.createElement(DescriptionAndValidationPrimitive, {
2306
+ return /* @__PURE__ */ React26.createElement(DescriptionAndValidationPrimitive, {
2189
2307
  ...props,
2190
2308
  className: tx("input.descriptionAndValidation", {
2191
2309
  srOnly
@@ -2193,12 +2311,12 @@ var DescriptionAndValidation = /* @__PURE__ */ forwardRef18(({ classNames, child
2193
2311
  ref: forwardedRef
2194
2312
  }, children);
2195
2313
  });
2196
- var PinInput = /* @__PURE__ */ forwardRef18(({ classNames, density: propsDensity, elevation: propsElevation, ...props }, forwardedRef) => {
2314
+ var PinInput = /* @__PURE__ */ forwardRef16(({ classNames, density: propsDensity, elevation: propsElevation, ...props }, forwardedRef) => {
2197
2315
  const { hasIosKeyboard: hasIosKeyboard2 } = useThemeContext();
2198
2316
  const { tx } = useThemeContext();
2199
2317
  const density = useDensityContext(propsDensity);
2200
2318
  const elevation = useElevationContext(propsElevation);
2201
- return /* @__PURE__ */ React25.createElement(PinInputPrimitive, {
2319
+ return /* @__PURE__ */ React26.createElement(PinInputPrimitive, {
2202
2320
  ...props,
2203
2321
  ...props.autoFocus && !hasIosKeyboard2 && {
2204
2322
  autoFocus: true
@@ -2214,13 +2332,13 @@ var PinInput = /* @__PURE__ */ forwardRef18(({ classNames, density: propsDensity
2214
2332
  ref: forwardedRef
2215
2333
  });
2216
2334
  });
2217
- var TextInput = /* @__PURE__ */ forwardRef18(({ __inputScope, classNames, density: propsDensity, elevation: propsElevation, variant, noAutoFill, ...props }, forwardedRef) => {
2335
+ var TextInput = /* @__PURE__ */ forwardRef16(({ __inputScope, classNames, density: densityProp, elevation: elevationProp, variant, noAutoFill, ...props }, forwardedRef) => {
2218
2336
  const { hasIosKeyboard: hasIosKeyboard2 } = useThemeContext();
2219
2337
  const { tx } = useThemeContext();
2220
- const density = useDensityContext(propsDensity);
2221
- const elevation = useElevationContext(propsElevation);
2338
+ const density = useDensityContext(densityProp);
2339
+ const elevation = useElevationContext(elevationProp);
2222
2340
  const { validationValence } = useInputContext(INPUT_NAME, __inputScope);
2223
- return /* @__PURE__ */ React25.createElement(TextInputPrimitive, {
2341
+ return /* @__PURE__ */ React26.createElement(TextInputPrimitive, {
2224
2342
  ...props,
2225
2343
  "data-1p-ignore": noAutoFill,
2226
2344
  className: tx("input.input", {
@@ -2236,13 +2354,13 @@ var TextInput = /* @__PURE__ */ forwardRef18(({ __inputScope, classNames, densit
2236
2354
  ref: forwardedRef
2237
2355
  });
2238
2356
  });
2239
- var TextArea = /* @__PURE__ */ forwardRef18(({ __inputScope, classNames, density: propsDensity, elevation: propsElevation, variant, ...props }, forwardedRef) => {
2357
+ var TextArea = /* @__PURE__ */ forwardRef16(({ __inputScope, classNames, density: propsDensity, elevation: propsElevation, variant, ...props }, forwardedRef) => {
2240
2358
  const { hasIosKeyboard: hasIosKeyboard2 } = useThemeContext();
2241
2359
  const { tx } = useThemeContext();
2242
2360
  const density = useDensityContext(propsDensity);
2243
2361
  const elevation = useElevationContext(propsElevation);
2244
2362
  const { validationValence } = useInputContext(INPUT_NAME, __inputScope);
2245
- return /* @__PURE__ */ React25.createElement(TextAreaPrimitive, {
2363
+ return /* @__PURE__ */ React26.createElement(TextAreaPrimitive, {
2246
2364
  ...props,
2247
2365
  className: tx("input.textArea", {
2248
2366
  variant,
@@ -2257,7 +2375,7 @@ var TextArea = /* @__PURE__ */ forwardRef18(({ __inputScope, classNames, density
2257
2375
  ref: forwardedRef
2258
2376
  });
2259
2377
  });
2260
- var Checkbox = /* @__PURE__ */ forwardRef18(({ __inputScope, classNames, checked: propsChecked, defaultChecked: propsDefaultChecked, onCheckedChange: propsOnCheckedChange, size, ...props }, forwardedRef) => {
2378
+ var Checkbox = /* @__PURE__ */ forwardRef16(({ __inputScope, classNames, checked: propsChecked, defaultChecked: propsDefaultChecked, onCheckedChange: propsOnCheckedChange, size, ...props }, forwardedRef) => {
2261
2379
  const [checked, onCheckedChange] = useControllableState2({
2262
2380
  prop: propsChecked,
2263
2381
  defaultProp: propsDefaultChecked,
@@ -2265,7 +2383,7 @@ var Checkbox = /* @__PURE__ */ forwardRef18(({ __inputScope, classNames, checked
2265
2383
  });
2266
2384
  const { id, validationValence, descriptionId, errorMessageId } = useInputContext(INPUT_NAME, __inputScope);
2267
2385
  const { tx } = useThemeContext();
2268
- return /* @__PURE__ */ React25.createElement(CheckboxPrimitive, {
2386
+ return /* @__PURE__ */ React26.createElement(CheckboxPrimitive.Root, {
2269
2387
  ...props,
2270
2388
  checked,
2271
2389
  onCheckedChange,
@@ -2279,7 +2397,7 @@ var Checkbox = /* @__PURE__ */ forwardRef18(({ __inputScope, classNames, checked
2279
2397
  size
2280
2398
  }, "shrink-0", classNames),
2281
2399
  ref: forwardedRef
2282
- }, /* @__PURE__ */ React25.createElement(Icon, {
2400
+ }, /* @__PURE__ */ React26.createElement(Icon, {
2283
2401
  icon: checked === "indeterminate" ? "ph--minus--regular" : "ph--check--regular",
2284
2402
  classNames: tx("input.checkboxIndicator", {
2285
2403
  size,
@@ -2287,14 +2405,14 @@ var Checkbox = /* @__PURE__ */ forwardRef18(({ __inputScope, classNames, checked
2287
2405
  })
2288
2406
  }));
2289
2407
  });
2290
- var Switch = /* @__PURE__ */ forwardRef18(({ __inputScope, classNames, checked: propsChecked, defaultChecked: propsDefaultChecked, onCheckedChange: propsOnCheckedChange, ...props }, forwardedRef) => {
2408
+ var Switch = /* @__PURE__ */ forwardRef16(({ __inputScope, classNames, checked: propsChecked, defaultChecked: propsDefaultChecked, onCheckedChange: propsOnCheckedChange, ...props }, forwardedRef) => {
2291
2409
  const [checked, onCheckedChange] = useControllableState2({
2292
2410
  prop: propsChecked,
2293
2411
  defaultProp: propsDefaultChecked ?? false,
2294
2412
  onChange: propsOnCheckedChange
2295
2413
  });
2296
2414
  const { id, validationValence, descriptionId, errorMessageId } = useInputContext(INPUT_NAME, __inputScope);
2297
- return /* @__PURE__ */ React25.createElement("input", {
2415
+ return /* @__PURE__ */ React26.createElement("input", {
2298
2416
  type: "checkbox",
2299
2417
  className: mx8("dx-checkbox--switch dx-focus-ring", classNames),
2300
2418
  checked,
@@ -2319,19 +2437,20 @@ var Input = {
2319
2437
  Checkbox,
2320
2438
  Switch,
2321
2439
  Label: Label3,
2322
- Description,
2440
+ Description: Description3,
2323
2441
  Validation,
2324
2442
  DescriptionAndValidation
2325
2443
  };
2326
2444
 
2327
2445
  // src/components/List/List.tsx
2328
- import { Primitive as Primitive11 } from "@radix-ui/react-primitive";
2329
- import { Slot as Slot11 } from "@radix-ui/react-slot";
2330
- import React27, { forwardRef as forwardRef19 } from "react";
2446
+ import { Primitive as Primitive15 } from "@radix-ui/react-primitive";
2447
+ import { Slot as Slot15 } from "@radix-ui/react-slot";
2448
+ import React28, { forwardRef as forwardRef17 } from "react";
2331
2449
  import { LIST_ITEM_NAME, LIST_NAME, ListItemCollapsibleContent, List as ListPrimitive, ListItem as ListPrimitiveItem, ListItemHeading as ListPrimitiveItemHeading, ListItemOpenTrigger as ListPrimitiveItemOpenTrigger, useListContext, useListItemContext } from "@dxos/react-list";
2450
+ import { composable as composable4, composableProps as composableProps10 } from "@dxos/ui-theme";
2332
2451
 
2333
2452
  // src/components/List/ListDropIndicator.tsx
2334
- import React26 from "react";
2453
+ import React27 from "react";
2335
2454
  var edgeToOrientationMap = {
2336
2455
  top: "horizontal",
2337
2456
  bottom: "horizontal",
@@ -2353,7 +2472,7 @@ var terminalSize = 8;
2353
2472
  var offsetToAlignTerminalWithLine = (strokeSize - terminalSize) / 2;
2354
2473
  var ListDropIndicator = ({ edge, gap = 0, lineInset = 0, terminalInset = lineInset - terminalSize }) => {
2355
2474
  const orientation = edgeToOrientationMap[edge];
2356
- return /* @__PURE__ */ React26.createElement("div", {
2475
+ return /* @__PURE__ */ React27.createElement("div", {
2357
2476
  role: "none",
2358
2477
  style: {
2359
2478
  "--line-thickness": `${strokeSize}px`,
@@ -2369,22 +2488,23 @@ var ListDropIndicator = ({ edge, gap = 0, lineInset = 0, terminalInset = lineIns
2369
2488
  };
2370
2489
 
2371
2490
  // src/components/List/List.tsx
2372
- var List = /* @__PURE__ */ forwardRef19(({ classNames, children, ...props }, forwardedRef) => {
2491
+ var List = composable4(({ children, ...props }, forwardedRef) => {
2373
2492
  const { tx } = useThemeContext();
2374
2493
  const density = useDensityContext(props.density);
2375
- return /* @__PURE__ */ React27.createElement(DensityProvider, {
2494
+ const { className, ...rest } = composableProps10(props);
2495
+ return /* @__PURE__ */ React28.createElement(DensityProvider, {
2376
2496
  density
2377
- }, /* @__PURE__ */ React27.createElement(ListPrimitive, {
2378
- ...props,
2379
- className: tx("list.root", {}, classNames),
2497
+ }, /* @__PURE__ */ React28.createElement(ListPrimitive, {
2498
+ ...rest,
2499
+ className: tx("list.root", {}, className),
2380
2500
  ref: forwardedRef
2381
2501
  }, children));
2382
2502
  });
2383
- var ListItemEndcap = /* @__PURE__ */ forwardRef19(({ children, classNames, asChild, ...props }, forwardedRef) => {
2384
- const Comp = asChild ? Slot11 : Primitive11.div;
2503
+ var ListItemEndcap = /* @__PURE__ */ forwardRef17(({ children, classNames, asChild, ...props }, forwardedRef) => {
2504
+ const Comp = asChild ? Slot15 : Primitive15.div;
2385
2505
  const density = useDensityContext();
2386
2506
  const { tx } = useThemeContext();
2387
- return /* @__PURE__ */ React27.createElement(Comp, {
2507
+ return /* @__PURE__ */ React28.createElement(Comp, {
2388
2508
  ...!asChild && {
2389
2509
  role: "none"
2390
2510
  },
@@ -2398,7 +2518,7 @@ var ListItemEndcap = /* @__PURE__ */ forwardRef19(({ children, classNames, asChi
2398
2518
  var MockListItemOpenTrigger = ({ classNames, ...props }) => {
2399
2519
  const density = useDensityContext();
2400
2520
  const { tx } = useThemeContext();
2401
- return /* @__PURE__ */ React27.createElement("div", {
2521
+ return /* @__PURE__ */ React28.createElement("div", {
2402
2522
  role: "none",
2403
2523
  ...props,
2404
2524
  className: tx("list.item.openTrigger", {
@@ -2406,37 +2526,37 @@ var MockListItemOpenTrigger = ({ classNames, ...props }) => {
2406
2526
  }, classNames)
2407
2527
  });
2408
2528
  };
2409
- var ListItemHeading = /* @__PURE__ */ forwardRef19(({ children, classNames, ...props }, forwardedRef) => {
2529
+ var ListItemHeading = /* @__PURE__ */ forwardRef17(({ children, classNames, ...props }, forwardedRef) => {
2410
2530
  const { tx } = useThemeContext();
2411
2531
  const density = useDensityContext();
2412
- return /* @__PURE__ */ React27.createElement(ListPrimitiveItemHeading, {
2532
+ return /* @__PURE__ */ React28.createElement(ListPrimitiveItemHeading, {
2413
2533
  ...props,
2414
2534
  className: tx("list.item.heading", {
2415
2535
  density
2416
2536
  }, classNames),
2417
2537
  ref: forwardedRef
2418
- }, children);
2538
+ }, /* @__PURE__ */ React28.createElement("span", null, children));
2419
2539
  });
2420
- var ListItemOpenTrigger = /* @__PURE__ */ forwardRef19(({ __listItemScope, classNames, children, ...props }, forwardedRef) => {
2540
+ var ListItemOpenTrigger = /* @__PURE__ */ forwardRef17(({ __listItemScope, classNames, children, ...props }, forwardedRef) => {
2421
2541
  const { tx } = useThemeContext();
2422
2542
  const density = useDensityContext();
2423
2543
  const { open } = useListItemContext(LIST_ITEM_NAME, __listItemScope);
2424
- return /* @__PURE__ */ React27.createElement(ListPrimitiveItemOpenTrigger, {
2544
+ return /* @__PURE__ */ React28.createElement(ListPrimitiveItemOpenTrigger, {
2425
2545
  ...props,
2426
2546
  className: tx("list.item.openTrigger", {
2427
2547
  density
2428
2548
  }, classNames),
2429
2549
  ref: forwardedRef
2430
- }, children || /* @__PURE__ */ React27.createElement(Icon, {
2550
+ }, children || /* @__PURE__ */ React28.createElement(Icon, {
2431
2551
  size: 3,
2432
2552
  icon: open ? "ph--caret-down--bold" : "ph--caret-right--bold",
2433
2553
  classNames: tx("list.item.openTriggerIcon", {})
2434
2554
  }));
2435
2555
  });
2436
- var ListItemRoot = /* @__PURE__ */ forwardRef19(({ classNames, children, ...props }, forwardedRef) => {
2556
+ var ListItemRoot = /* @__PURE__ */ forwardRef17(({ classNames, children, ...props }, forwardedRef) => {
2437
2557
  const { tx } = useThemeContext();
2438
2558
  const density = useDensityContext();
2439
- return /* @__PURE__ */ React27.createElement(ListPrimitiveItem, {
2559
+ return /* @__PURE__ */ React28.createElement(ListPrimitiveItem, {
2440
2560
  ...props,
2441
2561
  className: tx("list.item.root", {
2442
2562
  density,
@@ -2456,10 +2576,10 @@ var ListItem = {
2456
2576
  };
2457
2577
 
2458
2578
  // src/components/List/Tree.tsx
2459
- import React29, { forwardRef as forwardRef20 } from "react";
2579
+ import React30, { forwardRef as forwardRef18 } from "react";
2460
2580
 
2461
2581
  // src/components/List/TreeDropIndicator.tsx
2462
- import React28 from "react";
2582
+ import React29 from "react";
2463
2583
  var edgeToOrientationMap2 = {
2464
2584
  "reorder-above": "sibling",
2465
2585
  "reorder-below": "sibling",
@@ -2469,7 +2589,7 @@ var edgeToOrientationMap2 = {
2469
2589
  var orientationStyles2 = {
2470
2590
  // TODO(wittjosiah): Stop using left/right here.
2471
2591
  sibling: "h-(--line-thickness) left-(--horizontal-indent) right-0 bg-accent-surface before:left-(--negative-terminal-size)",
2472
- child: "w-full top-0 bottom-0 border-[length:--line-thickness] before:invisible"
2592
+ child: "inset-0 border-[length:var(--line-thickness)] before:invisible"
2473
2593
  };
2474
2594
  var instructionStyles = {
2475
2595
  "reorder-above": "top-(--line-offset) before:top-(--offset-terminal)",
@@ -2489,7 +2609,7 @@ var TreeDropIndicator = ({ instruction, gap = 0 }) => {
2489
2609
  if (isBlocked) {
2490
2610
  return null;
2491
2611
  }
2492
- return /* @__PURE__ */ React28.createElement("div", {
2612
+ return /* @__PURE__ */ React29.createElement("div", {
2493
2613
  style: {
2494
2614
  "--line-thickness": `${strokeSize2}px`,
2495
2615
  "--line-offset": `${lineOffset}`,
@@ -2504,22 +2624,22 @@ var TreeDropIndicator = ({ instruction, gap = 0 }) => {
2504
2624
  };
2505
2625
 
2506
2626
  // src/components/List/Tree.tsx
2507
- var TreeRoot = /* @__PURE__ */ forwardRef20((props, forwardedRef) => {
2508
- return /* @__PURE__ */ React29.createElement(List, {
2627
+ var TreeRoot = /* @__PURE__ */ forwardRef18((props, forwardedRef) => {
2628
+ return /* @__PURE__ */ React30.createElement(List, {
2509
2629
  ...props,
2510
2630
  ref: forwardedRef
2511
2631
  });
2512
2632
  });
2513
- var TreeBranch = /* @__PURE__ */ forwardRef20(({ __listScope, ...props }, forwardedRef) => {
2633
+ var TreeBranch = /* @__PURE__ */ forwardRef18(({ __listScope, ...props }, forwardedRef) => {
2514
2634
  const { headingId } = useListItemContext(LIST_ITEM_NAME, __listScope);
2515
- return /* @__PURE__ */ React29.createElement(List, {
2635
+ return /* @__PURE__ */ React30.createElement(List, {
2516
2636
  ...props,
2517
2637
  "aria-labelledby": headingId,
2518
2638
  ref: forwardedRef
2519
2639
  });
2520
2640
  });
2521
- var TreeItemRoot = /* @__PURE__ */ forwardRef20((props, forwardedRef) => {
2522
- return /* @__PURE__ */ React29.createElement(ListItem.Root, {
2641
+ var TreeItemRoot = /* @__PURE__ */ forwardRef18((props, forwardedRef) => {
2642
+ return /* @__PURE__ */ React30.createElement(ListItem.Root, {
2523
2643
  role: "treeitem",
2524
2644
  ...props,
2525
2645
  ref: forwardedRef
@@ -2545,20 +2665,24 @@ var TreeItem = {
2545
2665
  // src/components/List/Treegrid.tsx
2546
2666
  import { useFocusFinders } from "@fluentui/react-tabster";
2547
2667
  import { createContextScope as createContextScope2 } from "@radix-ui/react-context";
2548
- import { Primitive as Primitive12 } from "@radix-ui/react-primitive";
2549
- import { Slot as Slot12 } from "@radix-ui/react-slot";
2668
+ import { Primitive as Primitive16 } from "@radix-ui/react-primitive";
2669
+ import { Slot as Slot16 } from "@radix-ui/react-slot";
2550
2670
  import { useControllableState as useControllableState3 } from "@radix-ui/react-use-controllable-state";
2551
- import React30, { forwardRef as forwardRef21, useCallback as useCallback6 } from "react";
2671
+ import React31, { forwardRef as forwardRef19, useCallback as useCallback7 } from "react";
2672
+ import { composable as composable5, composableProps as composableProps11 } from "@dxos/ui-theme";
2552
2673
  var TREEGRID_ROW_NAME = "TreegridRow";
2553
2674
  var [createTreegridRowContext, createTreegridRowScope] = createContextScope2(TREEGRID_ROW_NAME, []);
2554
2675
  var [TreegridRowProvider, useTreegridRowContext] = createTreegridRowContext(TREEGRID_ROW_NAME);
2555
- var PATH_SEPARATOR = "~";
2556
- var PARENT_OF_SEPARATOR = " ";
2557
- var TreegridRoot = /* @__PURE__ */ forwardRef21(({ asChild, classNames, children, style, gridTemplateColumns, ...props }, forwardedRef) => {
2676
+ var TREEGRID_PATH_SEPARATOR = "~";
2677
+ var TREEGRID_PARENT_OF_SEPARATOR = " ";
2678
+ var TreegridRoot = composable5(({ asChild, classNames, children, style, gridTemplateColumns, onKeyDown: onKeyDownProp, ...props }, forwardedRef) => {
2558
2679
  const { tx } = useThemeContext();
2559
- const Comp = asChild ? Slot12 : Primitive12.div;
2680
+ const { className, role: _role, ...rest } = composableProps11(props, {
2681
+ classNames
2682
+ });
2683
+ const Comp = asChild ? Slot16 : Primitive16.div;
2560
2684
  const { findFirstFocusable } = useFocusFinders();
2561
- const handleKeyDown = useCallback6((event) => {
2685
+ const handleKeyDown = useCallback7((event) => {
2562
2686
  switch (event.key) {
2563
2687
  case "ArrowDown":
2564
2688
  case "ArrowUp": {
@@ -2587,14 +2711,15 @@ var TreegridRoot = /* @__PURE__ */ forwardRef21(({ asChild, classNames, children
2587
2711
  break;
2588
2712
  }
2589
2713
  }
2590
- props.onKeyDown?.(event);
2714
+ onKeyDownProp?.(event);
2591
2715
  }, [
2592
- findFirstFocusable
2716
+ findFirstFocusable,
2717
+ onKeyDownProp
2593
2718
  ]);
2594
- return /* @__PURE__ */ React30.createElement(Comp, {
2719
+ return /* @__PURE__ */ React31.createElement(Comp, {
2595
2720
  role: "treegrid",
2596
- ...props,
2597
- className: tx("treegrid.root", {}, classNames),
2721
+ ...rest,
2722
+ className: tx("treegrid.root", {}, className),
2598
2723
  style: {
2599
2724
  ...style,
2600
2725
  gridTemplateColumns
@@ -2603,21 +2728,21 @@ var TreegridRoot = /* @__PURE__ */ forwardRef21(({ asChild, classNames, children
2603
2728
  ref: forwardedRef
2604
2729
  }, children);
2605
2730
  });
2606
- var TreegridRow = /* @__PURE__ */ forwardRef21(({ __treegridRowScope, asChild, classNames, children, id, parentOf, open: propsOpen, defaultOpen, onOpenChange: propsOnOpenChange, ...props }, forwardedRef) => {
2731
+ var TreegridRow = /* @__PURE__ */ forwardRef19(({ __treegridRowScope, asChild, classNames, children, id, parentOf, open: propsOpen, defaultOpen, onOpenChange: propsOnOpenChange, ...props }, forwardedRef) => {
2607
2732
  const { tx } = useThemeContext();
2608
- const Comp = asChild ? Slot12 : Primitive12.div;
2609
- const pathParts = id.split(PATH_SEPARATOR);
2733
+ const Comp = asChild ? Slot16 : Primitive16.div;
2734
+ const pathParts = id.split(TREEGRID_PATH_SEPARATOR);
2610
2735
  const level = pathParts.length - 1;
2611
2736
  const [open, onOpenChange] = useControllableState3({
2612
2737
  prop: propsOpen,
2613
2738
  onChange: propsOnOpenChange,
2614
2739
  defaultProp: defaultOpen
2615
2740
  });
2616
- return /* @__PURE__ */ React30.createElement(TreegridRowProvider, {
2741
+ return /* @__PURE__ */ React31.createElement(TreegridRowProvider, {
2617
2742
  open,
2618
2743
  onOpenChange,
2619
2744
  scope: __treegridRowScope
2620
- }, /* @__PURE__ */ React30.createElement(Comp, {
2745
+ }, /* @__PURE__ */ React31.createElement(Comp, {
2621
2746
  role: "row",
2622
2747
  "aria-level": level,
2623
2748
  className: tx("treegrid.row", {
@@ -2632,9 +2757,9 @@ var TreegridRow = /* @__PURE__ */ forwardRef21(({ __treegridRowScope, asChild, c
2632
2757
  ref: forwardedRef
2633
2758
  }, children));
2634
2759
  });
2635
- var TreegridCell = /* @__PURE__ */ forwardRef21(({ classNames, children, indent, ...props }, forwardedRef) => {
2760
+ var TreegridCell = /* @__PURE__ */ forwardRef19(({ classNames, children, indent, ...props }, forwardedRef) => {
2636
2761
  const { tx } = useThemeContext();
2637
- return /* @__PURE__ */ React30.createElement("div", {
2762
+ return /* @__PURE__ */ React31.createElement("div", {
2638
2763
  role: "gridcell",
2639
2764
  className: tx("treegrid.cell", {
2640
2765
  indent
@@ -2646,28 +2771,24 @@ var TreegridCell = /* @__PURE__ */ forwardRef21(({ classNames, children, indent,
2646
2771
  var Treegrid = {
2647
2772
  Root: TreegridRoot,
2648
2773
  Row: TreegridRow,
2649
- Cell: TreegridCell,
2650
- PARENT_OF_SEPARATOR,
2651
- PATH_SEPARATOR,
2652
- createTreegridRowScope,
2653
- useTreegridRowContext
2774
+ Cell: TreegridCell
2654
2775
  };
2655
2776
 
2656
2777
  // src/components/Main/Main.tsx
2657
- import { useFocusableGroup } from "@fluentui/react-tabster";
2658
- import { createContext as createContext7 } from "@radix-ui/react-context";
2778
+ import { useFocusableGroup as useFocusableGroup2 } from "@fluentui/react-tabster";
2779
+ import { createContext as createContext8 } from "@radix-ui/react-context";
2659
2780
  import { DialogContent as DialogContent2, Root as DialogRoot2, DialogTitle as DialogTitle2 } from "@radix-ui/react-dialog";
2660
- import { Primitive as Primitive13 } from "@radix-ui/react-primitive";
2661
- import { Slot as Slot13 } from "@radix-ui/react-slot";
2781
+ import { Primitive as Primitive17 } from "@radix-ui/react-primitive";
2782
+ import { Slot as Slot17 } from "@radix-ui/react-slot";
2662
2783
  import { useControllableState as useControllableState4 } from "@radix-ui/react-use-controllable-state";
2663
- import React31, { forwardRef as forwardRef22, useCallback as useCallback8, useEffect as useEffect5, useRef as useRef3, useState as useState7 } from "react";
2784
+ import React32, { forwardRef as forwardRef20, useCallback as useCallback9, useEffect as useEffect5, useRef as useRef4, useState as useState8 } from "react";
2664
2785
  import { addEventListener } from "@dxos/async";
2665
2786
  import { log } from "@dxos/log";
2666
2787
  import { useForwardedRef, useMediaQuery } from "@dxos/react-hooks";
2667
2788
  import { osTranslations as osTranslations3 } from "@dxos/ui-theme";
2668
2789
 
2669
2790
  // src/components/Main/useSwipeToDismiss.ts
2670
- import { useCallback as useCallback7, useEffect as useEffect4, useState as useState6 } from "react";
2791
+ import { useCallback as useCallback8, useEffect as useEffect4, useState as useState7 } from "react";
2671
2792
  var useSwipeToDismiss = (ref, {
2672
2793
  onDismiss,
2673
2794
  dismissThreshold = 64,
@@ -2676,22 +2797,22 @@ var useSwipeToDismiss = (ref, {
2676
2797
  /* side = 'inline-start' */
2677
2798
  }) => {
2678
2799
  const $root = ref.current;
2679
- const [motionState, setMotionState] = useState6(0);
2680
- const [gestureStartX, setGestureStartX] = useState6(0);
2681
- const setIdle = useCallback7(() => {
2800
+ const [motionState, setMotionState] = useState7(0);
2801
+ const [gestureStartX, setGestureStartX] = useState7(0);
2802
+ const setIdle = useCallback8(() => {
2682
2803
  setMotionState(0);
2683
2804
  $root?.style.removeProperty("inset-inline-start");
2684
2805
  $root?.style.setProperty("transition-duration", "200ms");
2685
2806
  }, [
2686
2807
  $root
2687
2808
  ]);
2688
- const setFollowing = useCallback7(() => {
2809
+ const setFollowing = useCallback8(() => {
2689
2810
  setMotionState(2);
2690
2811
  $root?.style.setProperty("transition-duration", "0ms");
2691
2812
  }, [
2692
2813
  $root
2693
2814
  ]);
2694
- const handlePointerDown = useCallback7(({ screenX }) => {
2815
+ const handlePointerDown = useCallback8(({ screenX }) => {
2695
2816
  if (motionState === 0) {
2696
2817
  setMotionState(1);
2697
2818
  setGestureStartX(screenX);
@@ -2699,7 +2820,7 @@ var useSwipeToDismiss = (ref, {
2699
2820
  }, [
2700
2821
  motionState
2701
2822
  ]);
2702
- const handlePointerMove = useCallback7(({ screenX }) => {
2823
+ const handlePointerMove = useCallback8(({ screenX }) => {
2703
2824
  if ($root) {
2704
2825
  const delta = Math.min(screenX - gestureStartX, 0);
2705
2826
  switch (motionState) {
@@ -2723,7 +2844,7 @@ var useSwipeToDismiss = (ref, {
2723
2844
  motionState,
2724
2845
  gestureStartX
2725
2846
  ]);
2726
- const handlePointerUp = useCallback7(() => {
2847
+ const handlePointerUp = useCallback8(() => {
2727
2848
  setIdle();
2728
2849
  }, [
2729
2850
  setIdle
@@ -2769,7 +2890,7 @@ var handleOpenAutoFocus = (event) => {
2769
2890
  };
2770
2891
  var landmarkAttr = "data-main-landmark";
2771
2892
  var useLandmarkMover = (propsOnKeyDown, landmark) => {
2772
- const handleKeyDown = useCallback8((event) => {
2893
+ const handleKeyDown = useCallback9((event) => {
2773
2894
  const target = event.target;
2774
2895
  if (event.target === event.currentTarget && event.key === "Tab" && target.hasAttribute(landmarkAttr)) {
2775
2896
  event.preventDefault();
@@ -2783,7 +2904,7 @@ var useLandmarkMover = (propsOnKeyDown, landmark) => {
2783
2904
  }, [
2784
2905
  propsOnKeyDown
2785
2906
  ]);
2786
- const focusableGroupAttrs = useFocusableGroup({
2907
+ const focusableGroupAttrs = useFocusableGroup2({
2787
2908
  tabBehavior: "limited",
2788
2909
  ignoreDefaultKeydown: {
2789
2910
  Tab: true
@@ -2796,25 +2917,15 @@ var useLandmarkMover = (propsOnKeyDown, landmark) => {
2796
2917
  ...focusableGroupAttrs
2797
2918
  };
2798
2919
  };
2799
- var [MainProvider, useMainContext] = createContext7(MAIN_NAME, {
2920
+ var [MainProvider, useMainContext] = createContext8(MAIN_NAME, {
2800
2921
  resizing: false,
2801
2922
  navigationSidebarState: "closed",
2802
2923
  setNavigationSidebarState: (_nextState) => {
2803
- log.warn("Not initialized", void 0, {
2804
- F: __dxlog_file,
2805
- L: 111,
2806
- S: void 0,
2807
- C: (f, a) => f(...a)
2808
- });
2924
+ log.warn("Not initialized", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 67, S: void 0 });
2809
2925
  },
2810
2926
  complementarySidebarState: "closed",
2811
2927
  setComplementarySidebarState: (_nextState) => {
2812
- log.warn("Not initialized", void 0, {
2813
- F: __dxlog_file,
2814
- L: 116,
2815
- S: void 0,
2816
- C: (f, a) => f(...a)
2817
- });
2928
+ log.warn("Not initialized", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 71, S: void 0 });
2818
2929
  }
2819
2930
  });
2820
2931
  var useSidebars = (consumerName) => {
@@ -2822,22 +2933,22 @@ var useSidebars = (consumerName) => {
2822
2933
  return {
2823
2934
  navigationSidebarState,
2824
2935
  setNavigationSidebarState,
2825
- toggleNavigationSidebar: useCallback8(() => setNavigationSidebarState(navigationSidebarState === "expanded" ? "closed" : "expanded"), [
2936
+ toggleNavigationSidebar: useCallback9(() => setNavigationSidebarState(navigationSidebarState === "expanded" ? "closed" : "expanded"), [
2826
2937
  navigationSidebarState,
2827
2938
  setNavigationSidebarState
2828
2939
  ]),
2829
- openNavigationSidebar: useCallback8(() => setNavigationSidebarState("expanded"), []),
2830
- collapseNavigationSidebar: useCallback8(() => setNavigationSidebarState("collapsed"), []),
2831
- closeNavigationSidebar: useCallback8(() => setNavigationSidebarState("closed"), []),
2940
+ openNavigationSidebar: useCallback9(() => setNavigationSidebarState("expanded"), []),
2941
+ collapseNavigationSidebar: useCallback9(() => setNavigationSidebarState("collapsed"), []),
2942
+ closeNavigationSidebar: useCallback9(() => setNavigationSidebarState("closed"), []),
2832
2943
  complementarySidebarState,
2833
2944
  setComplementarySidebarState,
2834
- toggleComplementarySidebar: useCallback8(() => setComplementarySidebarState(complementarySidebarState === "expanded" ? "closed" : "expanded"), [
2945
+ toggleComplementarySidebar: useCallback9(() => setComplementarySidebarState(complementarySidebarState === "expanded" ? "closed" : "expanded"), [
2835
2946
  complementarySidebarState,
2836
2947
  setComplementarySidebarState
2837
2948
  ]),
2838
- openComplementarySidebar: useCallback8(() => setComplementarySidebarState("expanded"), []),
2839
- collapseComplementarySidebar: useCallback8(() => setComplementarySidebarState("collapsed"), []),
2840
- closeComplementarySidebar: useCallback8(() => setComplementarySidebarState("closed"), [])
2949
+ openComplementarySidebar: useCallback9(() => setComplementarySidebarState("expanded"), []),
2950
+ collapseComplementarySidebar: useCallback9(() => setComplementarySidebarState("collapsed"), []),
2951
+ closeComplementarySidebar: useCallback9(() => setComplementarySidebarState("closed"), [])
2841
2952
  };
2842
2953
  };
2843
2954
  var MainRoot = ({ navigationSidebarState: propsNavigationSidebarState, defaultNavigationSidebarState = "closed", onNavigationSidebarStateChange, complementarySidebarState: propsComplementarySidebarState, defaultComplementarySidebarState = "closed", onComplementarySidebarStateChange, children, ...props }) => {
@@ -2852,8 +2963,8 @@ var MainRoot = ({ navigationSidebarState: propsNavigationSidebarState, defaultNa
2852
2963
  defaultProp: defaultComplementarySidebarState,
2853
2964
  onChange: onComplementarySidebarStateChange
2854
2965
  });
2855
- const [resizing, setResizing] = useState7(false);
2856
- const resizeInterval = useRef3(null);
2966
+ const [resizing, setResizing] = useState8(false);
2967
+ const resizeInterval = useRef4(null);
2857
2968
  useEffect5(() => addEventListener(window, "resize", () => {
2858
2969
  setResizing(true);
2859
2970
  if (resizeInterval.current) {
@@ -2864,7 +2975,7 @@ var MainRoot = ({ navigationSidebarState: propsNavigationSidebarState, defaultNa
2864
2975
  resizeInterval.current = null;
2865
2976
  }, 3e3);
2866
2977
  }), []);
2867
- return /* @__PURE__ */ React31.createElement(MainProvider, {
2978
+ return /* @__PURE__ */ React32.createElement(MainProvider, {
2868
2979
  ...props,
2869
2980
  navigationSidebarState,
2870
2981
  setNavigationSidebarState,
@@ -2874,11 +2985,11 @@ var MainRoot = ({ navigationSidebarState: propsNavigationSidebarState, defaultNa
2874
2985
  }, children);
2875
2986
  };
2876
2987
  MainRoot.displayName = MAIN_ROOT_NAME;
2877
- var MainOverlay = /* @__PURE__ */ forwardRef22(({ classNames, ...props }, forwardedRef) => {
2988
+ var MainOverlay = /* @__PURE__ */ forwardRef20(({ classNames, ...props }, forwardedRef) => {
2878
2989
  const [isLg] = useMediaQuery("lg");
2879
2990
  const { navigationSidebarState, setNavigationSidebarState, complementarySidebarState, setComplementarySidebarState } = useMainContext(MAIN_OVERLAY_NAME);
2880
2991
  const { tx } = useThemeContext();
2881
- return /* @__PURE__ */ React31.createElement("div", {
2992
+ return /* @__PURE__ */ React32.createElement("div", {
2882
2993
  ...props,
2883
2994
  onClick: () => {
2884
2995
  setNavigationSidebarState("collapsed");
@@ -2895,16 +3006,16 @@ var MainOverlay = /* @__PURE__ */ forwardRef22(({ classNames, ...props }, forwar
2895
3006
  });
2896
3007
  });
2897
3008
  MainOverlay.displayName = MAIN_OVERLAY_NAME;
2898
- var MainSidebar = /* @__PURE__ */ forwardRef22(({ classNames, children, swipeToDismiss, onOpenAutoFocus, state, resizing, onStateChange, side, label, ...props }, forwardedRef) => {
3009
+ var MainSidebar = /* @__PURE__ */ forwardRef20(({ classNames, children, swipeToDismiss, onOpenAutoFocus, state, resizing, onStateChange, side, label, ...props }, forwardedRef) => {
2899
3010
  const [isLg] = useMediaQuery("lg");
2900
3011
  const { tx } = useThemeContext();
2901
3012
  const { t } = useTranslation(osTranslations3);
2902
3013
  const ref = useForwardedRef(forwardedRef);
2903
- const noopRef = useRef3(null);
3014
+ const noopRef = useRef4(null);
2904
3015
  useSwipeToDismiss(swipeToDismiss ? ref : noopRef, {
2905
3016
  onDismiss: () => onStateChange?.("closed")
2906
3017
  });
2907
- const handleKeyDown = useCallback8((event) => {
3018
+ const handleKeyDown = useCallback9((event) => {
2908
3019
  const focusGroupParent = event.target.closest("[data-tabster]");
2909
3020
  if (event.key === "Escape" && focusGroupParent) {
2910
3021
  event.preventDefault();
@@ -2915,14 +3026,14 @@ var MainSidebar = /* @__PURE__ */ forwardRef22(({ classNames, children, swipeToD
2915
3026
  }, [
2916
3027
  props.onKeyDown
2917
3028
  ]);
2918
- const Root9 = isLg ? Primitive13.div : DialogContent2;
2919
- return /* @__PURE__ */ React31.createElement(DialogRoot2, {
3029
+ const Root14 = isLg ? Primitive17.div : DialogContent2;
3030
+ return /* @__PURE__ */ React32.createElement(DialogRoot2, {
2920
3031
  open: state !== "closed",
2921
3032
  "aria-label": toLocalizedString(label, t),
2922
3033
  modal: false
2923
- }, !isLg && /* @__PURE__ */ React31.createElement(DialogTitle2, {
3034
+ }, !isLg && /* @__PURE__ */ React32.createElement(DialogTitle2, {
2924
3035
  className: "sr-only"
2925
- }, toLocalizedString(label, t)), /* @__PURE__ */ React31.createElement(Root9, {
3036
+ }, toLocalizedString(label, t)), /* @__PURE__ */ React32.createElement(Root14, {
2926
3037
  ...!isLg && {
2927
3038
  forceMount: true,
2928
3039
  tabIndex: -1,
@@ -2940,10 +3051,10 @@ var MainSidebar = /* @__PURE__ */ forwardRef22(({ classNames, children, swipeToD
2940
3051
  ref
2941
3052
  }, children));
2942
3053
  });
2943
- var MainNavigationSidebar = /* @__PURE__ */ forwardRef22((props, forwardedRef) => {
3054
+ var MainNavigationSidebar = /* @__PURE__ */ forwardRef20((props, forwardedRef) => {
2944
3055
  const { navigationSidebarState, setNavigationSidebarState, resizing } = useMainContext(NAVIGATION_SIDEBAR_NAME);
2945
3056
  const mover = useLandmarkMover(props.onKeyDown, "0");
2946
- return /* @__PURE__ */ React31.createElement(MainSidebar, {
3057
+ return /* @__PURE__ */ React32.createElement(MainSidebar, {
2947
3058
  ...mover,
2948
3059
  ...props,
2949
3060
  state: navigationSidebarState,
@@ -2954,10 +3065,10 @@ var MainNavigationSidebar = /* @__PURE__ */ forwardRef22((props, forwardedRef) =
2954
3065
  });
2955
3066
  });
2956
3067
  MainNavigationSidebar.displayName = NAVIGATION_SIDEBAR_NAME;
2957
- var MainComplementarySidebar = /* @__PURE__ */ forwardRef22((props, forwardedRef) => {
3068
+ var MainComplementarySidebar = /* @__PURE__ */ forwardRef20((props, forwardedRef) => {
2958
3069
  const { complementarySidebarState, setComplementarySidebarState, resizing } = useMainContext(COMPLEMENTARY_SIDEBAR_NAME);
2959
3070
  const mover = useLandmarkMover(props.onKeyDown, "2");
2960
- return /* @__PURE__ */ React31.createElement(MainSidebar, {
3071
+ return /* @__PURE__ */ React32.createElement(MainSidebar, {
2961
3072
  ...mover,
2962
3073
  ...props,
2963
3074
  state: complementarySidebarState,
@@ -2968,17 +3079,17 @@ var MainComplementarySidebar = /* @__PURE__ */ forwardRef22((props, forwardedRef
2968
3079
  });
2969
3080
  });
2970
3081
  MainComplementarySidebar.displayName = COMPLEMENTARY_SIDEBAR_NAME;
2971
- var MainContent = /* @__PURE__ */ forwardRef22(({ asChild, classNames, bounce, handlesFocus, children, role, ...props }, forwardedRef) => {
3082
+ var MainContent = /* @__PURE__ */ forwardRef20(({ asChild, classNames, bounce, handlesFocus, children, role, ...props }, forwardedRef) => {
2972
3083
  const { navigationSidebarState, complementarySidebarState } = useMainContext(MAIN_NAME);
2973
3084
  const { tx } = useThemeContext();
2974
- const Comp = asChild ? Slot13 : role ? Primitive13.div : "main";
3085
+ const Comp = asChild ? Slot17 : role ? Primitive17.div : "main";
2975
3086
  const mover = useLandmarkMover(props.onKeyDown, "1");
2976
- return /* @__PURE__ */ React31.createElement(Comp, {
2977
- role,
3087
+ return /* @__PURE__ */ React32.createElement(Comp, {
2978
3088
  ...handlesFocus && {
2979
3089
  ...mover
2980
3090
  },
2981
3091
  ...props,
3092
+ role,
2982
3093
  "data-sidebar-left-state": navigationSidebarState,
2983
3094
  "data-sidebar-right-state": complementarySidebarState,
2984
3095
  "data-handles-focus": handlesFocus,
@@ -2999,11 +3110,13 @@ var Main = {
2999
3110
  };
3000
3111
 
3001
3112
  // src/components/Message/Message.tsx
3002
- import { createContext as createContext8 } from "@radix-ui/react-context";
3003
- import { Primitive as Primitive14 } from "@radix-ui/react-primitive";
3004
- import { Slot as Slot14 } from "@radix-ui/react-slot";
3005
- import React32, { forwardRef as forwardRef23 } from "react";
3113
+ import { createContext as createContext9 } from "@radix-ui/react-context";
3114
+ import { Primitive as Primitive18 } from "@radix-ui/react-primitive";
3115
+ import { Slot as Slot18 } from "@radix-ui/react-slot";
3116
+ import React33, { forwardRef as forwardRef21 } from "react";
3117
+ import { useTranslation as useTranslation4 } from "react-i18next";
3006
3118
  import { useId as useId3 } from "@dxos/react-hooks";
3119
+ import { translationKey as translationKey2 } from "#translations";
3007
3120
  var messageIcons = {
3008
3121
  success: "ph--check-circle--duotone",
3009
3122
  info: "ph--info--duotone",
@@ -3012,18 +3125,18 @@ var messageIcons = {
3012
3125
  neutral: "ph--info--duotone"
3013
3126
  };
3014
3127
  var MESSAGE_NAME = "Message";
3015
- var [MessageProvider, useMessageContext] = createContext8(MESSAGE_NAME);
3016
- var MessageRoot = /* @__PURE__ */ forwardRef23(({ asChild, valence = "neutral", elevation: propsElevation, classNames, titleId: propsTitleId, descriptionId: propsDescriptionId, children, ...props }, forwardedRef) => {
3128
+ var [MessageProvider, useMessageContext] = createContext9(MESSAGE_NAME);
3129
+ var MessageRoot = /* @__PURE__ */ forwardRef21(({ asChild, valence = "neutral", elevation: propsElevation, classNames, titleId: propsTitleId, descriptionId: propsDescriptionId, children, ...props }, forwardedRef) => {
3017
3130
  const { tx } = useThemeContext();
3018
3131
  const titleId = useId3("message__title", propsTitleId);
3019
3132
  const descriptionId = useId3("message__description", propsDescriptionId);
3020
3133
  const elevation = useElevationContext(propsElevation);
3021
- const Comp = asChild ? Slot14 : Primitive14.div;
3022
- return /* @__PURE__ */ React32.createElement(MessageProvider, {
3134
+ const Comp = asChild ? Slot18 : Primitive18.div;
3135
+ return /* @__PURE__ */ React33.createElement(MessageProvider, {
3023
3136
  titleId,
3024
3137
  descriptionId,
3025
3138
  valence
3026
- }, /* @__PURE__ */ React32.createElement(Comp, {
3139
+ }, /* @__PURE__ */ React33.createElement(Comp, {
3027
3140
  role: valence === "neutral" ? "paragraph" : "alert",
3028
3141
  ...props,
3029
3142
  className: tx("message.root", {
@@ -3037,33 +3150,40 @@ var MessageRoot = /* @__PURE__ */ forwardRef23(({ asChild, valence = "neutral",
3037
3150
  });
3038
3151
  MessageRoot.displayName = MESSAGE_NAME;
3039
3152
  var MESSAGE_TITLE_NAME = "MessageTitle";
3040
- var MessageTitle = /* @__PURE__ */ forwardRef23(({ asChild, classNames, children, icon: iconProp, ...props }, forwardedRef) => {
3153
+ var MessageTitle = /* @__PURE__ */ forwardRef21(({ classNames, children, icon: iconProp, onClose }, forwardedRef) => {
3154
+ const { t } = useTranslation4(translationKey2);
3041
3155
  const { tx } = useThemeContext();
3042
3156
  const { titleId, valence } = useMessageContext(MESSAGE_TITLE_NAME);
3043
- const Comp = asChild ? Slot14 : Primitive14.h2;
3044
3157
  const icon = iconProp ?? messageIcons[valence];
3045
- return /* @__PURE__ */ React32.createElement(Comp, {
3046
- ...props,
3158
+ return /* @__PURE__ */ React33.createElement("div", {
3159
+ role: "none",
3047
3160
  className: tx("message.header", {}, classNames),
3048
3161
  id: titleId,
3049
3162
  ref: forwardedRef
3050
- }, !icon && valence === "neutral" ? /* @__PURE__ */ React32.createElement("div", null) : /* @__PURE__ */ React32.createElement(Icon, {
3051
- size: 5,
3052
- icon,
3053
- classNames: tx("message.icon", {
3163
+ }, icon && /* @__PURE__ */ React33.createElement("div", {
3164
+ role: "none",
3165
+ className: tx("message.icon", {
3054
3166
  valence
3055
3167
  })
3056
- }), /* @__PURE__ */ React32.createElement("span", {
3168
+ }, /* @__PURE__ */ React33.createElement(Icon, {
3169
+ icon
3170
+ })), /* @__PURE__ */ React33.createElement("h2", {
3057
3171
  className: tx("message.title", {}, classNames)
3058
- }, children));
3172
+ }, children), onClose && /* @__PURE__ */ React33.createElement(IconButton, {
3173
+ variant: "ghost",
3174
+ icon: "ph--x--regular",
3175
+ iconOnly: true,
3176
+ label: t("toolbar-close.label"),
3177
+ onClick: onClose
3178
+ }));
3059
3179
  });
3060
3180
  MessageTitle.displayName = MESSAGE_TITLE_NAME;
3061
3181
  var MESSAGE_CONTENT_NAME = "MessageContent";
3062
- var MessageContent = /* @__PURE__ */ forwardRef23(({ asChild, classNames, children, ...props }, forwardedRef) => {
3182
+ var MessageContent = /* @__PURE__ */ forwardRef21(({ asChild, classNames, children, ...props }, forwardedRef) => {
3063
3183
  const { tx } = useThemeContext();
3064
3184
  const { descriptionId } = useMessageContext(MESSAGE_CONTENT_NAME);
3065
- const Comp = asChild ? Slot14 : Primitive14.p;
3066
- return /* @__PURE__ */ React32.createElement(Comp, {
3185
+ const Comp = asChild ? Slot18 : Primitive18.p;
3186
+ return /* @__PURE__ */ React33.createElement(Comp, {
3067
3187
  ...props,
3068
3188
  className: tx("message.content", {}, classNames),
3069
3189
  id: descriptionId,
@@ -3080,7 +3200,7 @@ var Callout = Message;
3080
3200
 
3081
3201
  // src/components/Popover/Popover.tsx
3082
3202
  import { composeEventHandlers as composeEventHandlers2 } from "@radix-ui/primitive";
3083
- import { useComposedRefs } from "@radix-ui/react-compose-refs";
3203
+ import { useComposedRefs as useComposedRefs2 } from "@radix-ui/react-compose-refs";
3084
3204
  import { createContextScope as createContextScope3 } from "@radix-ui/react-context";
3085
3205
  import { DismissableLayer } from "@radix-ui/react-dismissable-layer";
3086
3206
  import { useFocusGuards } from "@radix-ui/react-focus-guards";
@@ -3090,11 +3210,11 @@ import * as PopperPrimitive from "@radix-ui/react-popper";
3090
3210
  import { createPopperScope } from "@radix-ui/react-popper";
3091
3211
  import { Portal as PortalPrimitive } from "@radix-ui/react-portal";
3092
3212
  import { Presence } from "@radix-ui/react-presence";
3093
- import { Primitive as Primitive15 } from "@radix-ui/react-primitive";
3094
- import { Slot as Slot15 } from "@radix-ui/react-slot";
3213
+ import { Primitive as Primitive19 } from "@radix-ui/react-primitive";
3214
+ import { Slot as Slot19 } from "@radix-ui/react-slot";
3095
3215
  import { useControllableState as useControllableState5 } from "@radix-ui/react-use-controllable-state";
3096
3216
  import { hideOthers } from "aria-hidden";
3097
- import React33, { forwardRef as forwardRef24, useCallback as useCallback9, useEffect as useEffect6, useMemo as useMemo4, useRef as useRef4, useState as useState8 } from "react";
3217
+ import React34, { forwardRef as forwardRef22, useCallback as useCallback10, useEffect as useEffect6, useMemo as useMemo5, useRef as useRef5, useState as useState9 } from "react";
3098
3218
  import { RemoveScroll } from "react-remove-scroll";
3099
3219
  var POPOVER_NAME = "Popover";
3100
3220
  var [createPopoverContext, createPopoverScope] = createContextScope3(POPOVER_NAME, [
@@ -3105,31 +3225,31 @@ var [PopoverProvider, usePopoverContext] = createPopoverContext(POPOVER_NAME);
3105
3225
  var PopoverRoot = (props) => {
3106
3226
  const { __scopePopover, children, open: openProp, defaultOpen, onOpenChange, modal = false } = props;
3107
3227
  const popperScope = usePopperScope(__scopePopover);
3108
- const triggerRef = useRef4(null);
3109
- const [hasCustomAnchor, setHasCustomAnchor] = useState8(false);
3228
+ const triggerRef = useRef5(null);
3229
+ const [hasCustomAnchor, setHasCustomAnchor] = useState9(false);
3110
3230
  const [open = false, setOpen] = useControllableState5({
3111
3231
  prop: openProp,
3112
3232
  defaultProp: defaultOpen,
3113
3233
  onChange: onOpenChange
3114
3234
  });
3115
- return /* @__PURE__ */ React33.createElement(PopperPrimitive.Root, popperScope, /* @__PURE__ */ React33.createElement(PopoverProvider, {
3235
+ return /* @__PURE__ */ React34.createElement(PopperPrimitive.Root, popperScope, /* @__PURE__ */ React34.createElement(PopoverProvider, {
3116
3236
  scope: __scopePopover,
3117
3237
  contentId: useId4(),
3118
3238
  triggerRef,
3119
3239
  open,
3120
3240
  onOpenChange: setOpen,
3121
- onOpenToggle: useCallback9(() => setOpen((prevOpen) => !prevOpen), [
3241
+ onOpenToggle: useCallback10(() => setOpen((prevOpen) => !prevOpen), [
3122
3242
  setOpen
3123
3243
  ]),
3124
3244
  hasCustomAnchor,
3125
- onCustomAnchorAdd: useCallback9(() => setHasCustomAnchor(true), []),
3126
- onCustomAnchorRemove: useCallback9(() => setHasCustomAnchor(false), []),
3245
+ onCustomAnchorAdd: useCallback10(() => setHasCustomAnchor(true), []),
3246
+ onCustomAnchorRemove: useCallback10(() => setHasCustomAnchor(false), []),
3127
3247
  modal
3128
3248
  }, children));
3129
3249
  };
3130
3250
  PopoverRoot.displayName = POPOVER_NAME;
3131
3251
  var ANCHOR_NAME = "PopoverAnchor";
3132
- var PopoverAnchor = /* @__PURE__ */ forwardRef24((props, forwardedRef) => {
3252
+ var PopoverAnchor = /* @__PURE__ */ forwardRef22((props, forwardedRef) => {
3133
3253
  const { __scopePopover, ...anchorProps } = props;
3134
3254
  const context = usePopoverContext(ANCHOR_NAME, __scopePopover);
3135
3255
  const popperScope = usePopperScope(__scopePopover);
@@ -3141,7 +3261,7 @@ var PopoverAnchor = /* @__PURE__ */ forwardRef24((props, forwardedRef) => {
3141
3261
  onCustomAnchorAdd,
3142
3262
  onCustomAnchorRemove
3143
3263
  ]);
3144
- return /* @__PURE__ */ React33.createElement(PopperPrimitive.Anchor, {
3264
+ return /* @__PURE__ */ React34.createElement(PopperPrimitive.Anchor, {
3145
3265
  ...popperScope,
3146
3266
  ...anchorProps,
3147
3267
  ref: forwardedRef
@@ -3149,13 +3269,13 @@ var PopoverAnchor = /* @__PURE__ */ forwardRef24((props, forwardedRef) => {
3149
3269
  });
3150
3270
  PopoverAnchor.displayName = ANCHOR_NAME;
3151
3271
  var TRIGGER_NAME2 = "PopoverTrigger";
3152
- var PopoverTrigger = /* @__PURE__ */ forwardRef24((props, forwardedRef) => {
3272
+ var PopoverTrigger = /* @__PURE__ */ forwardRef22((props, forwardedRef) => {
3153
3273
  const { __scopePopover, asChild, ...triggerProps } = props;
3154
3274
  const context = usePopoverContext(TRIGGER_NAME2, __scopePopover);
3155
3275
  const popperScope = usePopperScope(__scopePopover);
3156
- const composedTriggerRef = useComposedRefs(forwardedRef, context.triggerRef);
3157
- const Comp = asChild ? Slot15 : Primitive15.button;
3158
- const trigger = /* @__PURE__ */ React33.createElement(Comp, {
3276
+ const composedTriggerRef = useComposedRefs2(forwardedRef, context.triggerRef);
3277
+ const Comp = asChild ? Slot19 : Primitive19.button;
3278
+ const trigger = /* @__PURE__ */ React34.createElement(Comp, {
3159
3279
  type: "button",
3160
3280
  "aria-haspopup": "dialog",
3161
3281
  "aria-expanded": context.open,
@@ -3165,7 +3285,7 @@ var PopoverTrigger = /* @__PURE__ */ forwardRef24((props, forwardedRef) => {
3165
3285
  ref: composedTriggerRef,
3166
3286
  onClick: composeEventHandlers2(props.onClick, context.onOpenToggle)
3167
3287
  });
3168
- return context.hasCustomAnchor ? trigger : /* @__PURE__ */ React33.createElement(PopperPrimitive.Anchor, {
3288
+ return context.hasCustomAnchor ? trigger : /* @__PURE__ */ React34.createElement(PopperPrimitive.Anchor, {
3169
3289
  asChild: true,
3170
3290
  ...popperScope
3171
3291
  }, trigger);
@@ -3181,7 +3301,7 @@ var PopoverVirtualTrigger = (props) => {
3181
3301
  context.triggerRef.current = virtualRef.current;
3182
3302
  }
3183
3303
  });
3184
- return /* @__PURE__ */ React33.createElement(PopperPrimitive.Anchor, {
3304
+ return /* @__PURE__ */ React34.createElement(PopperPrimitive.Anchor, {
3185
3305
  ...popperScope,
3186
3306
  virtualRef
3187
3307
  });
@@ -3194,48 +3314,48 @@ var [PortalProvider, usePortalContext] = createPopoverContext(PORTAL_NAME2, {
3194
3314
  var PopoverPortal = (props) => {
3195
3315
  const { __scopePopover, forceMount, children, container } = props;
3196
3316
  const context = usePopoverContext(PORTAL_NAME2, __scopePopover);
3197
- return /* @__PURE__ */ React33.createElement(PortalProvider, {
3317
+ return /* @__PURE__ */ React34.createElement(PortalProvider, {
3198
3318
  scope: __scopePopover,
3199
3319
  forceMount
3200
- }, /* @__PURE__ */ React33.createElement(Presence, {
3320
+ }, /* @__PURE__ */ React34.createElement(Presence, {
3201
3321
  present: forceMount || context.open
3202
- }, /* @__PURE__ */ React33.createElement(PortalPrimitive, {
3322
+ }, /* @__PURE__ */ React34.createElement(PortalPrimitive, {
3203
3323
  asChild: true,
3204
3324
  container
3205
3325
  }, children)));
3206
3326
  };
3207
3327
  PopoverPortal.displayName = PORTAL_NAME2;
3208
3328
  var CONTENT_NAME2 = "PopoverContent";
3209
- var PopoverContent = /* @__PURE__ */ forwardRef24((props, forwardedRef) => {
3329
+ var PopoverContent = /* @__PURE__ */ forwardRef22((props, forwardedRef) => {
3210
3330
  const portalContext = usePortalContext(CONTENT_NAME2, props.__scopePopover);
3211
3331
  const { forceMount = portalContext.forceMount, ...contentProps } = props;
3212
3332
  const context = usePopoverContext(CONTENT_NAME2, props.__scopePopover);
3213
- return /* @__PURE__ */ React33.createElement(Presence, {
3333
+ return /* @__PURE__ */ React34.createElement(Presence, {
3214
3334
  present: forceMount || context.open
3215
- }, context.modal ? /* @__PURE__ */ React33.createElement(PopoverContentModal, {
3335
+ }, context.modal ? /* @__PURE__ */ React34.createElement(PopoverContentModal, {
3216
3336
  ...contentProps,
3217
3337
  ref: forwardedRef
3218
- }) : /* @__PURE__ */ React33.createElement(PopoverContentNonModal, {
3338
+ }) : /* @__PURE__ */ React34.createElement(PopoverContentNonModal, {
3219
3339
  ...contentProps,
3220
3340
  ref: forwardedRef
3221
3341
  }));
3222
3342
  });
3223
3343
  PopoverContent.displayName = CONTENT_NAME2;
3224
- var PopoverContentModal = /* @__PURE__ */ forwardRef24((props, forwardedRef) => {
3344
+ var PopoverContentModal = /* @__PURE__ */ forwardRef22((props, forwardedRef) => {
3225
3345
  const context = usePopoverContext(CONTENT_NAME2, props.__scopePopover);
3226
- const contentRef = useRef4(null);
3227
- const composedRefs = useComposedRefs(forwardedRef, contentRef);
3228
- const isRightClickOutsideRef = useRef4(false);
3346
+ const contentRef = useRef5(null);
3347
+ const composedRefs = useComposedRefs2(forwardedRef, contentRef);
3348
+ const isRightClickOutsideRef = useRef5(false);
3229
3349
  useEffect6(() => {
3230
3350
  const content = contentRef.current;
3231
3351
  if (content) {
3232
3352
  return hideOthers(content);
3233
3353
  }
3234
3354
  }, []);
3235
- return /* @__PURE__ */ React33.createElement(RemoveScroll, {
3236
- as: Slot15,
3355
+ return /* @__PURE__ */ React34.createElement(RemoveScroll, {
3356
+ as: Slot19,
3237
3357
  allowPinchZoom: true
3238
- }, /* @__PURE__ */ React33.createElement(PopoverContentImpl, {
3358
+ }, /* @__PURE__ */ React34.createElement(PopoverContentImpl, {
3239
3359
  ...props,
3240
3360
  ref: composedRefs,
3241
3361
  // Make sure we're not trapping once it's been closed (closed !== unmounted when animating out).
@@ -3262,11 +3382,11 @@ var PopoverContentModal = /* @__PURE__ */ forwardRef24((props, forwardedRef) =>
3262
3382
  })
3263
3383
  }));
3264
3384
  });
3265
- var PopoverContentNonModal = /* @__PURE__ */ forwardRef24((props, forwardedRef) => {
3385
+ var PopoverContentNonModal = /* @__PURE__ */ forwardRef22((props, forwardedRef) => {
3266
3386
  const context = usePopoverContext(CONTENT_NAME2, props.__scopePopover);
3267
- const hasInteractedOutsideRef = useRef4(false);
3268
- const hasPointerDownOutsideRef = useRef4(false);
3269
- return /* @__PURE__ */ React33.createElement(PopoverContentImpl, {
3387
+ const hasInteractedOutsideRef = useRef5(false);
3388
+ const hasPointerDownOutsideRef = useRef5(false);
3389
+ return /* @__PURE__ */ React34.createElement(PopoverContentImpl, {
3270
3390
  ...props,
3271
3391
  ref: forwardedRef,
3272
3392
  trapFocus: false,
@@ -3301,7 +3421,7 @@ var PopoverContentNonModal = /* @__PURE__ */ forwardRef24((props, forwardedRef)
3301
3421
  }
3302
3422
  });
3303
3423
  });
3304
- var PopoverContentImpl = /* @__PURE__ */ forwardRef24((props, forwardedRef) => {
3424
+ var PopoverContentImpl = /* @__PURE__ */ forwardRef22((props, forwardedRef) => {
3305
3425
  const { __scopePopover, trapFocus, onOpenAutoFocus, onCloseAutoFocus, disableOutsidePointerEvents, onEscapeKeyDown, onPointerDownOutside, onFocusOutside, onInteractOutside, collisionPadding = 8, collisionBoundary, classNames, ...contentProps } = props;
3306
3426
  const context = usePopoverContext(CONTENT_NAME2, __scopePopover);
3307
3427
  const popperScope = usePopperScope(__scopePopover);
@@ -3309,7 +3429,7 @@ var PopoverContentImpl = /* @__PURE__ */ forwardRef24((props, forwardedRef) => {
3309
3429
  const elevation = useElevationContext();
3310
3430
  const safeCollisionPadding = useSafeCollisionPadding(collisionPadding);
3311
3431
  useFocusGuards();
3312
- const computedCollisionBoundary = useMemo4(() => {
3432
+ const computedCollisionBoundary = useMemo5(() => {
3313
3433
  const closestBoundary = context.triggerRef.current?.closest("[data-popover-collision-boundary]");
3314
3434
  return closestBoundary ? Array.isArray(collisionBoundary) ? [
3315
3435
  closestBoundary,
@@ -3325,13 +3445,13 @@ var PopoverContentImpl = /* @__PURE__ */ forwardRef24((props, forwardedRef) => {
3325
3445
  collisionBoundary,
3326
3446
  context.triggerRef.current
3327
3447
  ]);
3328
- return /* @__PURE__ */ React33.createElement(FocusScope, {
3448
+ return /* @__PURE__ */ React34.createElement(FocusScope, {
3329
3449
  asChild: true,
3330
3450
  loop: true,
3331
3451
  trapped: trapFocus,
3332
3452
  onMountAutoFocus: onOpenAutoFocus,
3333
3453
  onUnmountAutoFocus: onCloseAutoFocus
3334
- }, /* @__PURE__ */ React33.createElement(DismissableLayer, {
3454
+ }, /* @__PURE__ */ React34.createElement(DismissableLayer, {
3335
3455
  asChild: true,
3336
3456
  disableOutsidePointerEvents,
3337
3457
  onInteractOutside,
@@ -3339,7 +3459,7 @@ var PopoverContentImpl = /* @__PURE__ */ forwardRef24((props, forwardedRef) => {
3339
3459
  onPointerDownOutside,
3340
3460
  onFocusOutside,
3341
3461
  onDismiss: () => context.onOpenChange(false)
3342
- }, /* @__PURE__ */ React33.createElement(PopperPrimitive.Content, {
3462
+ }, /* @__PURE__ */ React34.createElement(PopperPrimitive.Content, {
3343
3463
  "data-state": getState(context.open),
3344
3464
  role: "dialog",
3345
3465
  id: context.contentId,
@@ -3365,10 +3485,10 @@ var PopoverContentImpl = /* @__PURE__ */ forwardRef24((props, forwardedRef) => {
3365
3485
  })));
3366
3486
  });
3367
3487
  var CLOSE_NAME = "PopoverClose";
3368
- var PopoverClose = /* @__PURE__ */ forwardRef24((props, forwardedRef) => {
3488
+ var PopoverClose = /* @__PURE__ */ forwardRef22((props, forwardedRef) => {
3369
3489
  const { __scopePopover, ...closeProps } = props;
3370
3490
  const context = usePopoverContext(CLOSE_NAME, __scopePopover);
3371
- return /* @__PURE__ */ React33.createElement(Primitive15.button, {
3491
+ return /* @__PURE__ */ React34.createElement(Primitive19.button, {
3372
3492
  type: "button",
3373
3493
  ...closeProps,
3374
3494
  ref: forwardedRef,
@@ -3377,11 +3497,11 @@ var PopoverClose = /* @__PURE__ */ forwardRef24((props, forwardedRef) => {
3377
3497
  });
3378
3498
  PopoverClose.displayName = CLOSE_NAME;
3379
3499
  var ARROW_NAME2 = "PopoverArrow";
3380
- var PopoverArrow = /* @__PURE__ */ forwardRef24((props, forwardedRef) => {
3500
+ var PopoverArrow = /* @__PURE__ */ forwardRef22((props, forwardedRef) => {
3381
3501
  const { __scopePopover, classNames, ...arrowProps } = props;
3382
3502
  const popperScope = usePopperScope(__scopePopover);
3383
3503
  const { tx } = useThemeContext();
3384
- return /* @__PURE__ */ React33.createElement(PopperPrimitive.Arrow, {
3504
+ return /* @__PURE__ */ React34.createElement(PopperPrimitive.Arrow, {
3385
3505
  ...popperScope,
3386
3506
  ...arrowProps,
3387
3507
  className: tx("popover.arrow", {}, classNames),
@@ -3389,10 +3509,10 @@ var PopoverArrow = /* @__PURE__ */ forwardRef24((props, forwardedRef) => {
3389
3509
  });
3390
3510
  });
3391
3511
  PopoverArrow.displayName = ARROW_NAME2;
3392
- var PopoverViewport = /* @__PURE__ */ forwardRef24(({ classNames, asChild, constrainInline = true, constrainBlock = true, children, ...props }, forwardedRef) => {
3512
+ var PopoverViewport = /* @__PURE__ */ forwardRef22(({ classNames, asChild, constrainInline = true, constrainBlock = true, children, ...props }, forwardedRef) => {
3393
3513
  const { tx } = useThemeContext();
3394
- const Comp = asChild ? Slot15 : Primitive15.div;
3395
- return /* @__PURE__ */ React33.createElement(Comp, {
3514
+ const Comp = asChild ? Slot19 : Primitive19.div;
3515
+ return /* @__PURE__ */ React34.createElement(Comp, {
3396
3516
  ...props,
3397
3517
  className: tx("popover.viewport", {
3398
3518
  constrainInline,
@@ -3415,10 +3535,10 @@ var Popover = {
3415
3535
  };
3416
3536
 
3417
3537
  // src/components/Status/Status.tsx
3418
- import React34, { forwardRef as forwardRef25 } from "react";
3419
- var Status = /* @__PURE__ */ forwardRef25(({ classNames, children, progress = 0, indeterminate, variant, ...props }, forwardedRef) => {
3538
+ import React35, { forwardRef as forwardRef23 } from "react";
3539
+ var Status = /* @__PURE__ */ forwardRef23(({ classNames, children, progress = 0, indeterminate, variant, ...props }, forwardedRef) => {
3420
3540
  const { tx } = useThemeContext();
3421
- return /* @__PURE__ */ React34.createElement("span", {
3541
+ return /* @__PURE__ */ React35.createElement("span", {
3422
3542
  role: "status",
3423
3543
  ...props,
3424
3544
  className: tx("status.root", {
@@ -3426,7 +3546,7 @@ var Status = /* @__PURE__ */ forwardRef25(({ classNames, children, progress = 0,
3426
3546
  variant
3427
3547
  }, classNames),
3428
3548
  ref: forwardedRef
3429
- }, /* @__PURE__ */ React34.createElement("span", {
3549
+ }, /* @__PURE__ */ React35.createElement("span", {
3430
3550
  role: "none",
3431
3551
  className: tx("status.bar", {
3432
3552
  indeterminate,
@@ -3441,41 +3561,56 @@ var Status = /* @__PURE__ */ forwardRef25(({ classNames, children, progress = 0,
3441
3561
  });
3442
3562
 
3443
3563
  // src/components/ScrollArea/ScrollArea.tsx
3444
- import { createContext as createContext9 } from "@radix-ui/react-context";
3445
- import { Primitive as Primitive16 } from "@radix-ui/react-primitive";
3446
- import { Slot as Slot16 } from "@radix-ui/react-slot";
3447
- import React35, { forwardRef as forwardRef26 } from "react";
3564
+ import { createContext as createContext10 } from "@radix-ui/react-context";
3565
+ import { Primitive as Primitive20 } from "@radix-ui/react-primitive";
3566
+ import { Slot as Slot20 } from "@radix-ui/react-slot";
3567
+ import React36, { useMemo as useMemo6 } from "react";
3568
+ import { composableProps as composableProps12, scrollbar, slottable as slottable9 } from "@dxos/ui-theme";
3448
3569
  var SCROLLAREA_NAME = "ScrollArea";
3449
- var [ScrollAreaProvider, useScrollAreaContext] = createContext9(SCROLLAREA_NAME);
3570
+ var [ScrollAreaProvider, useScrollAreaContext] = createContext10(SCROLLAREA_NAME);
3450
3571
  var SCROLLAREA_ROOT_NAME = "ScrollArea.Root";
3451
- var ScrollAreaRoot = /* @__PURE__ */ forwardRef26(({ classNames, className, asChild, children, orientation = "vertical", autoHide = true, margin = false, padding = false, thin = false, snap = false, ...props }, forwardedRef) => {
3572
+ var ScrollAreaRoot = slottable9(({ children, asChild, orientation = "vertical", autoHide = true, centered = false, padding = false, thin = false, snap = false, ...props }, forwardedRef) => {
3452
3573
  const { tx } = useThemeContext();
3453
- const Comp = asChild ? Slot16 : Primitive16.div;
3454
- const options = {
3574
+ const { className, ...rest } = composableProps12(props);
3575
+ const Comp = asChild ? Slot20 : Primitive20.div;
3576
+ const options = useMemo6(() => ({
3455
3577
  orientation,
3456
3578
  autoHide,
3457
- margin,
3579
+ centered,
3458
3580
  padding,
3459
3581
  thin,
3460
3582
  snap
3461
- };
3462
- return /* @__PURE__ */ React35.createElement(ScrollAreaProvider, options, /* @__PURE__ */ React35.createElement(Comp, {
3463
- ...props,
3464
- className: tx("scrollArea.root", options, [
3465
- className,
3466
- classNames
3467
- ]),
3583
+ }), [
3584
+ orientation,
3585
+ autoHide,
3586
+ centered,
3587
+ padding,
3588
+ thin,
3589
+ snap
3590
+ ]);
3591
+ return /* @__PURE__ */ React36.createElement(ScrollAreaProvider, options, /* @__PURE__ */ React36.createElement(Comp, {
3592
+ ...rest,
3593
+ className: tx("scrollArea.root", options, className),
3468
3594
  ref: forwardedRef
3469
3595
  }, children));
3470
3596
  });
3471
3597
  ScrollAreaRoot.displayName = SCROLLAREA_ROOT_NAME;
3472
3598
  var SCROLLAREA_VIEWPORT_NAME = "ScrollArea.Viewport";
3473
- var ScrollAreaViewport = /* @__PURE__ */ forwardRef26(({ classNames, children, ...props }, forwardedRef) => {
3599
+ var ScrollAreaViewport = slottable9(({ children, asChild, ...props }, forwardedRef) => {
3474
3600
  const { tx } = useThemeContext();
3475
3601
  const options = useScrollAreaContext(SCROLLAREA_VIEWPORT_NAME);
3476
- return /* @__PURE__ */ React35.createElement("div", {
3477
- ...props,
3478
- className: tx("scrollArea.viewport", options, classNames),
3602
+ const density = options.thin ? scrollbar.thin : scrollbar.coarse;
3603
+ const { className, ...rest } = composableProps12(props);
3604
+ const { style, ...restWithoutStyle } = rest;
3605
+ const Comp = asChild ? Slot20 : Primitive20.div;
3606
+ return /* @__PURE__ */ React36.createElement(Comp, {
3607
+ ...restWithoutStyle,
3608
+ style: {
3609
+ "--scroll-width": `${density.size}px`,
3610
+ "--scroll-padding": `${density.padding}px`,
3611
+ ...style
3612
+ },
3613
+ className: tx("scrollArea.viewport", options, className),
3479
3614
  ref: forwardedRef
3480
3615
  }, children);
3481
3616
  });
@@ -3486,91 +3621,160 @@ var ScrollArea = {
3486
3621
  };
3487
3622
 
3488
3623
  // src/components/ScrollContainer/ScrollContainer.tsx
3489
- import { createContext as createContext10 } from "@radix-ui/react-context";
3490
- import React36, { forwardRef as forwardRef27, useCallback as useCallback10, useEffect as useEffect7, useImperativeHandle, useMemo as useMemo5, useRef as useRef5, useState as useState9 } from "react";
3624
+ import { createContext as createContext11 } from "@radix-ui/react-context";
3625
+ import React37, { forwardRef as forwardRef24, useCallback as useCallback11, useEffect as useEffect7, useImperativeHandle, useMemo as useMemo7, useRef as useRef6, useState as useState10 } from "react";
3491
3626
  import { addEventListener as addEventListener2, combine } from "@dxos/async";
3492
3627
  import { invariant } from "@dxos/invariant";
3493
- import { useForwardedRef as useForwardedRef2 } from "@dxos/react-hooks";
3628
+ import { useMergeRefs } from "@dxos/react-hooks";
3629
+ import { composable as composable6, composableProps as composableProps13, slottable as slottable10 } from "@dxos/ui-theme";
3494
3630
  import { mx as mx9 } from "@dxos/ui-theme";
3495
3631
  var __dxlog_file2 = "/__w/dxos/dxos/packages/ui/react-ui/src/components/ScrollContainer/ScrollContainer.tsx";
3496
3632
  var isBottom = (el) => {
3497
3633
  return !!(el && el.scrollHeight - el.scrollTop === el.clientHeight);
3498
3634
  };
3499
- var [ScrollContainerProvider, useScrollContainerContext] = createContext10("ScrollContainer");
3500
- var Root6 = /* @__PURE__ */ forwardRef27(({ children, classNames, pin, fade, behavior: behaviorProp = "smooth" }, forwardedRef) => {
3501
- const scrollerRef = useRef5(null);
3502
- const autoScrollRef = useRef5(false);
3503
- const [overflow, setOverflow] = useState9(false);
3504
- const [pinned, setPinned] = useState9(pin);
3505
- const timeoutRef = useRef5(void 0);
3506
- const scrollToBottom = useCallback10((behavior = behaviorProp) => {
3635
+ var [ScrollContainerProvider, useScrollContainerContext] = createContext11("ScrollContainer");
3636
+ var Root10 = /* @__PURE__ */ forwardRef24(({ children, pin, behavior: behaviorProp = "smooth" }, forwardedRef) => {
3637
+ const scrollerRef = useRef6(null);
3638
+ const autoScrollRef = useRef6(false);
3639
+ const [pinned, setPinned] = useState10(pin);
3640
+ const [overflow, setOverflow] = useState10(false);
3641
+ const timeoutRef = useRef6(void 0);
3642
+ const scrollToBottom = useCallback11((behavior = behaviorProp) => {
3507
3643
  if (scrollerRef.current) {
3508
- autoScrollRef.current = true;
3509
- scrollerRef.current.classList.add("scrollbar-none");
3510
- scrollerRef.current.scrollTo({
3511
- top: scrollerRef.current.scrollHeight,
3512
- behavior
3513
- });
3514
- clearTimeout(timeoutRef.current);
3515
3644
  if (behavior !== "instant") {
3645
+ autoScrollRef.current = true;
3646
+ scrollerRef.current.classList.add("scrollbar-none");
3647
+ clearTimeout(timeoutRef.current);
3516
3648
  timeoutRef.current = setTimeout(() => {
3517
3649
  scrollerRef.current?.classList.remove("scrollbar-none");
3518
3650
  autoScrollRef.current = false;
3519
3651
  }, 500);
3520
3652
  }
3653
+ scrollerRef.current.scrollTo({
3654
+ top: scrollerRef.current.scrollHeight,
3655
+ behavior
3656
+ });
3521
3657
  setPinned(true);
3522
3658
  }
3523
- }, []);
3524
- const controller = useMemo5(() => ({
3525
- viewport: scrollerRef.current,
3659
+ }, [
3660
+ behaviorProp
3661
+ ]);
3662
+ const controller = useMemo7(() => ({
3663
+ get viewport() {
3664
+ return scrollerRef.current;
3665
+ },
3526
3666
  scrollToTop: () => {
3527
- invariant(scrollerRef.current, void 0, {
3528
- F: __dxlog_file2,
3529
- L: 95,
3530
- S: void 0,
3531
- A: [
3532
- "scrollerRef.current",
3533
- ""
3534
- ]
3535
- });
3667
+ invariant(scrollerRef.current, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 54, S: void 0, A: ["scrollerRef.current", ""] });
3536
3668
  scrollerRef.current.scrollTo({
3537
3669
  top: 0,
3538
3670
  behavior: "smooth"
3539
3671
  });
3540
3672
  setPinned(false);
3541
3673
  },
3542
- scrollToBottom: () => {
3543
- scrollToBottom("smooth");
3674
+ scrollToBottom: (behavior = "smooth") => {
3675
+ scrollToBottom(behavior);
3544
3676
  }
3545
3677
  }), [
3546
- scrollToBottom,
3547
- scrollerRef.current
3678
+ scrollToBottom
3548
3679
  ]);
3549
3680
  useImperativeHandle(forwardedRef, () => controller, [
3550
3681
  controller
3551
3682
  ]);
3683
+ const setViewport = useCallback11((el) => {
3684
+ scrollerRef.current = el;
3685
+ }, []);
3686
+ return /* @__PURE__ */ React37.createElement(ScrollContainerProvider, {
3687
+ pinned,
3688
+ overflow,
3689
+ controller,
3690
+ setViewport,
3691
+ setPinned,
3692
+ setOverflow
3693
+ }, children);
3694
+ });
3695
+ Root10.displayName = "ScrollContainer.Root";
3696
+ var Content6 = composable6(({ children, thin, padding, centered, ...props }, forwardedRef) => {
3697
+ return /* @__PURE__ */ React37.createElement(ScrollArea.Root, {
3698
+ ...composableProps13(props, {
3699
+ classNames: "relative"
3700
+ }),
3701
+ thin,
3702
+ padding,
3703
+ centered,
3704
+ ref: forwardedRef
3705
+ }, children);
3706
+ });
3707
+ Content6.displayName = "ScrollContainer.Content";
3708
+ var VIEWPORT_NAME = "ScrollContainer.Viewport";
3709
+ var Viewport = slottable10(({ children, asChild, ...props }, forwardedRef) => {
3710
+ const scrollerRef = useRef6(null);
3711
+ const mergedRef = useMergeRefs([
3712
+ forwardedRef,
3713
+ scrollerRef
3714
+ ]);
3715
+ const { setViewport, setPinned, setOverflow } = useScrollContainerContext(VIEWPORT_NAME);
3552
3716
  useEffect7(() => {
3553
- if (!scrollerRef.current) {
3717
+ const el = scrollerRef.current;
3718
+ if (!el) {
3554
3719
  return;
3555
3720
  }
3556
- return combine(
3557
- // Check if user scrolls.
3558
- addEventListener2(scrollerRef.current, "wheel", () => {
3559
- setPinned(isBottom(scrollerRef.current));
3560
- }),
3561
- // Check if scrolls.
3562
- addEventListener2(scrollerRef.current, "scroll", () => {
3563
- setOverflow((scrollerRef.current?.scrollTop ?? 0) > 0);
3564
- })
3565
- );
3566
- }, []);
3567
- return /* @__PURE__ */ React36.createElement(ScrollContainerProvider, {
3721
+ setViewport(el);
3722
+ return combine(addEventListener2(el, "wheel", () => setPinned(isBottom(el))), addEventListener2(el, "scroll", () => setOverflow((el.scrollTop ?? 0) > 0)), () => setViewport(null));
3723
+ }, [
3724
+ setViewport,
3725
+ setPinned,
3726
+ setOverflow
3727
+ ]);
3728
+ return /* @__PURE__ */ React37.createElement(React37.Fragment, null, /* @__PURE__ */ React37.createElement(ScrollArea.Viewport, {
3729
+ asChild,
3730
+ ...composableProps13(props),
3731
+ ref: mergedRef
3732
+ }, children), /* @__PURE__ */ React37.createElement(PinEffect, {
3733
+ scrollerRef
3734
+ }));
3735
+ });
3736
+ Viewport.displayName = VIEWPORT_NAME;
3737
+ var PIN_EFFECT_NAME = "ScrollContainer.PinEffect";
3738
+ var PinEffect = ({ scrollerRef }) => {
3739
+ const { pinned, controller } = useScrollContainerContext(PIN_EFFECT_NAME);
3740
+ useEffect7(() => {
3741
+ const viewport = scrollerRef.current;
3742
+ if (!pinned || !viewport) {
3743
+ return;
3744
+ }
3745
+ controller?.scrollToBottom("instant");
3746
+ const resizeObserver = new ResizeObserver(() => controller?.scrollToBottom("smooth"));
3747
+ Array.from(viewport.children).forEach((child) => {
3748
+ resizeObserver.observe(child);
3749
+ });
3750
+ const mutationObserver = new MutationObserver((mutations) => {
3751
+ mutations.forEach((mutation) => {
3752
+ mutation.addedNodes.forEach((node) => {
3753
+ if (node instanceof Element) {
3754
+ resizeObserver.observe(node);
3755
+ }
3756
+ });
3757
+ });
3758
+ controller?.scrollToBottom("smooth");
3759
+ });
3760
+ mutationObserver.observe(viewport, {
3761
+ childList: true
3762
+ });
3763
+ return () => {
3764
+ resizeObserver.disconnect();
3765
+ mutationObserver.disconnect();
3766
+ };
3767
+ }, [
3568
3768
  pinned,
3569
3769
  controller,
3570
- scrollToBottom
3571
- }, /* @__PURE__ */ React36.createElement("div", {
3572
- className: "relative grid dx-container overflow-hidden"
3573
- }, fade && /* @__PURE__ */ React36.createElement("div", {
3770
+ scrollerRef
3771
+ ]);
3772
+ return null;
3773
+ };
3774
+ var FADE_NAME = "ScrollContainer.Fade";
3775
+ var Fade = () => {
3776
+ const { overflow } = useScrollContainerContext(FADE_NAME);
3777
+ return /* @__PURE__ */ React37.createElement("div", {
3574
3778
  role: "none",
3575
3779
  "data-visible": overflow,
3576
3780
  className: mx9(
@@ -3579,87 +3783,61 @@ var Root6 = /* @__PURE__ */ forwardRef27(({ children, classNames, pin, fade, beh
3579
3783
  'opacity-0 duration-200 transition-opacity data-[visible="true"]:opacity-100',
3580
3784
  "bg-gradient-to-b from-(--surface-bg) to-transparent pointer-events-none"
3581
3785
  )
3582
- }), /* @__PURE__ */ React36.createElement(ScrollArea.Root, {
3583
- classNames: mx9("min-h-0", classNames),
3584
- thin: true
3585
- }, /* @__PURE__ */ React36.createElement(ScrollArea.Viewport, {
3586
- ref: scrollerRef
3587
- }, children))));
3588
- });
3589
- Root6.displayName = "ScrollContainer.Root";
3590
- var VIEWPORT_NAME = "ScrollContainer.Viewport";
3591
- var Viewport = /* @__PURE__ */ forwardRef27(({ classNames, children, ...props }, forwardedRef) => {
3592
- const contentRef = useForwardedRef2(forwardedRef);
3593
- const { pinned, scrollToBottom } = useScrollContainerContext(VIEWPORT_NAME);
3594
- useEffect7(() => {
3595
- if (!pinned || !contentRef.current) {
3596
- return;
3597
- }
3598
- scrollToBottom();
3599
- const resizeObserver = new ResizeObserver(() => scrollToBottom());
3600
- resizeObserver.observe(contentRef.current);
3601
- return () => resizeObserver.disconnect();
3602
- }, [
3603
- pinned,
3604
- scrollToBottom
3605
- ]);
3606
- return /* @__PURE__ */ React36.createElement("div", {
3607
- className: mx9("w-full", classNames),
3608
- ...props,
3609
- ref: contentRef
3610
- }, children);
3611
- });
3612
- Viewport.displayName = VIEWPORT_NAME;
3786
+ });
3787
+ };
3788
+ Fade.displayName = FADE_NAME;
3613
3789
  var SCROLL_DOWN_BUTTON_NAME = "ScrollContainer.ScrollDownButton";
3614
3790
  var ScrollDownButton = ({ classNames }) => {
3615
- const { pinned, scrollToBottom } = useScrollContainerContext(SCROLL_DOWN_BUTTON_NAME);
3616
- return /* @__PURE__ */ React36.createElement("div", {
3791
+ const { pinned, controller } = useScrollContainerContext(SCROLL_DOWN_BUTTON_NAME);
3792
+ return /* @__PURE__ */ React37.createElement("div", {
3617
3793
  role: "none",
3618
3794
  className: mx9("absolute bottom-2 right-4 opacity-100 transition-opacity duration-300", pinned && "opacity-0", classNames)
3619
- }, /* @__PURE__ */ React36.createElement(IconButton, {
3795
+ }, /* @__PURE__ */ React37.createElement(IconButton, {
3620
3796
  variant: "primary",
3621
3797
  icon: "ph--arrow-down--regular",
3622
3798
  iconOnly: true,
3623
3799
  size: 4,
3624
3800
  label: "Scroll down",
3625
- onClick: () => scrollToBottom()
3801
+ onClick: () => controller?.scrollToBottom()
3626
3802
  }));
3627
3803
  };
3628
3804
  ScrollDownButton.displayName = SCROLL_DOWN_BUTTON_NAME;
3629
3805
  var ScrollContainer = {
3630
- Root: Root6,
3806
+ Root: Root10,
3807
+ Content: Content6,
3631
3808
  Viewport,
3809
+ Fade,
3632
3810
  ScrollDownButton
3633
3811
  };
3634
3812
 
3635
3813
  // src/components/Select/Select.tsx
3636
3814
  import * as SelectPrimitive from "@radix-ui/react-select";
3637
- import React37, { forwardRef as forwardRef28 } from "react";
3815
+ import React38, { forwardRef as forwardRef25 } from "react";
3638
3816
  var SelectRoot = SelectPrimitive.Root;
3639
3817
  var SelectTrigger = SelectPrimitive.Trigger;
3640
3818
  var SelectValue = SelectPrimitive.Value;
3641
3819
  var SelectIcon = SelectPrimitive.Icon;
3642
3820
  var SelectPortal = SelectPrimitive.Portal;
3643
- var SelectTriggerButton = /* @__PURE__ */ forwardRef28(({ children, placeholder, ...props }, forwardedRef) => {
3644
- return /* @__PURE__ */ React37.createElement(SelectPrimitive.Trigger, {
3821
+ var SelectTriggerButton = /* @__PURE__ */ forwardRef25(({ children, placeholder, ...props }, forwardedRef) => {
3822
+ return /* @__PURE__ */ React38.createElement(SelectPrimitive.Trigger, {
3645
3823
  asChild: true,
3646
3824
  ref: forwardedRef
3647
- }, /* @__PURE__ */ React37.createElement(Button, props, /* @__PURE__ */ React37.createElement(SelectPrimitive.Value, {
3825
+ }, /* @__PURE__ */ React38.createElement(Button, props, /* @__PURE__ */ React38.createElement(SelectPrimitive.Value, {
3648
3826
  placeholder
3649
- }, children), /* @__PURE__ */ React37.createElement("span", {
3827
+ }, children), /* @__PURE__ */ React38.createElement("span", {
3650
3828
  className: "w-1 flex-1"
3651
- }), /* @__PURE__ */ React37.createElement(SelectPrimitive.Icon, {
3829
+ }), /* @__PURE__ */ React38.createElement(SelectPrimitive.Icon, {
3652
3830
  asChild: true
3653
- }, /* @__PURE__ */ React37.createElement(Icon, {
3831
+ }, /* @__PURE__ */ React38.createElement(Icon, {
3654
3832
  size: 3,
3655
3833
  icon: "ph--caret-down--bold"
3656
3834
  }))));
3657
3835
  });
3658
- var SelectContent = /* @__PURE__ */ forwardRef28(({ classNames, children, collisionPadding = 8, ...props }, forwardedRef) => {
3836
+ var SelectContent = /* @__PURE__ */ forwardRef25(({ classNames, children, collisionPadding = 8, ...props }, forwardedRef) => {
3659
3837
  const { tx } = useThemeContext();
3660
3838
  const elevation = useElevationContext();
3661
3839
  const safeCollisionPadding = useSafeCollisionPadding(collisionPadding);
3662
- return /* @__PURE__ */ React37.createElement(SelectPrimitive.Content, {
3840
+ return /* @__PURE__ */ React38.createElement(SelectPrimitive.Content, {
3663
3841
  ...props,
3664
3842
  "data-arrow-keys": "up down",
3665
3843
  collisionPadding: safeCollisionPadding,
@@ -3670,78 +3848,78 @@ var SelectContent = /* @__PURE__ */ forwardRef28(({ classNames, children, collis
3670
3848
  ref: forwardedRef
3671
3849
  }, children);
3672
3850
  });
3673
- var SelectScrollUpButton2 = /* @__PURE__ */ forwardRef28(({ classNames, children, ...props }, forwardedRef) => {
3851
+ var SelectScrollUpButton2 = /* @__PURE__ */ forwardRef25(({ classNames, children, ...props }, forwardedRef) => {
3674
3852
  const { tx } = useThemeContext();
3675
- return /* @__PURE__ */ React37.createElement(SelectPrimitive.SelectScrollUpButton, {
3853
+ return /* @__PURE__ */ React38.createElement(SelectPrimitive.SelectScrollUpButton, {
3676
3854
  ...props,
3677
3855
  className: tx("select.scrollButton", {}, classNames),
3678
3856
  ref: forwardedRef
3679
- }, children ?? /* @__PURE__ */ React37.createElement(Icon, {
3857
+ }, children ?? /* @__PURE__ */ React38.createElement(Icon, {
3680
3858
  size: 3,
3681
3859
  icon: "ph--caret-up--bold"
3682
3860
  }));
3683
3861
  });
3684
- var SelectScrollDownButton2 = /* @__PURE__ */ forwardRef28(({ classNames, children, ...props }, forwardedRef) => {
3862
+ var SelectScrollDownButton2 = /* @__PURE__ */ forwardRef25(({ classNames, children, ...props }, forwardedRef) => {
3685
3863
  const { tx } = useThemeContext();
3686
- return /* @__PURE__ */ React37.createElement(SelectPrimitive.SelectScrollDownButton, {
3864
+ return /* @__PURE__ */ React38.createElement(SelectPrimitive.SelectScrollDownButton, {
3687
3865
  ...props,
3688
3866
  className: tx("select.scrollButton", {}, classNames),
3689
3867
  ref: forwardedRef
3690
- }, children ?? /* @__PURE__ */ React37.createElement(Icon, {
3868
+ }, children ?? /* @__PURE__ */ React38.createElement(Icon, {
3691
3869
  size: 3,
3692
3870
  icon: "ph--caret-down--bold"
3693
3871
  }));
3694
3872
  });
3695
- var SelectViewport2 = /* @__PURE__ */ forwardRef28(({ classNames, children, ...props }, forwardedRef) => {
3873
+ var SelectViewport2 = /* @__PURE__ */ forwardRef25(({ classNames, children, ...props }, forwardedRef) => {
3696
3874
  const { tx } = useThemeContext();
3697
- return /* @__PURE__ */ React37.createElement(SelectPrimitive.SelectViewport, {
3875
+ return /* @__PURE__ */ React38.createElement(SelectPrimitive.SelectViewport, {
3698
3876
  ...props,
3699
3877
  className: tx("select.viewport", {}, classNames),
3700
3878
  ref: forwardedRef
3701
3879
  }, children);
3702
3880
  });
3703
- var SelectItem = /* @__PURE__ */ forwardRef28(({ classNames, ...props }, forwardedRef) => {
3881
+ var SelectItem = /* @__PURE__ */ forwardRef25(({ classNames, ...props }, forwardedRef) => {
3704
3882
  const { tx } = useThemeContext();
3705
- return /* @__PURE__ */ React37.createElement(SelectPrimitive.Item, {
3883
+ return /* @__PURE__ */ React38.createElement(SelectPrimitive.Item, {
3706
3884
  ...props,
3707
3885
  className: tx("select.item", {}, classNames),
3708
3886
  ref: forwardedRef
3709
3887
  });
3710
3888
  });
3711
3889
  var SelectItemText = SelectPrimitive.ItemText;
3712
- var SelectItemIndicator = /* @__PURE__ */ forwardRef28(({ classNames, children, ...props }, forwardedRef) => {
3890
+ var SelectItemIndicator = /* @__PURE__ */ forwardRef25(({ classNames, children, ...props }, forwardedRef) => {
3713
3891
  const { tx } = useThemeContext();
3714
- return /* @__PURE__ */ React37.createElement(SelectPrimitive.ItemIndicator, {
3892
+ return /* @__PURE__ */ React38.createElement(SelectPrimitive.ItemIndicator, {
3715
3893
  ...props,
3716
3894
  className: tx("select.itemIndicator", {}, classNames),
3717
3895
  ref: forwardedRef
3718
3896
  }, children);
3719
3897
  });
3720
- var SelectOption = /* @__PURE__ */ forwardRef28(({ children, classNames, ...props }, forwardedRef) => {
3898
+ var SelectOption = /* @__PURE__ */ forwardRef25(({ children, classNames, ...props }, forwardedRef) => {
3721
3899
  const { tx } = useThemeContext();
3722
- return /* @__PURE__ */ React37.createElement(SelectPrimitive.Item, {
3900
+ return /* @__PURE__ */ React38.createElement(SelectPrimitive.Item, {
3723
3901
  ...props,
3724
3902
  className: tx("select.item", {}, classNames),
3725
3903
  ref: forwardedRef
3726
- }, /* @__PURE__ */ React37.createElement(SelectPrimitive.ItemText, null, children), /* @__PURE__ */ React37.createElement("span", {
3904
+ }, /* @__PURE__ */ React38.createElement(SelectPrimitive.ItemText, null, children), /* @__PURE__ */ React38.createElement("span", {
3727
3905
  className: "grow w-1"
3728
- }), /* @__PURE__ */ React37.createElement(Icon, {
3906
+ }), /* @__PURE__ */ React38.createElement(Icon, {
3729
3907
  icon: "ph--check--regular"
3730
3908
  }));
3731
3909
  });
3732
3910
  var SelectGroup = SelectPrimitive.Group;
3733
3911
  var SelectLabel = SelectPrimitive.Label;
3734
- var SelectSeparator = /* @__PURE__ */ forwardRef28(({ classNames, ...props }, forwardedRef) => {
3912
+ var SelectSeparator = /* @__PURE__ */ forwardRef25(({ classNames, ...props }, forwardedRef) => {
3735
3913
  const { tx } = useThemeContext();
3736
- return /* @__PURE__ */ React37.createElement(SelectPrimitive.Separator, {
3914
+ return /* @__PURE__ */ React38.createElement(SelectPrimitive.Separator, {
3737
3915
  ...props,
3738
3916
  className: tx("select.separator", {}, classNames),
3739
3917
  ref: forwardedRef
3740
3918
  });
3741
3919
  });
3742
- var SelectArrow = /* @__PURE__ */ forwardRef28(({ classNames, ...props }, forwardedRef) => {
3920
+ var SelectArrow = /* @__PURE__ */ forwardRef25(({ classNames, ...props }, forwardedRef) => {
3743
3921
  const { tx } = useThemeContext();
3744
- return /* @__PURE__ */ React37.createElement(SelectPrimitive.Arrow, {
3922
+ return /* @__PURE__ */ React38.createElement(SelectPrimitive.Arrow, {
3745
3923
  ...props,
3746
3924
  className: tx("select.arrow", {}, classNames),
3747
3925
  ref: forwardedRef
@@ -3769,10 +3947,10 @@ var Select = {
3769
3947
  };
3770
3948
 
3771
3949
  // src/components/Skeleton/Skeleton.tsx
3772
- import React38, { forwardRef as forwardRef29 } from "react";
3773
- var Skeleton = /* @__PURE__ */ forwardRef29(({ classNames, variant = "default", ...props }, forwardedRef) => {
3950
+ import React39, { forwardRef as forwardRef26 } from "react";
3951
+ var Skeleton = /* @__PURE__ */ forwardRef26(({ classNames, variant = "default", ...props }, forwardedRef) => {
3774
3952
  const { tx } = useThemeContext();
3775
- return /* @__PURE__ */ React38.createElement("div", {
3953
+ return /* @__PURE__ */ React39.createElement("div", {
3776
3954
  ...props,
3777
3955
  className: tx("skeleton.root", {
3778
3956
  variant
@@ -3783,50 +3961,47 @@ var Skeleton = /* @__PURE__ */ forwardRef29(({ classNames, variant = "default",
3783
3961
 
3784
3962
  // src/components/Splitter/Splitter.tsx
3785
3963
  import { createContextScope as createContextScope4 } from "@radix-ui/react-context";
3786
- import { Primitive as Primitive17 } from "@radix-ui/react-primitive";
3787
- import { Slot as Slot17 } from "@radix-ui/react-slot";
3788
- import React39, { forwardRef as forwardRef30 } from "react";
3964
+ import { Primitive as Primitive21 } from "@radix-ui/react-primitive";
3965
+ import { Slot as Slot21 } from "@radix-ui/react-slot";
3966
+ import React40 from "react";
3967
+ import { composableProps as composableProps14, slottable as slottable11 } from "@dxos/ui-theme";
3789
3968
  var SPLITTER_NAME = "Splitter";
3790
3969
  var [createSplitterContext, createSplitterScope] = createContextScope4(SPLITTER_NAME);
3791
3970
  var [SplitterProvider, useSplitterContext] = createSplitterContext(SPLITTER_NAME);
3792
3971
  var ROOT_NAME = "Splitter.Root";
3793
- var Root8 = /* @__PURE__ */ forwardRef30(({ __scopeSplitter, classNames, className, asChild, mode = "upper", ratio = 0.5, transition = 250, children, ...rootProps }, forwardedRef) => {
3972
+ var Root12 = slottable11(({ asChild, mode = "top", ratio = 0.5, transition = 250, children, ...props }, forwardedRef) => {
3794
3973
  const { tx } = useThemeContext();
3795
- const Comp = asChild ? Slot17 : Primitive17.div;
3796
- return /* @__PURE__ */ React39.createElement(SplitterProvider, {
3974
+ const { __scopeSplitter, ...rest } = props;
3975
+ const { className, ...restProps } = composableProps14(rest);
3976
+ const Comp = asChild ? Slot21 : Primitive21.div;
3977
+ return /* @__PURE__ */ React40.createElement(SplitterProvider, {
3797
3978
  scope: __scopeSplitter,
3798
3979
  mode,
3799
3980
  ratio,
3800
3981
  transition
3801
- }, /* @__PURE__ */ React39.createElement(Comp, {
3802
- role: "none",
3803
- ...rootProps,
3982
+ }, /* @__PURE__ */ React40.createElement(Comp, {
3983
+ ...restProps,
3804
3984
  ref: forwardedRef,
3805
- className: tx("splitter.root", {}, [
3806
- className,
3807
- classNames
3808
- ])
3985
+ className: tx("splitter.root", {}, className)
3809
3986
  }, children));
3810
3987
  });
3811
- Root8.displayName = ROOT_NAME;
3988
+ Root12.displayName = ROOT_NAME;
3812
3989
  var PANEL_NAME = "Splitter.Panel";
3813
- var Panel2 = /* @__PURE__ */ forwardRef30(({ __scopeSplitter, classNames, className, asChild, children, position, style, ...props }, forwardedRef) => {
3814
- const { mode, ratio, transition } = useSplitterContext(PANEL_NAME, __scopeSplitter);
3815
- const { tx } = useThemeContext();
3816
- const Comp = asChild ? Slot17 : Primitive17.div;
3817
- const isUpper = position === "upper";
3818
- const top = isUpper ? "0%" : mode === "upper" ? "100%" : mode === "lower" ? "0%" : `${ratio * 100}%`;
3819
- const height = isUpper ? mode === "upper" ? "100%" : mode === "lower" ? "0%" : `${ratio * 100}%` : mode === "lower" ? "100%" : mode === "upper" ? "0%" : `${(1 - ratio) * 100}%`;
3820
- return /* @__PURE__ */ React39.createElement(Comp, {
3821
- role: "none",
3822
- ...props,
3990
+ var Panel2 = slottable11(({ classNames, asChild, children, position, style, ...props }, forwardedRef) => {
3991
+ const { tx } = useThemeContext();
3992
+ const { __scopeSplitter, ...rest } = props;
3993
+ const Comp = asChild ? Slot21 : Primitive21.div;
3994
+ const { mode, ratio = 0.5, transition } = useSplitterContext(PANEL_NAME, __scopeSplitter);
3995
+ const { className, ...restProps } = composableProps14(rest);
3996
+ const isTopPanel = position === "top";
3997
+ const topOffset = isTopPanel ? "0%" : mode === "top" ? "100%" : mode === "bottom" ? "0%" : `${ratio * 100}%`;
3998
+ const height = isTopPanel ? mode === "top" ? "100%" : mode === "bottom" ? "0%" : `${ratio * 100}%` : mode === "bottom" ? "100%" : mode === "top" ? "0%" : `${(1 - ratio) * 100}%`;
3999
+ return /* @__PURE__ */ React40.createElement(Comp, {
4000
+ ...restProps,
3823
4001
  ref: forwardedRef,
3824
- className: tx("splitter.panel", {}, [
3825
- className,
3826
- classNames
3827
- ]),
4002
+ className: tx("splitter.panel", {}, className),
3828
4003
  style: {
3829
- top,
4004
+ top: topOffset,
3830
4005
  height,
3831
4006
  transition: `top ${transition}ms, height ${transition}ms ease-out`,
3832
4007
  ...style
@@ -3835,18 +4010,18 @@ var Panel2 = /* @__PURE__ */ forwardRef30(({ __scopeSplitter, classNames, classN
3835
4010
  });
3836
4011
  Panel2.displayName = PANEL_NAME;
3837
4012
  var Splitter = {
3838
- Root: Root8,
4013
+ Root: Root12,
3839
4014
  Panel: Panel2
3840
4015
  };
3841
4016
 
3842
4017
  // src/components/Tag/Tag.tsx
3843
- import { Primitive as Primitive18 } from "@radix-ui/react-primitive";
3844
- import { Slot as Slot18 } from "@radix-ui/react-slot";
3845
- import React40, { forwardRef as forwardRef31 } from "react";
3846
- var Tag = /* @__PURE__ */ forwardRef31(({ asChild, palette = "neutral", classNames, ...props }, forwardedRef) => {
4018
+ import { Primitive as Primitive22 } from "@radix-ui/react-primitive";
4019
+ import { Slot as Slot22 } from "@radix-ui/react-slot";
4020
+ import React41, { forwardRef as forwardRef27 } from "react";
4021
+ var Tag = /* @__PURE__ */ forwardRef27(({ asChild, palette = "neutral", classNames, ...props }, forwardedRef) => {
3847
4022
  const { tx } = useThemeContext();
3848
- const Comp = asChild ? Slot18 : Primitive18.span;
3849
- return /* @__PURE__ */ React40.createElement(Comp, {
4023
+ const Comp = asChild ? Slot22 : Primitive22.span;
4024
+ return /* @__PURE__ */ React41.createElement(Comp, {
3850
4025
  ...props,
3851
4026
  className: tx("tag.root", {
3852
4027
  palette
@@ -3857,66 +4032,67 @@ var Tag = /* @__PURE__ */ forwardRef31(({ asChild, palette = "neutral", classNam
3857
4032
  });
3858
4033
 
3859
4034
  // src/components/Toast/Toast.tsx
3860
- import { Primitive as Primitive19 } from "@radix-ui/react-primitive";
3861
- import { Slot as Slot19 } from "@radix-ui/react-slot";
3862
- import { ToastAction as ToastActionPrimitive, ToastClose as ToastClosePrimitive, ToastDescription as ToastDescriptionPrimitive, ToastProvider as ToastProviderPrimitive, Root as ToastRootPrimitive, ToastTitle as ToastTitlePrimitive, ToastViewport as ToastViewportPrimitive } from "@radix-ui/react-toast";
3863
- import React41, { forwardRef as forwardRef32 } from "react";
3864
- var ToastProvider = ToastProviderPrimitive;
3865
- var ToastViewport = /* @__PURE__ */ forwardRef32(({ classNames, ...props }, forwardedRef) => {
4035
+ import { Primitive as Primitive23 } from "@radix-ui/react-primitive";
4036
+ import { Slot as Slot23 } from "@radix-ui/react-slot";
4037
+ import * as ToastPrimitive from "@radix-ui/react-toast";
4038
+ import React42, { forwardRef as forwardRef28 } from "react";
4039
+ var ToastProvider = ToastPrimitive.Provider;
4040
+ var ToastViewport = /* @__PURE__ */ forwardRef28(({ classNames, ...props }, forwardedRef) => {
3866
4041
  const { tx } = useThemeContext();
3867
- return /* @__PURE__ */ React41.createElement(ToastViewportPrimitive, {
4042
+ return /* @__PURE__ */ React42.createElement(ToastPrimitive.Viewport, {
4043
+ ...props,
3868
4044
  className: tx("toast.viewport", {}, classNames),
3869
4045
  ref: forwardedRef
3870
4046
  });
3871
4047
  });
3872
- var ToastRoot = /* @__PURE__ */ forwardRef32(({ classNames, children, ...props }, forwardedRef) => {
4048
+ var ToastRoot = /* @__PURE__ */ forwardRef28(({ classNames, children, ...props }, forwardedRef) => {
3873
4049
  const { tx } = useThemeContext();
3874
- return /* @__PURE__ */ React41.createElement(ToastRootPrimitive, {
4050
+ return /* @__PURE__ */ React42.createElement(ToastPrimitive.Root, {
3875
4051
  ...props,
3876
4052
  className: tx("toast.root", {}, classNames),
3877
4053
  ref: forwardedRef
3878
- }, /* @__PURE__ */ React41.createElement(ElevationProvider, {
4054
+ }, /* @__PURE__ */ React42.createElement(ElevationProvider, {
3879
4055
  elevation: "toast"
3880
4056
  }, children));
3881
4057
  });
3882
- var ToastBody = /* @__PURE__ */ forwardRef32(({ asChild, classNames, ...props }, forwardedRef) => {
4058
+ var ToastBody = /* @__PURE__ */ forwardRef28(({ asChild, classNames, ...props }, forwardedRef) => {
3883
4059
  const { tx } = useThemeContext();
3884
- const Comp = asChild ? Slot19 : Primitive19.div;
3885
- return /* @__PURE__ */ React41.createElement(Comp, {
4060
+ const Comp = asChild ? Slot23 : Primitive23.div;
4061
+ return /* @__PURE__ */ React42.createElement(Comp, {
3886
4062
  ...props,
3887
4063
  className: tx("toast.body", {}, classNames),
3888
4064
  ref: forwardedRef
3889
4065
  });
3890
4066
  });
3891
- var ToastTitle = /* @__PURE__ */ forwardRef32(({ asChild, classNames, ...props }, forwardedRef) => {
4067
+ var ToastTitle = /* @__PURE__ */ forwardRef28(({ asChild, classNames, ...props }, forwardedRef) => {
3892
4068
  const { tx } = useThemeContext();
3893
- const Comp = asChild ? Slot19 : ToastTitlePrimitive;
3894
- return /* @__PURE__ */ React41.createElement(Comp, {
4069
+ const Comp = asChild ? Slot23 : ToastPrimitive.Title;
4070
+ return /* @__PURE__ */ React42.createElement(Comp, {
3895
4071
  ...props,
3896
4072
  className: tx("toast.title", {}, classNames),
3897
4073
  ref: forwardedRef
3898
4074
  });
3899
4075
  });
3900
- var ToastDescription = /* @__PURE__ */ forwardRef32(({ asChild, classNames, ...props }, forwardedRef) => {
4076
+ var ToastDescription = /* @__PURE__ */ forwardRef28(({ asChild, classNames, ...props }, forwardedRef) => {
3901
4077
  const { tx } = useThemeContext();
3902
- const Comp = asChild ? Slot19 : ToastDescriptionPrimitive;
3903
- return /* @__PURE__ */ React41.createElement(Comp, {
4078
+ const Comp = asChild ? Slot23 : ToastPrimitive.Description;
4079
+ return /* @__PURE__ */ React42.createElement(Comp, {
3904
4080
  ...props,
3905
4081
  className: tx("toast.description", {}, classNames),
3906
4082
  ref: forwardedRef
3907
4083
  });
3908
4084
  });
3909
- var ToastActions = /* @__PURE__ */ forwardRef32(({ asChild, classNames, ...props }, forwardedRef) => {
4085
+ var ToastActions = /* @__PURE__ */ forwardRef28(({ asChild, classNames, ...props }, forwardedRef) => {
3910
4086
  const { tx } = useThemeContext();
3911
- const Comp = asChild ? Slot19 : Primitive19.div;
3912
- return /* @__PURE__ */ React41.createElement(Comp, {
4087
+ const Comp = asChild ? Slot23 : Primitive23.div;
4088
+ return /* @__PURE__ */ React42.createElement(Comp, {
3913
4089
  ...props,
3914
4090
  className: tx("toast.actions", {}, classNames),
3915
4091
  ref: forwardedRef
3916
4092
  });
3917
4093
  });
3918
- var ToastAction = ToastActionPrimitive;
3919
- var ToastClose = ToastClosePrimitive;
4094
+ var ToastAction = ToastPrimitive.Action;
4095
+ var ToastClose = ToastPrimitive.Close;
3920
4096
  var Toast = {
3921
4097
  Provider: ToastProvider,
3922
4098
  Viewport: ToastViewport,
@@ -3939,6 +4115,7 @@ export {
3939
4115
  Card,
3940
4116
  Clipboard,
3941
4117
  Column,
4118
+ Container,
3942
4119
  ContextMenu2 as ContextMenu,
3943
4120
  DensityContext,
3944
4121
  DensityProvider,
@@ -3950,6 +4127,7 @@ export {
3950
4127
  ErrorFallback,
3951
4128
  ErrorStack,
3952
4129
  Flex,
4130
+ Focus,
3953
4131
  Grid,
3954
4132
  Icon,
3955
4133
  IconButton,
@@ -3971,6 +4149,8 @@ export {
3971
4149
  Skeleton,
3972
4150
  Splitter,
3973
4151
  Status,
4152
+ TREEGRID_PARENT_OF_SEPARATOR,
4153
+ TREEGRID_PATH_SEPARATOR,
3974
4154
  Tag,
3975
4155
  ThemeContext,
3976
4156
  ThemeProvider,
@@ -3980,7 +4160,7 @@ export {
3980
4160
  ToggleGroup,
3981
4161
  ToggleGroupIconItem,
3982
4162
  ToggleGroupItem,
3983
- Toolbar2 as Toolbar,
4163
+ Toolbar,
3984
4164
  Tooltip,
3985
4165
  Trans,
3986
4166
  Tree,
@@ -3994,6 +4174,7 @@ export {
3994
4174
  initialSafeArea,
3995
4175
  isLabel,
3996
4176
  messageIcons,
4177
+ parseCaptureOwnerStack,
3997
4178
  toLocalizedString,
3998
4179
  useAvatarContext,
3999
4180
  useButtonGroupContext,
@@ -4002,6 +4183,7 @@ export {
4002
4183
  useDropdownMenuContext,
4003
4184
  useDropdownMenuMenuScope,
4004
4185
  useElevationContext,
4186
+ useFocus,
4005
4187
  useIconHref,
4006
4188
  useLandmarkMover,
4007
4189
  useListContext,
@@ -4009,6 +4191,7 @@ export {
4009
4191
  useMainContext,
4010
4192
  usePx,
4011
4193
  useSafeArea,
4194
+ useSafeCollisionPadding,
4012
4195
  useScrollContainerContext,
4013
4196
  useSidebars,
4014
4197
  useThemeContext,