@dxos/plugin-simple-layout 0.8.4-main.3eb6e50203 → 0.8.4-main.4a85c3132b

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 (66) hide show
  1. package/dist/lib/browser/{chunk-O3BQBYMW.mjs → chunk-TMZNLVT2.mjs} +134 -129
  2. package/dist/lib/browser/chunk-TMZNLVT2.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +2 -2
  4. package/dist/lib/browser/meta.json +1 -1
  5. package/dist/lib/browser/{react-root-GPTKI5H2.mjs → react-root-MMB575WY.mjs} +2 -2
  6. package/dist/lib/browser/{react-surface-LT5JJTPR.mjs → react-surface-M6CURANW.mjs} +2 -2
  7. package/dist/lib/node-esm/{chunk-UAWM4B2S.mjs → chunk-FLOYBAHE.mjs} +134 -129
  8. package/dist/lib/node-esm/chunk-FLOYBAHE.mjs.map +7 -0
  9. package/dist/lib/node-esm/index.mjs +2 -2
  10. package/dist/lib/node-esm/meta.json +1 -1
  11. package/dist/lib/node-esm/{react-root-GRG2OAI2.mjs → react-root-ENZKVSY4.mjs} +2 -2
  12. package/dist/lib/node-esm/{react-surface-TCUSDIN2.mjs → react-surface-ITVNQYLG.mjs} +2 -2
  13. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +1 -1
  14. package/dist/types/src/capabilities/react-root/react-root.d.ts +1 -1
  15. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +1 -1
  16. package/dist/types/src/capabilities/spotlight-dismiss/index.d.ts +1 -1
  17. package/dist/types/src/capabilities/spotlight-dismiss/index.d.ts.map +1 -1
  18. package/dist/types/src/capabilities/spotlight-dismiss/spotlight-dismiss.d.ts +1 -1
  19. package/dist/types/src/capabilities/state/index.d.ts +1 -1
  20. package/dist/types/src/capabilities/state/state.d.ts +1 -1
  21. package/dist/types/src/capabilities/url-handler/url-handler.d.ts +1 -1
  22. package/dist/types/src/components/ContentError.stories.d.ts +1 -3
  23. package/dist/types/src/components/ContentError.stories.d.ts.map +1 -1
  24. package/dist/types/src/components/Home/Home.d.ts.map +1 -1
  25. package/dist/types/src/components/MobileLayout/MobileLayout.stories.d.ts.map +1 -1
  26. package/dist/types/src/components/Popover/Popover.d.ts.map +1 -1
  27. package/dist/types/src/components/SimpleLayout/AppBar.d.ts.map +1 -1
  28. package/dist/types/src/components/SimpleLayout/Drawer.d.ts.map +1 -1
  29. package/dist/types/src/components/SimpleLayout/Main.d.ts.map +1 -1
  30. package/dist/types/src/components/SimpleLayout/NavBar.d.ts.map +1 -1
  31. package/dist/types/src/components/Workspace/Workspace.d.ts.map +1 -1
  32. package/dist/types/src/hooks/useAppBarProps.d.ts.map +1 -1
  33. package/dist/types/tsconfig.tsbuildinfo +1 -1
  34. package/package.json +29 -28
  35. package/src/components/ContentError.stories.tsx +7 -6
  36. package/src/components/ContentLoading.stories.tsx +1 -1
  37. package/src/components/ContentLoading.tsx +1 -1
  38. package/src/components/Dialog/Dialog.tsx +3 -3
  39. package/src/components/Home/Home.tsx +27 -21
  40. package/src/components/MobileLayout/MobileLayout.stories.tsx +23 -19
  41. package/src/components/MobileLayout/MobileLayout.tsx +2 -2
  42. package/src/components/Popover/Popover.tsx +14 -4
  43. package/src/components/SimpleLayout/AppBar.stories.tsx +2 -2
  44. package/src/components/SimpleLayout/AppBar.tsx +14 -21
  45. package/src/components/SimpleLayout/Drawer.tsx +12 -9
  46. package/src/components/SimpleLayout/Main.tsx +8 -6
  47. package/src/components/SimpleLayout/NavBar.stories.tsx +8 -8
  48. package/src/components/SimpleLayout/NavBar.tsx +4 -10
  49. package/src/components/SimpleLayout/SimpleLayout.stories.tsx +2 -2
  50. package/src/components/SimpleLayout/SimpleLayout.tsx +1 -1
  51. package/src/components/Workspace/Workspace.tsx +27 -21
  52. package/src/components/hooks.ts +3 -3
  53. package/src/hooks/actions.ts +2 -2
  54. package/src/hooks/useAppBarProps.ts +7 -3
  55. package/src/hooks/useCompanions.ts +1 -1
  56. package/src/hooks/useDrawerActions.ts +2 -2
  57. package/src/hooks/useNavbarActions.ts +5 -5
  58. package/dist/lib/browser/chunk-O3BQBYMW.mjs.map +0 -7
  59. package/dist/lib/node-esm/chunk-UAWM4B2S.mjs.map +0 -7
  60. package/dist/types/src/components/ContentError.d.ts +0 -5
  61. package/dist/types/src/components/ContentError.d.ts.map +0 -1
  62. package/src/components/ContentError.tsx +0 -23
  63. /package/dist/lib/browser/{react-root-GPTKI5H2.mjs.map → react-root-MMB575WY.mjs.map} +0 -0
  64. /package/dist/lib/browser/{react-surface-LT5JJTPR.mjs.map → react-surface-M6CURANW.mjs.map} +0 -0
  65. /package/dist/lib/node-esm/{react-root-GRG2OAI2.mjs.map → react-root-ENZKVSY4.mjs.map} +0 -0
  66. /package/dist/lib/node-esm/{react-surface-TCUSDIN2.mjs.map → react-surface-ITVNQYLG.mjs.map} +0 -0
@@ -9,8 +9,9 @@ import { useOperationInvoker } from "@dxos/app-framework/ui";
9
9
  import { LayoutOperation } from "@dxos/app-toolkit";
10
10
  import { useAppGraph as useAppGraph2 } from "@dxos/app-toolkit/ui";
11
11
  import { Node, useConnections } from "@dxos/plugin-graph";
12
- import { Avatar, Icon, Layout, ScrollArea, Toolbar, toLocalizedString, useTranslation } from "@dxos/react-ui";
13
- import { Card, Mosaic } from "@dxos/react-ui-mosaic";
12
+ import { Avatar, Icon, Panel, ScrollArea, Toolbar, toLocalizedString, useTranslation } from "@dxos/react-ui";
13
+ import { Card } from "@dxos/react-ui";
14
+ import { Mosaic } from "@dxos/react-ui-mosaic";
14
15
  import { SearchList, useSearchListItem, useSearchListResults } from "@dxos/react-ui-searchlist";
15
16
  import { mx } from "@dxos/ui-theme";
16
17
  import { byPosition } from "@dxos/util";
@@ -23,9 +24,9 @@ var useLoadDescendents = (nodeId) => {
23
24
  const { graph } = useAppGraph();
24
25
  useEffect(() => {
25
26
  if (nodeId) {
26
- Graph.expand(graph, nodeId, "outbound");
27
- Graph.getConnections(graph, nodeId, "outbound").forEach((child) => {
28
- Graph.expand(graph, child.id, "outbound");
27
+ Graph.expand(graph, nodeId, "child");
28
+ Graph.getConnections(graph, nodeId, "child").forEach((child) => {
29
+ Graph.expand(graph, child.id, "child");
29
30
  });
30
31
  }
31
32
  }, [
@@ -56,14 +57,16 @@ var Home = (_) => {
56
57
  items,
57
58
  extract: (node) => toLocalizedString(node.properties.label, t)
58
59
  });
59
- return /* @__PURE__ */ React.createElement(Layout.Main, {
60
- toolbar: true
61
- }, /* @__PURE__ */ React.createElement(SearchList.Root, {
60
+ return /* @__PURE__ */ React.createElement(SearchList.Root, {
62
61
  onSearch: handleSearch
62
+ }, /* @__PURE__ */ React.createElement(Panel.Root, null, /* @__PURE__ */ React.createElement(Panel.Toolbar, {
63
+ asChild: true
63
64
  }, /* @__PURE__ */ React.createElement(Toolbar.Root, null, /* @__PURE__ */ React.createElement(SearchList.Input, {
64
65
  placeholder: t("search placeholder"),
65
66
  autoFocus: true
66
- })), /* @__PURE__ */ React.createElement(SearchList.Content, null, /* @__PURE__ */ React.createElement(Mosaic.Container, {
67
+ }))), /* @__PURE__ */ React.createElement(Panel.Content, {
68
+ asChild: true
69
+ }, /* @__PURE__ */ React.createElement(SearchList.Content, null, /* @__PURE__ */ React.createElement(Mosaic.Container, {
67
70
  asChild: true
68
71
  }, /* @__PURE__ */ React.createElement(ScrollArea.Root, {
69
72
  orientation: "vertical"
@@ -73,9 +76,10 @@ var Home = (_) => {
73
76
  items: results,
74
77
  getId: (node) => node.id,
75
78
  Tile: WorkspaceTile
76
- })))))));
79
+ }))))))));
77
80
  };
78
- var WorkspaceTile = ({ data }) => {
81
+ var WorkspaceTile = (props) => {
82
+ const data = props.data;
79
83
  const { t } = useTranslation(meta.id);
80
84
  const { invokePromise } = useOperationInvoker();
81
85
  const { selectedValue, registerItem, unregisterItem } = useSearchListItem();
@@ -115,7 +119,7 @@ var WorkspaceTile = ({ data }) => {
115
119
  fullWidth: true,
116
120
  tabIndex: -1,
117
121
  "data-selected": isSelected,
118
- classNames: mx("dx-focus-ring", isSelected && "bg-hoverOverlay"),
122
+ classNames: mx("dx-focus-ring", isSelected && "bg-hover-overlay"),
119
123
  onClick: handleSelect,
120
124
  ref: cardRef
121
125
  }, /* @__PURE__ */ React.createElement(Card.Toolbar, {
@@ -136,13 +140,13 @@ var filterItems = (node, disposition) => {
136
140
  };
137
141
  var useItemsByDisposition = (disposition, sort = false) => {
138
142
  const { graph } = useAppGraph2();
139
- const connections = useConnections(graph, Node.RootId);
143
+ const connections = useConnections(graph, Node.RootId, "child");
140
144
  const filtered = connections.filter((node) => filterItems(node, disposition));
141
145
  return sort ? filtered.toSorted((a, b) => byPosition(a.properties, b.properties)) : filtered;
142
146
  };
143
147
 
144
148
  // src/components/SimpleLayout/SimpleLayout.tsx
145
- import React12, { useEffect as useEffect6, useRef as useRef4, useState as useState3 } from "react";
149
+ import React11, { useEffect as useEffect6, useRef as useRef4, useState as useState3 } from "react";
146
150
  import { Splitter } from "@dxos/react-ui";
147
151
  import { Mosaic as Mosaic3 } from "@dxos/react-ui-mosaic";
148
152
 
@@ -178,9 +182,10 @@ var useAppBarProps = () => {
178
182
  const nodes = filtered;
179
183
  const edges = filtered.map((action) => ({
180
184
  source: "root",
181
- target: action.id
185
+ target: action.id,
186
+ relation: "child"
182
187
  }));
183
- const workspaceConnections = state2.workspace ? get(graph.connections(state2.workspace)) : [];
188
+ const workspaceConnections = state2.workspace ? get(graph.connections(state2.workspace, "child")) : [];
184
189
  const alternateTreeNode = workspaceConnections.find((node2) => node2.properties.disposition === "alternate-tree");
185
190
  if (alternateTreeNode && activeId2 !== alternateTreeNode.id) {
186
191
  const settingsAction = {
@@ -199,7 +204,8 @@ var useAppBarProps = () => {
199
204
  nodes.push(settingsAction);
200
205
  edges.push({
201
206
  source: "root",
202
- target: settingsAction.id
207
+ target: settingsAction.id,
208
+ relation: "child"
203
209
  });
204
210
  }
205
211
  return {
@@ -264,7 +270,7 @@ var createCompanionActions = (graph, stateAtom, get, config) => {
264
270
  const { idPrefix, selectedVariant, invokeSync } = config;
265
271
  const state = get(stateAtom);
266
272
  const activeId = state.active ?? state.workspace;
267
- const activeConnections = activeId ? get(graph.connections(activeId)) : [];
273
+ const activeConnections = activeId ? get(graph.connections(activeId, "child")) : [];
268
274
  const companions = activeConnections.filter((node) => node.type === PLANK_COMPANION_TYPE).toSorted((a, b) => byPosition2(a.properties, b.properties));
269
275
  const nodes = [];
270
276
  const edges = [];
@@ -291,7 +297,8 @@ var createCompanionActions = (graph, stateAtom, get, config) => {
291
297
  nodes.push(companionAction);
292
298
  edges.push({
293
299
  source: "root",
294
- target: companionAction.id
300
+ target: companionAction.id,
301
+ relation: "child"
295
302
  });
296
303
  });
297
304
  return {
@@ -303,7 +310,7 @@ var createCompanionActions = (graph, stateAtom, get, config) => {
303
310
  // src/hooks/useCompanions.ts
304
311
  var useCompanions = (nodeId) => {
305
312
  const { graph } = useAppGraph4();
306
- const nodes = useConnections2(graph, nodeId);
313
+ const nodes = useConnections2(graph, nodeId, "child");
307
314
  const companions = nodes.filter((node) => node.type === PLANK_COMPANION_TYPE);
308
315
  return useMemo3(() => companions.toSorted((a, b) => byPosition3(a.properties, b.properties)), [
309
316
  companions
@@ -317,7 +324,7 @@ import { useMemo as useMemo6 } from "react";
317
324
  import { useCapability as useCapability3, useOperationInvoker as useOperationInvoker4 } from "@dxos/app-framework/ui";
318
325
  import { useAppGraph as useAppGraph7 } from "@dxos/app-toolkit/ui";
319
326
  import { Node as Node4, useActionRunner as useActionRunner2 } from "@dxos/plugin-graph";
320
- import { useTranslation as useTranslation7 } from "@dxos/react-ui";
327
+ import { useTranslation as useTranslation6 } from "@dxos/react-ui";
321
328
  import { createGapSeparator } from "@dxos/react-ui-menu";
322
329
 
323
330
  // src/components/ContentLoading.tsx
@@ -325,7 +332,7 @@ import React2 from "react";
325
332
  var ContentLoading = () => {
326
333
  return /* @__PURE__ */ React2.createElement("div", {
327
334
  role: "none",
328
- className: "grid place-items-center attention-surface"
335
+ className: "grid place-items-center dx-attention-surface"
329
336
  });
330
337
  };
331
338
 
@@ -354,7 +361,7 @@ var MobileLayoutRoot = /* @__PURE__ */ forwardRef(({ classNames, children, trans
354
361
  ...props,
355
362
  role: "none",
356
363
  style: {
357
- transition: `block-size ${transition}ms ease-out`,
364
+ transition: `h-size ${transition}ms ease-out`,
358
365
  blockSize: "calc(100vh - var(--kb-height, 0px))"
359
366
  },
360
367
  className: mx2("absolute top-0 left-0 right-0 flex flex-col", classNames),
@@ -370,7 +377,7 @@ var MobileLayoutPanel = /* @__PURE__ */ forwardRef(({ classNames, children, safe
370
377
  paddingTop: safe?.top ? "env(safe-area-inset-top)" : void 0,
371
378
  paddingBottom: safe?.bottom ? `calc((1 - var(--kb-open, 0)) * env(safe-area-inset-bottom))` : void 0
372
379
  },
373
- className: mx2("relative bs-full flex flex-col overflow-hidden", classNames),
380
+ className: mx2("relative h-full flex flex-col overflow-hidden", classNames),
374
381
  ref: forwardedRef
375
382
  }, children);
376
383
  });
@@ -510,8 +517,9 @@ var useIOSKeyboard = () => {
510
517
  import { createContext as createContext2 } from "@radix-ui/react-context";
511
518
  import React4, { useCallback as useCallback3, useEffect as useEffect4, useMemo as useMemo4, useRef as useRef2, useState as useState2 } from "react";
512
519
  import { Surface } from "@dxos/app-framework/ui";
520
+ import { useObjectNavigate } from "@dxos/app-toolkit/ui";
513
521
  import { Popover, toLocalizedString as toLocalizedString3, useTranslation as useTranslation3 } from "@dxos/react-ui";
514
- import { Card as Card2 } from "@dxos/react-ui-mosaic";
522
+ import { Card as Card2 } from "@dxos/react-ui";
515
523
  var DEBOUNCE_DELAY = 40;
516
524
  var [LayoutPopoverProvider, useLayoutPopoverContext] = createContext2("LayoutPopover");
517
525
  var PopoverRoot = ({ children }) => {
@@ -548,10 +556,12 @@ var PopoverRoot = ({ children }) => {
548
556
  virtualRef
549
557
  }), children));
550
558
  };
559
+ var getPopoverSubject = (content) => content && typeof content === "object" && "subject" in content ? content.subject : content;
551
560
  var PopoverContent = () => {
552
561
  const { t } = useTranslation3(meta.id);
553
562
  const { state, updateState } = useSimpleLayoutState();
554
563
  const { setOpen } = useLayoutPopoverContext("PopoverContent");
564
+ const handleNavigate = useObjectNavigate(getPopoverSubject(state.popoverContent));
555
565
  const handleClose = useCallback3(() => {
556
566
  setOpen(false);
557
567
  updateState((s) => ({
@@ -598,8 +608,10 @@ var PopoverContent = () => {
598
608
  limit: 1
599
609
  }), state.popoverKind === "card" && /* @__PURE__ */ React4.createElement(Card2.Root, {
600
610
  border: false,
601
- classNames: "popover-card-max-width"
602
- }, /* @__PURE__ */ React4.createElement(Card2.Toolbar, null, /* @__PURE__ */ React4.createElement("span", null), state.popoverTitle ? /* @__PURE__ */ React4.createElement(Card2.Title, null, toLocalizedString3(state.popoverTitle, t)) : /* @__PURE__ */ React4.createElement("span", null), /* @__PURE__ */ React4.createElement(Card2.Close, {
611
+ classNames: "dx-card-popover"
612
+ }, /* @__PURE__ */ React4.createElement(Card2.Toolbar, null, /* @__PURE__ */ React4.createElement("span", null), state.popoverTitle ? /* @__PURE__ */ React4.createElement(Card2.Title, {
613
+ onClick: handleNavigate
614
+ }, toLocalizedString3(state.popoverTitle, t)) : /* @__PURE__ */ React4.createElement("span", null), /* @__PURE__ */ React4.createElement(Card2.CloseIconButton, {
603
615
  onClick: handleClose
604
616
  })), /* @__PURE__ */ React4.createElement(Surface.Surface, {
605
617
  role: "card--content",
@@ -612,7 +624,7 @@ var PopoverContent = () => {
612
624
  import { useAtomValue as useAtomValue2 } from "@effect-atom/atom-react";
613
625
  import React5, { Fragment } from "react";
614
626
  import { IconButton, Popover as Popover2, Toolbar as Toolbar2, useTranslation as useTranslation4 } from "@dxos/react-ui";
615
- import { DropdownMenu, MenuProvider, useMenuActions } from "@dxos/react-ui-menu";
627
+ import { Menu, useMenuActions } from "@dxos/react-ui-menu";
616
628
  import { mx as mx3, osTranslations } from "@dxos/ui-theme";
617
629
  var APP_BAR_NAME = "SimpleLayout.AppBar";
618
630
  var AppBar = ({ classNames, title, actions, showBackButton, popoverAnchorId, onAction, onBack }) => {
@@ -627,7 +639,7 @@ var AppBar = ({ classNames, title, actions, showBackButton, popoverAnchorId, onA
627
639
  const AnchorRoot = popoverAnchorId ? Popover2.Anchor : Fragment;
628
640
  return /* @__PURE__ */ React5.createElement(Toolbar2.Root, {
629
641
  role: "banner",
630
- classNames: mx3("grid grid-cols-[var(--rail-size)_1fr_var(--rail-size)] bs-[var(--rail-action)] items-center", "density-fine", classNames)
642
+ classNames: mx3("grid grid-cols-[var(--dx-rail-size)_1fr_var(--dx-rail-size)] items-center", "dx-density-fine", classNames)
631
643
  }, keyboardOpen ? /* @__PURE__ */ React5.createElement(IconButton, {
632
644
  variant: "ghost",
633
645
  icon: "ph--x--regular",
@@ -641,60 +653,44 @@ var AppBar = ({ classNames, title, actions, showBackButton, popoverAnchorId, onA
641
653
  onClick: onBack
642
654
  }) : /* @__PURE__ */ React5.createElement("div", null), /* @__PURE__ */ React5.createElement("h1", {
643
655
  className: "text-center truncate font-thin uppercase"
644
- }, displayTitle), hasActions ? /* @__PURE__ */ React5.createElement(AnchorRoot, null, /* @__PURE__ */ React5.createElement(MenuProvider, {
656
+ }, displayTitle), hasActions ? /* @__PURE__ */ React5.createElement(AnchorRoot, null, /* @__PURE__ */ React5.createElement(Menu.Root, {
645
657
  ...menu,
658
+ caller: meta.id,
646
659
  onAction
647
- }, /* @__PURE__ */ React5.createElement(DropdownMenu.Root, {
648
- caller: meta.id
649
- }, /* @__PURE__ */ React5.createElement(DropdownMenu.Trigger, {
660
+ }, /* @__PURE__ */ React5.createElement(Menu.Trigger, {
650
661
  asChild: true
651
662
  }, /* @__PURE__ */ React5.createElement(IconButton, {
652
663
  variant: "ghost",
653
664
  icon: "ph--dots-three-vertical--regular",
654
665
  iconOnly: true,
655
666
  label: t("actions menu label")
656
- }))))) : /* @__PURE__ */ React5.createElement("span", null));
667
+ })), /* @__PURE__ */ React5.createElement(Menu.Content, null))) : /* @__PURE__ */ React5.createElement("span", null));
657
668
  };
658
669
  AppBar.displayName = APP_BAR_NAME;
659
670
 
660
671
  // src/components/SimpleLayout/Main.tsx
661
- import React8, { useMemo as useMemo5 } from "react";
672
+ import React7, { useMemo as useMemo5 } from "react";
662
673
  import { Surface as Surface2 } from "@dxos/app-framework/ui";
663
674
  import { useAppGraph as useAppGraph5 } from "@dxos/app-toolkit/ui";
664
675
  import { useNode as useNode2 } from "@dxos/plugin-graph";
676
+ import { ErrorFallback } from "@dxos/react-ui";
665
677
  import { useAttentionAttributes } from "@dxos/react-ui-attention";
666
- import { mx as mx6 } from "@dxos/ui-theme";
667
-
668
- // src/components/ContentError.tsx
669
- import React6 from "react";
670
- import { useTranslation as useTranslation5 } from "@dxos/react-ui";
671
- import { descriptionMessage, mx as mx4 } from "@dxos/ui-theme";
672
- var ContentError = ({ error }) => {
673
- const { t } = useTranslation5(meta.id);
674
- const errorString = error?.toString() ?? "";
675
- return /* @__PURE__ */ React6.createElement("div", {
676
- role: "none",
677
- className: "grid place-items-center overflow-y-auto attention-surface"
678
- }, /* @__PURE__ */ React6.createElement("p", {
679
- role: "alert",
680
- className: mx4(descriptionMessage, "p-2 break-all rounded-sm")
681
- }, error ? errorString : t("error fallback message")));
682
- };
678
+ import { mx as mx5 } from "@dxos/ui-theme";
683
679
 
684
680
  // src/components/SimpleLayout/NavBar.tsx
685
- import React7 from "react";
686
- import { MenuProvider as MenuProvider2, ToolbarMenu, useMenuActions as useMenuActions2 } from "@dxos/react-ui-menu";
687
- import { mx as mx5 } from "@dxos/ui-theme";
681
+ import React6 from "react";
682
+ import { Menu as Menu2, useMenuActions as useMenuActions2 } from "@dxos/react-ui-menu";
683
+ import { mx as mx4 } from "@dxos/ui-theme";
688
684
  var NAVBAR_NAME = "SimpleLayout.NavBar";
689
685
  var NavBar = ({ classNames, actions, onAction }) => {
690
686
  const menu = useMenuActions2(actions);
691
- return /* @__PURE__ */ React7.createElement(MenuProvider2, {
687
+ return /* @__PURE__ */ React6.createElement(Menu2.Root, {
692
688
  ...menu,
693
- onAction,
694
- alwaysActive: true
695
- }, /* @__PURE__ */ React7.createElement(ToolbarMenu, {
689
+ alwaysActive: true,
690
+ onAction
691
+ }, /* @__PURE__ */ React6.createElement(Menu2.Toolbar, {
696
692
  density: "coarse",
697
- classNames: mx5(classNames)
693
+ classNames: mx4(classNames)
698
694
  }));
699
695
  };
700
696
  NavBar.displayName = NAVBAR_NAME;
@@ -708,7 +704,7 @@ var Main = () => {
708
704
  const { keyboardOpen } = useMobileLayout(MAIN_NAME);
709
705
  const { actions, onAction } = useNavbarActions();
710
706
  const appBarProps = useAppBarProps();
711
- const placeholder = useMemo5(() => /* @__PURE__ */ React8.createElement(ContentLoading, null), []);
707
+ const placeholder = useMemo5(() => /* @__PURE__ */ React7.createElement(ContentLoading, null), []);
712
708
  const { graph } = useAppGraph5();
713
709
  const node = useNode2(graph, id);
714
710
  const data = useMemo5(() => {
@@ -727,21 +723,21 @@ var Main = () => {
727
723
  ]);
728
724
  useLoadDescendents(id);
729
725
  const showNavBar = !keyboardOpen && !state.isPopover && state.drawerState === "closed";
730
- return /* @__PURE__ */ React8.createElement("div", {
726
+ return /* @__PURE__ */ React7.createElement("div", {
731
727
  role: "none",
732
- className: mx6("bs-full grid overflow-hidden bg-toolbarSurface", showNavBar ? "grid-rows-[var(--rail-action)_1fr_var(--toolbar-size)]" : "grid-rows-[var(--rail-action)_1fr]"),
728
+ className: mx5("h-full grid overflow-hidden bg-toolbar-surface", showNavBar ? "grid-rows-[var(--dx-rail-action)_1fr_var(--dx-toolbar-size)]" : "grid-rows-[var(--dx-rail-action)_1fr]"),
733
729
  ...attentionAttrs
734
- }, /* @__PURE__ */ React8.createElement(AppBar, appBarProps), /* @__PURE__ */ React8.createElement("article", {
735
- className: "bs-full overflow-hidden bg-baseSurface"
736
- }, /* @__PURE__ */ React8.createElement(Surface2.Surface, {
730
+ }, /* @__PURE__ */ React7.createElement(AppBar, appBarProps), /* @__PURE__ */ React7.createElement("article", {
731
+ className: "h-full overflow-hidden bg-base-surface"
732
+ }, /* @__PURE__ */ React7.createElement(Surface2.Surface, {
737
733
  key: id,
738
734
  role: "article",
739
735
  data,
740
736
  limit: 1,
741
- fallback: ContentError,
737
+ fallback: ErrorFallback,
742
738
  placeholder
743
- })), showNavBar && /* @__PURE__ */ React8.createElement(NavBar, {
744
- classNames: "border-bs border-subduedSeparator",
739
+ })), showNavBar && /* @__PURE__ */ React7.createElement(NavBar, {
740
+ classNames: "border-y border-subdued-separator",
745
741
  actions,
746
742
  onAction
747
743
  }));
@@ -749,45 +745,49 @@ var Main = () => {
749
745
  Main.displayName = MAIN_NAME;
750
746
 
751
747
  // src/components/Workspace/Workspace.tsx
752
- import React9, { useCallback as useCallback4, useEffect as useEffect5, useRef as useRef3 } from "react";
748
+ import React8, { useCallback as useCallback4, useEffect as useEffect5, useRef as useRef3 } from "react";
753
749
  import { useOperationInvoker as useOperationInvoker3 } from "@dxos/app-framework/ui";
754
750
  import { LayoutOperation as LayoutOperation4 } from "@dxos/app-toolkit";
755
751
  import { useAppGraph as useAppGraph6 } from "@dxos/app-toolkit/ui";
756
752
  import { useConnections as useConnections3 } from "@dxos/plugin-graph";
757
- import { Avatar as Avatar2, Icon as Icon2, Layout as Layout2, ScrollArea as ScrollArea2, Toolbar as Toolbar3, toLocalizedString as toLocalizedString4, useTranslation as useTranslation6 } from "@dxos/react-ui";
758
- import { Card as Card3, Mosaic as Mosaic2 } from "@dxos/react-ui-mosaic";
753
+ import { Avatar as Avatar2, Icon as Icon2, Panel as Panel2, ScrollArea as ScrollArea2, Toolbar as Toolbar3, toLocalizedString as toLocalizedString4, useTranslation as useTranslation5 } from "@dxos/react-ui";
754
+ import { Card as Card3 } from "@dxos/react-ui";
755
+ import { Mosaic as Mosaic2 } from "@dxos/react-ui-mosaic";
759
756
  import { SearchList as SearchList2, useSearchListItem as useSearchListItem2, useSearchListResults as useSearchListResults2 } from "@dxos/react-ui-searchlist";
760
- import { mx as mx7 } from "@dxos/ui-theme";
757
+ import { mx as mx6 } from "@dxos/ui-theme";
761
758
  var Workspace = ({ id }) => {
762
- const { t } = useTranslation6(meta.id);
759
+ const { t } = useTranslation5(meta.id);
763
760
  const { graph } = useAppGraph6();
764
761
  useLoadDescendents(id);
765
- const children = useConnections3(graph, id, "outbound");
762
+ const children = useConnections3(graph, id, "child");
766
763
  const { results, handleSearch } = useSearchListResults2({
767
764
  items: children,
768
765
  extract: (child) => toLocalizedString4(child.properties.label, t)
769
766
  });
770
- return /* @__PURE__ */ React9.createElement(Layout2.Main, {
771
- toolbar: true
772
- }, /* @__PURE__ */ React9.createElement(SearchList2.Root, {
767
+ return /* @__PURE__ */ React8.createElement(SearchList2.Root, {
773
768
  onSearch: handleSearch
774
- }, /* @__PURE__ */ React9.createElement(Toolbar3.Root, null, /* @__PURE__ */ React9.createElement(SearchList2.Input, {
769
+ }, /* @__PURE__ */ React8.createElement(Panel2.Root, null, /* @__PURE__ */ React8.createElement(Panel2.Toolbar, {
770
+ asChild: true
771
+ }, /* @__PURE__ */ React8.createElement(Toolbar3.Root, null, /* @__PURE__ */ React8.createElement(SearchList2.Input, {
775
772
  placeholder: t("search placeholder"),
776
773
  autoFocus: true
777
- })), /* @__PURE__ */ React9.createElement(SearchList2.Content, null, /* @__PURE__ */ React9.createElement(Mosaic2.Container, {
774
+ }))), /* @__PURE__ */ React8.createElement(Panel2.Content, {
775
+ asChild: true
776
+ }, /* @__PURE__ */ React8.createElement(SearchList2.Content, null, /* @__PURE__ */ React8.createElement(Mosaic2.Container, {
778
777
  asChild: true
779
- }, /* @__PURE__ */ React9.createElement(ScrollArea2.Root, {
778
+ }, /* @__PURE__ */ React8.createElement(ScrollArea2.Root, {
780
779
  orientation: "vertical"
781
- }, /* @__PURE__ */ React9.createElement(ScrollArea2.Viewport, {
780
+ }, /* @__PURE__ */ React8.createElement(ScrollArea2.Viewport, {
782
781
  classNames: "p-2"
783
- }, /* @__PURE__ */ React9.createElement(Mosaic2.Stack, {
782
+ }, /* @__PURE__ */ React8.createElement(Mosaic2.Stack, {
784
783
  items: results,
785
784
  getId: (child) => child.id,
786
785
  Tile: WorkspaceChildTile
787
- })))))));
786
+ }))))))));
788
787
  };
789
- var WorkspaceChildTile = ({ data }) => {
790
- const { t } = useTranslation6(meta.id);
788
+ var WorkspaceChildTile = (props) => {
789
+ const data = props.data;
790
+ const { t } = useTranslation5(meta.id);
791
791
  const { invokeSync } = useOperationInvoker3();
792
792
  const ref = useRef3(null);
793
793
  const { selectedValue, registerItem, unregisterItem } = useSearchListItem2();
@@ -822,24 +822,24 @@ var WorkspaceChildTile = ({ data }) => {
822
822
  }, [
823
823
  isSelected
824
824
  ]);
825
- return /* @__PURE__ */ React9.createElement(Card3.Root, {
825
+ return /* @__PURE__ */ React8.createElement(Card3.Root, {
826
826
  ref,
827
827
  role: "button",
828
828
  fullWidth: true,
829
829
  tabIndex: -1,
830
830
  "data-selected": isSelected,
831
- classNames: mx7("dx-focus-ring", isSelected && "bg-hoverOverlay"),
831
+ classNames: mx6("dx-focus-ring", isSelected && "bg-hover-overlay"),
832
832
  onClick: handleSelect
833
- }, /* @__PURE__ */ React9.createElement(Card3.Toolbar, {
833
+ }, /* @__PURE__ */ React8.createElement(Card3.Toolbar, {
834
834
  density: "coarse"
835
- }, /* @__PURE__ */ React9.createElement(Avatar2.Root, null, /* @__PURE__ */ React9.createElement(Avatar2.Content, {
835
+ }, /* @__PURE__ */ React8.createElement(Avatar2.Root, null, /* @__PURE__ */ React8.createElement(Avatar2.Content, {
836
836
  hue: data.properties.hue,
837
837
  icon: data.properties.icon,
838
838
  hueVariant: "transparent",
839
839
  variant: "square",
840
840
  size: 12,
841
841
  fallback: name
842
- }), /* @__PURE__ */ React9.createElement(Avatar2.Label, null, name), /* @__PURE__ */ React9.createElement(Icon2, {
842
+ }), /* @__PURE__ */ React8.createElement(Avatar2.Label, null, name), /* @__PURE__ */ React8.createElement(Icon2, {
843
843
  icon: "ph--caret-right--regular"
844
844
  }))));
845
845
  };
@@ -866,7 +866,7 @@ var useSimpleLayoutState = () => {
866
866
 
867
867
  // src/hooks/useDrawerActions.ts
868
868
  var useDrawerActions = (consumerName) => {
869
- const { t } = useTranslation7(meta.id);
869
+ const { t } = useTranslation6(meta.id);
870
870
  const stateAtom = useCapability3(SimpleLayoutState);
871
871
  const { graph } = useAppGraph7();
872
872
  const runAction = useActionRunner2();
@@ -901,7 +901,8 @@ var useDrawerActions = (consumerName) => {
901
901
  nodes.push(toggleExpandAction);
902
902
  edges.push({
903
903
  source: "root",
904
- target: toggleExpandAction.id
904
+ target: toggleExpandAction.id,
905
+ relation: "child"
905
906
  });
906
907
  }
907
908
  const closeAction = {
@@ -920,7 +921,8 @@ var useDrawerActions = (consumerName) => {
920
921
  nodes.push(closeAction);
921
922
  edges.push({
922
923
  source: "root",
923
- target: closeAction.id
924
+ target: closeAction.id,
925
+ relation: "child"
924
926
  });
925
927
  return {
926
928
  nodes,
@@ -946,11 +948,11 @@ import { useMemo as useMemo7 } from "react";
946
948
  import { useCapability as useCapability4, useOperationInvoker as useOperationInvoker5 } from "@dxos/app-framework/ui";
947
949
  import { useAppGraph as useAppGraph8 } from "@dxos/app-toolkit/ui";
948
950
  import { Node as Node5, useActionRunner as useActionRunner3 } from "@dxos/plugin-graph";
949
- import { useTranslation as useTranslation8 } from "@dxos/react-ui";
951
+ import { useTranslation as useTranslation7 } from "@dxos/react-ui";
950
952
  import { createGapSeparator as createGapSeparator2, createMenuItemGroup } from "@dxos/react-ui-menu";
951
953
  var MAIN_MENU_GROUP_ID = "navbar-main-menu";
952
954
  var useNavbarActions = () => {
953
- const { t } = useTranslation8(meta.id);
955
+ const { t } = useTranslation7(meta.id);
954
956
  const { graph } = useAppGraph8();
955
957
  const runAction = useActionRunner3();
956
958
  const { invokeSync } = useOperationInvoker5();
@@ -973,15 +975,17 @@ var useNavbarActions = () => {
973
975
  nodes.push(mainMenuGroup);
974
976
  edges.push({
975
977
  source: "root",
976
- target: mainMenuGroup.id
978
+ target: mainMenuGroup.id,
979
+ relation: "child"
977
980
  });
978
- const rootConnections = get(graph.connections(Node5.RootId));
979
- const menuActions = rootConnections.filter((node) => node.properties.disposition === "menu");
981
+ const rootActions = get(graph.actions(Node5.RootId));
982
+ const menuActions = rootActions.filter((node) => node.properties.disposition === "menu");
980
983
  menuActions.forEach((menuAction) => {
981
984
  nodes.push(menuAction);
982
985
  edges.push({
983
986
  source: MAIN_MENU_GROUP_ID,
984
- target: menuAction.id
987
+ target: menuAction.id,
988
+ relation: "child"
985
989
  });
986
990
  });
987
991
  return {
@@ -1001,50 +1005,51 @@ var useNavbarActions = () => {
1001
1005
  };
1002
1006
 
1003
1007
  // src/components/Dialog/Dialog.tsx
1004
- import React10 from "react";
1008
+ import React9 from "react";
1005
1009
  import { Surface as Surface3 } from "@dxos/app-framework/ui";
1006
1010
  import { AlertDialog, Dialog as NaturalDialog } from "@dxos/react-ui";
1011
+ import { ErrorFallback as ErrorFallback2 } from "@dxos/react-ui";
1007
1012
  var Dialog = () => {
1008
1013
  const { state, updateState } = useSimpleLayoutState();
1009
1014
  const DialogRoot = state.dialogType === "alert" ? AlertDialog.Root : NaturalDialog.Root;
1010
1015
  const DialogOverlay = state.dialogType === "alert" ? AlertDialog.Overlay : NaturalDialog.Overlay;
1011
- return /* @__PURE__ */ React10.createElement(DialogRoot, {
1016
+ return /* @__PURE__ */ React9.createElement(DialogRoot, {
1012
1017
  modal: state.dialogBlockAlign !== "end",
1013
1018
  open: state.dialogOpen,
1014
1019
  onOpenChange: (nextOpen) => updateState((state2) => ({
1015
1020
  ...state2,
1016
1021
  dialogOpen: nextOpen
1017
1022
  }))
1018
- }, state.dialogBlockAlign === "end" ? /* @__PURE__ */ React10.createElement(Surface3.Surface, {
1023
+ }, state.dialogBlockAlign === "end" ? /* @__PURE__ */ React9.createElement(Surface3.Surface, {
1019
1024
  role: "dialog",
1020
1025
  data: state.dialogContent,
1021
1026
  limit: 1,
1022
- fallback: ContentError
1023
- }) : /* @__PURE__ */ React10.createElement(DialogOverlay, {
1027
+ fallback: ErrorFallback2
1028
+ }) : /* @__PURE__ */ React9.createElement(DialogOverlay, {
1024
1029
  blockAlign: state.dialogBlockAlign,
1025
1030
  classNames: state.dialogOverlayClasses,
1026
1031
  style: state.dialogOverlayStyle
1027
- }, /* @__PURE__ */ React10.createElement(Surface3.Surface, {
1032
+ }, /* @__PURE__ */ React9.createElement(Surface3.Surface, {
1028
1033
  role: "dialog",
1029
1034
  data: state.dialogContent,
1030
1035
  limit: 1,
1031
- fallback: ContentError
1036
+ fallback: ErrorFallback2
1032
1037
  })));
1033
1038
  };
1034
1039
 
1035
1040
  // src/components/SimpleLayout/Drawer.tsx
1036
- import React11, { useMemo as useMemo8 } from "react";
1041
+ import React10, { useMemo as useMemo8 } from "react";
1037
1042
  import { Surface as Surface4 } from "@dxos/app-framework/ui";
1038
1043
  import { useAppGraph as useAppGraph9 } from "@dxos/app-toolkit/ui";
1039
1044
  import { useNode as useNode3 } from "@dxos/plugin-graph";
1040
- import { Layout as Layout3 } from "@dxos/react-ui";
1045
+ import { ErrorFallback as ErrorFallback3, Panel as Panel3 } from "@dxos/react-ui";
1041
1046
  import { ATTENDABLE_PATH_SEPARATOR as ATTENDABLE_PATH_SEPARATOR2 } from "@dxos/react-ui-attention";
1042
- import { MenuProvider as MenuProvider3, ToolbarMenu as ToolbarMenu2, useMenuActions as useMenuActions3 } from "@dxos/react-ui-menu";
1047
+ import { Menu as Menu3, useMenuActions as useMenuActions3 } from "@dxos/react-ui-menu";
1043
1048
  var DRAWER_NAME = "SimpleLayout.Drawer";
1044
1049
  var Drawer = () => {
1045
1050
  const { graph } = useAppGraph9();
1046
1051
  const { state: layoutState } = useSimpleLayoutState();
1047
- const placeholder = useMemo8(() => /* @__PURE__ */ React11.createElement(ContentLoading, null), []);
1052
+ const placeholder = useMemo8(() => /* @__PURE__ */ React10.createElement(ContentLoading, null), []);
1048
1053
  const activeId = layoutState.active ?? layoutState.workspace;
1049
1054
  const companions = useCompanions(activeId);
1050
1055
  const { companionId, variant } = useSelectedCompanion(companions, layoutState.companionVariant);
@@ -1066,21 +1071,21 @@ var Drawer = () => {
1066
1071
  ]);
1067
1072
  const { actions, onAction } = useDrawerActions(DRAWER_NAME);
1068
1073
  const menu = useMenuActions3(actions);
1069
- return /* @__PURE__ */ React11.createElement(Layout3.Main, {
1070
- toolbar: true
1071
- }, /* @__PURE__ */ React11.createElement(MenuProvider3, {
1074
+ return /* @__PURE__ */ React10.createElement(Panel3.Root, null, /* @__PURE__ */ React10.createElement(Panel3.Toolbar, null, /* @__PURE__ */ React10.createElement(Menu3.Root, {
1072
1075
  ...menu,
1073
- onAction,
1074
- alwaysActive: true
1075
- }, /* @__PURE__ */ React11.createElement(ToolbarMenu2, {
1076
+ alwaysActive: true,
1077
+ onAction
1078
+ }, /* @__PURE__ */ React10.createElement(Menu3.Toolbar, {
1076
1079
  density: "coarse"
1077
- })), /* @__PURE__ */ React11.createElement(Surface4.Surface, {
1080
+ }))), /* @__PURE__ */ React10.createElement(Panel3.Content, {
1081
+ asChild: true
1082
+ }, /* @__PURE__ */ React10.createElement(Surface4.Surface, {
1078
1083
  role: "article",
1079
1084
  data,
1080
1085
  limit: 1,
1081
- fallback: ContentError,
1086
+ fallback: ErrorFallback3,
1082
1087
  placeholder
1083
- }));
1088
+ })));
1084
1089
  };
1085
1090
  Drawer.displayName = DRAWER_NAME;
1086
1091
  var parseEntryId = (entryId) => {
@@ -1136,25 +1141,25 @@ var SimpleLayout = () => {
1136
1141
  state.drawerState,
1137
1142
  keyboardOpen
1138
1143
  ]);
1139
- return /* @__PURE__ */ React12.createElement(Mosaic3.Root, {
1144
+ return /* @__PURE__ */ React11.createElement(Mosaic3.Root, {
1140
1145
  classNames: "contents"
1141
- }, /* @__PURE__ */ React12.createElement(MobileLayout.Root, {
1142
- classNames: "bg-toolbarSurface",
1146
+ }, /* @__PURE__ */ React11.createElement(MobileLayout.Root, {
1147
+ classNames: "bg-toolbar-surface",
1143
1148
  onKeyboardOpenChange: (keyboardOpen2) => setKeyboardOpen(keyboardOpen2)
1144
- }, /* @__PURE__ */ React12.createElement(MobileLayout.Panel, {
1149
+ }, /* @__PURE__ */ React11.createElement(MobileLayout.Panel, {
1145
1150
  safe: {
1146
1151
  top: true,
1147
1152
  bottom: splitterMode === "upper"
1148
1153
  }
1149
- }, /* @__PURE__ */ React12.createElement(PopoverRoot, null, /* @__PURE__ */ React12.createElement(Splitter.Root, {
1154
+ }, /* @__PURE__ */ React11.createElement(PopoverRoot, null, /* @__PURE__ */ React11.createElement(Splitter.Root, {
1150
1155
  mode: splitterMode,
1151
1156
  ratio: 0.55
1152
- }, /* @__PURE__ */ React12.createElement(Splitter.Panel, {
1157
+ }, /* @__PURE__ */ React11.createElement(Splitter.Panel, {
1153
1158
  position: "upper"
1154
- }, /* @__PURE__ */ React12.createElement(Main, null)), /* @__PURE__ */ React12.createElement(Splitter.Panel, {
1159
+ }, /* @__PURE__ */ React11.createElement(Main, null)), /* @__PURE__ */ React11.createElement(Splitter.Panel, {
1155
1160
  position: "lower",
1156
1161
  ref: drawerRef
1157
- }, /* @__PURE__ */ React12.createElement(Drawer, null))), /* @__PURE__ */ React12.createElement(Dialog, null), /* @__PURE__ */ React12.createElement(PopoverContent, null)))));
1162
+ }, /* @__PURE__ */ React11.createElement(Drawer, null))), /* @__PURE__ */ React11.createElement(Dialog, null), /* @__PURE__ */ React11.createElement(PopoverContent, null)))));
1158
1163
  };
1159
1164
 
1160
1165
  export {
@@ -1162,4 +1167,4 @@ export {
1162
1167
  SimpleLayout,
1163
1168
  Workspace
1164
1169
  };
1165
- //# sourceMappingURL=chunk-O3BQBYMW.mjs.map
1170
+ //# sourceMappingURL=chunk-TMZNLVT2.mjs.map