@dxos/plugin-deck 0.8.4-main.b97322e → 0.8.4-main.bc674ce

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