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