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