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