@dxos/plugin-deck 0.8.4-main.1f223c7 → 0.8.4-main.2244d791bb

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 (283) hide show
  1. package/dist/lib/browser/app-graph-builder-X7LCO5KE.mjs +121 -0
  2. package/dist/lib/browser/app-graph-builder-X7LCO5KE.mjs.map +7 -0
  3. package/dist/lib/browser/check-app-scheme-PGISDJX7.mjs +32 -0
  4. package/dist/lib/browser/check-app-scheme-PGISDJX7.mjs.map +7 -0
  5. package/dist/lib/browser/chunk-DONG2FYU.mjs +295 -0
  6. package/dist/lib/browser/chunk-DONG2FYU.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-JGC4ZLG3.mjs +1469 -0
  8. package/dist/lib/browser/chunk-JGC4ZLG3.mjs.map +7 -0
  9. package/dist/lib/browser/{chunk-CNTGBCMK.mjs → chunk-NHABISX2.mjs} +40 -33
  10. package/dist/lib/browser/chunk-NHABISX2.mjs.map +7 -0
  11. package/dist/lib/browser/chunk-YT3AJVUU.mjs +161 -0
  12. package/dist/lib/browser/chunk-YT3AJVUU.mjs.map +7 -0
  13. package/dist/lib/browser/index.mjs +83 -76
  14. package/dist/lib/browser/index.mjs.map +4 -4
  15. package/dist/lib/browser/meta.json +1 -1
  16. package/dist/lib/browser/operation-resolver-XJFR3PNQ.mjs +597 -0
  17. package/dist/lib/browser/operation-resolver-XJFR3PNQ.mjs.map +7 -0
  18. package/dist/lib/browser/react-root-AJFHKHRL.mjs +47 -0
  19. package/dist/lib/browser/react-root-AJFHKHRL.mjs.map +7 -0
  20. package/dist/lib/browser/react-surface-KBRBGEXY.mjs +43 -0
  21. package/dist/lib/browser/react-surface-KBRBGEXY.mjs.map +7 -0
  22. package/dist/lib/browser/settings-ES42FGLG.mjs +38 -0
  23. package/dist/lib/browser/settings-ES42FGLG.mjs.map +7 -0
  24. package/dist/lib/browser/state-YMI6IDEL.mjs +104 -0
  25. package/dist/lib/browser/state-YMI6IDEL.mjs.map +7 -0
  26. package/dist/lib/browser/toolkit-VRD54KY3.mjs +54 -0
  27. package/dist/lib/browser/toolkit-VRD54KY3.mjs.map +7 -0
  28. package/dist/lib/browser/types/index.mjs +11 -4
  29. package/dist/lib/browser/url-handler-37UPOB3U.mjs +94 -0
  30. package/dist/lib/browser/url-handler-37UPOB3U.mjs.map +7 -0
  31. package/dist/lib/node-esm/app-graph-builder-US54I64T.mjs +122 -0
  32. package/dist/lib/node-esm/app-graph-builder-US54I64T.mjs.map +7 -0
  33. package/dist/lib/node-esm/check-app-scheme-CK6EVG5D.mjs +33 -0
  34. package/dist/lib/node-esm/check-app-scheme-CK6EVG5D.mjs.map +7 -0
  35. package/dist/lib/node-esm/chunk-7NPS347C.mjs +1470 -0
  36. package/dist/lib/node-esm/chunk-7NPS347C.mjs.map +7 -0
  37. package/dist/lib/node-esm/chunk-ADPMWKLL.mjs +154 -0
  38. package/dist/lib/node-esm/chunk-ADPMWKLL.mjs.map +7 -0
  39. package/dist/lib/node-esm/chunk-CVYHPJIN.mjs +297 -0
  40. package/dist/lib/node-esm/chunk-CVYHPJIN.mjs.map +7 -0
  41. package/dist/lib/node-esm/chunk-ZMJPCZ3V.mjs +162 -0
  42. package/dist/lib/node-esm/chunk-ZMJPCZ3V.mjs.map +7 -0
  43. package/dist/lib/node-esm/index.mjs +183 -0
  44. package/dist/lib/node-esm/index.mjs.map +7 -0
  45. package/dist/lib/node-esm/meta.json +1 -0
  46. package/dist/lib/node-esm/operation-resolver-ZQGNATPX.mjs +598 -0
  47. package/dist/lib/node-esm/operation-resolver-ZQGNATPX.mjs.map +7 -0
  48. package/dist/lib/node-esm/react-root-2S77ABBS.mjs +48 -0
  49. package/dist/lib/node-esm/react-root-2S77ABBS.mjs.map +7 -0
  50. package/dist/lib/node-esm/react-surface-FIHMAFXH.mjs +44 -0
  51. package/dist/lib/node-esm/react-surface-FIHMAFXH.mjs.map +7 -0
  52. package/dist/lib/node-esm/settings-E3TH3FAW.mjs +39 -0
  53. package/dist/lib/node-esm/settings-E3TH3FAW.mjs.map +7 -0
  54. package/dist/lib/node-esm/state-WQEFBQMD.mjs +105 -0
  55. package/dist/lib/node-esm/state-WQEFBQMD.mjs.map +7 -0
  56. package/dist/lib/node-esm/toolkit-ME546G5T.mjs +55 -0
  57. package/dist/lib/node-esm/toolkit-ME546G5T.mjs.map +7 -0
  58. package/dist/lib/node-esm/types/index.mjs +40 -0
  59. package/dist/lib/node-esm/url-handler-2KYHXINK.mjs +95 -0
  60. package/dist/lib/node-esm/url-handler-2KYHXINK.mjs.map +7 -0
  61. package/dist/types/src/DeckPlugin.d.ts +2 -1
  62. package/dist/types/src/DeckPlugin.d.ts.map +1 -1
  63. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +6 -0
  64. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -0
  65. package/dist/types/src/capabilities/app-graph-builder/index.d.ts +3 -0
  66. package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +1 -0
  67. package/dist/types/src/capabilities/check-app-scheme/check-app-scheme.d.ts +5 -0
  68. package/dist/types/src/capabilities/check-app-scheme/check-app-scheme.d.ts.map +1 -0
  69. package/dist/types/src/capabilities/check-app-scheme/index.d.ts +3 -0
  70. package/dist/types/src/capabilities/check-app-scheme/index.d.ts.map +1 -0
  71. package/dist/types/src/capabilities/index.d.ts +8 -13
  72. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  73. package/dist/types/src/capabilities/operation-resolver/index.d.ts +3 -0
  74. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +1 -0
  75. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +5 -0
  76. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -0
  77. package/dist/types/src/capabilities/react-root/index.d.ts +6 -0
  78. package/dist/types/src/capabilities/react-root/index.d.ts.map +1 -0
  79. package/dist/types/src/capabilities/react-root/react-root.d.ts +9 -0
  80. package/dist/types/src/capabilities/react-root/react-root.d.ts.map +1 -0
  81. package/dist/types/src/capabilities/react-surface/index.d.ts +3 -0
  82. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -0
  83. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +5 -0
  84. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -0
  85. package/dist/types/src/capabilities/settings/index.d.ts +19 -0
  86. package/dist/types/src/capabilities/settings/index.d.ts.map +1 -0
  87. package/dist/types/src/capabilities/settings/settings.d.ts +22 -0
  88. package/dist/types/src/capabilities/settings/settings.d.ts.map +1 -0
  89. package/dist/types/src/capabilities/state/index.d.ts +174 -0
  90. package/dist/types/src/capabilities/state/index.d.ts.map +1 -0
  91. package/dist/types/src/capabilities/state/state.d.ts +177 -0
  92. package/dist/types/src/capabilities/state/state.d.ts.map +1 -0
  93. package/dist/types/src/capabilities/toolkit/index.d.ts +3 -0
  94. package/dist/types/src/capabilities/toolkit/index.d.ts.map +1 -0
  95. package/dist/types/src/capabilities/toolkit/toolkit.d.ts +27 -0
  96. package/dist/types/src/capabilities/toolkit/toolkit.d.ts.map +1 -0
  97. package/dist/types/src/capabilities/tools/index.d.ts +3 -0
  98. package/dist/types/src/capabilities/tools/index.d.ts.map +1 -0
  99. package/dist/types/src/capabilities/tools/tools.d.ts +12 -0
  100. package/dist/types/src/capabilities/tools/tools.d.ts.map +1 -0
  101. package/dist/types/src/capabilities/url-handler/index.d.ts +3 -0
  102. package/dist/types/src/capabilities/url-handler/index.d.ts.map +1 -0
  103. package/dist/types/src/capabilities/url-handler/url-handler.d.ts +5 -0
  104. package/dist/types/src/capabilities/url-handler/url-handler.d.ts.map +1 -0
  105. package/dist/types/src/components/DeckLayout/ActiveNode.d.ts.map +1 -1
  106. package/dist/types/src/components/DeckLayout/ContentEmpty.d.ts.map +1 -1
  107. package/dist/types/src/components/DeckLayout/DeckLayout.d.ts +2 -3
  108. package/dist/types/src/components/DeckLayout/DeckLayout.d.ts.map +1 -1
  109. package/dist/types/src/components/DeckLayout/DeckLayout.stories.d.ts +75 -0
  110. package/dist/types/src/components/DeckLayout/DeckLayout.stories.d.ts.map +1 -0
  111. package/dist/types/src/components/DeckLayout/DeckMain.d.ts +3 -0
  112. package/dist/types/src/components/DeckLayout/DeckMain.d.ts.map +1 -0
  113. package/dist/types/src/components/DeckLayout/Dialog.d.ts.map +1 -1
  114. package/dist/types/src/components/DeckLayout/Popover.d.ts.map +1 -1
  115. package/dist/types/src/components/DeckLayout/Toast.d.ts +7 -2
  116. package/dist/types/src/components/DeckLayout/Toast.d.ts.map +1 -1
  117. package/dist/types/src/components/DeckSettings/DeckSettings.d.ts +4 -2
  118. package/dist/types/src/components/DeckSettings/DeckSettings.d.ts.map +1 -1
  119. package/dist/types/src/components/Plank/Plank.d.ts +3 -3
  120. package/dist/types/src/components/Plank/Plank.d.ts.map +1 -1
  121. package/dist/types/src/components/Plank/Plank.stories.d.ts +26 -6
  122. package/dist/types/src/components/Plank/Plank.stories.d.ts.map +1 -1
  123. package/dist/types/src/components/Plank/PlankControls.d.ts +1 -1
  124. package/dist/types/src/components/Plank/PlankControls.d.ts.map +1 -1
  125. package/dist/types/src/components/Plank/PlankError.d.ts +1 -1
  126. package/dist/types/src/components/Plank/PlankError.d.ts.map +1 -1
  127. package/dist/types/src/components/Plank/PlankHeading.d.ts +2 -2
  128. package/dist/types/src/components/Plank/PlankHeading.d.ts.map +1 -1
  129. package/dist/types/src/components/Sidebar/ComplementarySidebar.d.ts.map +1 -1
  130. package/dist/types/src/components/Sidebar/Sidebar.d.ts.map +1 -1
  131. package/dist/types/src/components/Sidebar/SidebarButton.d.ts.map +1 -1
  132. package/dist/types/src/hooks/index.d.ts +1 -0
  133. package/dist/types/src/hooks/index.d.ts.map +1 -1
  134. package/dist/types/src/hooks/useDeckCompanions.d.ts +3 -3
  135. package/dist/types/src/hooks/useDeckCompanions.d.ts.map +1 -1
  136. package/dist/types/src/hooks/useDeckState.d.ts +17 -0
  137. package/dist/types/src/hooks/useDeckState.d.ts.map +1 -0
  138. package/dist/types/src/hooks/useHoistStatusbar.d.ts +1 -1
  139. package/dist/types/src/hooks/useHoistStatusbar.d.ts.map +1 -1
  140. package/dist/types/src/hooks/useNodeActionExpander.d.ts +1 -1
  141. package/dist/types/src/hooks/useNodeActionExpander.d.ts.map +1 -1
  142. package/dist/types/src/index.d.ts +1 -2
  143. package/dist/types/src/index.d.ts.map +1 -1
  144. package/dist/types/src/meta.d.ts +2 -3
  145. package/dist/types/src/meta.d.ts.map +1 -1
  146. package/dist/types/src/translations.d.ts +3 -1
  147. package/dist/types/src/translations.d.ts.map +1 -1
  148. package/dist/types/src/{capabilities → types}/capabilities.d.ts +98 -90
  149. package/dist/types/src/types/capabilities.d.ts.map +1 -0
  150. package/dist/types/src/types/events.d.ts +7 -0
  151. package/dist/types/src/types/events.d.ts.map +1 -0
  152. package/dist/types/src/types/index.d.ts +2 -0
  153. package/dist/types/src/types/index.d.ts.map +1 -1
  154. package/dist/types/src/types/schema.d.ts +92 -30
  155. package/dist/types/src/types/schema.d.ts.map +1 -1
  156. package/dist/types/src/util/set-active.d.ts +18 -3
  157. package/dist/types/src/util/set-active.d.ts.map +1 -1
  158. package/dist/types/tsconfig.tsbuildinfo +1 -1
  159. package/package.json +55 -48
  160. package/src/DeckPlugin.ts +45 -66
  161. package/src/capabilities/app-graph-builder/app-graph-builder.ts +119 -0
  162. package/src/capabilities/app-graph-builder/index.ts +7 -0
  163. package/src/capabilities/check-app-scheme/check-app-scheme.ts +45 -0
  164. package/src/capabilities/check-app-scheme/index.ts +7 -0
  165. package/src/capabilities/index.ts +9 -14
  166. package/src/capabilities/operation-resolver/index.ts +10 -0
  167. package/src/capabilities/operation-resolver/operation-resolver.ts +570 -0
  168. package/src/capabilities/react-root/index.ts +7 -0
  169. package/src/capabilities/react-root/react-root.tsx +47 -0
  170. package/src/capabilities/react-surface/index.ts +7 -0
  171. package/src/capabilities/react-surface/react-surface.tsx +38 -0
  172. package/src/capabilities/settings/index.ts +7 -0
  173. package/src/capabilities/settings/settings.ts +39 -0
  174. package/src/capabilities/state/index.ts +7 -0
  175. package/src/capabilities/state/state.ts +105 -0
  176. package/src/capabilities/toolkit/index.ts +7 -0
  177. package/src/capabilities/toolkit/toolkit.ts +64 -0
  178. package/src/capabilities/tools/index.ts +7 -0
  179. package/src/capabilities/tools/tools.ts +92 -0
  180. package/src/capabilities/url-handler/index.ts +7 -0
  181. package/src/capabilities/url-handler/url-handler.ts +96 -0
  182. package/src/components/DeckLayout/ActiveNode.tsx +3 -2
  183. package/src/components/DeckLayout/Banner.tsx +8 -8
  184. package/src/components/DeckLayout/ContentEmpty.tsx +4 -5
  185. package/src/components/DeckLayout/DeckLayout.stories.tsx +52 -0
  186. package/src/components/DeckLayout/DeckLayout.tsx +17 -285
  187. package/src/components/DeckLayout/DeckMain.tsx +286 -0
  188. package/src/components/DeckLayout/Dialog.tsx +21 -12
  189. package/src/components/DeckLayout/Fallback.tsx +4 -4
  190. package/src/components/DeckLayout/Popover.tsx +60 -32
  191. package/src/components/DeckLayout/StatusBar.tsx +3 -3
  192. package/src/components/DeckLayout/Toast.tsx +30 -5
  193. package/src/components/DeckSettings/DeckSettings.tsx +44 -28
  194. package/src/components/Plank/Plank.stories.tsx +18 -11
  195. package/src/components/Plank/Plank.tsx +88 -55
  196. package/src/components/Plank/PlankControls.tsx +9 -9
  197. package/src/components/Plank/PlankError.tsx +4 -4
  198. package/src/components/Plank/PlankHeading.tsx +38 -42
  199. package/src/components/Sidebar/ComplementarySidebar.tsx +67 -36
  200. package/src/components/Sidebar/Sidebar.tsx +7 -7
  201. package/src/components/Sidebar/SidebarButton.tsx +39 -32
  202. package/src/components/fragments.ts +1 -1
  203. package/src/hooks/index.ts +1 -0
  204. package/src/hooks/useCompanions.ts +1 -1
  205. package/src/hooks/useDeckCompanions.ts +6 -4
  206. package/src/hooks/useDeckState.ts +82 -0
  207. package/src/hooks/useHoistStatusbar.ts +4 -5
  208. package/src/hooks/useNodeActionExpander.ts +4 -4
  209. package/src/index.ts +1 -2
  210. package/src/meta.ts +8 -5
  211. package/src/translations.ts +3 -1
  212. package/src/types/capabilities.ts +33 -0
  213. package/src/types/events.ts +21 -0
  214. package/src/types/index.ts +2 -0
  215. package/src/types/schema.ts +90 -14
  216. package/src/util/layoutAppliesTopbar.ts +1 -1
  217. package/src/util/set-active.ts +49 -29
  218. package/dist/lib/browser/app-graph-builder-DVEKLXB4.mjs +0 -152
  219. package/dist/lib/browser/app-graph-builder-DVEKLXB4.mjs.map +0 -7
  220. package/dist/lib/browser/check-app-scheme-3BQJXWEY.mjs +0 -32
  221. package/dist/lib/browser/check-app-scheme-3BQJXWEY.mjs.map +0 -7
  222. package/dist/lib/browser/chunk-CNTGBCMK.mjs.map +0 -7
  223. package/dist/lib/browser/chunk-F5BQOOEG.mjs +0 -160
  224. package/dist/lib/browser/chunk-F5BQOOEG.mjs.map +0 -7
  225. package/dist/lib/browser/chunk-M57WD3V6.mjs +0 -16
  226. package/dist/lib/browser/chunk-M57WD3V6.mjs.map +0 -7
  227. package/dist/lib/browser/chunk-NRCPV6AV.mjs +0 -129
  228. package/dist/lib/browser/chunk-NRCPV6AV.mjs.map +0 -7
  229. package/dist/lib/browser/chunk-NU7H23SK.mjs +0 -1498
  230. package/dist/lib/browser/chunk-NU7H23SK.mjs.map +0 -7
  231. package/dist/lib/browser/chunk-WILMPGDV.mjs +0 -127
  232. package/dist/lib/browser/chunk-WILMPGDV.mjs.map +0 -7
  233. package/dist/lib/browser/chunk-Z5KITAZW.mjs +0 -13
  234. package/dist/lib/browser/chunk-Z5KITAZW.mjs.map +0 -7
  235. package/dist/lib/browser/intent-resolver-2SUIIV6N.mjs +0 -521
  236. package/dist/lib/browser/intent-resolver-2SUIIV6N.mjs.map +0 -7
  237. package/dist/lib/browser/react-root-7PRVDLF7.mjs +0 -43
  238. package/dist/lib/browser/react-root-7PRVDLF7.mjs.map +0 -7
  239. package/dist/lib/browser/react-surface-FNY2YC2F.mjs +0 -40
  240. package/dist/lib/browser/react-surface-FNY2YC2F.mjs.map +0 -7
  241. package/dist/lib/browser/settings-LUPQPZ27.mjs +0 -29
  242. package/dist/lib/browser/settings-LUPQPZ27.mjs.map +0 -7
  243. package/dist/lib/browser/state-CRXR7X63.mjs +0 -12
  244. package/dist/lib/browser/toolkit-XGJSBY67.mjs +0 -61
  245. package/dist/lib/browser/toolkit-XGJSBY67.mjs.map +0 -7
  246. package/dist/lib/browser/url-handler-LROZYQ26.mjs +0 -70
  247. package/dist/lib/browser/url-handler-LROZYQ26.mjs.map +0 -7
  248. package/dist/types/src/capabilities/app-graph-builder.d.ts +0 -4
  249. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +0 -1
  250. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  251. package/dist/types/src/capabilities/check-app-scheme.d.ts +0 -4
  252. package/dist/types/src/capabilities/check-app-scheme.d.ts.map +0 -1
  253. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  254. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  255. package/dist/types/src/capabilities/react-root.d.ts +0 -7
  256. package/dist/types/src/capabilities/react-root.d.ts.map +0 -1
  257. package/dist/types/src/capabilities/react-surface.d.ts +0 -4
  258. package/dist/types/src/capabilities/react-surface.d.ts.map +0 -1
  259. package/dist/types/src/capabilities/settings.d.ts +0 -4
  260. package/dist/types/src/capabilities/settings.d.ts.map +0 -1
  261. package/dist/types/src/capabilities/state.d.ts +0 -101
  262. package/dist/types/src/capabilities/state.d.ts.map +0 -1
  263. package/dist/types/src/capabilities/toolkit.d.ts +0 -5
  264. package/dist/types/src/capabilities/toolkit.d.ts.map +0 -1
  265. package/dist/types/src/capabilities/tools.d.ts +0 -11
  266. package/dist/types/src/capabilities/tools.d.ts.map +0 -1
  267. package/dist/types/src/capabilities/url-handler.d.ts +0 -4
  268. package/dist/types/src/capabilities/url-handler.d.ts.map +0 -1
  269. package/dist/types/src/events.d.ts +0 -4
  270. package/dist/types/src/events.d.ts.map +0 -1
  271. package/src/capabilities/app-graph-builder.ts +0 -142
  272. package/src/capabilities/capabilities.ts +0 -14
  273. package/src/capabilities/check-app-scheme.ts +0 -40
  274. package/src/capabilities/intent-resolver.ts +0 -469
  275. package/src/capabilities/react-root.tsx +0 -39
  276. package/src/capabilities/react-surface.tsx +0 -30
  277. package/src/capabilities/settings.ts +0 -26
  278. package/src/capabilities/state.ts +0 -105
  279. package/src/capabilities/toolkit.ts +0 -55
  280. package/src/capabilities/tools.ts +0 -84
  281. package/src/capabilities/url-handler.ts +0 -60
  282. package/src/events.ts +0 -11
  283. /package/dist/lib/{browser/state-CRXR7X63.mjs.map → node-esm/types/index.mjs.map} +0 -0
@@ -2,6 +2,7 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
+ import { useFocusFinders } from '@fluentui/react-tabster';
5
6
  import React, {
6
7
  type KeyboardEvent,
7
8
  type PropsWithChildren,
@@ -12,24 +13,18 @@ import React, {
12
13
  useRef,
13
14
  } from 'react';
14
15
 
15
- import {
16
- LayoutAction,
17
- Surface,
18
- createIntent,
19
- useAppGraph,
20
- useCapability,
21
- useIntentDispatcher,
22
- } from '@dxos/app-framework';
16
+ import { Surface, useOperationInvoker } from '@dxos/app-framework/ui';
17
+ import { LayoutOperation } from '@dxos/app-toolkit';
18
+ import { useAppGraph } from '@dxos/app-toolkit/ui';
23
19
  import { debounce } from '@dxos/async';
24
20
  import { type Node, useNode } from '@dxos/plugin-graph';
25
21
  import { ATTENDABLE_PATH_SEPARATOR, useAttentionAttributes } from '@dxos/react-ui-attention';
26
22
  import { StackItem, railGridHorizontal } from '@dxos/react-ui-stack';
27
- import { mainIntrinsicSize, mx } from '@dxos/react-ui-theme';
23
+ import { mainIntrinsicSize, mx } from '@dxos/ui-theme';
28
24
 
29
- import { DeckCapabilities } from '../../capabilities';
30
- import { useCompanions, useMainSize } from '../../hooks';
25
+ import { useCompanions, useDeckState, useMainSize } from '../../hooks';
31
26
  import { parseEntryId } from '../../layout';
32
- import { DeckAction, type DeckSettingsProps, type LayoutMode, type ResolvedPart } from '../../types';
27
+ import { DeckOperation, type DeckSettingsProps, type LayoutMode, type ResolvedPart } from '../../types';
33
28
 
34
29
  import { PlankContentError, PlankError } from './PlankError';
35
30
  import { PlankHeading } from './PlankHeading';
@@ -37,6 +32,10 @@ import { PlankLoading } from './PlankLoading';
37
32
 
38
33
  const UNKNOWN_ID = 'unknown_id';
39
34
 
35
+ //
36
+ // Plank
37
+ //
38
+
40
39
  export type PlankProps = Pick<PlankComponentProps, 'layoutMode' | 'part' | 'path' | 'order' | 'active' | 'settings'> & {
41
40
  id?: string;
42
41
  companionId?: string;
@@ -50,10 +49,10 @@ export type PlankProps = Pick<PlankComponentProps, 'layoutMode' | 'part' | 'path
50
49
  // benefits. I think where we anticipate users will definitely want to quickly switch between showing and hiding entire
51
50
  // articles, over the (again probably large) performance benefit that unmounting them would confer, we can mount and
52
51
  // hide them, but I think that scenario in its most unambiguous form is probably rare. You could extrapolate
53
- // the scenario to include all potential planks such as companions, which we could keep mounted and hidden, but I
54
- // dont think the resulting performance would be acceptable. I think the real issue is perceived performance which
52
+ // the scenario to include all "potential" planks such as companions, which we could keep mounted and hidden, but I
53
+ // don't think the resulting performance would be acceptable. I think the real issue is "perceived performance" which
55
54
  // has mitigations that are in between mounting and un-mounting since both of those have tradeoffs; we may need one or more
56
- // partially-mounted experiences, like loading skeletons at the simple end, or screenshots of sleeping planks at
55
+ // "partially-mounted" experiences, like loading skeletons at the simple end, or screenshots of "sleeping" planks at
57
56
  // the advanced end.
58
57
 
59
58
  /**
@@ -68,7 +67,11 @@ export const Plank = memo(({ id = UNKNOWN_ID, companionId, ...props }: PlankProp
68
67
  const hasCompanion = !!(companionId && currentCompanion);
69
68
 
70
69
  return (
71
- <PlankContainer solo={props.part === 'solo'} companion={hasCompanion}>
70
+ <PlankContainer
71
+ solo={props.part === 'solo'}
72
+ companion={hasCompanion}
73
+ encapsulate={!!props.settings?.encapsulatedPlanks}
74
+ >
72
75
  <PlankComponent
73
76
  id={id}
74
77
  node={node}
@@ -92,7 +95,13 @@ export const Plank = memo(({ id = UNKNOWN_ID, companionId, ...props }: PlankProp
92
95
  );
93
96
  });
94
97
 
95
- const PlankContainer = ({ children, solo, companion }: PropsWithChildren<{ solo: boolean; companion: boolean }>) => {
98
+ //
99
+ // PlankContainer
100
+ //
101
+
102
+ type PlankContainerProps = PropsWithChildren<{ solo: boolean; companion: boolean; encapsulate: boolean }>;
103
+
104
+ const PlankContainer = ({ children, solo, companion, encapsulate }: PlankContainerProps) => {
96
105
  const sizeAttrs = useMainSize();
97
106
  if (!solo) {
98
107
  return children;
@@ -102,7 +111,14 @@ const PlankContainer = ({ children, solo, companion }: PropsWithChildren<{ solo:
102
111
  return (
103
112
  <div
104
113
  role='none'
105
- className={mx('absolute inset-0 grid', companion && 'grid-cols-[1fr_1fr]', railGridHorizontal, mainIntrinsicSize)}
114
+ data-popover-collision-boundary={true}
115
+ className={mx(
116
+ 'absolute inset-[--main-spacing] grid',
117
+ encapsulate && 'border border-separator rounded overflow-hidden',
118
+ companion && 'grid-cols-[6fr_4fr]', // TODO(burdon): Resize.
119
+ railGridHorizontal,
120
+ mainIntrinsicSize,
121
+ )}
106
122
  {...sizeAttrs}
107
123
  >
108
124
  {children}
@@ -110,6 +126,10 @@ const PlankContainer = ({ children, solo, companion }: PropsWithChildren<{ solo:
110
126
  );
111
127
  };
112
128
 
129
+ //
130
+ // PlankComponent
131
+ //
132
+
113
133
  type PlankComponentProps = {
114
134
  layoutMode: LayoutMode;
115
135
  id: string;
@@ -117,11 +137,10 @@ type PlankComponentProps = {
117
137
  path?: string[];
118
138
  order?: number;
119
139
  active?: string[];
120
- // TODO(burdon): Change to role?
121
140
  companioned?: 'primary' | 'companion';
122
- node?: Node;
123
- primary?: Node;
124
- companions?: Node[];
141
+ node?: Node.Node;
142
+ primary?: Node.Node;
143
+ companions?: Node.Node[];
125
144
  settings?: DeckSettingsProps;
126
145
  };
127
146
 
@@ -139,8 +158,10 @@ const PlankComponent = memo(
139
158
  companions,
140
159
  settings,
141
160
  }: PlankComponentProps) => {
142
- const { dispatchPromise: dispatch } = useIntentDispatcher();
143
- const { deck, popoverAnchorId, scrollIntoView } = useCapability(DeckCapabilities.DeckState);
161
+ const { invokePromise } = useOperationInvoker();
162
+ const { state, deck } = useDeckState();
163
+ const { popoverAnchorId, scrollIntoView } = state;
164
+ const { findFirstFocusable } = useFocusFinders();
144
165
  const canResize = layoutMode === 'deck';
145
166
 
146
167
  const attentionAttrs = useAttentionAttributes(primary?.id ?? id);
@@ -157,29 +178,32 @@ const PlankComponent = memo(
157
178
 
158
179
  const handleSizeChange = useCallback(
159
180
  debounce((nextSize: number) => {
160
- return dispatch(createIntent(DeckAction.UpdatePlankSize, { id: sizeKey, size: nextSize }));
181
+ return invokePromise(DeckOperation.UpdatePlankSize, { id: sizeKey, size: nextSize });
161
182
  }, 200),
162
- [dispatch, sizeKey],
183
+ [invokePromise, sizeKey],
163
184
  );
164
185
 
165
- // TODO(thure): Tabsters focus group should handle moving focus to Main, but something is blocking it.
186
+ // TODO(thure): Tabster's focus group should handle moving focus to Main, but something is blocking it.
166
187
  const handleKeyDown = useCallback((event: KeyboardEvent) => {
167
- if (event.target === event.currentTarget && event.key === 'Escape') {
168
- rootElement.current?.closest('main')?.focus();
188
+ if (event.target === event.currentTarget) {
189
+ switch (event.key) {
190
+ case 'Escape':
191
+ rootElement.current?.closest('main')?.focus();
192
+ break;
193
+ case 'Enter':
194
+ rootElement.current && findFirstFocusable(rootElement.current)?.focus();
195
+ break;
196
+ }
169
197
  }
170
198
  }, []);
171
199
 
172
200
  useLayoutEffect(() => {
173
201
  if (scrollIntoView === id) {
174
- // TODO(wittjosiah): When focused on page load, the focus is always visible.
175
- // Forcing focus to something smaller than the plank prevents large focus ring in the interim.
176
- const focusable = rootElement.current?.querySelector('button') || rootElement.current;
177
- focusable?.focus({ preventScroll: true });
178
- layoutMode === 'deck' && focusable?.scrollIntoView({ behavior: 'smooth', inline: 'center' });
202
+ layoutMode === 'deck' && rootElement.current?.scrollIntoView({ behavior: 'smooth', inline: 'center' });
179
203
  // Clear the scroll into view state once it has been actioned.
180
- void dispatch(createIntent(LayoutAction.ScrollIntoView, { part: 'current', subject: undefined }));
204
+ void invokePromise(LayoutOperation.ScrollIntoView, { subject: undefined });
181
205
  }
182
- }, [id, scrollIntoView, layoutMode]);
206
+ }, [id, scrollIntoView, layoutMode, invokePromise]);
183
207
 
184
208
  const isSolo = layoutMode.startsWith('solo') && part === 'solo';
185
209
  const isAttendable =
@@ -190,34 +214,42 @@ const PlankComponent = memo(
190
214
  const data = useMemo(
191
215
  () =>
192
216
  node && {
217
+ attendableId: id,
193
218
  subject: node.data,
194
219
  companionTo: primary?.data,
220
+ properties: node.properties,
195
221
  variant,
196
222
  path,
197
223
  popoverAnchorId,
198
224
  },
199
- [node, node?.data, path, popoverAnchorId, primary?.data, variant],
225
+ [node, node?.data, node?.properties, path, popoverAnchorId, primary?.data, variant],
200
226
  );
201
227
 
202
228
  // TODO(wittjosiah): Change prop to accept a component.
203
229
  const placeholder = useMemo(() => <PlankLoading />, []);
204
230
 
205
231
  const Root = part.startsWith('solo') ? 'article' : StackItem.Root;
232
+ const fullscreen = layoutMode === 'solo--fullscreen';
206
233
  const className = mx(
207
234
  'attention-surface relative dx-focus-ring-inset-over-all density-coarse',
208
- isSolo && mainIntrinsicSize,
209
- isSolo && railGridHorizontal,
210
235
  isSolo && 'absolute inset-0',
236
+ isSolo && mainIntrinsicSize,
237
+ railGridHorizontal,
211
238
  part.startsWith('solo') && 'grid',
239
+ part.startsWith('solo-') && 'grid-rows-subgrid row-span-2 min-is-0',
240
+ fullscreen && 'grid-rows-1',
212
241
  part === 'deck' && (companioned === 'companion' ? '!border-separator border-ie' : '!border-separator border-li'),
213
- part.startsWith('solo-') && 'row-span-2 grid-rows-subgrid min-is-0',
214
242
  part === 'solo-companion' && '!border-separator border-is',
243
+ settings?.encapsulatedPlanks &&
244
+ !part.startsWith('solo') &&
245
+ 'mli-[--main-spacing] !border-separator border rounded overflow-hidden',
215
246
  );
216
247
 
217
248
  return (
218
249
  <Root
219
250
  ref={rootElement}
220
251
  data-testid='deck.plank'
252
+ data-popover-collision-boundary={true}
221
253
  tabIndex={0}
222
254
  {...(part.startsWith('solo')
223
255
  ? ({ ...sizeAttrs, className } as any)
@@ -234,20 +266,22 @@ const PlankComponent = memo(
234
266
  >
235
267
  {node ? (
236
268
  <>
237
- <PlankHeading
238
- id={id}
239
- part={part.startsWith('solo-') ? 'solo' : part}
240
- node={node}
241
- layoutMode={layoutMode}
242
- deckEnabled={settings?.enableDeck}
243
- canIncrementStart={canIncrementStart}
244
- canIncrementEnd={canIncrementEnd}
245
- popoverAnchorId={popoverAnchorId}
246
- primaryId={primary?.id}
247
- companioned={companioned}
248
- companions={companions}
249
- />
250
- <Surface
269
+ {!fullscreen && (
270
+ <PlankHeading
271
+ id={id}
272
+ part={part.startsWith('solo-') ? 'solo' : part}
273
+ node={node}
274
+ layoutMode={layoutMode}
275
+ deckEnabled={settings?.enableDeck}
276
+ canIncrementStart={canIncrementStart}
277
+ canIncrementEnd={canIncrementEnd}
278
+ popoverAnchorId={popoverAnchorId}
279
+ primaryId={primary?.id}
280
+ companioned={companioned}
281
+ companions={companions}
282
+ />
283
+ )}
284
+ <Surface.Surface
251
285
  key={node.id}
252
286
  role='article'
253
287
  data={data}
@@ -259,7 +293,6 @@ const PlankComponent = memo(
259
293
  ) : (
260
294
  <PlankError id={id} part={part} />
261
295
  )}
262
-
263
296
  {canResize && <StackItem.ResizeHandle />}
264
297
  </Root>
265
298
  );
@@ -4,12 +4,12 @@
4
4
 
5
5
  import React, { forwardRef, useCallback } from 'react';
6
6
 
7
- import { createIntent, useIntentDispatcher } from '@dxos/app-framework';
7
+ import { useOperationInvoker } from '@dxos/app-framework/ui';
8
8
  import { invariant } from '@dxos/invariant';
9
9
  import { ButtonGroup, type ButtonGroupProps, type ButtonProps, IconButton, useTranslation } from '@dxos/react-ui';
10
10
 
11
- import { DECK_PLUGIN } from '../../meta';
12
- import { DeckAction, type LayoutMode } from '../../types';
11
+ import { meta } from '../../meta';
12
+ import { type DeckAction, DeckOperation, type LayoutMode } from '../../types';
13
13
 
14
14
  export type PlankControlHandler = (event: DeckAction.PartAdjustment) => void;
15
15
 
@@ -32,7 +32,7 @@ export type PlankControlsProps = Omit<ButtonGroupProps, 'onClick'> & {
32
32
  };
33
33
 
34
34
  const PlankControl = ({ icon, label, ...props }: Omit<ButtonProps, 'children'> & { label: string; icon: string }) => {
35
- return <IconButton iconOnly label={label} icon={icon} size={5} variant='ghost' tooltipSide='bottom' {...props} />;
35
+ return <IconButton label={label} icon={icon} iconOnly variant='ghost' tooltipSide='bottom' {...props} />;
36
36
  };
37
37
 
38
38
  const plankControlSpacing = 'pli-2';
@@ -43,12 +43,12 @@ type PlankComplimentControlsProps = {
43
43
 
44
44
  export const PlankCompanionControls = forwardRef<HTMLDivElement, PlankComplimentControlsProps>(
45
45
  ({ primary }, forwardedRef) => {
46
- const { t } = useTranslation(DECK_PLUGIN);
47
- const { dispatchPromise: dispatch } = useIntentDispatcher();
46
+ const { t } = useTranslation(meta.id);
47
+ const { invokePromise } = useOperationInvoker();
48
48
  const handleCloseCompanion = useCallback(() => {
49
49
  invariant(primary);
50
- return dispatch(createIntent(DeckAction.ChangeCompanion, { primary, companion: null }));
51
- }, []);
50
+ return invokePromise(DeckOperation.ChangeCompanion, { primary, companion: null });
51
+ }, [invokePromise, primary]);
52
52
  return (
53
53
  <div ref={forwardedRef} className='contents app-no-drag'>
54
54
  <PlankControl
@@ -71,7 +71,7 @@ export const PlankControls = forwardRef<HTMLDivElement, PlankControlsProps>(
71
71
  { children, classNames, variant = 'default', capabilities, layoutMode, pin, close = false, onClick, ...props },
72
72
  forwardedRef,
73
73
  ) => {
74
- const { t } = useTranslation(DECK_PLUGIN);
74
+ const { t } = useTranslation(meta.id);
75
75
  const buttonClassNames =
76
76
  variant === 'hide-disabled' ? `disabled:hidden ${plankControlSpacing}` : plankControlSpacing;
77
77
 
@@ -6,15 +6,15 @@ import React, { useEffect, useState } from 'react';
6
6
 
7
7
  import { type Node } from '@dxos/plugin-graph';
8
8
  import { useTranslation } from '@dxos/react-ui';
9
- import { descriptionMessage, mx } from '@dxos/react-ui-theme';
9
+ import { descriptionMessage, mx } from '@dxos/ui-theme';
10
10
 
11
- import { DECK_PLUGIN } from '../../meta';
11
+ import { meta } from '../../meta';
12
12
 
13
13
  import { PlankHeading, type PlankHeadingProps } from './PlankHeading';
14
14
  import { PlankLoading } from './PlankLoading';
15
15
 
16
16
  export const PlankContentError = ({ error }: { error?: Error }) => {
17
- const { t } = useTranslation(DECK_PLUGIN);
17
+ const { t } = useTranslation(meta.id);
18
18
  const errorString = error?.toString() ?? '';
19
19
  return (
20
20
  <div role='none' className='overflow-y-auto p-8 attention-surface grid place-items-center'>
@@ -33,7 +33,7 @@ export const PlankError = ({
33
33
  }: {
34
34
  id: string;
35
35
  part: PlankHeadingProps['part'];
36
- node?: Node;
36
+ node?: Node.Node;
37
37
  error?: Error;
38
38
  }) => {
39
39
  const [timedOut, setTimedOut] = useState(false);
@@ -4,17 +4,19 @@
4
4
 
5
5
  import React, { Fragment, type MouseEvent, memo, useCallback, useEffect, useMemo } from 'react';
6
6
 
7
- import { LayoutAction, Surface, createIntent, useAppGraph, useIntentDispatcher } from '@dxos/app-framework';
8
- import { type Node } from '@dxos/plugin-graph';
7
+ import { Surface, useOperationInvoker } from '@dxos/app-framework/ui';
8
+ import { LayoutOperation } from '@dxos/app-toolkit';
9
+ import { useAppGraph } from '@dxos/app-toolkit/ui';
10
+ import { Graph, type Node, useActionRunner } from '@dxos/plugin-graph';
9
11
  import { Icon, IconButton, Popover, toLocalizedString, useTranslation } from '@dxos/react-ui';
10
12
  import { StackItem, type StackItemSigilAction } from '@dxos/react-ui-stack';
11
13
  import { TextTooltip } from '@dxos/react-ui-text-tooltip';
12
- import { hoverableControls, hoverableFocusedWithinControls } from '@dxos/react-ui-theme';
14
+ import { hoverableControls, hoverableFocusedWithinControls } from '@dxos/ui-theme';
13
15
 
14
16
  import { useBreakpoints } from '../../hooks';
15
17
  import { parseEntryId } from '../../layout';
16
- import { DECK_PLUGIN } from '../../meta';
17
- import { DeckAction, type LayoutMode, PLANK_COMPANION_TYPE, type ResolvedPart } from '../../types';
18
+ import { meta } from '../../meta';
19
+ import { DeckOperation, type LayoutMode, PLANK_COMPANION_TYPE, type ResolvedPart } from '../../types';
18
20
  import { soloInlinePadding } from '../fragments';
19
21
 
20
22
  import { PlankCompanionControls, PlankControls } from './PlankControls';
@@ -25,7 +27,7 @@ export type PlankHeadingProps = {
25
27
  id: string;
26
28
  part: ResolvedPart;
27
29
  layoutMode?: LayoutMode;
28
- node?: Node;
30
+ node?: Node.Node;
29
31
  deckEnabled?: boolean;
30
32
  canIncrementStart?: boolean;
31
33
  canIncrementEnd?: boolean;
@@ -33,7 +35,7 @@ export type PlankHeadingProps = {
33
35
  primaryId?: string;
34
36
  pending?: boolean;
35
37
  companioned?: 'primary' | 'companion';
36
- companions?: Node[];
38
+ companions?: Node.Node[];
37
39
  actions?: StackItemSigilAction[];
38
40
  };
39
41
 
@@ -53,14 +55,15 @@ export const PlankHeading = memo(
53
55
  layoutMode,
54
56
  actions = [],
55
57
  }: PlankHeadingProps) => {
56
- const { t } = useTranslation(DECK_PLUGIN);
57
- const { dispatchPromise: dispatch } = useIntentDispatcher();
58
+ const { t } = useTranslation(meta.id);
59
+ const { invokePromise, invokeSync } = useOperationInvoker();
60
+ const runAction = useActionRunner();
58
61
  const { graph } = useAppGraph();
59
62
  const breakpoint = useBreakpoints();
60
63
  const icon = node?.properties?.icon ?? 'ph--placeholder--regular';
61
64
  const label = pending
62
65
  ? t('pending heading')
63
- : toLocalizedString(node?.properties?.label ?? ['plank heading fallback label', { ns: DECK_PLUGIN }], t);
66
+ : toLocalizedString(node?.properties?.label ?? ['plank heading fallback label', { ns: meta.id }], t);
64
67
 
65
68
  const isCompanionNode = node?.type === PLANK_COMPANION_TYPE;
66
69
 
@@ -68,7 +71,7 @@ export const PlankHeading = memo(
68
71
  const frame = requestAnimationFrame(() => {
69
72
  // Load actions for the node.
70
73
  if (node) {
71
- void graph.expand(node.id);
74
+ void Graph.expand(graph, node.id);
72
75
  }
73
76
  });
74
77
 
@@ -97,60 +100,53 @@ export const PlankHeading = memo(
97
100
  } else {
98
101
  return [
99
102
  actions,
100
- graph
101
- .getActions(node.id)
102
- .filter((a) => ['list-item', 'list-item-primary', 'heading-list-item'].includes(a.properties.disposition)),
103
+ Graph.getActions(graph, node.id).filter((a) =>
104
+ ['list-item', 'list-item-primary', 'heading-list-item'].includes(a.properties.disposition),
105
+ ),
103
106
  ].filter((a) => a.length > 0);
104
107
  }
105
108
  }, [actions, node, variant, graph]);
106
109
 
107
110
  const handleAction = useCallback(
108
111
  (action: StackItemSigilAction) => {
109
- typeof action.data === 'function' && void action.data?.({ parent: node, caller: DECK_PLUGIN });
112
+ if (typeof action.data === 'function') {
113
+ void runAction(action as Node.Action, { parent: node, caller: meta.id });
114
+ }
110
115
  },
111
- [node],
116
+ [node, runAction],
112
117
  );
113
118
 
114
119
  const handlePlankAction = useCallback(
115
- (eventType: DeckAction.PartAdjustment) => {
120
+ (eventType: DeckOperation.PartAdjustment) => {
116
121
  if (eventType.startsWith('solo')) {
117
- return dispatch(createIntent(DeckAction.Adjust, { type: eventType, id }));
122
+ return invokePromise(DeckOperation.Adjust, { type: eventType, id });
118
123
  } else if (eventType === 'close') {
119
124
  if (part === 'complementary') {
120
- return dispatch(
121
- createIntent(LayoutAction.UpdateComplementary, {
122
- part: 'complementary',
123
- options: { state: 'collapsed' },
124
- }),
125
- );
125
+ return invokeSync(LayoutOperation.UpdateComplementary, { state: 'collapsed' });
126
126
  } else {
127
- return dispatch(
128
- createIntent(LayoutAction.Close, { part: 'main', subject: [id], options: { state: false } }),
129
- );
127
+ return invokeSync(LayoutOperation.Close, { subject: [id] });
130
128
  }
131
129
  } else {
132
- return dispatch(createIntent(DeckAction.Adjust, { type: eventType, id }));
130
+ return invokePromise(DeckOperation.Adjust, { type: eventType, id });
133
131
  }
134
132
  },
135
- [dispatch, id, part],
133
+ [invokePromise, invokeSync, id, part],
136
134
  );
137
135
 
138
- const ActionRoot = node && popoverAnchorId === `dxos.org/ui/${DECK_PLUGIN}/${node.id}` ? Popover.Anchor : Fragment;
136
+ const ActionRoot = node && popoverAnchorId === `dxos.org/ui/${meta.id}/${node.id}` ? Popover.Anchor : Fragment;
139
137
 
140
138
  const handleTabClick = useCallback(
141
139
  (event: MouseEvent) => {
142
140
  const target = (event.target as HTMLElement).closest('[data-id]') as HTMLElement | null;
143
141
  const tabId = target?.dataset?.id;
144
142
  if (primaryId && tabId) {
145
- void dispatch(
146
- createIntent(DeckAction.ChangeCompanion, {
147
- primary: primaryId,
148
- companion: tabId,
149
- }),
150
- );
143
+ void invokePromise(DeckOperation.ChangeCompanion, {
144
+ primary: primaryId,
145
+ companion: tabId,
146
+ });
151
147
  }
152
148
  },
153
- [primaryId],
149
+ [primaryId, invokePromise],
154
150
  );
155
151
 
156
152
  return (
@@ -162,7 +158,8 @@ export const PlankHeading = memo(
162
158
  ? [
163
159
  hoverableControls,
164
160
  hoverableFocusedWithinControls,
165
- '*:transition-opacity *:opacity-[--controls-opacity] bg-transparent border-transparent transition-[background-color,border-color] hover-hover:hover:bg-headerSurface focus-within:bg-headerSurface hover-hover:hover:border-subduedSeparator focus-within:border-subduedSeparator',
161
+ '*:transition-opacity *:opacity-[--controls-opacity] bg-transparent border-transparent transition-[background-color,border-color]',
162
+ 'hover-hover:hover:bg-headerSurface focus-within:bg-headerSurface hover-hover:hover:border-subduedSeparator focus-within:border-subduedSeparator',
166
163
  ]
167
164
  : []),
168
165
  ]}
@@ -178,7 +175,6 @@ export const PlankHeading = memo(
178
175
  icon={icon}
179
176
  iconOnly={companions.length > MAX_COMPANIONS && node?.id !== id}
180
177
  label={toLocalizedString(label, t)}
181
- size={5}
182
178
  variant={node?.id === id ? 'primary' : 'ghost'}
183
179
  onClick={handleTabClick}
184
180
  />
@@ -196,12 +192,12 @@ export const PlankHeading = memo(
196
192
  actions={sigilActions}
197
193
  onAction={handleAction}
198
194
  >
199
- <Surface role='menu-footer' data={{ subject: node.data }} />
195
+ <Surface.Surface role='menu-footer' data={{ subject: node.data }} />
200
196
  </StackItem.Sigil>
201
197
  ) : (
202
198
  <StackItem.SigilButton>
203
199
  <span className='sr-only'>{label}</span>
204
- <Icon icon={icon} size={5} />
200
+ <Icon icon={icon} />
205
201
  </StackItem.SigilButton>
206
202
  )}
207
203
  </ActionRoot>
@@ -216,7 +212,7 @@ export const PlankHeading = memo(
216
212
  </TextTooltip>
217
213
  </>
218
214
  )}
219
- {node && part !== 'complementary' && <Surface role='navbar-end' data={{ subject: node.data }} />}
215
+ {node && part !== 'complementary' && <Surface.Surface role='navbar-end' data={{ subject: node.data }} />}
220
216
  {companioned === 'companion' ? (
221
217
  <PlankCompanionControls primary={primaryId} />
222
218
  ) : (