@dxos/plugin-deck 0.8.4-main.74a063c4e0 → 0.8.4-main.765dc60934

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 (371) hide show
  1. package/LICENSE +102 -5
  2. package/README.md +1 -1
  3. package/dist/lib/neutral/DeckLayout-6SICSSUF.mjs +278 -0
  4. package/dist/lib/neutral/DeckLayout-6SICSSUF.mjs.map +7 -0
  5. package/dist/lib/neutral/DeckPlugin.mjs +70 -0
  6. package/dist/lib/neutral/DeckPlugin.mjs.map +7 -0
  7. package/dist/lib/neutral/DeckPlugin.node.mjs +18 -0
  8. package/dist/lib/neutral/DeckPlugin.node.mjs.map +7 -0
  9. package/dist/lib/neutral/DeckSettings-W5I57OXM.mjs +27 -0
  10. package/dist/lib/neutral/DeckSettings-W5I57OXM.mjs.map +7 -0
  11. package/dist/lib/{browser/add-toast-HW74YZHJ.mjs → neutral/add-toast-2OMTFZ2L.mjs} +5 -5
  12. package/dist/lib/{browser/add-toast-HW74YZHJ.mjs.map → neutral/add-toast-2OMTFZ2L.mjs.map} +2 -2
  13. package/dist/lib/{browser/adjust-OXVHZTBE.mjs → neutral/adjust-RXTF3IT3.mjs} +17 -20
  14. package/dist/lib/neutral/adjust-RXTF3IT3.mjs.map +7 -0
  15. package/dist/lib/neutral/app-graph-builder-GZYYAN5B.mjs +129 -0
  16. package/dist/lib/neutral/app-graph-builder-GZYYAN5B.mjs.map +7 -0
  17. package/dist/lib/neutral/capabilities/index.mjs +23 -0
  18. package/dist/lib/neutral/capabilities/index.mjs.map +7 -0
  19. package/dist/lib/neutral/check-app-scheme-A7FZVNZO.mjs +10 -0
  20. package/dist/lib/neutral/chunk-4MYX2NT3.mjs +1335 -0
  21. package/dist/lib/neutral/chunk-4MYX2NT3.mjs.map +7 -0
  22. package/dist/lib/neutral/chunk-64ODQD6S.mjs +282 -0
  23. package/dist/lib/neutral/chunk-64ODQD6S.mjs.map +7 -0
  24. package/dist/lib/neutral/chunk-6MOYMDKQ.mjs +8 -0
  25. package/dist/lib/neutral/chunk-6MOYMDKQ.mjs.map +7 -0
  26. package/dist/lib/neutral/chunk-GBIGQKYW.mjs +112 -0
  27. package/dist/lib/neutral/chunk-GBIGQKYW.mjs.map +7 -0
  28. package/dist/lib/{browser/chunk-KUTDCWZF.mjs → neutral/chunk-GLB73Q6U.mjs} +2 -10
  29. package/dist/lib/{node-esm/chunk-MLVJ2ODW.mjs.map → neutral/chunk-GLB73Q6U.mjs.map} +2 -2
  30. package/dist/lib/neutral/chunk-JMYWDX4I.mjs +19 -0
  31. package/dist/lib/neutral/chunk-JMYWDX4I.mjs.map +7 -0
  32. package/dist/lib/neutral/chunk-VHETZ22W.mjs +101 -0
  33. package/dist/lib/neutral/chunk-VHETZ22W.mjs.map +7 -0
  34. package/dist/lib/{browser/chunk-DF2VZ6W3.mjs → neutral/chunk-ZYYOSX5I.mjs} +1 -1
  35. package/dist/lib/{browser/chunk-DF2VZ6W3.mjs.map → neutral/chunk-ZYYOSX5I.mjs.map} +2 -2
  36. package/dist/lib/{browser/close-N5FCDT7Y.mjs → neutral/close-DG5IVQCE.mjs} +12 -12
  37. package/dist/lib/{browser/close-N5FCDT7Y.mjs.map → neutral/close-DG5IVQCE.mjs.map} +2 -2
  38. package/dist/lib/neutral/components/index.mjs +126 -0
  39. package/dist/lib/neutral/components/index.mjs.map +7 -0
  40. package/dist/lib/neutral/containers/index.mjs +32 -0
  41. package/dist/lib/neutral/containers/index.mjs.map +7 -0
  42. package/dist/lib/neutral/hooks/index.mjs +178 -0
  43. package/dist/lib/neutral/hooks/index.mjs.map +7 -0
  44. package/dist/lib/{node-esm/types → neutral}/index.mjs +13 -8
  45. package/dist/lib/neutral/meta.json +1 -0
  46. package/dist/lib/neutral/meta.mjs +8 -0
  47. package/dist/lib/{browser/open-J5HV42UN.mjs → neutral/open-SGYZO7RF.mjs} +21 -24
  48. package/dist/lib/neutral/open-SGYZO7RF.mjs.map +7 -0
  49. package/dist/lib/neutral/operation-handler-266CVMTW.mjs +13 -0
  50. package/dist/lib/neutral/operation-handler-266CVMTW.mjs.map +7 -0
  51. package/dist/lib/neutral/operations/index.mjs +8 -0
  52. package/dist/lib/neutral/operations/index.mjs.map +7 -0
  53. package/dist/lib/neutral/plugin.mjs +16 -0
  54. package/dist/lib/neutral/plugin.mjs.map +7 -0
  55. package/dist/lib/neutral/react-root-WZ6KH27J.mjs +41 -0
  56. package/dist/lib/neutral/react-root-WZ6KH27J.mjs.map +7 -0
  57. package/dist/lib/neutral/react-surface-KAAZDHV3.mjs +34 -0
  58. package/dist/lib/neutral/react-surface-KAAZDHV3.mjs.map +7 -0
  59. package/dist/lib/{browser/revert-workspace-VWNN7RYF.mjs → neutral/revert-workspace-V6D7W6CL.mjs} +5 -5
  60. package/dist/lib/{browser/revert-workspace-VWNN7RYF.mjs.map → neutral/revert-workspace-V6D7W6CL.mjs.map} +2 -2
  61. package/dist/lib/{browser/scroll-into-view-CA7E3PSO.mjs → neutral/scroll-into-view-UM446Q2T.mjs} +5 -5
  62. package/dist/lib/{browser/scroll-into-view-CA7E3PSO.mjs.map → neutral/scroll-into-view-UM446Q2T.mjs.map} +2 -2
  63. package/dist/lib/{browser/set-YVWQQZLE.mjs → neutral/set-JFFKT32S.mjs} +11 -11
  64. package/dist/lib/{browser/set-YVWQQZLE.mjs.map → neutral/set-JFFKT32S.mjs.map} +2 -2
  65. package/dist/lib/{browser/set-layout-mode-DRNBZHE7.mjs → neutral/set-layout-mode-I4YV5V2Y.mjs} +10 -15
  66. package/dist/lib/neutral/set-layout-mode-I4YV5V2Y.mjs.map +7 -0
  67. package/dist/lib/neutral/settings-FE7AC5VS.mjs +34 -0
  68. package/dist/lib/neutral/settings-FE7AC5VS.mjs.map +7 -0
  69. package/dist/lib/{browser/show-undo-KA2XHQ6E.mjs → neutral/show-undo-ZCMF4J2Q.mjs} +5 -5
  70. package/dist/lib/{browser/show-undo-KA2XHQ6E.mjs.map → neutral/show-undo-ZCMF4J2Q.mjs.map} +2 -2
  71. package/dist/lib/neutral/state-IIDXMQUO.mjs +86 -0
  72. package/dist/lib/neutral/state-IIDXMQUO.mjs.map +7 -0
  73. package/dist/lib/{browser/switch-workspace-U7SPENHU.mjs → neutral/switch-workspace-CVDYG5YZ.mjs} +8 -16
  74. package/dist/lib/neutral/switch-workspace-CVDYG5YZ.mjs.map +7 -0
  75. package/dist/lib/neutral/translations.mjs +57 -0
  76. package/dist/lib/neutral/translations.mjs.map +7 -0
  77. package/dist/lib/{browser → neutral}/types/index.mjs +7 -5
  78. package/dist/lib/neutral/types/index.mjs.map +7 -0
  79. package/dist/lib/neutral/update-companion-VPCM7FJX.mjs +32 -0
  80. package/dist/lib/neutral/update-companion-VPCM7FJX.mjs.map +7 -0
  81. package/dist/lib/{browser/update-complementary-W6UVLWLI.mjs → neutral/update-complementary-SEQ6DDWA.mjs} +6 -6
  82. package/dist/lib/neutral/update-complementary-SEQ6DDWA.mjs.map +7 -0
  83. package/dist/lib/{browser/update-dialog-VCTI7WKS.mjs → neutral/update-dialog-VDHYE4QH.mjs} +5 -5
  84. package/dist/lib/{browser/update-dialog-VCTI7WKS.mjs.map → neutral/update-dialog-VDHYE4QH.mjs.map} +2 -2
  85. package/dist/lib/neutral/update-plank-size-ZXOUZD7Y.mjs +26 -0
  86. package/dist/lib/neutral/update-plank-size-ZXOUZD7Y.mjs.map +7 -0
  87. package/dist/lib/{browser/update-popover-4EVVZSB6.mjs → neutral/update-popover-VFP32W57.mjs} +5 -5
  88. package/dist/lib/{browser/update-popover-4EVVZSB6.mjs.map → neutral/update-popover-VFP32W57.mjs.map} +2 -2
  89. package/dist/lib/{browser/update-sidebar-PAZARC4Q.mjs → neutral/update-sidebar-O5HBOXYH.mjs} +6 -6
  90. package/dist/lib/{browser/update-sidebar-PAZARC4Q.mjs.map → neutral/update-sidebar-O5HBOXYH.mjs.map} +2 -2
  91. package/dist/lib/neutral/url-handler-3QTKEM2K.mjs +184 -0
  92. package/dist/lib/neutral/url-handler-3QTKEM2K.mjs.map +7 -0
  93. package/dist/types/src/DeckPlugin.d.ts +1 -0
  94. package/dist/types/src/DeckPlugin.d.ts.map +1 -1
  95. package/dist/types/src/DeckPlugin.node.d.ts +4 -0
  96. package/dist/types/src/DeckPlugin.node.d.ts.map +1 -0
  97. package/dist/types/src/DeckPlugin.test.d.ts +2 -0
  98. package/dist/types/src/DeckPlugin.test.d.ts.map +1 -0
  99. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  100. package/dist/types/src/capabilities/check-app-scheme.d.ts +1 -1
  101. package/dist/types/src/capabilities/check-app-scheme.d.ts.map +1 -1
  102. package/dist/types/src/capabilities/index.d.ts +18 -30
  103. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  104. package/dist/types/src/capabilities/operation-handler.d.ts +1 -1
  105. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -1
  106. package/dist/types/src/capabilities/react-root.d.ts.map +1 -1
  107. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  108. package/dist/types/src/capabilities/settings.d.ts +2 -13
  109. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  110. package/dist/types/src/capabilities/state.d.ts +16 -16
  111. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  112. package/dist/types/src/capabilities/tools.d.ts.map +1 -1
  113. package/dist/types/src/capabilities/url-handler.d.ts +1 -1
  114. package/dist/types/src/capabilities/url-handler.d.ts.map +1 -1
  115. package/dist/types/src/components/DeckSettings/DeckSettings.d.ts.map +1 -1
  116. package/dist/types/src/components/DeckSettings/DeckSettings.stories.d.ts +42 -52
  117. package/dist/types/src/components/DeckSettings/DeckSettings.stories.d.ts.map +1 -1
  118. package/dist/types/src/components/Matrix/Matrix.d.ts +2 -10
  119. package/dist/types/src/components/Matrix/Matrix.d.ts.map +1 -1
  120. package/dist/types/src/components/Matrix/Matrix.stories.d.ts.map +1 -1
  121. package/dist/types/src/containers/Deck/Banner.d.ts +1 -1
  122. package/dist/types/src/containers/Deck/Banner.d.ts.map +1 -1
  123. package/dist/types/src/containers/Deck/Deck.d.ts.map +1 -1
  124. package/dist/types/src/containers/Deck/Deck.stories.d.ts +42 -52
  125. package/dist/types/src/containers/Deck/Deck.stories.d.ts.map +1 -1
  126. package/dist/types/src/containers/Deck/DeckContent.d.ts +4 -4
  127. package/dist/types/src/containers/Deck/DeckContent.d.ts.map +1 -1
  128. package/dist/types/src/containers/Deck/DeckRoot.d.ts +5 -8
  129. package/dist/types/src/containers/Deck/DeckRoot.d.ts.map +1 -1
  130. package/dist/types/src/containers/Deck/DeckViewport.d.ts +4 -7
  131. package/dist/types/src/containers/Deck/DeckViewport.d.ts.map +1 -1
  132. package/dist/types/src/containers/Deck/StatusBar.d.ts.map +1 -1
  133. package/dist/types/src/containers/DeckLayout/DeckLayout.d.ts.map +1 -1
  134. package/dist/types/src/containers/DeckLayout/DeckLayout.stories.d.ts +42 -52
  135. package/dist/types/src/containers/DeckLayout/DeckLayout.stories.d.ts.map +1 -1
  136. package/dist/types/src/containers/DeckLayout/Dialog.d.ts.map +1 -1
  137. package/dist/types/src/containers/DeckLayout/Popover.d.ts.map +1 -1
  138. package/dist/types/src/containers/DeckLayout/Toast.d.ts +1 -1
  139. package/dist/types/src/containers/DeckLayout/Toast.d.ts.map +1 -1
  140. package/dist/types/src/containers/DeckLayout/index.d.ts.map +1 -1
  141. package/dist/types/src/containers/Plank/Plank.d.ts +2 -6
  142. package/dist/types/src/containers/Plank/Plank.d.ts.map +1 -1
  143. package/dist/types/src/containers/Plank/Plank.stories.d.ts +43 -52
  144. package/dist/types/src/containers/Plank/Plank.stories.d.ts.map +1 -1
  145. package/dist/types/src/containers/Plank/PlankComponent.d.ts +2 -0
  146. package/dist/types/src/containers/Plank/PlankComponent.d.ts.map +1 -1
  147. package/dist/types/src/containers/Plank/PlankContent.d.ts +1 -5
  148. package/dist/types/src/containers/Plank/PlankContent.d.ts.map +1 -1
  149. package/dist/types/src/containers/Plank/PlankControls.d.ts.map +1 -1
  150. package/dist/types/src/containers/Plank/PlankError.d.ts +1 -1
  151. package/dist/types/src/containers/Plank/PlankError.d.ts.map +1 -1
  152. package/dist/types/src/containers/Plank/PlankHeading.d.ts +2 -1
  153. package/dist/types/src/containers/Plank/PlankHeading.d.ts.map +1 -1
  154. package/dist/types/src/containers/Plank/PlankRoot.d.ts +3 -3
  155. package/dist/types/src/containers/Plank/PlankRoot.d.ts.map +1 -1
  156. package/dist/types/src/containers/Sidebar/ComplementarySidebar.d.ts.map +1 -1
  157. package/dist/types/src/containers/Sidebar/SidebarButton.d.ts +1 -1
  158. package/dist/types/src/containers/Sidebar/SidebarButton.d.ts.map +1 -1
  159. package/dist/types/src/hooks/useBreakpoints.d.ts +1 -1
  160. package/dist/types/src/hooks/useCompanions.d.ts.map +1 -1
  161. package/dist/types/src/hooks/useDeckCompanions.d.ts +2 -1
  162. package/dist/types/src/hooks/useDeckCompanions.d.ts.map +1 -1
  163. package/dist/types/src/hooks/useHoistStatusbar.d.ts.map +1 -1
  164. package/dist/types/src/hooks/useMainSize.d.ts.map +1 -1
  165. package/dist/types/src/hooks/useNodeActionExpander.d.ts.map +1 -1
  166. package/dist/types/src/hooks/useSelectedCompanion.d.ts.map +1 -1
  167. package/dist/types/src/index.d.ts +1 -3
  168. package/dist/types/src/index.d.ts.map +1 -1
  169. package/dist/types/src/layout.d.ts.map +1 -1
  170. package/dist/types/src/meta.d.ts.map +1 -1
  171. package/dist/types/src/operations/add-toast.d.ts +1 -1
  172. package/dist/types/src/operations/add-toast.d.ts.map +1 -1
  173. package/dist/types/src/operations/adjust.d.ts +3 -3
  174. package/dist/types/src/operations/adjust.d.ts.map +1 -1
  175. package/dist/types/src/operations/close.d.ts +1 -1
  176. package/dist/types/src/operations/close.d.ts.map +1 -1
  177. package/dist/types/src/operations/helpers.d.ts.map +1 -1
  178. package/dist/types/src/operations/index.d.ts +1 -2
  179. package/dist/types/src/operations/index.d.ts.map +1 -1
  180. package/dist/types/src/operations/open.d.ts +1 -1
  181. package/dist/types/src/operations/open.d.ts.map +1 -1
  182. package/dist/types/src/operations/revert-workspace.d.ts +1 -1
  183. package/dist/types/src/operations/revert-workspace.d.ts.map +1 -1
  184. package/dist/types/src/operations/scroll-into-view.d.ts +1 -1
  185. package/dist/types/src/operations/scroll-into-view.d.ts.map +1 -1
  186. package/dist/types/src/operations/set-layout-mode.d.ts +1 -1
  187. package/dist/types/src/operations/set-layout-mode.d.ts.map +1 -1
  188. package/dist/types/src/operations/set.d.ts +1 -1
  189. package/dist/types/src/operations/set.d.ts.map +1 -1
  190. package/dist/types/src/operations/show-undo.d.ts +1 -1
  191. package/dist/types/src/operations/show-undo.d.ts.map +1 -1
  192. package/dist/types/src/operations/switch-workspace.d.ts +1 -1
  193. package/dist/types/src/operations/switch-workspace.d.ts.map +1 -1
  194. package/dist/types/src/operations/update-companion.d.ts +5 -0
  195. package/dist/types/src/operations/update-companion.d.ts.map +1 -0
  196. package/dist/types/src/operations/update-complementary.d.ts +1 -1
  197. package/dist/types/src/operations/update-complementary.d.ts.map +1 -1
  198. package/dist/types/src/operations/update-dialog.d.ts +1 -1
  199. package/dist/types/src/operations/update-dialog.d.ts.map +1 -1
  200. package/dist/types/src/operations/update-plank-size.d.ts +3 -3
  201. package/dist/types/src/operations/update-plank-size.d.ts.map +1 -1
  202. package/dist/types/src/operations/update-popover.d.ts +1 -1
  203. package/dist/types/src/operations/update-popover.d.ts.map +1 -1
  204. package/dist/types/src/operations/update-sidebar.d.ts +1 -1
  205. package/dist/types/src/operations/update-sidebar.d.ts.map +1 -1
  206. package/dist/types/src/plugin.d.ts +4 -0
  207. package/dist/types/src/plugin.d.ts.map +1 -0
  208. package/dist/types/src/translations.d.ts +42 -53
  209. package/dist/types/src/translations.d.ts.map +1 -1
  210. package/dist/types/src/types/DeckCapabilities.d.ts +188 -0
  211. package/dist/types/src/types/DeckCapabilities.d.ts.map +1 -0
  212. package/dist/types/src/types/DeckEvents.d.ts +5 -0
  213. package/dist/types/src/types/DeckEvents.d.ts.map +1 -0
  214. package/dist/types/src/{operations/definitions.d.ts → types/DeckOperation.d.ts} +3 -6
  215. package/dist/types/src/types/DeckOperation.d.ts.map +1 -0
  216. package/dist/types/src/types/Settings.d.ts +7 -6
  217. package/dist/types/src/types/Settings.d.ts.map +1 -1
  218. package/dist/types/src/types/index.d.ts +3 -2
  219. package/dist/types/src/types/index.d.ts.map +1 -1
  220. package/dist/types/src/types/schema.d.ts +0 -11
  221. package/dist/types/src/types/schema.d.ts.map +1 -1
  222. package/dist/types/src/util/layoutAppliesTopbar.d.ts.map +1 -1
  223. package/dist/types/src/util/plank-url-params.d.ts.map +1 -1
  224. package/dist/types/src/util/sanitize-persisted-state.d.ts.map +1 -1
  225. package/dist/types/src/util/set-active.d.ts.map +1 -1
  226. package/dist/types/tsconfig.tsbuildinfo +1 -1
  227. package/package.json +104 -78
  228. package/src/DeckPlugin.node.ts +17 -0
  229. package/src/DeckPlugin.test.ts +27 -0
  230. package/src/DeckPlugin.ts +6 -5
  231. package/src/capabilities/app-graph-builder.ts +6 -6
  232. package/src/capabilities/index.ts +1 -1
  233. package/src/capabilities/operation-handler.ts +1 -1
  234. package/src/capabilities/react-surface.tsx +1 -2
  235. package/src/capabilities/settings.ts +1 -1
  236. package/src/capabilities/tools.ts +3 -3
  237. package/src/capabilities/url-handler.ts +6 -1
  238. package/src/components/DeckSettings/DeckSettings.stories.tsx +2 -1
  239. package/src/components/DeckSettings/DeckSettings.tsx +8 -47
  240. package/src/components/Matrix/Matrix.stories.tsx +22 -15
  241. package/src/components/Matrix/Matrix.tsx +1 -1
  242. package/src/components/Matrix/SPEC.md +1 -1
  243. package/src/containers/Deck/Banner.tsx +2 -2
  244. package/src/containers/Deck/Deck.stories.tsx +1 -3
  245. package/src/containers/Deck/DeckContent.tsx +1 -1
  246. package/src/containers/Deck/DeckViewport.tsx +14 -19
  247. package/src/containers/DeckLayout/ActiveNode.tsx +3 -3
  248. package/src/containers/DeckLayout/DeckLayout.stories.tsx +90 -90
  249. package/src/containers/DeckLayout/Dialog.tsx +8 -2
  250. package/src/containers/DeckLayout/Fallback.tsx +1 -1
  251. package/src/containers/DeckLayout/Popover.tsx +6 -4
  252. package/src/containers/Plank/Plank.stories.tsx +11 -8
  253. package/src/containers/Plank/PlankComponent.tsx +58 -21
  254. package/src/containers/Plank/PlankControls.tsx +2 -2
  255. package/src/containers/Plank/PlankError.tsx +1 -1
  256. package/src/containers/Plank/PlankHeading.tsx +18 -8
  257. package/src/containers/Plank/PlankLoading.tsx +1 -1
  258. package/src/containers/Plank/PlankRoot.tsx +3 -3
  259. package/src/containers/Sidebar/ComplementarySidebar.tsx +7 -8
  260. package/src/containers/Sidebar/Sidebar.tsx +2 -2
  261. package/src/containers/Sidebar/SidebarButton.tsx +7 -1
  262. package/src/hooks/useDeckCompanions.ts +2 -1
  263. package/src/index.ts +1 -3
  264. package/src/meta.ts +1 -0
  265. package/src/operations/add-toast.ts +1 -1
  266. package/src/operations/adjust.ts +5 -6
  267. package/src/operations/close.ts +2 -2
  268. package/src/operations/index.ts +2 -4
  269. package/src/operations/open.ts +7 -7
  270. package/src/operations/revert-workspace.ts +1 -1
  271. package/src/operations/scroll-into-view.ts +1 -1
  272. package/src/operations/set-layout-mode.ts +1 -1
  273. package/src/operations/set.ts +2 -2
  274. package/src/operations/show-undo.ts +1 -1
  275. package/src/operations/switch-workspace.ts +1 -1
  276. package/src/operations/{change-companion.ts → update-companion.ts} +5 -5
  277. package/src/operations/update-complementary.ts +1 -1
  278. package/src/operations/update-dialog.ts +1 -1
  279. package/src/operations/update-plank-size.ts +3 -4
  280. package/src/operations/update-popover.ts +1 -1
  281. package/src/operations/update-sidebar.ts +1 -1
  282. package/src/plugin.ts +11 -0
  283. package/src/translations.ts +2 -12
  284. package/src/types/DeckCapabilities.ts +34 -0
  285. package/src/types/DeckEvents.ts +21 -0
  286. package/src/{operations/definitions.ts → types/DeckOperation.ts} +4 -14
  287. package/src/types/Settings.ts +31 -6
  288. package/src/types/index.ts +4 -2
  289. package/src/types/schema.ts +0 -9
  290. package/dist/lib/browser/adjust-OXVHZTBE.mjs.map +0 -7
  291. package/dist/lib/browser/change-companion-Z3Q2UPX4.mjs +0 -34
  292. package/dist/lib/browser/change-companion-Z3Q2UPX4.mjs.map +0 -7
  293. package/dist/lib/browser/chunk-2YNVGCOQ.mjs +0 -88
  294. package/dist/lib/browser/chunk-2YNVGCOQ.mjs.map +0 -7
  295. package/dist/lib/browser/chunk-BRZAVPMC.mjs +0 -48
  296. package/dist/lib/browser/chunk-BRZAVPMC.mjs.map +0 -7
  297. package/dist/lib/browser/chunk-GFOCQS7S.mjs +0 -216
  298. package/dist/lib/browser/chunk-GFOCQS7S.mjs.map +0 -7
  299. package/dist/lib/browser/chunk-KUTDCWZF.mjs.map +0 -7
  300. package/dist/lib/browser/index.mjs +0 -201
  301. package/dist/lib/browser/index.mjs.map +0 -7
  302. package/dist/lib/browser/meta.json +0 -1
  303. package/dist/lib/browser/open-J5HV42UN.mjs.map +0 -7
  304. package/dist/lib/browser/operations/index.mjs +0 -13
  305. package/dist/lib/browser/operations/index.mjs.map +0 -7
  306. package/dist/lib/browser/set-layout-mode-DRNBZHE7.mjs.map +0 -7
  307. package/dist/lib/browser/switch-workspace-U7SPENHU.mjs.map +0 -7
  308. package/dist/lib/browser/update-complementary-W6UVLWLI.mjs.map +0 -7
  309. package/dist/lib/browser/update-plank-size-6TPVOYLT.mjs +0 -28
  310. package/dist/lib/browser/update-plank-size-6TPVOYLT.mjs.map +0 -7
  311. package/dist/lib/node-esm/add-toast-FA7NTWKA.mjs +0 -25
  312. package/dist/lib/node-esm/add-toast-FA7NTWKA.mjs.map +0 -7
  313. package/dist/lib/node-esm/adjust-G6FGZW6H.mjs +0 -97
  314. package/dist/lib/node-esm/adjust-G6FGZW6H.mjs.map +0 -7
  315. package/dist/lib/node-esm/change-companion-V6343HMY.mjs +0 -35
  316. package/dist/lib/node-esm/change-companion-V6343HMY.mjs.map +0 -7
  317. package/dist/lib/node-esm/chunk-6BWQJDNT.mjs +0 -217
  318. package/dist/lib/node-esm/chunk-6BWQJDNT.mjs.map +0 -7
  319. package/dist/lib/node-esm/chunk-GI5JXNBT.mjs +0 -89
  320. package/dist/lib/node-esm/chunk-GI5JXNBT.mjs.map +0 -7
  321. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +0 -11
  322. package/dist/lib/node-esm/chunk-IRWCUYJY.mjs +0 -71
  323. package/dist/lib/node-esm/chunk-IRWCUYJY.mjs.map +0 -7
  324. package/dist/lib/node-esm/chunk-MB4SDDVY.mjs +0 -50
  325. package/dist/lib/node-esm/chunk-MB4SDDVY.mjs.map +0 -7
  326. package/dist/lib/node-esm/chunk-MLVJ2ODW.mjs +0 -32
  327. package/dist/lib/node-esm/close-AMA63RJN.mjs +0 -45
  328. package/dist/lib/node-esm/close-AMA63RJN.mjs.map +0 -7
  329. package/dist/lib/node-esm/index.mjs +0 -202
  330. package/dist/lib/node-esm/index.mjs.map +0 -7
  331. package/dist/lib/node-esm/meta.json +0 -1
  332. package/dist/lib/node-esm/open-KRCARMEB.mjs +0 -151
  333. package/dist/lib/node-esm/open-KRCARMEB.mjs.map +0 -7
  334. package/dist/lib/node-esm/operations/index.mjs +0 -14
  335. package/dist/lib/node-esm/operations/index.mjs.map +0 -7
  336. package/dist/lib/node-esm/revert-workspace-A2K3JQFS.mjs +0 -22
  337. package/dist/lib/node-esm/revert-workspace-A2K3JQFS.mjs.map +0 -7
  338. package/dist/lib/node-esm/scroll-into-view-B2U4RQK7.mjs +0 -22
  339. package/dist/lib/node-esm/scroll-into-view-B2U4RQK7.mjs.map +0 -7
  340. package/dist/lib/node-esm/set-HCWNW76S.mjs +0 -38
  341. package/dist/lib/node-esm/set-HCWNW76S.mjs.map +0 -7
  342. package/dist/lib/node-esm/set-layout-mode-E27AI5KE.mjs +0 -91
  343. package/dist/lib/node-esm/set-layout-mode-E27AI5KE.mjs.map +0 -7
  344. package/dist/lib/node-esm/show-undo-YTZXH422.mjs +0 -60
  345. package/dist/lib/node-esm/show-undo-YTZXH422.mjs.map +0 -7
  346. package/dist/lib/node-esm/switch-workspace-AQCNGS4Y.mjs +0 -69
  347. package/dist/lib/node-esm/switch-workspace-AQCNGS4Y.mjs.map +0 -7
  348. package/dist/lib/node-esm/update-complementary-7HIRM7OT.mjs +0 -29
  349. package/dist/lib/node-esm/update-complementary-7HIRM7OT.mjs.map +0 -7
  350. package/dist/lib/node-esm/update-dialog-F3JF7MBZ.mjs +0 -30
  351. package/dist/lib/node-esm/update-dialog-F3JF7MBZ.mjs.map +0 -7
  352. package/dist/lib/node-esm/update-plank-size-IIZKU7YR.mjs +0 -29
  353. package/dist/lib/node-esm/update-plank-size-IIZKU7YR.mjs.map +0 -7
  354. package/dist/lib/node-esm/update-popover-RO5QEH4C.mjs +0 -34
  355. package/dist/lib/node-esm/update-popover-RO5QEH4C.mjs.map +0 -7
  356. package/dist/lib/node-esm/update-sidebar-2RX6VLEK.mjs +0 -26
  357. package/dist/lib/node-esm/update-sidebar-2RX6VLEK.mjs.map +0 -7
  358. package/dist/types/src/operations/change-companion.d.ts +0 -5
  359. package/dist/types/src/operations/change-companion.d.ts.map +0 -1
  360. package/dist/types/src/operations/definitions.d.ts.map +0 -1
  361. package/dist/types/src/types/capabilities.d.ts +0 -202
  362. package/dist/types/src/types/capabilities.d.ts.map +0 -1
  363. package/dist/types/src/types/events.d.ts +0 -7
  364. package/dist/types/src/types/events.d.ts.map +0 -1
  365. package/src/types/capabilities.ts +0 -35
  366. package/src/types/events.ts +0 -21
  367. /package/dist/lib/{browser/chunk-J5LGTIGS.mjs.map → neutral/check-app-scheme-A7FZVNZO.mjs.map} +0 -0
  368. /package/dist/lib/{browser → neutral}/chunk-J5LGTIGS.mjs +0 -0
  369. /package/dist/lib/{browser/types/index.mjs.map → neutral/chunk-J5LGTIGS.mjs.map} +0 -0
  370. /package/dist/lib/{node-esm/types → neutral}/index.mjs.map +0 -0
  371. /package/dist/lib/{node-esm/chunk-HSLMI22Q.mjs.map → neutral/meta.mjs.map} +0 -0
@@ -106,7 +106,7 @@ IDs with a `~` prefix on the last segment (e.g., `root/obj/~settings`) mark the
106
106
  | -------------- | ----------- | ------------------------------------------------------ |
107
107
  | DOM focus | Browser | `tabIndex`, `focus()`, focus/blur events |
108
108
  | Attention | App-wide | `data-attendable-id` + `RootAttentionProvider` capture |
109
- | Matrix.current | Matrix only | `focusin` on viewport → resolve `data-mosaic-tile-id` |
109
+ | Matrix.current | Matrix only | `focusin` on viewport → resolve `data-object-id` |
110
110
 
111
111
  Currently, Matrix.current and the attention system are independent. For the Matrix to participate in the attention system, tiles would need `data-attendable-id` attributes and the `RootAttentionProvider` would track them automatically via DOM focus. The `onCurrentChange` callback on Matrix.Root could then be driven by attention rather than raw focus events.
112
112
 
@@ -27,8 +27,8 @@ export const Banner = ({ variant, classNames }: ThemedClassName<{ variant?: 'top
27
27
  {variant === 'sidebar' ? <CloseSidebarButton /> : <ToggleSidebarButton />}
28
28
  <span className='self-center grow ms-1'>{t('current-app.name', { ns: osTranslations })}</span>
29
29
  {variant === 'topbar' && (
30
- <div role='none' className='absolute inset-0 pointer-events-none'>
31
- <div role='none' className='grid h-full pointer-fine:p-1 max-w-md mx-auto pointer-events-auto'>
30
+ <div className='absolute inset-0 pointer-events-none'>
31
+ <div className='grid h-full pointer-fine:p-1 max-w-md mx-auto pointer-events-auto'>
32
32
  <Surface.Surface role='search-input' limit={1} />
33
33
  </div>
34
34
  </div>
@@ -10,14 +10,13 @@ import { withPluginManager } from '@dxos/app-framework/testing';
10
10
  import { useAtomCapability, usePluginManager } from '@dxos/app-framework/ui';
11
11
  import { AppActivationEvents } from '@dxos/app-toolkit';
12
12
  import { corePlugins } from '@dxos/plugin-testing';
13
- import { withLayout } from '@dxos/react-ui/testing';
14
13
 
15
14
  import { DeckSettings, DeckState } from '#capabilities';
16
15
  import { useDeckState } from '#hooks';
17
16
  import { meta as pluginMeta } from '#meta';
17
+ import { translations } from '#translations';
18
18
  import { DeckCapabilities, getMode } from '#types';
19
19
 
20
- import { translations } from '../../translations';
21
20
  import { Deck } from './Deck';
22
21
 
23
22
  const TestPlugin = Plugin.define(pluginMeta).pipe(
@@ -64,7 +63,6 @@ const meta = {
64
63
  title: 'plugins/plugin-deck/containers/Deck',
65
64
  component: DefaultStory,
66
65
  decorators: [
67
- withLayout({ layout: 'fullscreen' }),
68
66
  withPluginManager({
69
67
  plugins: [...corePlugins(), TestPlugin()],
70
68
  setupEvents: [AppActivationEvents.SetupSettings],
@@ -4,7 +4,7 @@
4
4
 
5
5
  import React, { type PropsWithChildren, useCallback, useEffect, useRef } from 'react';
6
6
 
7
- import { AttentionCapabilities } from '@dxos/plugin-attention/types';
7
+ import { AttentionCapabilities } from '@dxos/plugin-attention';
8
8
  import { Main, useMediaQuery } from '@dxos/react-ui';
9
9
 
10
10
  import { useBreakpoints, useHoistStatusbar } from '#hooks';
@@ -25,14 +25,14 @@ import { hoverableControls, hoverableFocusedWithinControls, mainPaddingTransitio
25
25
 
26
26
  import { useBreakpoints, useCompanions, useDeckState, useHoistStatusbar, useSelectedCompanion } from '#hooks';
27
27
  import { meta } from '#meta';
28
- import { DeckOperation } from '#operations';
28
+ import { DeckOperation } from '#types';
29
29
  import { getMode } from '#types';
30
30
 
31
31
  import { layoutAppliesTopbar } from '../../util';
32
32
  import { Plank, PlankRootProps, type PlankComponentProps } from '../Plank';
33
33
  import {
34
- ToggleComplementarySidebarButton as NativeToggleComplementarySidebarButton,
35
- ToggleSidebarButton as NativeToggleSidebarButton,
34
+ ToggleComplementarySidebarButton as NaturalToggleComplementarySidebarButton,
35
+ ToggleSidebarButton as NaturalToggleSidebarButton,
36
36
  } from '../Sidebar';
37
37
  import { useDeckContext } from './DeckRoot';
38
38
 
@@ -49,7 +49,7 @@ export type DeckViewportProps = PropsWithChildren;
49
49
  */
50
50
  export const DeckViewport = ({ children }: DeckViewportProps) => {
51
51
  const {
52
- deck: { active, solo, plankSizing },
52
+ deck: { active, plankSizing },
53
53
  state: { sidebarState, complementarySidebarState },
54
54
  settings,
55
55
  layoutMode,
@@ -105,11 +105,7 @@ export const DeckContentEmpty = () => {
105
105
  const layoutMode = getMode(deck);
106
106
  const topbar = layoutAppliesTopbar(breakpoint, layoutMode);
107
107
  return (
108
- <div
109
- role='none'
110
- className='grid place-items-center p-8 relative bg-deck-surface'
111
- data-testid='layoutPlugin.firstRunMessage'
112
- >
108
+ <div className='grid place-items-center p-8 relative bg-deck-surface' data-testid='layoutPlugin.firstRunMessage'>
113
109
  <Surface.Surface role='keyshortcuts' />
114
110
  {!topbar && <ToggleSidebarButton />}
115
111
  </div>
@@ -149,7 +145,7 @@ export const DeckSoloMode = () => {
149
145
  }, [fullscreen, onLayoutChange]);
150
146
 
151
147
  return (
152
- <div role='none' className='relative overflow-hidden bg-deck-surface'>
148
+ <div className='relative overflow-hidden bg-deck-surface'>
153
149
  <DeckSidebarToggles topbar={topbar} fullscreen={fullscreen} />
154
150
  {fullscreen && <ExitFullscreenButton onExit={() => onLayoutChange({ mode: 'solo--fullscreen' })} />}
155
151
  <StackContext.Provider
@@ -233,7 +229,7 @@ export const DeckMultiMode = () => {
233
229
  }, [active, lastPlankCompanions.length]);
234
230
 
235
231
  return (
236
- <div role='none' className='relative bg-deck-surface overflow-hidden'>
232
+ <div className='relative bg-deck-surface overflow-hidden'>
237
233
  <DeckSidebarToggles topbar={topbar} fullscreen={fullscreen} />
238
234
  <Stack
239
235
  classNames={[
@@ -272,16 +268,15 @@ export const DeckMultiMode = () => {
272
268
 
273
269
  const sidebarToggleStyles = 'h-(--dx-rail-item) w-(--dx-rail-item) absolute bottom-2 z-[1] bg-deck-surface! lg:hidden';
274
270
 
275
- const ToggleSidebarButton = () => <NativeToggleSidebarButton classNames={mx(sidebarToggleStyles, 'left-2')} />;
271
+ const ToggleSidebarButton = () => <NaturalToggleSidebarButton classNames={mx(sidebarToggleStyles, 'left-2')} />;
276
272
  const ToggleComplementarySidebarButton = () => (
277
- <NativeToggleComplementarySidebarButton classNames={mx(sidebarToggleStyles, 'right-2')} />
273
+ <NaturalToggleComplementarySidebarButton classNames={mx(sidebarToggleStyles, 'right-2')} />
278
274
  );
279
275
 
280
276
  const ExitFullscreenButton = ({ onExit }: { onExit: () => void }) => {
281
277
  const { t } = useTranslation(meta.id);
282
278
  return (
283
279
  <div
284
- role='none'
285
280
  className={mx(
286
281
  'fixed top-2 right-2 z-[1]',
287
282
  hoverableControls,
@@ -393,8 +388,8 @@ const PlankContainer = memo(
393
388
  [invokePromise],
394
389
  );
395
390
 
396
- const handleChangeCompanion = useCallback(
397
- (companion: string | null) => invokePromise(DeckOperation.ChangeCompanion, { companion }),
391
+ const handleUpdateCompanion = useCallback(
392
+ (companion: string | null) => invokePromise(LayoutOperation.UpdateCompanion, { subject: companion }),
398
393
  [invokePromise],
399
394
  );
400
395
 
@@ -410,7 +405,7 @@ const PlankContainer = memo(
410
405
  onAdjust={handleAdjust}
411
406
  onResize={handleResize}
412
407
  onScrollIntoView={handleScrollIntoView}
413
- onChangeCompanion={handleChangeCompanion}
408
+ onUpdateCompanion={handleUpdateCompanion}
414
409
  >
415
410
  <Plank.Content solo={part === 'solo'} companion={hasCompanion} encapsulate={!!settings?.encapsulatedPlanks}>
416
411
  <Plank.Component
@@ -440,12 +435,12 @@ const PlankContainer = memo(
440
435
  primary={node}
441
436
  {...(part === 'solo'
442
437
  ? {
443
- part: 'solo-companion',
444
438
  order,
439
+ part: 'solo-companion',
445
440
  }
446
441
  : {
447
- part,
448
442
  order: (order ?? 0) + 1,
443
+ part,
449
444
  })}
450
445
  />
451
446
  )}
@@ -5,7 +5,7 @@
5
5
  import React from 'react';
6
6
 
7
7
  import { Surface } from '@dxos/app-framework/ui';
8
- import { type AppSurface, useAppGraph } from '@dxos/app-toolkit/ui';
8
+ import { AppSurface, useAppGraph } from '@dxos/app-toolkit/ui';
9
9
  import { useNode } from '@dxos/plugin-graph';
10
10
  import { useAttended } from '@dxos/react-ui-attention';
11
11
 
@@ -19,11 +19,11 @@ export const ActiveNode = () => {
19
19
  useNodeActionExpander(activeNode);
20
20
 
21
21
  return (
22
- <div role='none' className='sr-only'>
22
+ <div className='sr-only'>
23
23
  {/* TODO(wittjosiah): Weird that this is a surface, feel like it's not really render logic.
24
24
  Probably this lives in React-land currently in order to access translations? */}
25
25
  <Surface.Surface
26
- role='document-title'
26
+ type={AppSurface.DocumentTitle}
27
27
  data={{ subject: activeNode } satisfies AppSurface.DocumentTitleData}
28
28
  limit={1}
29
29
  />
@@ -11,19 +11,20 @@ import { Capabilities, Capability, Plugin } from '@dxos/app-framework';
11
11
  import { withPluginManager } from '@dxos/app-framework/testing';
12
12
  import { Surface, useOperationInvoker } from '@dxos/app-framework/ui';
13
13
  import { AppActivationEvents, AppCapabilities, AppNode, AppPlugin, LayoutOperation } from '@dxos/app-toolkit';
14
- import { useAppGraph, useLayout } from '@dxos/app-toolkit/ui';
14
+ import { AppSurface, useAppGraph, useLayout } from '@dxos/app-toolkit/ui';
15
15
  import { invariant } from '@dxos/invariant';
16
16
  import { GraphBuilder, Node, NodeMatcher, useConnections } from '@dxos/plugin-graph';
17
17
  import { corePlugins } from '@dxos/plugin-testing';
18
18
  import { random } from '@dxos/random';
19
19
  import { useAsyncEffect } from '@dxos/react-hooks';
20
- import { Button, Icon, List, ListItem, Panel } from '@dxos/react-ui';
20
+ import { Icon, List, ListItem, Panel } from '@dxos/react-ui';
21
21
  import { linkedSegment } from '@dxos/react-ui-attention';
22
- import { Json } from '@dxos/react-ui-syntax-highlighter';
22
+ import { Syntax } from '@dxos/react-ui-syntax-highlighter';
23
23
  import { Loading, withLayout } from '@dxos/react-ui/testing';
24
24
 
25
25
  import { OperationHandler } from '#capabilities';
26
26
  import { meta as pluginMeta } from '#meta';
27
+ import { translations } from '#translations';
27
28
  import {
28
29
  DeckCapabilities,
29
30
  type EphemeralDeckState,
@@ -34,11 +35,13 @@ import {
34
35
  PLANK_COMPANION_TYPE,
35
36
  } from '#types';
36
37
 
37
- import { translations } from '../../translations';
38
38
  import { DeckLayout } from './DeckLayout';
39
39
 
40
40
  random.seed(1234);
41
41
 
42
+ // TODO(burdon): Show/hide companions.
43
+ // TODO(burdon): Companion width.
44
+
42
45
  // TODO(burdon): Factor out.
43
46
  const storyDeckSettings = Capability.makeModule(() =>
44
47
  Effect.sync(() => {
@@ -47,7 +50,7 @@ const storyDeckSettings = Capability.makeModule(() =>
47
50
  enableDeck: true,
48
51
  enableStatusbar: false,
49
52
  enableNativeRedirect: false,
50
- encapsulatedPlanks: true,
53
+ encapsulatedPlanks: false,
51
54
  }).pipe(Atom.keepAlive);
52
55
 
53
56
  return [Capability.contributes(DeckCapabilities.Settings, settingsAtom)];
@@ -63,10 +66,10 @@ const storyDeckState = Capability.makeModule(() =>
63
66
  complementarySidebarPanel: undefined,
64
67
  activeDeck: 'default',
65
68
  previousDeck: 'default',
69
+ previousMode: {},
66
70
  decks: {
67
71
  default: { ...defaultDeck },
68
72
  },
69
- previousMode: {},
70
73
  };
71
74
 
72
75
  const stateAtom = Atom.make<StoredDeckState>({ ...defaultStoredDeckState }).pipe(Atom.keepAlive);
@@ -169,35 +172,6 @@ const TestPlugin = Plugin.define(pluginMeta).pipe(
169
172
  filter: (data): data is { current: string } => typeof (data as any).current === 'string',
170
173
  component: ({ data, ref }) => <NavContainer current={data.current} ref={ref} />,
171
174
  }),
172
- Surface.create({
173
- id: 'story-article-companion',
174
- role: 'article',
175
- filter: (data): data is Record<string, unknown> =>
176
- typeof data === 'object' && data !== null && (data as { companionTo?: unknown }).companionTo != null,
177
- component: ({ data }) => {
178
- const subject = (data as any)?.subject;
179
- const companionTo = (data as any)?.companionTo;
180
- const properties = (data as any)?.properties;
181
- const variant = (data as any)?.variant as string | undefined;
182
-
183
- if (companionTo == null) {
184
- return <Loading />;
185
- }
186
-
187
- const jsonPayload = {
188
- primaryItem: companionTo,
189
- companion: { data: subject, properties, variant },
190
- };
191
-
192
- return (
193
- <Json.Root data={jsonPayload}>
194
- <Json.Content>
195
- <Json.Data />
196
- </Json.Content>
197
- </Json.Root>
198
- );
199
- },
200
- }),
201
175
  Surface.create({
202
176
  id: 'story-article',
203
177
  role: 'article',
@@ -206,7 +180,6 @@ const TestPlugin = Plugin.define(pluginMeta).pipe(
206
180
  component: ({ data }) => {
207
181
  const subject = (data as any)?.subject;
208
182
  const attendableId = (data as any)?.attendableId as string | undefined;
209
-
210
183
  if (subject == null) {
211
184
  return <Loading />;
212
185
  }
@@ -215,16 +188,45 @@ const TestPlugin = Plugin.define(pluginMeta).pipe(
215
188
  <Panel.Root>
216
189
  <Panel.Content className='grid grid-rows-[min-content_1fr]'>
217
190
  {attendableId && <ItemComponent id={attendableId} />}
218
- <Json.Root data={subject}>
219
- <Json.Content>
220
- <Json.Data />
221
- </Json.Content>
222
- </Json.Root>
191
+ <Syntax.Root data={subject}>
192
+ <Syntax.Content>
193
+ <Syntax.Filter />
194
+ <Syntax.Viewport>
195
+ <Syntax.Code />
196
+ </Syntax.Viewport>
197
+ </Syntax.Content>
198
+ </Syntax.Root>
223
199
  </Panel.Content>
224
200
  </Panel.Root>
225
201
  );
226
202
  },
227
203
  }),
204
+ Surface.create({
205
+ id: 'story-article-companion',
206
+ role: 'article',
207
+ filter: (data): data is AppSurface.ArticleData<unknown, {}, unknown> =>
208
+ typeof data === 'object' && data !== null && (data as { companionTo?: unknown }).companionTo != null,
209
+ component: ({ data: { subject, companionTo, properties, variant } }) => {
210
+ if (companionTo == null) {
211
+ return <Loading />;
212
+ }
213
+
214
+ return (
215
+ <Syntax.Root
216
+ data={{
217
+ primaryItem: companionTo,
218
+ companion: { data: subject, properties, variant },
219
+ }}
220
+ >
221
+ <Syntax.Content>
222
+ <Syntax.Viewport>
223
+ <Syntax.Code />
224
+ </Syntax.Viewport>
225
+ </Syntax.Content>
226
+ </Syntax.Root>
227
+ );
228
+ },
229
+ }),
228
230
  ]),
229
231
  ),
230
232
  }),
@@ -283,7 +285,7 @@ const NavContainer = forwardRef<HTMLDivElement, NavContainerProps>((_props, forw
283
285
  {items.map((node) => (
284
286
  <ListItem.Root
285
287
  key={node.id}
286
- classNames={activeSet.has(node.id) ? 'bg-active-surface' : undefined}
288
+ classNames={activeSet.has(node.id) ? 'bg-current-surface' : undefined}
287
289
  onClick={() => void invokePromise(LayoutOperation.Set, { subject: [node.id] })}
288
290
  >
289
291
  {node.properties.icon && (
@@ -308,36 +310,43 @@ type ItemComponentProps = {
308
310
  const ItemComponent = ({ id }: ItemComponentProps) => {
309
311
  const { graph } = useAppGraph();
310
312
  const { invokePromise } = useOperationInvoker();
311
-
312
- const plankConnections = useConnections(graph, id, 'child');
313
+ const connections = useConnections(graph, id, 'child');
313
314
  const items = useMemo(
314
- () => plankConnections.filter((node) => !Node.isActionLike(node) && node.type !== PLANK_COMPANION_TYPE),
315
- [plankConnections],
315
+ () => connections.filter((node) => !Node.isActionLike(node) && node.type !== PLANK_COMPANION_TYPE),
316
+ [connections],
316
317
  );
317
318
 
318
319
  return (
319
- <Panel.Root>
320
- <Panel.Content>
321
- {items.map((node) => (
322
- <Button
320
+ <List>
321
+ {items.map((node) => {
322
+ const open = () =>
323
+ void invokePromise(LayoutOperation.Open, { subject: [node.id], pivotId: id, navigation: 'immediate' });
324
+ return (
325
+ <ListItem.Root
323
326
  key={node.id}
324
- variant='ghost'
325
- onClick={() =>
326
- void invokePromise(LayoutOperation.Open, {
327
- subject: [node.id],
328
- pivotId: id,
329
- navigation: 'immediate',
330
- })
331
- }
327
+ classNames='dx-hover cursor-pointer'
328
+ role='button'
329
+ tabIndex={0}
330
+ onClick={open}
331
+ onKeyDown={(event) => {
332
+ if (event.key === 'Enter' || event.key === ' ') {
333
+ event.preventDefault();
334
+ open();
335
+ }
336
+ }}
332
337
  >
333
- {node.properties.icon && <Icon icon={node.properties.icon} size={4} />}
334
- <span className='truncate'>
338
+ {node.properties.icon && (
339
+ <ListItem.Endcap>
340
+ <Icon icon={node.properties.icon} size={4} />
341
+ </ListItem.Endcap>
342
+ )}
343
+ <ListItem.Heading classNames='truncate'>
335
344
  {typeof node.properties.label === 'string' ? node.properties.label : node.id}
336
- </span>
337
- </Button>
338
- ))}
339
- </Panel.Content>
340
- </Panel.Root>
345
+ </ListItem.Heading>
346
+ </ListItem.Root>
347
+ );
348
+ })}
349
+ </List>
341
350
  );
342
351
  };
343
352
 
@@ -363,35 +372,26 @@ type Story = StoryObj<typeof meta>;
363
372
 
364
373
  export const Default: Story = {};
365
374
 
366
- const SoloStory = () => {
367
- const { invokePromise } = useOperationInvoker();
368
- useAsyncEffect(async () => {
369
- await invokePromise(LayoutOperation.Open, { subject: [STORY_ITEMS[0].id], navigation: 'immediate' });
370
- await invokePromise(LayoutOperation.SetLayoutMode, { mode: 'solo', subject: STORY_ITEMS[0].id });
371
- });
372
-
373
- return <DeckLayout />;
374
- };
375
-
376
375
  export const Solo: Story = {
377
- render: () => <SoloStory />,
378
- };
379
-
380
- const MultiStory = () => {
381
- const { invokePromise } = useOperationInvoker();
382
- useAsyncEffect(async () => {
383
- await invokePromise(LayoutOperation.Open, {
384
- subject: [STORY_ITEMS[0].id],
385
- navigation: 'immediate',
386
- });
387
- await invokePromise(LayoutOperation.SetLayoutMode, {
388
- mode: 'multi',
376
+ render: () => {
377
+ const { invokePromise } = useOperationInvoker();
378
+ useAsyncEffect(async () => {
379
+ await invokePromise(LayoutOperation.Open, { subject: [STORY_ITEMS[0].id], navigation: 'immediate' });
380
+ await invokePromise(LayoutOperation.SetLayoutMode, { mode: 'solo', subject: STORY_ITEMS[0].id });
389
381
  });
390
- });
391
382
 
392
- return <DeckLayout />;
383
+ return <DeckLayout />;
384
+ },
393
385
  };
394
386
 
395
387
  export const Multi: Story = {
396
- render: () => <MultiStory />,
388
+ render: () => {
389
+ const { invokePromise } = useOperationInvoker();
390
+ useAsyncEffect(async () => {
391
+ await invokePromise(LayoutOperation.Open, { subject: [STORY_ITEMS[0].id], navigation: 'immediate' });
392
+ await invokePromise(LayoutOperation.SetLayoutMode, { mode: 'multi' });
393
+ });
394
+
395
+ return <DeckLayout />;
396
+ },
397
397
  };
@@ -5,6 +5,7 @@
5
5
  import React, { useCallback } from 'react';
6
6
 
7
7
  import { Surface } from '@dxos/app-framework/ui';
8
+ import { AppSurface } from '@dxos/app-toolkit/ui';
8
9
  import { AlertDialog, Dialog as NaturalDialog } from '@dxos/react-ui';
9
10
 
10
11
  import { useDeckState } from '#hooks';
@@ -30,7 +31,7 @@ export const Dialog = () => {
30
31
  {dialogBlockAlign === 'end' ? (
31
32
  // TODO(burdon): Placeholder creates a suspense boundary; replace with defaults.
32
33
  <Surface.Surface
33
- role='dialog'
34
+ type={AppSurface.Dialog}
34
35
  data={dialogContent ?? undefined}
35
36
  limit={1}
36
37
  fallback={PlankErrorFallback}
@@ -38,7 +39,12 @@ export const Dialog = () => {
38
39
  />
39
40
  ) : (
40
41
  <Overlay blockAlign={dialogBlockAlign} classNames={dialogOverlayClasses} style={dialogOverlayStyle}>
41
- <Surface.Surface role='dialog' data={dialogContent ?? undefined} limit={1} fallback={PlankErrorFallback} />
42
+ <Surface.Surface
43
+ type={AppSurface.Dialog}
44
+ data={dialogContent ?? undefined}
45
+ limit={1}
46
+ fallback={PlankErrorFallback}
47
+ />
42
48
  </Overlay>
43
49
  )}
44
50
  </Root>
@@ -12,7 +12,7 @@ const Fallback = () => {
12
12
  const { t } = useTranslation(meta.id);
13
13
 
14
14
  return (
15
- <div role='none' className='min-h-screen w-full flex items-center justify-center p-8'>
15
+ <div className='min-h-screen w-full flex items-center justify-center p-8'>
16
16
  <p
17
17
  role='alert'
18
18
  className='flex items-center justify-center p-8 font-normal text-lg text-error-text border border-rose-fill rounded-md'
@@ -8,7 +8,7 @@ import * as Option from 'effect/Option';
8
8
  import React, { type PropsWithChildren, useCallback, useEffect, useRef, useState } from 'react';
9
9
 
10
10
  import { Surface } from '@dxos/app-framework/ui';
11
- import { useObjectMenuItems } from '@dxos/app-toolkit/ui';
11
+ import { AppSurface, useObjectMenuItems } from '@dxos/app-toolkit/ui';
12
12
  import { Annotation, Obj } from '@dxos/echo';
13
13
  import {
14
14
  Card,
@@ -122,8 +122,8 @@ export const PopoverContent = () => {
122
122
  >
123
123
  <Popover.Viewport>
124
124
  {/* Base popover */}
125
- {state.popoverKind === 'base' && (
126
- <Surface.Surface role='popover' data={state.popoverContent ?? undefined} limit={1} />
125
+ {state.popoverKind === 'base' && state.popoverContent && 'component' in state.popoverContent && (
126
+ <Surface.Surface type={AppSurface.Popover} data={state.popoverContent} limit={1} />
127
127
  )}
128
128
 
129
129
  {/* Card popover */}
@@ -147,7 +147,9 @@ export const PopoverContent = () => {
147
147
  </Card.IconBlock>
148
148
  </Card.Toolbar>
149
149
 
150
- <Surface.Surface role='card--content' data={state.popoverContent ?? undefined} limit={1} />
150
+ {state.popoverContent && 'subject' in state.popoverContent && (
151
+ <Surface.Surface type={AppSurface.Card} data={state.popoverContent} limit={1} />
152
+ )}
151
153
  </Card.Root>
152
154
  </Menu.Root>
153
155
  )}
@@ -14,14 +14,14 @@ import { corePlugins } from '@dxos/plugin-testing';
14
14
  import { random } from '@dxos/random';
15
15
  import { Main } from '@dxos/react-ui';
16
16
  import { StackContext } from '@dxos/react-ui-stack';
17
- import { Json } from '@dxos/react-ui-syntax-highlighter';
17
+ import { Syntax } from '@dxos/react-ui-syntax-highlighter';
18
18
  import { Loading } from '@dxos/react-ui/testing';
19
19
  import { Organization } from '@dxos/types';
20
20
 
21
21
  import { DeckSettings, DeckState } from '#capabilities';
22
22
  import { meta as pluginMeta } from '#meta';
23
+ import { translations } from '#translations';
23
24
 
24
- import { translations } from '../../translations';
25
25
  import { Plank } from './Plank';
26
26
 
27
27
  const TestPlugin = Plugin.define(pluginMeta).pipe(
@@ -51,11 +51,13 @@ const storySurfaceExtension = Capability.contributes(
51
51
  }
52
52
 
53
53
  return (
54
- <Json.Root data={subject}>
55
- <Json.Content>
56
- <Json.Data />
57
- </Json.Content>
58
- </Json.Root>
54
+ <Syntax.Root data={subject}>
55
+ <Syntax.Content>
56
+ <Syntax.Viewport>
57
+ <Syntax.Code />
58
+ </Syntax.Viewport>
59
+ </Syntax.Content>
60
+ </Syntax.Root>
59
61
  );
60
62
  },
61
63
  }),
@@ -69,7 +71,7 @@ const DefaultStory = () => {
69
71
  return (
70
72
  <Main.Root>
71
73
  <Main.Content bounce handlesFocus classNames='grid' style={{ '--main-spacing': '0' } as any}>
72
- <div role='none' className='relative overflow-hidden bg-deck-surface'>
74
+ <div className='relative overflow-hidden bg-deck-surface'>
73
75
  <StackContext.Provider value={{ orientation: 'horizontal', size: 'contain', rail: true }}>
74
76
  <Plank.Root graph={graph} part='solo' layoutMode='solo'>
75
77
  <Plank.Content solo companion={false} encapsulate={false}>
@@ -94,6 +96,7 @@ const meta = {
94
96
  }),
95
97
  ],
96
98
  parameters: {
99
+ layout: 'fullscreen',
97
100
  translations,
98
101
  },
99
102
  } satisfies Meta<typeof DefaultStory>;