@dxos/plugin-deck 0.8.4-main.69d29f4 → 0.8.4-main.6fa680abb7

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 (234) hide show
  1. package/dist/lib/browser/Banner-HXRXEUOZ.mjs +14 -0
  2. package/dist/lib/browser/Banner-HXRXEUOZ.mjs.map +7 -0
  3. package/dist/lib/browser/DeckSettings-HSSQKFNE.mjs +96 -0
  4. package/dist/lib/browser/DeckSettings-HSSQKFNE.mjs.map +7 -0
  5. package/dist/lib/browser/{app-graph-builder-DTVCULQ4.mjs → app-graph-builder-MP6INIM2.mjs} +16 -13
  6. package/dist/lib/browser/app-graph-builder-MP6INIM2.mjs.map +7 -0
  7. package/dist/lib/browser/{check-app-scheme-JSRXXIYF.mjs → check-app-scheme-AUNCD2Y6.mjs} +9 -8
  8. package/dist/lib/browser/check-app-scheme-AUNCD2Y6.mjs.map +7 -0
  9. package/dist/lib/browser/{chunk-ATFPDN6J.mjs → chunk-3P2FJVXC.mjs} +35 -49
  10. package/dist/lib/browser/chunk-3P2FJVXC.mjs.map +7 -0
  11. package/dist/lib/browser/chunk-BJDEG7YZ.mjs +74 -0
  12. package/dist/lib/browser/chunk-BJDEG7YZ.mjs.map +7 -0
  13. package/dist/lib/browser/{chunk-EREEXCHO.mjs → chunk-ITNJS5QX.mjs} +214 -276
  14. package/dist/lib/browser/chunk-ITNJS5QX.mjs.map +7 -0
  15. package/dist/lib/browser/chunk-L3RYMAV7.mjs +16 -0
  16. package/dist/lib/browser/chunk-L3RYMAV7.mjs.map +7 -0
  17. package/dist/lib/browser/{chunk-UNG4CLLP.mjs → chunk-TAHLKBDO.mjs} +46 -20
  18. package/dist/lib/browser/chunk-TAHLKBDO.mjs.map +7 -0
  19. package/dist/lib/browser/index.mjs +39 -35
  20. package/dist/lib/browser/index.mjs.map +3 -3
  21. package/dist/lib/browser/meta.json +1 -1
  22. package/dist/lib/browser/{operation-resolver-CDYBLZJ4.mjs → operation-resolver-2TEGT4PG.mjs} +166 -122
  23. package/dist/lib/browser/operation-resolver-2TEGT4PG.mjs.map +7 -0
  24. package/dist/lib/browser/{react-root-LYNEKGHM.mjs → react-root-AS4IOYDG.mjs} +8 -7
  25. package/dist/lib/browser/react-root-AS4IOYDG.mjs.map +7 -0
  26. package/dist/lib/browser/react-surface-FH7TC6WW.mjs +44 -0
  27. package/dist/lib/browser/react-surface-FH7TC6WW.mjs.map +7 -0
  28. package/dist/lib/browser/{settings-OMHVGZ6V.mjs → settings-PTMGCSJH.mjs} +8 -5
  29. package/dist/lib/browser/settings-PTMGCSJH.mjs.map +7 -0
  30. package/dist/lib/browser/{state-OC3BSB6E.mjs → state-MA4SQ7BE.mjs} +11 -8
  31. package/dist/lib/browser/state-MA4SQ7BE.mjs.map +7 -0
  32. package/dist/lib/browser/{toolkit-R53LD3EA.mjs → toolkit-6B34QFU3.mjs} +10 -8
  33. package/dist/lib/browser/toolkit-6B34QFU3.mjs.map +7 -0
  34. package/dist/lib/browser/types/index.mjs +4 -5
  35. package/dist/lib/browser/{url-handler-53TE6JZO.mjs → url-handler-FEUFPQIP.mjs} +22 -17
  36. package/dist/lib/browser/url-handler-FEUFPQIP.mjs.map +7 -0
  37. package/dist/lib/node-esm/Banner-RN7XXOXY.mjs +15 -0
  38. package/dist/lib/node-esm/Banner-RN7XXOXY.mjs.map +7 -0
  39. package/dist/lib/node-esm/DeckSettings-DJRFLKQS.mjs +97 -0
  40. package/dist/lib/node-esm/DeckSettings-DJRFLKQS.mjs.map +7 -0
  41. package/dist/lib/node-esm/{app-graph-builder-473BNZDJ.mjs → app-graph-builder-ACHG5HY7.mjs} +16 -13
  42. package/dist/lib/node-esm/app-graph-builder-ACHG5HY7.mjs.map +7 -0
  43. package/dist/lib/node-esm/{check-app-scheme-IVYRHKRH.mjs → check-app-scheme-WN76GWVC.mjs} +9 -8
  44. package/dist/lib/node-esm/check-app-scheme-WN76GWVC.mjs.map +7 -0
  45. package/dist/lib/node-esm/chunk-DGTRKKWZ.mjs +76 -0
  46. package/dist/lib/node-esm/chunk-DGTRKKWZ.mjs.map +7 -0
  47. package/dist/lib/node-esm/{chunk-SKEVPQ7E.mjs → chunk-EMU4VIPH.mjs} +46 -20
  48. package/dist/lib/node-esm/chunk-EMU4VIPH.mjs.map +7 -0
  49. package/dist/lib/node-esm/{chunk-XAKTY3EB.mjs → chunk-GZJAQ5IP.mjs} +34 -49
  50. package/dist/lib/node-esm/chunk-GZJAQ5IP.mjs.map +7 -0
  51. package/dist/lib/node-esm/{chunk-V6VEXRD4.mjs → chunk-MBCCNIWY.mjs} +213 -275
  52. package/dist/lib/node-esm/chunk-MBCCNIWY.mjs.map +7 -0
  53. package/dist/lib/node-esm/chunk-XCNF4COU.mjs +18 -0
  54. package/dist/lib/node-esm/chunk-XCNF4COU.mjs.map +7 -0
  55. package/dist/lib/node-esm/index.mjs +39 -35
  56. package/dist/lib/node-esm/index.mjs.map +3 -3
  57. package/dist/lib/node-esm/meta.json +1 -1
  58. package/dist/lib/node-esm/{operation-resolver-WUOE33ID.mjs → operation-resolver-GCMCCI7A.mjs} +166 -122
  59. package/dist/lib/node-esm/operation-resolver-GCMCCI7A.mjs.map +7 -0
  60. package/dist/lib/node-esm/{react-root-L7H43AS3.mjs → react-root-7DTDLAF4.mjs} +8 -7
  61. package/dist/lib/node-esm/react-root-7DTDLAF4.mjs.map +7 -0
  62. package/dist/lib/node-esm/{react-surface-77DKVMDV.mjs → react-surface-U6Z2K324.mjs} +18 -16
  63. package/dist/lib/node-esm/react-surface-U6Z2K324.mjs.map +7 -0
  64. package/dist/lib/node-esm/{settings-2HB6FKIK.mjs → settings-LPPFLXNJ.mjs} +8 -5
  65. package/dist/lib/node-esm/settings-LPPFLXNJ.mjs.map +7 -0
  66. package/dist/lib/node-esm/{state-JRQ45ACJ.mjs → state-KNRU3GDC.mjs} +11 -8
  67. package/dist/lib/node-esm/state-KNRU3GDC.mjs.map +7 -0
  68. package/dist/lib/node-esm/{toolkit-JLPZNNKB.mjs → toolkit-SOWYKJY3.mjs} +10 -8
  69. package/dist/lib/node-esm/toolkit-SOWYKJY3.mjs.map +7 -0
  70. package/dist/lib/node-esm/types/index.mjs +4 -5
  71. package/dist/lib/node-esm/{url-handler-QGF2R24T.mjs → url-handler-4LEB7UWF.mjs} +22 -17
  72. package/dist/lib/node-esm/url-handler-4LEB7UWF.mjs.map +7 -0
  73. package/dist/types/src/DeckPlugin.d.ts.map +1 -1
  74. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +1 -1
  75. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -1
  76. package/dist/types/src/capabilities/check-app-scheme/check-app-scheme.d.ts +1 -1
  77. package/dist/types/src/capabilities/check-app-scheme/check-app-scheme.d.ts.map +1 -1
  78. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +2 -2
  79. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -1
  80. package/dist/types/src/capabilities/react-root/react-root.d.ts +1 -1
  81. package/dist/types/src/capabilities/react-root/react-root.d.ts.map +1 -1
  82. package/dist/types/src/capabilities/react-surface/index.d.ts +1 -1
  83. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -1
  84. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +2 -2
  85. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -1
  86. package/dist/types/src/capabilities/settings/index.d.ts +1 -1
  87. package/dist/types/src/capabilities/settings/index.d.ts.map +1 -1
  88. package/dist/types/src/capabilities/settings/settings.d.ts +4 -3
  89. package/dist/types/src/capabilities/settings/settings.d.ts.map +1 -1
  90. package/dist/types/src/capabilities/state/index.d.ts +6 -6
  91. package/dist/types/src/capabilities/state/state.d.ts +7 -7
  92. package/dist/types/src/capabilities/state/state.d.ts.map +1 -1
  93. package/dist/types/src/capabilities/toolkit/index.d.ts +1 -1
  94. package/dist/types/src/capabilities/toolkit/index.d.ts.map +1 -1
  95. package/dist/types/src/capabilities/toolkit/toolkit.d.ts +4 -3
  96. package/dist/types/src/capabilities/toolkit/toolkit.d.ts.map +1 -1
  97. package/dist/types/src/capabilities/tools/tools.d.ts +1 -1
  98. package/dist/types/src/capabilities/tools/tools.d.ts.map +1 -1
  99. package/dist/types/src/capabilities/url-handler/url-handler.d.ts +1 -1
  100. package/dist/types/src/capabilities/url-handler/url-handler.d.ts.map +1 -1
  101. package/dist/types/src/components/DeckLayout/ActiveNode.d.ts.map +1 -1
  102. package/dist/types/src/components/DeckLayout/DeckLayout.stories.d.ts +1 -0
  103. package/dist/types/src/components/DeckLayout/DeckLayout.stories.d.ts.map +1 -1
  104. package/dist/types/src/components/DeckLayout/DeckMain.d.ts.map +1 -1
  105. package/dist/types/src/components/DeckLayout/Dialog.d.ts.map +1 -1
  106. package/dist/types/src/components/DeckLayout/Fallback.d.ts.map +1 -1
  107. package/dist/types/src/components/DeckLayout/Popover.d.ts.map +1 -1
  108. package/dist/types/src/components/DeckLayout/Toast.d.ts +3 -3
  109. package/dist/types/src/components/DeckLayout/Toast.d.ts.map +1 -1
  110. package/dist/types/src/components/Plank/Plank.d.ts +2 -2
  111. package/dist/types/src/components/Plank/Plank.d.ts.map +1 -1
  112. package/dist/types/src/components/Plank/Plank.stories.d.ts +3 -2
  113. package/dist/types/src/components/Plank/Plank.stories.d.ts.map +1 -1
  114. package/dist/types/src/components/Plank/PlankControls.d.ts.map +1 -1
  115. package/dist/types/src/components/Plank/PlankError.d.ts +5 -3
  116. package/dist/types/src/components/Plank/PlankError.d.ts.map +1 -1
  117. package/dist/types/src/components/Plank/PlankHeading.d.ts.map +1 -1
  118. package/dist/types/src/components/Sidebar/ComplementarySidebar.d.ts.map +1 -1
  119. package/dist/types/src/components/fragments.d.ts +4 -1
  120. package/dist/types/src/components/fragments.d.ts.map +1 -1
  121. package/dist/types/src/components/index.d.ts +0 -1
  122. package/dist/types/src/components/index.d.ts.map +1 -1
  123. package/dist/types/src/containers/Banner/Banner.d.ts +2 -0
  124. package/dist/types/src/containers/Banner/Banner.d.ts.map +1 -0
  125. package/dist/types/src/containers/Banner/index.d.ts +3 -0
  126. package/dist/types/src/containers/Banner/index.d.ts.map +1 -0
  127. package/dist/types/src/{components → containers}/DeckSettings/DeckSettings.d.ts.map +1 -1
  128. package/dist/types/src/containers/DeckSettings/index.d.ts +3 -0
  129. package/dist/types/src/containers/DeckSettings/index.d.ts.map +1 -0
  130. package/dist/types/src/containers/index.d.ts +4 -0
  131. package/dist/types/src/containers/index.d.ts.map +1 -0
  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 +0 -1
  135. package/dist/types/src/hooks/useDeckCompanions.d.ts.map +1 -1
  136. package/dist/types/src/hooks/useMainSize.d.ts +2 -2
  137. package/dist/types/src/hooks/useSelectedCompanion.d.ts +13 -0
  138. package/dist/types/src/hooks/useSelectedCompanion.d.ts.map +1 -0
  139. package/dist/types/src/layout.d.ts +1 -7
  140. package/dist/types/src/layout.d.ts.map +1 -1
  141. package/dist/types/src/translations.d.ts +1 -0
  142. package/dist/types/src/translations.d.ts.map +1 -1
  143. package/dist/types/src/types/capabilities.d.ts +6 -6
  144. package/dist/types/src/types/capabilities.d.ts.map +1 -1
  145. package/dist/types/src/types/events.d.ts.map +1 -1
  146. package/dist/types/src/types/schema.d.ts +18 -16
  147. package/dist/types/src/types/schema.d.ts.map +1 -1
  148. package/dist/types/tsconfig.tsbuildinfo +1 -1
  149. package/package.json +45 -43
  150. package/src/DeckPlugin.ts +12 -11
  151. package/src/capabilities/app-graph-builder/app-graph-builder.ts +11 -10
  152. package/src/capabilities/check-app-scheme/check-app-scheme.ts +12 -8
  153. package/src/capabilities/operation-resolver/operation-resolver.ts +110 -107
  154. package/src/capabilities/react-root/react-root.tsx +2 -2
  155. package/src/capabilities/react-surface/react-surface.tsx +11 -10
  156. package/src/capabilities/settings/settings.ts +3 -2
  157. package/src/capabilities/state/state.ts +6 -5
  158. package/src/capabilities/toolkit/toolkit.ts +7 -6
  159. package/src/capabilities/tools/tools.ts +0 -1
  160. package/src/capabilities/url-handler/url-handler.ts +16 -13
  161. package/src/components/DeckLayout/ActiveNode.tsx +3 -2
  162. package/src/components/DeckLayout/Banner.tsx +8 -8
  163. package/src/components/DeckLayout/ContentEmpty.tsx +3 -3
  164. package/src/components/DeckLayout/DeckLayout.stories.tsx +8 -6
  165. package/src/components/DeckLayout/DeckMain.tsx +28 -27
  166. package/src/components/DeckLayout/Dialog.tsx +10 -4
  167. package/src/components/DeckLayout/Fallback.tsx +2 -6
  168. package/src/components/DeckLayout/Popover.tsx +34 -8
  169. package/src/components/DeckLayout/StatusBar.tsx +4 -4
  170. package/src/components/DeckLayout/Toast.tsx +3 -3
  171. package/src/components/Plank/Plank.stories.tsx +7 -5
  172. package/src/components/Plank/Plank.tsx +32 -24
  173. package/src/components/Plank/PlankControls.tsx +6 -8
  174. package/src/components/Plank/PlankError.tsx +29 -15
  175. package/src/components/Plank/PlankHeading.tsx +20 -23
  176. package/src/components/Plank/PlankLoading.tsx +1 -1
  177. package/src/components/Sidebar/ComplementarySidebar.tsx +46 -49
  178. package/src/components/Sidebar/Sidebar.tsx +4 -4
  179. package/src/components/Sidebar/SidebarButton.tsx +12 -12
  180. package/src/components/fragments.ts +9 -4
  181. package/src/components/index.ts +0 -1
  182. package/src/containers/Banner/Banner.tsx +5 -0
  183. package/src/containers/Banner/index.ts +7 -0
  184. package/src/{components → containers}/DeckSettings/DeckSettings.tsx +23 -23
  185. package/src/containers/DeckSettings/index.ts +7 -0
  186. package/src/containers/index.ts +8 -0
  187. package/src/hooks/index.ts +1 -0
  188. package/src/hooks/useCompanions.ts +2 -2
  189. package/src/hooks/useDeckCompanions.ts +3 -8
  190. package/src/hooks/useDeckState.ts +3 -3
  191. package/src/hooks/useHoistStatusbar.ts +1 -1
  192. package/src/hooks/useMainSize.ts +2 -2
  193. package/src/hooks/useNodeActionExpander.ts +1 -1
  194. package/src/hooks/useSelectedCompanion.ts +32 -0
  195. package/src/layout.ts +1 -14
  196. package/src/meta.ts +1 -1
  197. package/src/translations.ts +1 -0
  198. package/src/types/capabilities.ts +5 -5
  199. package/src/types/events.ts +5 -4
  200. package/src/types/schema.ts +22 -21
  201. package/src/util/overscroll.ts +3 -3
  202. package/dist/lib/browser/app-graph-builder-DTVCULQ4.mjs.map +0 -7
  203. package/dist/lib/browser/check-app-scheme-JSRXXIYF.mjs.map +0 -7
  204. package/dist/lib/browser/chunk-ATFPDN6J.mjs.map +0 -7
  205. package/dist/lib/browser/chunk-EREEXCHO.mjs.map +0 -7
  206. package/dist/lib/browser/chunk-NHABISX2.mjs +0 -152
  207. package/dist/lib/browser/chunk-NHABISX2.mjs.map +0 -7
  208. package/dist/lib/browser/chunk-UNG4CLLP.mjs.map +0 -7
  209. package/dist/lib/browser/operation-resolver-CDYBLZJ4.mjs.map +0 -7
  210. package/dist/lib/browser/react-root-LYNEKGHM.mjs.map +0 -7
  211. package/dist/lib/browser/react-surface-RPKD7XUR.mjs +0 -42
  212. package/dist/lib/browser/react-surface-RPKD7XUR.mjs.map +0 -7
  213. package/dist/lib/browser/settings-OMHVGZ6V.mjs.map +0 -7
  214. package/dist/lib/browser/state-OC3BSB6E.mjs.map +0 -7
  215. package/dist/lib/browser/toolkit-R53LD3EA.mjs.map +0 -7
  216. package/dist/lib/browser/url-handler-53TE6JZO.mjs.map +0 -7
  217. package/dist/lib/node-esm/app-graph-builder-473BNZDJ.mjs.map +0 -7
  218. package/dist/lib/node-esm/check-app-scheme-IVYRHKRH.mjs.map +0 -7
  219. package/dist/lib/node-esm/chunk-ADPMWKLL.mjs +0 -154
  220. package/dist/lib/node-esm/chunk-ADPMWKLL.mjs.map +0 -7
  221. package/dist/lib/node-esm/chunk-SKEVPQ7E.mjs.map +0 -7
  222. package/dist/lib/node-esm/chunk-V6VEXRD4.mjs.map +0 -7
  223. package/dist/lib/node-esm/chunk-XAKTY3EB.mjs.map +0 -7
  224. package/dist/lib/node-esm/operation-resolver-WUOE33ID.mjs.map +0 -7
  225. package/dist/lib/node-esm/react-root-L7H43AS3.mjs.map +0 -7
  226. package/dist/lib/node-esm/react-surface-77DKVMDV.mjs.map +0 -7
  227. package/dist/lib/node-esm/settings-2HB6FKIK.mjs.map +0 -7
  228. package/dist/lib/node-esm/state-JRQ45ACJ.mjs.map +0 -7
  229. package/dist/lib/node-esm/toolkit-JLPZNNKB.mjs.map +0 -7
  230. package/dist/lib/node-esm/url-handler-QGF2R24T.mjs.map +0 -7
  231. package/dist/types/src/components/DeckSettings/index.d.ts +0 -2
  232. package/dist/types/src/components/DeckSettings/index.d.ts.map +0 -1
  233. package/src/components/DeckSettings/index.ts +0 -5
  234. /package/dist/types/src/{components → containers}/DeckSettings/DeckSettings.d.ts +0 -0
@@ -1,62 +1,63 @@
1
1
  import {
2
- getCompanionId,
3
2
  useBreakpoints,
4
3
  useCompanions,
5
4
  useDeckCompanions,
6
5
  useDeckState,
7
6
  useHoistStatusbar,
8
7
  useMainSize,
9
- useNodeActionExpander
10
- } from "./chunk-UNG4CLLP.mjs";
8
+ useNodeActionExpander,
9
+ useSelectedCompanion
10
+ } from "./chunk-TAHLKBDO.mjs";
11
11
  import {
12
12
  calculateOverscroll,
13
- layoutAppliesTopbar,
14
- parseEntryId
15
- } from "./chunk-NHABISX2.mjs";
13
+ layoutAppliesTopbar
14
+ } from "./chunk-BJDEG7YZ.mjs";
16
15
  import {
17
16
  DeckCapabilities,
18
17
  DeckOperation,
19
- NewPlankPositions,
20
- OverscrollOptions,
21
18
  PLANK_COMPANION_TYPE,
22
- getMode,
19
+ getMode
20
+ } from "./chunk-3P2FJVXC.mjs";
21
+ import {
23
22
  meta
24
- } from "./chunk-ATFPDN6J.mjs";
23
+ } from "./chunk-L3RYMAV7.mjs";
25
24
 
26
25
  // src/components/DeckLayout/Banner.tsx
27
26
  import React9 from "react";
28
- import { Surface as Surface5 } from "@dxos/app-framework/react";
27
+ import { Surface as Surface5 } from "@dxos/app-framework/ui";
29
28
  import { useTranslation as useTranslation6 } from "@dxos/react-ui";
30
29
  import { mx as mx5, osTranslations } from "@dxos/ui-theme";
31
30
 
32
31
  // src/components/Sidebar/ComplementarySidebar.tsx
33
32
  import React7, { Fragment as Fragment2, useCallback as useCallback5, useEffect as useEffect3, useMemo as useMemo3, useState as useState2 } from "react";
34
- import { Common as Common4 } from "@dxos/app-framework";
35
- import { Surface as Surface3, useOperationInvoker as useOperationInvoker5 } from "@dxos/app-framework/react";
36
- import { IconButton as IconButton4, Main, toLocalizedString as toLocalizedString2, useTranslation as useTranslation5 } from "@dxos/react-ui";
33
+ import { Surface as Surface3, useOperationInvoker as useOperationInvoker5 } from "@dxos/app-framework/ui";
34
+ import { LayoutOperation as LayoutOperation4, getCompanionVariant as getCompanionVariant4 } from "@dxos/app-toolkit";
35
+ import { IconButton as IconButton4, Main, ScrollArea, toLocalizedString as toLocalizedString2, useTranslation as useTranslation5 } from "@dxos/react-ui";
37
36
  import { Tabs } from "@dxos/react-ui-tabs";
38
37
  import { mx as mx4 } from "@dxos/ui-theme";
39
38
 
40
39
  // src/components/Plank/Plank.tsx
41
40
  import { useFocusFinders } from "@fluentui/react-tabster";
42
41
  import React5, { memo as memo2, useCallback as useCallback3, useLayoutEffect, useMemo as useMemo2, useRef } from "react";
43
- import { Common as Common2 } from "@dxos/app-framework";
44
- import { Surface as Surface2, useAppGraph as useAppGraph2, useOperationInvoker as useOperationInvoker3 } from "@dxos/app-framework/react";
42
+ import { Surface as Surface2, useOperationInvoker as useOperationInvoker3 } from "@dxos/app-framework/ui";
43
+ import { LayoutOperation as LayoutOperation2, getCompanionVariant as getCompanionVariant2 } from "@dxos/app-toolkit";
44
+ import { useAppGraph as useAppGraph2 } from "@dxos/app-toolkit/ui";
45
45
  import { debounce } from "@dxos/async";
46
46
  import { useNode } from "@dxos/plugin-graph";
47
- import { ATTENDABLE_PATH_SEPARATOR, useAttentionAttributes } from "@dxos/react-ui-attention";
47
+ import { useAttentionAttributes } from "@dxos/react-ui-attention";
48
48
  import { StackItem as StackItem2, railGridHorizontal } from "@dxos/react-ui-stack";
49
49
  import { mainIntrinsicSize, mx as mx3 } from "@dxos/ui-theme";
50
50
 
51
51
  // src/components/Plank/PlankError.tsx
52
52
  import React4, { useEffect as useEffect2, useState } from "react";
53
- import { useTranslation as useTranslation3 } from "@dxos/react-ui";
54
- import { descriptionMessage, mx as mx2 } from "@dxos/ui-theme";
53
+ import { ErrorFallback, useTranslation as useTranslation3 } from "@dxos/react-ui";
54
+ import "@dxos/ui-theme";
55
55
 
56
56
  // src/components/Plank/PlankHeading.tsx
57
57
  import React2, { Fragment, memo, useCallback as useCallback2, useEffect, useMemo } from "react";
58
- import { Common } from "@dxos/app-framework";
59
- import { Surface, useAppGraph, useOperationInvoker as useOperationInvoker2 } from "@dxos/app-framework/react";
58
+ import { Surface, useOperationInvoker as useOperationInvoker2 } from "@dxos/app-framework/ui";
59
+ import { LayoutOperation, getCompanionVariant } from "@dxos/app-toolkit";
60
+ import { useAppGraph } from "@dxos/app-toolkit/ui";
60
61
  import { Graph, useActionRunner } from "@dxos/plugin-graph";
61
62
  import { Icon, IconButton as IconButton2, Popover, toLocalizedString, useTranslation as useTranslation2 } from "@dxos/react-ui";
62
63
  import { StackItem } from "@dxos/react-ui-stack";
@@ -65,17 +66,15 @@ import { hoverableControls, hoverableFocusedWithinControls } from "@dxos/ui-them
65
66
 
66
67
  // src/components/fragments.ts
67
68
  import { mx } from "@dxos/ui-theme";
68
- var soloInlinePadding = "pis-[calc(env(safe-area-inset-left)+.25rem)] pie-[calc(env(safe-area-inset-left)+.25rem)]";
69
- var sidebarToggleStyles = "bs-[--rail-item] is-[--rail-item] absolute block-end-2 z-[1] !bg-deckSurface lg:hidden";
70
- var fixedSidebarToggleStyles = mx(sidebarToggleStyles, "inline-start-2");
71
- var fixedComplementarySidebarToggleStyles = mx(sidebarToggleStyles, "inline-end-2");
69
+ var soloInlinePadding = "ps-[calc(env(safe-area-inset-left)+.25rem)] pe-[calc(env(safe-area-inset-right)+.25rem)]";
70
+ var sidebarToggleStyles = "h-(--dx-rail-item) w-(--dx-rail-item) absolute bottom-2 z-[1] !bg-deck-surface lg:hidden";
71
+ var fixedSidebarToggleStyles = mx(sidebarToggleStyles, "left-2");
72
+ var fixedComplementarySidebarToggleStyles = mx(sidebarToggleStyles, "right-2");
72
73
 
73
74
  // src/components/Plank/PlankControls.tsx
74
75
  import React, { forwardRef, useCallback } from "react";
75
- import { useOperationInvoker } from "@dxos/app-framework/react";
76
- import { invariant } from "@dxos/invariant";
76
+ import { useOperationInvoker } from "@dxos/app-framework/ui";
77
77
  import { ButtonGroup, IconButton, useTranslation } from "@dxos/react-ui";
78
- var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-deck/src/components/Plank/PlankControls.tsx";
79
78
  var PlankControl = ({ icon, label: label3, ...props }) => {
80
79
  return /* @__PURE__ */ React.createElement(IconButton, {
81
80
  label: label3,
@@ -86,31 +85,20 @@ var PlankControl = ({ icon, label: label3, ...props }) => {
86
85
  ...props
87
86
  });
88
87
  };
89
- var plankControlSpacing = "pli-2";
88
+ var plankControlSpacing = "px-2";
90
89
  var PlankCompanionControls = /* @__PURE__ */ forwardRef(({ primary }, forwardedRef) => {
91
90
  const { t } = useTranslation(meta.id);
92
91
  const { invokePromise } = useOperationInvoker();
93
92
  const handleCloseCompanion = useCallback(() => {
94
- invariant(primary, void 0, {
95
- F: __dxlog_file,
96
- L: 49,
97
- S: void 0,
98
- A: [
99
- "primary",
100
- ""
101
- ]
102
- });
103
93
  return invokePromise(DeckOperation.ChangeCompanion, {
104
- primary,
105
94
  companion: null
106
95
  });
107
96
  }, [
108
- invokePromise,
109
- primary
97
+ invokePromise
110
98
  ]);
111
99
  return /* @__PURE__ */ React.createElement("div", {
112
100
  ref: forwardedRef,
113
- className: "contents app-no-drag"
101
+ className: "contents dx-app-no-drag"
114
102
  }, /* @__PURE__ */ React.createElement(PlankControl, {
115
103
  label: t("close companion label"),
116
104
  variant: "ghost",
@@ -126,7 +114,7 @@ var PlankControls = /* @__PURE__ */ forwardRef(({ children, classNames, variant
126
114
  return /* @__PURE__ */ React.createElement(ButtonGroup, {
127
115
  ...props,
128
116
  classNames: [
129
- "app-no-drag !opacity-100",
117
+ "dx-app-no-drag opacity-100!",
130
118
  classNames
131
119
  ],
132
120
  ref: forwardedRef
@@ -191,7 +179,7 @@ var PlankHeading = /* @__PURE__ */ memo(({ id, part, node, deckEnabled, canIncre
191
179
  useEffect(() => {
192
180
  const frame = requestAnimationFrame(() => {
193
181
  if (node) {
194
- void Graph.expand(graph, node.id);
182
+ void Graph.expand(graph, node.id, "child");
195
183
  }
196
184
  });
197
185
  return () => cancelAnimationFrame(frame);
@@ -215,7 +203,7 @@ var PlankHeading = /* @__PURE__ */ memo(({ id, part, node, deckEnabled, canIncre
215
203
  isCompanionNode,
216
204
  deckEnabled
217
205
  ]);
218
- const { variant } = parseEntryId(id);
206
+ const variant = isCompanionNode ? getCompanionVariant(id) : void 0;
219
207
  const sigilActions = useMemo(() => {
220
208
  if (!node) {
221
209
  return void 0;
@@ -224,11 +212,11 @@ var PlankHeading = /* @__PURE__ */ memo(({ id, part, node, deckEnabled, canIncre
224
212
  } else {
225
213
  return [
226
214
  actions,
227
- Graph.getActions(graph, node.id).filter((a) => [
215
+ Graph.getActions(graph, node.id).filter((action) => [
228
216
  "list-item",
229
217
  "list-item-primary",
230
218
  "heading-list-item"
231
- ].includes(a.properties.disposition))
219
+ ].includes(action.properties.disposition))
232
220
  ].filter((a) => a.length > 0);
233
221
  }
234
222
  }, [
@@ -256,11 +244,11 @@ var PlankHeading = /* @__PURE__ */ memo(({ id, part, node, deckEnabled, canIncre
256
244
  });
257
245
  } else if (eventType === "close") {
258
246
  if (part === "complementary") {
259
- return invokeSync(Common.LayoutOperation.UpdateComplementary, {
247
+ return invokeSync(LayoutOperation.UpdateComplementary, {
260
248
  state: "collapsed"
261
249
  });
262
250
  } else {
263
- return invokeSync(Common.LayoutOperation.Close, {
251
+ return invokeSync(LayoutOperation.Close, {
264
252
  subject: [
265
253
  id
266
254
  ]
@@ -278,29 +266,27 @@ var PlankHeading = /* @__PURE__ */ memo(({ id, part, node, deckEnabled, canIncre
278
266
  id,
279
267
  part
280
268
  ]);
281
- const ActionRoot = node && popoverAnchorId === `dxos.org/ui/${meta.id}/${node.id}` ? Popover.Anchor : Fragment;
269
+ const ActionRoot = node && popoverAnchorId === `${meta.id}:${node.id}` ? Popover.Anchor : Fragment;
282
270
  const handleTabClick = useCallback2((event) => {
283
271
  const target = event.target.closest("[data-id]");
284
272
  const tabId = target?.dataset?.id;
285
- if (primaryId && tabId) {
273
+ if (tabId) {
286
274
  void invokePromise(DeckOperation.ChangeCompanion, {
287
- primary: primaryId,
288
275
  companion: tabId
289
276
  });
290
277
  }
291
278
  }, [
292
- primaryId,
293
279
  invokePromise
294
280
  ]);
295
281
  return /* @__PURE__ */ React2.createElement(StackItem.Heading, {
296
282
  classNames: [
297
- "plb-1 items-stretch gap-1 sticky inline-start-12 app-drag min-is-0 contain-layout density-coarse",
298
- part === "solo" ? soloInlinePadding : "pli-1",
283
+ "py-1 items-stretch gap-1 sticky left-12 dx-app-drag min-w-0 dx-contain-layout dx-density-coarse",
284
+ part === "solo" ? soloInlinePadding : "px-1",
299
285
  ...layoutMode === "solo--fullscreen" ? [
300
286
  hoverableControls,
301
287
  hoverableFocusedWithinControls,
302
- "*:transition-opacity *:opacity-[--controls-opacity] bg-transparent border-transparent transition-[background-color,border-color]",
303
- "hover-hover:hover:bg-headerSurface focus-within:bg-headerSurface hover-hover:hover:border-subduedSeparator focus-within:border-subduedSeparator"
288
+ "*:transition-opacity *:opacity-(--controls-opacity) bg-transparent border-transparent transition-[background-color,border-color]",
289
+ "hover-hover:hover:bg-header-surface focus-within:bg-header-surface hover-hover:hover:border-subdued-separator focus-within:border-subdued-separator"
304
290
  ] : []
305
291
  ],
306
292
  "data-plank-heading": true
@@ -308,7 +294,7 @@ var PlankHeading = /* @__PURE__ */ memo(({ id, part, node, deckEnabled, canIncre
308
294
  /* TODO(thure): IMPORTANT: This is a tablist; it should be implemented as such. */
309
295
  /* @__PURE__ */ React2.createElement("div", {
310
296
  role: "none",
311
- className: "flex-1 min-is-0 overflow-x-auto scrollbar-none flex gap-1"
297
+ className: "flex-1 min-w-0 overflow-x-auto scrollbar-none flex gap-1"
312
298
  }, companions.map(({ id: id2, properties: { icon: icon2, label: label4 } }) => /* @__PURE__ */ React2.createElement(IconButton2, {
313
299
  key: id2,
314
300
  "data-id": id2,
@@ -325,7 +311,7 @@ var PlankHeading = /* @__PURE__ */ memo(({ id, part, node, deckEnabled, canIncre
325
311
  triggerLabel: t("actions menu label"),
326
312
  actions: sigilActions,
327
313
  onAction: handleAction
328
- }, /* @__PURE__ */ React2.createElement(Surface, {
314
+ }, /* @__PURE__ */ React2.createElement(Surface.Surface, {
329
315
  role: "menu-footer",
330
316
  data: {
331
317
  subject: node.data
@@ -343,7 +329,7 @@ var PlankHeading = /* @__PURE__ */ memo(({ id, part, node, deckEnabled, canIncre
343
329
  ...pending && {
344
330
  classNames: "text-description"
345
331
  }
346
- }, label3))), node && part !== "complementary" && /* @__PURE__ */ React2.createElement(Surface, {
332
+ }, label3))), node && part !== "complementary" && /* @__PURE__ */ React2.createElement(Surface.Surface, {
347
333
  role: "navbar-end",
348
334
  data: {
349
335
  subject: node.data
@@ -363,45 +349,55 @@ import React3 from "react";
363
349
  var PlankLoading = () => {
364
350
  return /* @__PURE__ */ React3.createElement("div", {
365
351
  role: "none",
366
- className: "grid place-items-center attention-surface"
352
+ className: "grid place-items-center dx-attention-surface"
367
353
  });
368
354
  };
369
355
 
370
356
  // src/components/Plank/PlankError.tsx
371
- var PlankContentError = ({ error }) => {
372
- const { t } = useTranslation3(meta.id);
373
- const errorString = error?.toString() ?? "";
374
- return /* @__PURE__ */ React4.createElement("div", {
375
- role: "none",
376
- className: "overflow-y-auto p-8 attention-surface grid place-items-center"
377
- }, /* @__PURE__ */ React4.createElement("p", {
378
- role: "alert",
379
- className: mx2(descriptionMessage, "break-all rounded-md p-4")
380
- }, error ? errorString : t("error fallback message")));
381
- };
382
357
  var PlankError = ({ id, part, node, error }) => {
383
358
  const [timedOut, setTimedOut] = useState(false);
384
359
  useEffect2(() => {
385
- setTimeout(() => setTimedOut(true), 5e3);
360
+ const timer = setTimeout(() => setTimedOut(true), 5e3);
361
+ return () => clearTimeout(timer);
386
362
  }, []);
387
363
  return /* @__PURE__ */ React4.createElement(React4.Fragment, null, /* @__PURE__ */ React4.createElement(PlankHeading, {
388
364
  id,
389
365
  part,
390
366
  node,
391
367
  pending: !timedOut
392
- }), timedOut ? /* @__PURE__ */ React4.createElement(PlankContentError, {
368
+ }), timedOut ? /* @__PURE__ */ React4.createElement(PlankErrorFallback, {
393
369
  error
394
370
  }) : /* @__PURE__ */ React4.createElement(PlankLoading, null));
395
371
  };
372
+ var PlankErrorFallback = ({ error }) => {
373
+ const { t } = useTranslation3(meta.id);
374
+ if (true) {
375
+ return /* @__PURE__ */ React4.createElement(ErrorFallback, {
376
+ title: "Plank Error",
377
+ error
378
+ });
379
+ } else {
380
+ const errorString = error?.toString() ?? "";
381
+ return /* @__PURE__ */ React4.createElement("div", {
382
+ role: "alert",
383
+ "data-testid": "plank-content-error",
384
+ className: "dx-attention-surface overflow-y-auto p-8 grid place-items-center"
385
+ }, /* @__PURE__ */ React4.createElement("p", {
386
+ className: mx2(descriptionMessage, "break-all rounded-md p-4")
387
+ }, error ? errorString : t("error fallback message")));
388
+ }
389
+ };
396
390
 
397
391
  // src/components/Plank/Plank.tsx
398
392
  var UNKNOWN_ID = "unknown_id";
399
- var Plank = /* @__PURE__ */ memo2(({ id = UNKNOWN_ID, companionId, ...props }) => {
393
+ var Plank = /* @__PURE__ */ memo2(({ id = UNKNOWN_ID, companionVariant, ...props }) => {
400
394
  const { graph } = useAppGraph2();
401
395
  const node = useNode(graph, id);
402
396
  const companions = useCompanions(id);
403
- const currentCompanion = companions.find(({ id: id2 }) => id2 === companionId);
404
- const hasCompanion = !!(companionId && currentCompanion);
397
+ const { companionId } = useSelectedCompanion(companions, companionVariant);
398
+ const resolvedCompanionId = companionVariant ? companionId : void 0;
399
+ const currentCompanion = companions.find(({ id: id2 }) => id2 === resolvedCompanionId);
400
+ const hasCompanion = !!(resolvedCompanionId && currentCompanion);
405
401
  return /* @__PURE__ */ React5.createElement(PlankContainer, {
406
402
  solo: props.part === "solo",
407
403
  companion: hasCompanion,
@@ -416,7 +412,7 @@ var Plank = /* @__PURE__ */ memo2(({ id = UNKNOWN_ID, companionId, ...props }) =
416
412
  part: "solo-primary"
417
413
  } : {}
418
414
  }), hasCompanion && /* @__PURE__ */ React5.createElement(PlankComponent, {
419
- id: companionId,
415
+ id: resolvedCompanionId,
420
416
  node: currentCompanion,
421
417
  primary: node,
422
418
  companions,
@@ -437,7 +433,7 @@ var PlankContainer = ({ children, solo, companion, encapsulate }) => {
437
433
  return /* @__PURE__ */ React5.createElement("div", {
438
434
  role: "none",
439
435
  "data-popover-collision-boundary": true,
440
- className: mx3("absolute inset-[--main-spacing] grid", encapsulate && "border border-separator rounded overflow-hidden", companion && "grid-cols-[6fr_4fr]", railGridHorizontal, mainIntrinsicSize),
436
+ className: mx3("absolute inset-(--main-spacing) grid", encapsulate && "border border-separator rounded-sm overflow-hidden", companion && "grid-cols-[6fr_4fr]", railGridHorizontal, mainIntrinsicSize),
441
437
  ...sizeAttrs
442
438
  }, children);
443
439
  };
@@ -453,8 +449,8 @@ var PlankComponent = /* @__PURE__ */ memo2(({ layoutMode, id, part, path, order,
453
449
  const canIncrementStart = active && index !== void 0 && index > 0 && length !== void 0 && length > 1;
454
450
  const canIncrementEnd = active && index !== void 0 && index < length - 1 && length !== void 0;
455
451
  const rootElement = useRef(null);
456
- const { variant } = parseEntryId(id);
457
- const sizeKey = `${id.split("+")[0]}${variant ? `${ATTENDABLE_PATH_SEPARATOR}${variant}` : ""}`;
452
+ const variant = node?.type === PLANK_COMPANION_TYPE ? getCompanionVariant2(id) : void 0;
453
+ const sizeKey = id.split("+")[0];
458
454
  const size = deck.plankSizing[sizeKey];
459
455
  const handleSizeChange = useCallback3(debounce((nextSize) => {
460
456
  return invokePromise(DeckOperation.UpdatePlankSize, {
@@ -483,7 +479,7 @@ var PlankComponent = /* @__PURE__ */ memo2(({ layoutMode, id, part, path, order,
483
479
  behavior: "smooth",
484
480
  inline: "center"
485
481
  });
486
- void invokePromise(Common2.LayoutOperation.ScrollIntoView, {
482
+ void invokePromise(LayoutOperation2.ScrollIntoView, {
487
483
  subject: void 0
488
484
  });
489
485
  }
@@ -516,7 +512,7 @@ var PlankComponent = /* @__PURE__ */ memo2(({ layoutMode, id, part, path, order,
516
512
  const placeholder = useMemo2(() => /* @__PURE__ */ React5.createElement(PlankLoading, null), []);
517
513
  const Root = part.startsWith("solo") ? "article" : StackItem2.Root;
518
514
  const fullscreen = layoutMode === "solo--fullscreen";
519
- const className = mx3("attention-surface relative dx-focus-ring-inset-over-all density-coarse", isSolo && "absolute inset-0", isSolo && mainIntrinsicSize, railGridHorizontal, part.startsWith("solo") && "grid", part.startsWith("solo-") && "grid-rows-subgrid row-span-2 min-is-0", fullscreen && "grid-rows-1", part === "deck" && (companioned === "companion" ? "!border-separator border-ie" : "!border-separator border-li"), part === "solo-companion" && "!border-separator border-is", settings?.encapsulatedPlanks && !part.startsWith("solo") && "mli-[--main-spacing] !border-separator border rounded overflow-hidden");
515
+ const className = mx3("dx-attention-surface relative dx-focus-ring-inset-over-all dx-density-coarse", isSolo && "absolute inset-0", isSolo && mainIntrinsicSize, railGridHorizontal, part.startsWith("solo") && "grid", part.startsWith("solo-") && "grid-rows-subgrid row-span-2 min-w-0", fullscreen && "grid-rows-1", part === "deck" && (companioned === "companion" ? "border-separator! border-e" : "border-separator! border-x"), part === "solo-companion" && "border-separator! border-s", settings?.encapsulatedPlanks && !part.startsWith("solo") && "mx-(--main-spacing) border-separator! border rounded-sm overflow-hidden");
520
516
  return /* @__PURE__ */ React5.createElement(Root, {
521
517
  ref: rootElement,
522
518
  "data-testid": "deck.plank",
@@ -549,12 +545,12 @@ var PlankComponent = /* @__PURE__ */ memo2(({ layoutMode, id, part, path, order,
549
545
  primaryId: primary?.id,
550
546
  companioned,
551
547
  companions
552
- }), /* @__PURE__ */ React5.createElement(Surface2, {
548
+ }), /* @__PURE__ */ React5.createElement(Surface2.Surface, {
553
549
  key: node.id,
554
550
  role: "article",
555
551
  data,
556
552
  limit: 1,
557
- fallback: PlankContentError,
553
+ fallback: PlankErrorFallback,
558
554
  placeholder
559
555
  })) : /* @__PURE__ */ React5.createElement(PlankError, {
560
556
  id,
@@ -564,16 +560,16 @@ var PlankComponent = /* @__PURE__ */ memo2(({ layoutMode, id, part, path, order,
564
560
 
565
561
  // src/components/Sidebar/SidebarButton.tsx
566
562
  import React6, { useCallback as useCallback4 } from "react";
567
- import { Common as Common3 } from "@dxos/app-framework";
568
- import { useOperationInvoker as useOperationInvoker4 } from "@dxos/app-framework/react";
563
+ import { useOperationInvoker as useOperationInvoker4 } from "@dxos/app-framework/ui";
564
+ import { LayoutOperation as LayoutOperation3, getCompanionVariant as getCompanionVariant3 } from "@dxos/app-toolkit";
569
565
  import { IconButton as IconButton3, useTranslation as useTranslation4 } from "@dxos/react-ui";
570
566
  var ToggleSidebarButton = ({ classNames, variant = "ghost" }) => {
571
- const { state, updateState } = useDeckState();
567
+ const { updateState } = useDeckState();
572
568
  const { t } = useTranslation4(meta.id);
573
569
  const handleClick = useCallback4(() => {
574
- updateState((s) => ({
575
- ...s,
576
- sidebarState: s.sidebarState === "expanded" ? "collapsed" : "expanded"
570
+ updateState((state) => ({
571
+ ...state,
572
+ sidebarState: state.sidebarState === "expanded" ? "collapsed" : "expanded"
577
573
  }));
578
574
  }, [
579
575
  updateState
@@ -592,8 +588,8 @@ var CloseSidebarButton = () => {
592
588
  const { updateState } = useDeckState();
593
589
  const { t } = useTranslation4(meta.id);
594
590
  const handleClick = useCallback4(() => {
595
- updateState((s) => ({
596
- ...s,
591
+ updateState((state) => ({
592
+ ...state,
597
593
  sidebarState: "collapsed"
598
594
  }));
599
595
  }, [
@@ -606,7 +602,7 @@ var CloseSidebarButton = () => {
606
602
  size: 4,
607
603
  label: t("close navigation sidebar label"),
608
604
  onClick: handleClick,
609
- classNames: "rounded-none pli-1 dx-focus-ring-inset pie-[max(.5rem,env(safe-area-inset-left))]"
605
+ classNames: "rounded-none px-1 dx-focus-ring-inset pe-[max(.5rem,env(safe-area-inset-left))]"
610
606
  });
611
607
  };
612
608
  var ToggleComplementarySidebarButton = ({ inR0, classNames, current }) => {
@@ -616,13 +612,13 @@ var ToggleComplementarySidebarButton = ({ inR0, classNames, current }) => {
616
612
  const companions = useDeckCompanions();
617
613
  const handleClick = useCallback4(() => {
618
614
  const nextState = state.complementarySidebarState === "expanded" ? "collapsed" : "expanded";
619
- updateState((s) => ({
620
- ...s,
615
+ updateState((state2) => ({
616
+ ...state2,
621
617
  complementarySidebarState: nextState
622
618
  }));
623
- const subject = state.complementarySidebarPanel ?? (companions[0] && getCompanionId(companions[0].id));
619
+ const subject = state.complementarySidebarPanel ?? (companions[0] && getCompanionVariant3(companions[0].id));
624
620
  if (nextState === "expanded" && !current && subject) {
625
- invokeSync(Common3.LayoutOperation.UpdateComplementary, {
621
+ invokeSync(LayoutOperation3.UpdateComplementary, {
626
622
  subject
627
623
  });
628
624
  }
@@ -664,8 +660,8 @@ var ComplementarySidebar = ({ current }) => {
664
660
  const topbar = layoutAppliesTopbar(breakpoint, layoutMode);
665
661
  const hoistStatusbar = useHoistStatusbar(breakpoint, layoutMode);
666
662
  const companions = useDeckCompanions();
667
- const activeCompanion = companions.find((companion) => getCompanionId(companion.id) === current);
668
- const activeId = activeCompanion && getCompanionId(activeCompanion.id);
663
+ const activeCompanion = companions.find((companion) => getCompanionVariant4(companion.id) === current);
664
+ const activeId = activeCompanion && getCompanionVariant4(activeCompanion.id);
669
665
  const [internalValue, setInternalValue] = useState2(activeId);
670
666
  useEffect3(() => {
671
667
  setInternalValue(activeId);
@@ -675,17 +671,17 @@ var ComplementarySidebar = ({ current }) => {
675
671
  const handleTabClick = useCallback5((event) => {
676
672
  const nextValue = event.currentTarget.getAttribute("data-value");
677
673
  if (nextValue === activeId) {
678
- updateState((s) => ({
679
- ...s,
680
- complementarySidebarState: s.complementarySidebarState === "expanded" ? "collapsed" : "expanded"
674
+ updateState((state2) => ({
675
+ ...state2,
676
+ complementarySidebarState: state2.complementarySidebarState === "expanded" ? "collapsed" : "expanded"
681
677
  }));
682
678
  } else {
683
679
  setInternalValue(nextValue);
684
- updateState((s) => ({
685
- ...s,
680
+ updateState((state2) => ({
681
+ ...state2,
686
682
  complementarySidebarState: "expanded"
687
683
  }));
688
- invokeSync(Common4.LayoutOperation.UpdateComplementary, {
684
+ invokeSync(LayoutOperation4.UpdateComplementary, {
689
685
  subject: nextValue
690
686
  });
691
687
  }
@@ -704,7 +700,7 @@ var ComplementarySidebar = ({ current }) => {
704
700
  ]);
705
701
  useEffect3(() => {
706
702
  if (!activeId) {
707
- invokeSync(Common4.LayoutOperation.UpdateComplementary, {
703
+ invokeSync(LayoutOperation4.UpdateComplementary, {
708
704
  state: "collapsed"
709
705
  });
710
706
  }
@@ -715,8 +711,8 @@ var ComplementarySidebar = ({ current }) => {
715
711
  return /* @__PURE__ */ React7.createElement(Main.ComplementarySidebar, {
716
712
  label,
717
713
  classNames: [
718
- topbar && "block-start-[calc(env(safe-area-inset-top)+var(--rail-size))]",
719
- hoistStatusbar && "block-end-[--statusbar-size]"
714
+ topbar && "top-[calc(env(safe-area-inset-top)+var(--dx-rail-size))]",
715
+ hoistStatusbar && "bottom-(--dx-statusbar-size)"
720
716
  ]
721
717
  }, /* @__PURE__ */ React7.createElement(Tabs.Root, {
722
718
  orientation: "vertical",
@@ -725,37 +721,37 @@ var ComplementarySidebar = ({ current }) => {
725
721
  classNames: "contents"
726
722
  }, /* @__PURE__ */ React7.createElement("div", {
727
723
  role: "none",
728
- className: mx4("absolute z-[1] inset-block-0 inline-end-0 !is-[--r0-size]", "pbs-[env(safe-area-inset-top)] pbe-[env(safe-area-inset-bottom)] border-is border-subduedSeparator", "grid grid-cols-1 grid-rows-[1fr_min-content] bg-baseSurface contain-layout app-drag")
724
+ className: mx4("absolute z-[1] inset-y-0 end-0 !w-(--dx-r0-size)", "py-[env(safe-area-inset-top)] pb-[env(safe-area-inset-bottom)] border-s border-subdued-separator", "grid grid-cols-1 grid-rows-[1fr_min-content] bg-toolbar-surface dx-contain-layout dx-app-drag")
729
725
  }, /* @__PURE__ */ React7.createElement(Tabs.Tablist, {
730
- classNames: "grid grid-cols-1 auto-rows-[--rail-action] p-1 gap-1 !overflow-y-auto"
726
+ classNames: "grid grid-cols-1 auto-rows-(--dx-rail-action) p-1 gap-1 overflow-y-auto!"
731
727
  }, companions.map((companion) => /* @__PURE__ */ React7.createElement(Tabs.Tab, {
732
- key: getCompanionId(companion.id),
733
- value: getCompanionId(companion.id),
728
+ key: getCompanionVariant4(companion.id),
729
+ value: getCompanionVariant4(companion.id),
734
730
  asChild: true
735
731
  }, /* @__PURE__ */ React7.createElement(IconButton4, {
736
732
  label: toLocalizedString2(companion.properties.label, t),
737
733
  icon: companion.properties.icon,
738
734
  iconOnly: true,
739
735
  tooltipSide: "left",
740
- "data-value": getCompanionId(companion.id),
741
- variant: activeId === getCompanionId(companion.id) ? state.complementarySidebarState === "expanded" ? "primary" : "default" : "ghost",
736
+ "data-value": getCompanionVariant4(companion.id),
737
+ variant: activeId === getCompanionVariant4(companion.id) ? state.complementarySidebarState === "expanded" ? "primary" : "default" : "ghost",
742
738
  onClick: handleTabClick
743
739
  })))), !hoistStatusbar && /* @__PURE__ */ React7.createElement("div", {
744
740
  role: "none",
745
- className: "grid grid-cols-1 auto-rows-[--rail-item] p-1 overflow-y-auto"
746
- }, /* @__PURE__ */ React7.createElement(Surface3, {
741
+ className: "grid grid-cols-1 auto-rows-(--dx-rail-item) p-1 overflow-y-auto"
742
+ }, /* @__PURE__ */ React7.createElement(Surface3.Surface, {
747
743
  role: "status-bar--r0-footer",
748
744
  limit: 1
749
745
  })), /* @__PURE__ */ React7.createElement("div", {
750
746
  role: "none",
751
- className: "hidden lg:grid grid-cols-1 auto-rows-[--rail-action] p-1"
747
+ className: "hidden lg:grid grid-cols-1 auto-rows-(--dx-rail-action) p-1"
752
748
  }, /* @__PURE__ */ React7.createElement(ToggleComplementarySidebarButton, null))), activeId && companions.map((companion) => /* @__PURE__ */ React7.createElement(Tabs.Tabpanel, {
753
- key: getCompanionId(companion.id),
754
- value: getCompanionId(companion.id),
749
+ key: getCompanionVariant4(companion.id),
750
+ value: getCompanionVariant4(companion.id),
755
751
  classNames: [
756
752
  'absolute data-[state="inactive"]:-z-[1] overflow-hidden',
757
- "inset-block-0 inline-start-0 is-[calc(100%-var(--r0-size))] lg:is-[--r1-size]",
758
- "grid grid-cols-1 grid-rows-[var(--rail-size)_1fr_min-content] pbs-[env(safe-area-inset-top)]"
753
+ "inset-y-0 start-0 w-[calc(100%-var(--dx-r0-size))] lg:w-(--dx-r1-size)",
754
+ "grid grid-cols-1 grid-rows-[var(--dx-rail-size)_1fr_min-content] py-[env(safe-area-inset-top)]"
759
755
  ],
760
756
  ...state.complementarySidebarState !== "expanded" && {
761
757
  inert: true
@@ -769,46 +765,48 @@ var ComplementarySidebar = ({ current }) => {
769
765
  };
770
766
  var ComplementarySidebarPanel = ({ companion, activeId, data, hoistStatusbar }) => {
771
767
  const { t } = useTranslation5(meta.id);
772
- if (getCompanionId(companion.id) !== activeId && !data) {
768
+ if (getCompanionVariant4(companion.id) !== activeId && !data) {
773
769
  return null;
774
770
  }
775
- const Wrapper = companion.properties.fixed ? Fragment2 : ScrollArea;
771
+ const Wrapper = companion.properties.fixed ? Fragment2 : ScrollAreaWrapper;
776
772
  return /* @__PURE__ */ React7.createElement(React7.Fragment, null, /* @__PURE__ */ React7.createElement("div", {
777
773
  role: "none",
778
- className: "flex items-center p-1 gap-1 border-be border-subduedSeparator"
774
+ className: "flex items-center p-1 gap-1 border-b border-subdued-separator"
779
775
  }, /* @__PURE__ */ React7.createElement(IconButton4, {
780
776
  label: toLocalizedString2(companion.properties.label, t),
781
777
  icon: companion.properties.icon,
782
778
  iconOnly: true,
783
779
  tooltipSide: "left",
784
- "data-value": getCompanionId(companion.id),
785
- classNames: "bs-10 is-10",
780
+ "data-value": getCompanionVariant4(companion.id),
781
+ classNames: "h-10 w-10",
786
782
  variant: "default"
787
783
  }), /* @__PURE__ */ React7.createElement("div", {
788
784
  role: "none",
789
- className: "pli-1"
790
- }, toLocalizedString2(companion.properties.label, t))), /* @__PURE__ */ React7.createElement(Wrapper, null, /* @__PURE__ */ React7.createElement(Surface3, {
791
- role: `deck-companion--${getCompanionId(companion.id)}`,
785
+ className: "px-1"
786
+ }, toLocalizedString2(companion.properties.label, t))), /* @__PURE__ */ React7.createElement(Wrapper, null, /* @__PURE__ */ React7.createElement(Surface3.Surface, {
787
+ role: `deck-companion--${getCompanionVariant4(companion.id)}`,
792
788
  data,
793
- fallback: PlankContentError,
789
+ fallback: PlankErrorFallback,
794
790
  placeholder: /* @__PURE__ */ React7.createElement(PlankLoading, null)
795
791
  })), !hoistStatusbar && /* @__PURE__ */ React7.createElement("div", {
796
792
  role: "contentinfo",
797
- className: "flex flex-wrap justify-center items-center border-bs border-subduedSeparator pbs-1 pbe-[max(env(safe-area-inset-bottom),0.25rem)]"
798
- }, /* @__PURE__ */ React7.createElement(Surface3, {
793
+ className: "flex flex-wrap justify-center items-center border-y border-subdued-separator pt-1 pb-[max(env(safe-area-inset-bottom),0.25rem)]"
794
+ }, /* @__PURE__ */ React7.createElement(Surface3.Surface, {
799
795
  role: "status-bar--r1-footer",
800
796
  limit: 1
801
797
  })));
802
798
  };
803
- var ScrollArea = ({ children }) => {
804
- return /* @__PURE__ */ React7.createElement("div", {
805
- className: "flex flex-col grow overflow-x-hidden overflow-y-auto scrollbar-thin"
806
- }, children);
799
+ var ScrollAreaWrapper = ({ children }) => {
800
+ return /* @__PURE__ */ React7.createElement(ScrollArea.Root, {
801
+ thin: true,
802
+ orientation: "vertical",
803
+ classNames: "grow"
804
+ }, /* @__PURE__ */ React7.createElement(ScrollArea.Viewport, null, children));
807
805
  };
808
806
 
809
807
  // src/components/Sidebar/Sidebar.tsx
810
808
  import React8, { useMemo as useMemo4 } from "react";
811
- import { Surface as Surface4 } from "@dxos/app-framework/react";
809
+ import { Surface as Surface4 } from "@dxos/app-framework/ui";
812
810
  import { Main as Main2 } from "@dxos/react-ui";
813
811
  var label2 = [
814
812
  "sidebar title",
@@ -838,10 +836,10 @@ var Sidebar = () => {
838
836
  label: label2,
839
837
  classNames: [
840
838
  "grid",
841
- topbar && "block-start-[calc(env(safe-area-inset-top)+var(--rail-size))]",
842
- hoistStatusbar && "block-end-[--statusbar-size]"
839
+ topbar && "top-[calc(env(safe-area-inset-top)+var(--dx-rail-size))]",
840
+ hoistStatusbar && "bottom-(--dx-statusbar-size)"
843
841
  ]
844
- }, /* @__PURE__ */ React8.createElement(Surface4, {
842
+ }, /* @__PURE__ */ React8.createElement(Surface4.Surface, {
845
843
  role: "navigation",
846
844
  data: navigationData,
847
845
  limit: 1
@@ -852,9 +850,9 @@ var Sidebar = () => {
852
850
  var Banner = ({ variant, classNames }) => {
853
851
  const { t } = useTranslation6(meta.id);
854
852
  return /* @__PURE__ */ React9.createElement("header", {
855
- className: mx5("flex items-stretch relative plb-1 pis-1 pie-2", variant === "topbar" && "fixed inset-inline-0 block-start-[env(safe-area-inset-top)] bs-[--rail-size] border-be border-separator", classNames)
853
+ className: mx5("flex items-stretch relative py-1 ps-1 pe-2", variant === "topbar" && "fixed inset-x-0 top-[env(safe-area-inset-top)] h-(--dx-rail-size) border-b border-separator", classNames)
856
854
  }, variant === "sidebar" ? /* @__PURE__ */ React9.createElement(CloseSidebarButton, null) : /* @__PURE__ */ React9.createElement(ToggleSidebarButton, null), /* @__PURE__ */ React9.createElement("span", {
857
- className: "self-center grow mis-1"
855
+ className: "self-center grow ms-1"
858
856
  }, t("current app name", {
859
857
  ns: osTranslations
860
858
  })), variant === "topbar" && /* @__PURE__ */ React9.createElement("div", {
@@ -862,17 +860,17 @@ var Banner = ({ variant, classNames }) => {
862
860
  className: "absolute inset-0 pointer-events-none"
863
861
  }, /* @__PURE__ */ React9.createElement("div", {
864
862
  role: "none",
865
- className: "grid bs-full pointer-fine:p-1 max-is-md mli-auto pointer-events-auto"
866
- }, /* @__PURE__ */ React9.createElement(Surface5, {
863
+ className: "grid h-full pointer-fine:p-1 max-w-md mx-auto pointer-events-auto"
864
+ }, /* @__PURE__ */ React9.createElement(Surface5.Surface, {
867
865
  role: "search-input",
868
866
  limit: 1
869
867
  }))), /* @__PURE__ */ React9.createElement("span", {
870
868
  role: "none",
871
869
  className: "grow"
872
- }), /* @__PURE__ */ React9.createElement(Surface5, {
870
+ }), /* @__PURE__ */ React9.createElement(Surface5.Surface, {
873
871
  role: "header-end",
874
872
  limit: 1
875
- }), /* @__PURE__ */ React9.createElement(Surface5, {
873
+ }), /* @__PURE__ */ React9.createElement(Surface5.Surface, {
876
874
  role: "notch-start",
877
875
  limit: 1
878
876
  }));
@@ -884,7 +882,8 @@ import { Mosaic } from "@dxos/react-ui-mosaic";
884
882
 
885
883
  // src/components/DeckLayout/ActiveNode.tsx
886
884
  import React10 from "react";
887
- import { Surface as Surface6, useAppGraph as useAppGraph3 } from "@dxos/app-framework/react";
885
+ import { Surface as Surface6 } from "@dxos/app-framework/ui";
886
+ import { useAppGraph as useAppGraph3 } from "@dxos/app-toolkit/ui";
888
887
  import { useNode as useNode2 } from "@dxos/plugin-graph";
889
888
  import { useAttended } from "@dxos/react-ui-attention";
890
889
  var ActiveNode = () => {
@@ -895,7 +894,7 @@ var ActiveNode = () => {
895
894
  return /* @__PURE__ */ React10.createElement("div", {
896
895
  role: "none",
897
896
  className: "sr-only"
898
- }, /* @__PURE__ */ React10.createElement(Surface6, {
897
+ }, /* @__PURE__ */ React10.createElement(Surface6.Surface, {
899
898
  role: "document-title",
900
899
  data: {
901
900
  subject: activeNode
@@ -906,8 +905,8 @@ var ActiveNode = () => {
906
905
 
907
906
  // src/components/DeckLayout/DeckMain.tsx
908
907
  import React14, { Fragment as Fragment3, useCallback as useCallback6, useEffect as useEffect4, useMemo as useMemo5, useRef as useRef2 } from "react";
909
- import { Common as Common5 } from "@dxos/app-framework";
910
- import { useAtomCapability, useOperationInvoker as useOperationInvoker6, usePluginManager } from "@dxos/app-framework/react";
908
+ import { useAtomCapability, useOperationInvoker as useOperationInvoker6, usePluginManager } from "@dxos/app-framework/ui";
909
+ import { LayoutOperation as LayoutOperation5 } from "@dxos/app-toolkit";
911
910
  import { AttentionCapabilities } from "@dxos/plugin-attention";
912
911
  import { Main as Main3, useMediaQuery, useOnTransition } from "@dxos/react-ui";
913
912
  import { DEFAULT_HORIZONTAL_SIZE, Stack, StackContext } from "@dxos/react-ui-stack";
@@ -915,7 +914,7 @@ import { mainPaddingTransitions, mx as mx6 } from "@dxos/ui-theme";
915
914
 
916
915
  // src/components/DeckLayout/ContentEmpty.tsx
917
916
  import React11 from "react";
918
- import { Surface as Surface7 } from "@dxos/app-framework/react";
917
+ import { Surface as Surface7 } from "@dxos/app-framework/ui";
919
918
  var ContentEmpty = () => {
920
919
  const breakpoint = useBreakpoints();
921
920
  const { deck } = useDeckState();
@@ -923,9 +922,9 @@ var ContentEmpty = () => {
923
922
  const topbar = layoutAppliesTopbar(breakpoint, layoutMode);
924
923
  return /* @__PURE__ */ React11.createElement("div", {
925
924
  role: "none",
926
- className: "grid place-items-center p-8 relative bg-deckSurface",
925
+ className: "grid place-items-center p-8 relative bg-deck-surface",
927
926
  "data-testid": "layoutPlugin.firstRunMessage"
928
- }, /* @__PURE__ */ React11.createElement(Surface7, {
927
+ }, /* @__PURE__ */ React11.createElement(Surface7.Surface, {
929
928
  role: "keyshortcuts"
930
929
  }), !topbar && /* @__PURE__ */ React11.createElement(ToggleSidebarButton, {
931
930
  variant: "default",
@@ -935,18 +934,18 @@ var ContentEmpty = () => {
935
934
 
936
935
  // src/components/DeckLayout/StatusBar.tsx
937
936
  import React12 from "react";
938
- import { Surface as Surface8 } from "@dxos/app-framework/react";
937
+ import { Surface as Surface8 } from "@dxos/app-framework/ui";
939
938
  import { useLandmarkMover } from "@dxos/react-ui";
940
939
  var StatusBar = ({ showHints }) => {
941
940
  const mover = useLandmarkMover(void 0, "3");
942
941
  return /* @__PURE__ */ React12.createElement("div", {
943
942
  role: "contentinfo",
944
- className: "fixed block-end-0 inset-inline-0 bs-[--statusbar-size] border-bs border-separator z-[2] flex text-description",
943
+ className: "fixed bottom-0 inset-x-0 h-(--dx-statusbar-size) border-y border-separator z-[2] flex text-description",
945
944
  ...mover
946
- }, showHints && /* @__PURE__ */ React12.createElement(Surface8, {
945
+ }, showHints && /* @__PURE__ */ React12.createElement(Surface8.Surface, {
947
946
  role: "hints",
948
947
  limit: 1
949
- }), /* @__PURE__ */ React12.createElement(Surface8, {
948
+ }), /* @__PURE__ */ React12.createElement(Surface8.Surface, {
950
949
  role: "status-bar",
951
950
  limit: 1
952
951
  }));
@@ -966,7 +965,8 @@ var DeckMain = () => {
966
965
  const settings = useAtomCapability(DeckCapabilities.Settings);
967
966
  const { state, deck, updateState } = useDeckState();
968
967
  const { sidebarState, complementarySidebarState, complementarySidebarPanel } = state;
969
- const { active, activeCompanions, fullscreen, solo, plankSizing } = deck;
968
+ const { active, companionOpen, companionVariant, fullscreen, solo, plankSizing } = deck;
969
+ const effectiveCompanionVariant = companionOpen ? companionVariant : void 0;
970
970
  const layoutMode = getMode(deck);
971
971
  const breakpoint = useBreakpoints();
972
972
  const topbar = layoutAppliesTopbar(breakpoint, layoutMode);
@@ -989,12 +989,12 @@ var DeckMain = () => {
989
989
  const attention = pluginManager.capabilities.get(AttentionCapabilities.Attention);
990
990
  const attended = attention.getCurrent();
991
991
  shouldRevert.current = true;
992
- invokeSync(Common5.LayoutOperation.SetLayoutMode, {
992
+ invokeSync(LayoutOperation5.SetLayoutMode, {
993
993
  subject: attended[0],
994
994
  mode: "solo"
995
995
  });
996
996
  } else if (isNotMobile && layoutMode === "solo" && shouldRevert.current) {
997
- invokeSync(Common5.LayoutOperation.SetLayoutMode, {
997
+ invokeSync(LayoutOperation5.SetLayoutMode, {
998
998
  revert: true
999
999
  });
1000
1000
  }
@@ -1005,7 +1005,7 @@ var DeckMain = () => {
1005
1005
  ]);
1006
1006
  useEffect4(() => {
1007
1007
  if (!settings?.enableDeck && layoutMode === "deck") {
1008
- invokeSync(Common5.LayoutOperation.SetLayoutMode, {
1008
+ invokeSync(LayoutOperation5.SetLayoutMode, {
1009
1009
  subject: active[0],
1010
1010
  mode: "solo"
1011
1011
  });
@@ -1050,9 +1050,9 @@ var DeckMain = () => {
1050
1050
  deck
1051
1051
  ]);
1052
1052
  const mainPosition = useMemo5(() => [
1053
- "grid !block-start-[env(safe-area-inset-top)]",
1054
- topbar && "!block-start-[calc(env(safe-area-inset-top)+var(--rail-size))]",
1055
- hoistStatusbar && "lg:block-end-[--statusbar-size]"
1053
+ "grid !top-[env(safe-area-inset-top)]",
1054
+ topbar && "!top-[calc(env(safe-area-inset-top)+var(--dx-rail-size))]",
1055
+ hoistStatusbar && "lg:bottom-(--dx-statusbar-size)"
1056
1056
  ], [
1057
1057
  topbar,
1058
1058
  hoistStatusbar
@@ -1060,7 +1060,7 @@ var DeckMain = () => {
1060
1060
  const { order, itemsCount } = useMemo5(() => {
1061
1061
  return active.reduce((acc, entryId) => {
1062
1062
  acc.order[entryId] = acc.itemsCount + 1;
1063
- acc.itemsCount += activeCompanions?.[entryId] ? 3 : 2;
1063
+ acc.itemsCount += companionOpen ? 3 : 2;
1064
1064
  return acc;
1065
1065
  }, {
1066
1066
  order: {},
@@ -1068,7 +1068,7 @@ var DeckMain = () => {
1068
1068
  });
1069
1069
  }, [
1070
1070
  active,
1071
- activeCompanions
1071
+ companionOpen
1072
1072
  ]);
1073
1073
  const handleNavigationSidebarStateChange = useCallback6((next) => {
1074
1074
  updateState((s) => ({
@@ -1103,14 +1103,14 @@ var DeckMain = () => {
1103
1103
  classNames: mainPosition,
1104
1104
  style: {
1105
1105
  "--main-spacing": settings?.encapsulatedPlanks ? "0.75rem" : "0",
1106
- "--dx-main-sidebarWidth": sidebarState === "expanded" ? "var(--nav-sidebar-size)" : sidebarState === "collapsed" ? "var(--l0-size)" : "0",
1107
- "--dx-main-complementaryWidth": complementarySidebarState === "expanded" ? "var(--complementary-sidebar-size)" : complementarySidebarState === "collapsed" ? "var(--rail-size)" : "0",
1108
- "--dx-main-contentFirstWidth": `${plankSizing[active[0] ?? "never"] ?? DEFAULT_HORIZONTAL_SIZE}rem`,
1109
- "--dx-main-contentLastWidth": `${plankSizing[active[(active.length ?? 1) - 1] ?? "never"] ?? DEFAULT_HORIZONTAL_SIZE}rem`
1106
+ "--dx-main-sidebar-width": sidebarState === "expanded" ? "var(--dx-nav-sidebar-size)" : sidebarState === "collapsed" ? "var(--dx-l0-size)" : "0",
1107
+ "--dx-main-complementary-width": complementarySidebarState === "expanded" ? "var(--dx-complementary-sidebar-size)" : complementarySidebarState === "collapsed" ? "var(--dx-rail-size)" : "0",
1108
+ "--dx-main-content-first-width": `${plankSizing[active[0] ?? "never"] ?? DEFAULT_HORIZONTAL_SIZE}rem`,
1109
+ "--dx-main-content-last-width": `${plankSizing[active[(active.length ?? 1) - 1] ?? "never"] ?? DEFAULT_HORIZONTAL_SIZE}rem`
1110
1110
  }
1111
1111
  }, /* @__PURE__ */ React14.createElement("div", {
1112
1112
  role: "none",
1113
- className: !solo ? "relative bg-deckSurface overflow-hidden" : "sr-only",
1113
+ className: !solo ? "relative bg-deck-surface overflow-hidden" : "sr-only",
1114
1114
  ...solo && {
1115
1115
  inert: true
1116
1116
  }
@@ -1124,7 +1124,7 @@ var DeckMain = () => {
1124
1124
  size: "contain",
1125
1125
  itemsCount: itemsCount - 1,
1126
1126
  classNames: [
1127
- "absolute inset-block-[--main-spacing] -inset-inline-px bs-[calc(100%-2*var(--main-spacing))]",
1127
+ "absolute inset-y-(--main-spacing) -inset-w-px h-[calc(100%-2*var(--main-spacing))]",
1128
1128
  mainPaddingTransitions
1129
1129
  ],
1130
1130
  style: padding,
@@ -1136,7 +1136,7 @@ var DeckMain = () => {
1136
1136
  encapsulate: !!settings?.enableDeck
1137
1137
  }), /* @__PURE__ */ React14.createElement(Plank, {
1138
1138
  id: entryId,
1139
- companionId: activeCompanions?.[entryId],
1139
+ companionVariant: effectiveCompanionVariant,
1140
1140
  part: "deck",
1141
1141
  order: order[entryId],
1142
1142
  active,
@@ -1144,7 +1144,7 @@ var DeckMain = () => {
1144
1144
  settings
1145
1145
  }))))), /* @__PURE__ */ React14.createElement("div", {
1146
1146
  role: "none",
1147
- className: solo ? "relative overflow-hidden bg-deckSurface" : "sr-only",
1147
+ className: solo ? "relative overflow-hidden bg-deck-surface" : "sr-only",
1148
1148
  ...!solo && {
1149
1149
  inert: true
1150
1150
  }
@@ -1160,7 +1160,7 @@ var DeckMain = () => {
1160
1160
  }
1161
1161
  }, /* @__PURE__ */ React14.createElement(Plank, {
1162
1162
  id: solo,
1163
- companionId: solo ? activeCompanions?.[solo] : void 0,
1163
+ companionVariant: effectiveCompanionVariant,
1164
1164
  part: "solo",
1165
1165
  layoutMode,
1166
1166
  settings
@@ -1170,7 +1170,7 @@ var DeckMain = () => {
1170
1170
  };
1171
1171
  var PlankSeparator = ({ order, encapsulate }) => order > 0 ? /* @__PURE__ */ React14.createElement("span", {
1172
1172
  role: "separator",
1173
- className: mx6("row-span-2 bg-deckSurface", encapsulate ? "is-0" : "is-4"),
1173
+ className: mx6("row-span-2 bg-deck-surface", encapsulate ? "w-0" : "w-4"),
1174
1174
  style: {
1175
1175
  gridColumn: order
1176
1176
  }
@@ -1178,7 +1178,7 @@ var PlankSeparator = ({ order, encapsulate }) => order > 0 ? /* @__PURE__ */ Rea
1178
1178
 
1179
1179
  // src/components/DeckLayout/Dialog.tsx
1180
1180
  import React15, { useCallback as useCallback7 } from "react";
1181
- import { Surface as Surface9 } from "@dxos/app-framework/react";
1181
+ import { Surface as Surface9 } from "@dxos/app-framework/ui";
1182
1182
  import { AlertDialog, Dialog as NaturalDialog } from "@dxos/react-ui";
1183
1183
  var Dialog = () => {
1184
1184
  const { state, updateEphemeral } = useDeckState();
@@ -1199,31 +1199,33 @@ var Dialog = () => {
1199
1199
  onOpenChange: handleOpenChange
1200
1200
  }, dialogBlockAlign === "end" ? (
1201
1201
  // TODO(burdon): Placeholder creates a suspense boundary; replace with defaults.
1202
- /* @__PURE__ */ React15.createElement(Surface9, {
1202
+ /* @__PURE__ */ React15.createElement(Surface9.Surface, {
1203
1203
  role: "dialog",
1204
1204
  data: dialogContent,
1205
1205
  limit: 1,
1206
- fallback: PlankContentError,
1206
+ fallback: PlankErrorFallback,
1207
1207
  placeholder: /* @__PURE__ */ React15.createElement("div", null)
1208
1208
  })
1209
1209
  ) : /* @__PURE__ */ React15.createElement(Overlay, {
1210
1210
  blockAlign: dialogBlockAlign,
1211
1211
  classNames: dialogOverlayClasses,
1212
1212
  style: dialogOverlayStyle
1213
- }, /* @__PURE__ */ React15.createElement(Surface9, {
1213
+ }, /* @__PURE__ */ React15.createElement(Surface9.Surface, {
1214
1214
  role: "dialog",
1215
1215
  data: dialogContent,
1216
1216
  limit: 1,
1217
- fallback: PlankContentError
1217
+ fallback: PlankErrorFallback
1218
1218
  })));
1219
1219
  };
1220
1220
 
1221
1221
  // src/components/DeckLayout/Popover.tsx
1222
1222
  import { createContext } from "@radix-ui/react-context";
1223
1223
  import React16, { useCallback as useCallback8, useEffect as useEffect5, useRef as useRef3, useState as useState3 } from "react";
1224
- import { Surface as Surface10 } from "@dxos/app-framework/react";
1224
+ import { Surface as Surface10, useOperationInvoker as useOperationInvoker7 } from "@dxos/app-framework/ui";
1225
+ import { LayoutOperation as LayoutOperation6 } from "@dxos/app-toolkit";
1226
+ import { useObjectNavigate } from "@dxos/app-toolkit/ui";
1225
1227
  import { Popover as Popover2, toLocalizedString as toLocalizedString3, useTranslation as useTranslation7 } from "@dxos/react-ui";
1226
- import { Card } from "@dxos/react-ui-mosaic";
1228
+ import { Card } from "@dxos/react-ui";
1227
1229
  var DEBOUNCE_DELAY = 40;
1228
1230
  var [DeckPopoverProvider, useDeckPopoverContext] = createContext("DeckPopover");
1229
1231
  var PopoverRoot = ({ children }) => {
@@ -1260,10 +1262,13 @@ var PopoverRoot = ({ children }) => {
1260
1262
  virtualRef
1261
1263
  }), children));
1262
1264
  };
1265
+ var getPopoverSubject = (content) => content && typeof content === "object" && "subject" in content ? content.subject : content;
1263
1266
  var PopoverContent = () => {
1264
1267
  const { t } = useTranslation7(meta.id);
1265
1268
  const { state, updateEphemeral } = useDeckState();
1266
1269
  const { setOpen } = useDeckPopoverContext("PopoverContent");
1270
+ const { invokeSync } = useOperationInvoker7();
1271
+ const handleNavigate = useObjectNavigate(getPopoverSubject(state.popoverContent));
1267
1272
  const handleClose = useCallback8(() => {
1268
1273
  setOpen(false);
1269
1274
  updateEphemeral((state2) => ({
@@ -1294,17 +1299,33 @@ var PopoverContent = () => {
1294
1299
  hideWhenDetached: true,
1295
1300
  onInteractOutside: handleInteractOutside,
1296
1301
  onEscapeKeyDown: handleInteractOutside
1297
- }, /* @__PURE__ */ React16.createElement(Popover2.Viewport, null, state.popoverKind === "card" && /* @__PURE__ */ React16.createElement(Card.Root, null, /* @__PURE__ */ React16.createElement(Card.Toolbar, null, /* @__PURE__ */ React16.createElement("span", null), state.popoverTitle ? /* @__PURE__ */ React16.createElement(Card.Title, null, toLocalizedString3(state.popoverTitle, t)) : /* @__PURE__ */ React16.createElement("span", null), /* @__PURE__ */ React16.createElement(Card.Close, {
1298
- onClick: handleClose
1299
- })), /* @__PURE__ */ React16.createElement(Surface10, {
1300
- role: "card--content",
1302
+ }, /* @__PURE__ */ React16.createElement(Popover2.Viewport, null, state.popoverKind === "base" && /* @__PURE__ */ React16.createElement(Surface10.Surface, {
1303
+ role: "popover",
1301
1304
  data: state.popoverContent,
1302
1305
  limit: 1
1303
- })), state.popoverKind === "base" && /* @__PURE__ */ React16.createElement(Surface10, {
1304
- role: "popover",
1306
+ }), state.popoverKind === "card" && /* @__PURE__ */ React16.createElement(Card.Root, {
1307
+ border: false,
1308
+ classNames: "dx-card-popover"
1309
+ }, /* @__PURE__ */ React16.createElement(Card.Toolbar, null, state.popoverContentRef ? /* @__PURE__ */ React16.createElement(Card.ToolbarIconButton, {
1310
+ icon: "ph--arrow-square-out--regular",
1311
+ iconOnly: true,
1312
+ label: t("open item label"),
1313
+ onClick: () => {
1314
+ invokeSync(LayoutOperation6.Open, {
1315
+ subject: [
1316
+ state.popoverContentRef
1317
+ ]
1318
+ });
1319
+ }
1320
+ }) : /* @__PURE__ */ React16.createElement("div", null), state.popoverTitle ? /* @__PURE__ */ React16.createElement(Card.Title, {
1321
+ onClick: handleNavigate
1322
+ }, toLocalizedString3(state.popoverTitle, t)) : /* @__PURE__ */ React16.createElement("span", null), /* @__PURE__ */ React16.createElement(Card.CloseIconButton, {
1323
+ onClick: handleClose
1324
+ })), /* @__PURE__ */ React16.createElement(Surface10.Surface, {
1325
+ role: "card--content",
1305
1326
  data: state.popoverContent,
1306
1327
  limit: 1
1307
- })), /* @__PURE__ */ React16.createElement(Popover2.Arrow, null)));
1328
+ }))), /* @__PURE__ */ React16.createElement(Popover2.Arrow, null)));
1308
1329
  };
1309
1330
 
1310
1331
  // src/components/DeckLayout/Toast.tsx
@@ -1358,91 +1379,8 @@ var DeckLayout = ({ onDismissToast }) => {
1358
1379
  })));
1359
1380
  };
1360
1381
 
1361
- // src/components/DeckSettings/DeckSettings.tsx
1362
- import React19 from "react";
1363
- import { Input, Select, useTranslation as useTranslation9 } from "@dxos/react-ui";
1364
- import { ControlGroup, ControlItemInput, ControlPage, ControlSection } from "@dxos/react-ui-form";
1365
- var isSocket = !!globalThis.__args;
1366
- var DeckSettings = ({ settings, onSettingsChange }) => {
1367
- const { t } = useTranslation9(meta.id);
1368
- return /* @__PURE__ */ React19.createElement(ControlPage, null, /* @__PURE__ */ React19.createElement(ControlSection, {
1369
- title: t("settings title", {
1370
- ns: meta.id
1371
- })
1372
- }, /* @__PURE__ */ React19.createElement(ControlGroup, null, /* @__PURE__ */ React19.createElement(ControlItemInput, {
1373
- title: t("settings enable deck label")
1374
- }, /* @__PURE__ */ React19.createElement(Input.Switch, {
1375
- checked: settings.enableDeck,
1376
- onCheckedChange: (checked) => onSettingsChange((s) => ({
1377
- ...s,
1378
- enableDeck: checked
1379
- }))
1380
- })), /* @__PURE__ */ React19.createElement(ControlItemInput, {
1381
- title: t("settings encapsulated planks label")
1382
- }, /* @__PURE__ */ React19.createElement(Input.Switch, {
1383
- checked: settings.encapsulatedPlanks ?? false,
1384
- onCheckedChange: (checked) => onSettingsChange((s) => ({
1385
- ...s,
1386
- encapsulatedPlanks: checked
1387
- }))
1388
- })), /* @__PURE__ */ React19.createElement(ControlItemInput, {
1389
- title: t("select new plank positioning label")
1390
- }, /* @__PURE__ */ React19.createElement(Select.Root, {
1391
- disabled: !settings.enableDeck,
1392
- value: settings.newPlankPositioning ?? "start",
1393
- onValueChange: (value) => onSettingsChange((s) => ({
1394
- ...s,
1395
- newPlankPositioning: value
1396
- }))
1397
- }, /* @__PURE__ */ React19.createElement(Select.TriggerButton, {
1398
- placeholder: t("select new plank positioning placeholder")
1399
- }), /* @__PURE__ */ React19.createElement(Select.Portal, null, /* @__PURE__ */ React19.createElement(Select.Content, null, /* @__PURE__ */ React19.createElement(Select.Viewport, null, NewPlankPositions.map((position) => /* @__PURE__ */ React19.createElement(Select.Option, {
1400
- key: position,
1401
- value: position
1402
- }, t(`settings new plank position ${position} label`)))), /* @__PURE__ */ React19.createElement(Select.Arrow, null))))), /* @__PURE__ */ React19.createElement(ControlItemInput, {
1403
- title: t("settings overscroll label")
1404
- }, /* @__PURE__ */ React19.createElement(Select.Root, {
1405
- disabled: !settings.enableDeck,
1406
- value: settings.overscroll ?? "none",
1407
- onValueChange: (value) => onSettingsChange((s) => ({
1408
- ...s,
1409
- overscroll: value
1410
- }))
1411
- }, /* @__PURE__ */ React19.createElement(Select.TriggerButton, {
1412
- placeholder: t("select overscroll placeholder")
1413
- }), /* @__PURE__ */ React19.createElement(Select.Portal, null, /* @__PURE__ */ React19.createElement(Select.Content, null, /* @__PURE__ */ React19.createElement(Select.Viewport, null, OverscrollOptions.map((option) => /* @__PURE__ */ React19.createElement(Select.Option, {
1414
- key: option,
1415
- value: option
1416
- }, t(`settings overscroll ${option} label`)))), /* @__PURE__ */ React19.createElement(Select.Arrow, null))))), /* @__PURE__ */ React19.createElement(ControlItemInput, {
1417
- title: t("settings enable statusbar label")
1418
- }, /* @__PURE__ */ React19.createElement(Input.Switch, {
1419
- checked: settings.enableStatusbar,
1420
- onCheckedChange: (checked) => onSettingsChange((s) => ({
1421
- ...s,
1422
- enableStatusbar: checked
1423
- }))
1424
- })), /* @__PURE__ */ React19.createElement(ControlItemInput, {
1425
- title: t("settings show hints label")
1426
- }, /* @__PURE__ */ React19.createElement(Input.Switch, {
1427
- checked: settings.showHints,
1428
- onCheckedChange: (checked) => onSettingsChange((s) => ({
1429
- ...s,
1430
- showHints: checked
1431
- }))
1432
- })), !isSocket && /* @__PURE__ */ React19.createElement(ControlItemInput, {
1433
- title: t("settings native redirect label")
1434
- }, /* @__PURE__ */ React19.createElement(Input.Switch, {
1435
- checked: settings.enableNativeRedirect,
1436
- onCheckedChange: (checked) => onSettingsChange((s) => ({
1437
- ...s,
1438
- enableNativeRedirect: checked
1439
- }))
1440
- })))));
1441
- };
1442
-
1443
1382
  export {
1444
1383
  Banner,
1445
- DeckLayout,
1446
- DeckSettings
1384
+ DeckLayout
1447
1385
  };
1448
- //# sourceMappingURL=chunk-EREEXCHO.mjs.map
1386
+ //# sourceMappingURL=chunk-ITNJS5QX.mjs.map