@dxos/react-ui 0.6.14-main.7bd9c89 → 0.6.14-staging.e15392e

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 (92) hide show
  1. package/dist/lib/browser/index.mjs +697 -169
  2. package/dist/lib/browser/index.mjs.map +3 -3
  3. package/dist/lib/browser/meta.json +1 -1
  4. package/dist/lib/node/index.cjs +670 -140
  5. package/dist/lib/node/index.cjs.map +3 -3
  6. package/dist/lib/node/meta.json +1 -1
  7. package/dist/lib/node-esm/index.mjs +697 -169
  8. package/dist/lib/node-esm/index.mjs.map +3 -3
  9. package/dist/lib/node-esm/meta.json +1 -1
  10. package/dist/types/src/components/Avatars/Avatar.stories.d.ts +15 -1
  11. package/dist/types/src/components/Avatars/Avatar.stories.d.ts.map +1 -1
  12. package/dist/types/src/components/Avatars/AvatarGroup.stories.d.ts +6 -1
  13. package/dist/types/src/components/Avatars/AvatarGroup.stories.d.ts.map +1 -1
  14. package/dist/types/src/components/Breadcrumb/Breadcrumb.stories.d.ts +9 -1
  15. package/dist/types/src/components/Breadcrumb/Breadcrumb.stories.d.ts.map +1 -1
  16. package/dist/types/src/components/Buttons/Button.d.ts +1 -1
  17. package/dist/types/src/components/Buttons/Button.d.ts.map +1 -1
  18. package/dist/types/src/components/Buttons/Button.stories.d.ts +1 -1
  19. package/dist/types/src/components/Buttons/Toggle.stories.d.ts +2 -1
  20. package/dist/types/src/components/Buttons/Toggle.stories.d.ts.map +1 -1
  21. package/dist/types/src/components/Buttons/ToggleGroup.stories.d.ts +20 -1
  22. package/dist/types/src/components/Buttons/ToggleGroup.stories.d.ts.map +1 -1
  23. package/dist/types/src/components/Dialogs/AlertDialog.stories.d.ts +12 -1
  24. package/dist/types/src/components/Dialogs/AlertDialog.stories.d.ts.map +1 -1
  25. package/dist/types/src/components/Dialogs/Dialog.stories.d.ts +11 -1
  26. package/dist/types/src/components/Dialogs/Dialog.stories.d.ts.map +1 -1
  27. package/dist/types/src/components/Icon/Icon.d.ts +1 -1
  28. package/dist/types/src/components/Icon/Icon.d.ts.map +1 -1
  29. package/dist/types/src/components/Input/Input.stories.d.ts +16 -1
  30. package/dist/types/src/components/Input/Input.stories.d.ts.map +1 -1
  31. package/dist/types/src/components/Lists/List.stories.d.ts +2 -3
  32. package/dist/types/src/components/Lists/List.stories.d.ts.map +1 -1
  33. package/dist/types/src/components/Lists/Tree.stories.d.ts +5 -1
  34. package/dist/types/src/components/Lists/Tree.stories.d.ts.map +1 -1
  35. package/dist/types/src/components/Main/Main.stories.d.ts +5 -1
  36. package/dist/types/src/components/Main/Main.stories.d.ts.map +1 -1
  37. package/dist/types/src/components/Menus/ContextMenu.stories.d.ts +29 -1
  38. package/dist/types/src/components/Menus/ContextMenu.stories.d.ts.map +1 -1
  39. package/dist/types/src/components/Menus/DropdownMenu.d.ts +105 -44
  40. package/dist/types/src/components/Menus/DropdownMenu.d.ts.map +1 -1
  41. package/dist/types/src/components/Menus/DropdownMenu.stories.d.ts +29 -1
  42. package/dist/types/src/components/Menus/DropdownMenu.stories.d.ts.map +1 -1
  43. package/dist/types/src/components/Message/Message.stories.d.ts +6 -1
  44. package/dist/types/src/components/Message/Message.stories.d.ts.map +1 -1
  45. package/dist/types/src/components/Popover/Popover.d.ts +87 -21
  46. package/dist/types/src/components/Popover/Popover.d.ts.map +1 -1
  47. package/dist/types/src/components/Popover/Popover.stories.d.ts +20 -1
  48. package/dist/types/src/components/Popover/Popover.stories.d.ts.map +1 -1
  49. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts +20 -1
  50. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts.map +1 -1
  51. package/dist/types/src/components/Toast/Toast.stories.d.ts +20 -1
  52. package/dist/types/src/components/Toast/Toast.stories.d.ts.map +1 -1
  53. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts +30 -1
  54. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts.map +1 -1
  55. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts +13 -1
  56. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts.map +1 -1
  57. package/dist/types/src/playground/Surfaces.stories.d.ts +6 -2
  58. package/dist/types/src/playground/Surfaces.stories.d.ts.map +1 -1
  59. package/dist/types/src/playground/Typography.stories.d.ts +1 -1
  60. package/package.json +25 -19
  61. package/src/components/Avatars/Avatar.stories.tsx +3 -2
  62. package/src/components/Avatars/AvatarGroup.stories.tsx +3 -2
  63. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +3 -2
  64. package/src/components/Buttons/Button.stories.tsx +1 -1
  65. package/src/components/Buttons/Button.tsx +46 -36
  66. package/src/components/Buttons/Toggle.stories.tsx +3 -2
  67. package/src/components/Buttons/ToggleGroup.stories.tsx +3 -2
  68. package/src/components/Dialogs/AlertDialog.stories.tsx +3 -2
  69. package/src/components/Dialogs/Dialog.stories.tsx +3 -2
  70. package/src/components/Icon/Icon.tsx +11 -9
  71. package/src/components/Input/Input.stories.tsx +4 -3
  72. package/src/components/Link/Link.stories.tsx +1 -1
  73. package/src/components/Lists/List.stories.tsx +4 -4
  74. package/src/components/Lists/Tree.stories.tsx +3 -2
  75. package/src/components/Lists/Treegrid.stories.tsx +1 -1
  76. package/src/components/Main/Main.stories.tsx +3 -2
  77. package/src/components/Menus/ContextMenu.stories.tsx +3 -2
  78. package/src/components/Menus/DropdownMenu.stories.tsx +43 -3
  79. package/src/components/Menus/DropdownMenu.tsx +518 -69
  80. package/src/components/Message/Message.stories.tsx +3 -2
  81. package/src/components/Popover/Popover.stories.tsx +27 -3
  82. package/src/components/Popover/Popover.tsx +524 -55
  83. package/src/components/ScrollArea/ScrollArea.stories.tsx +3 -2
  84. package/src/components/Select/Select.stories.tsx +1 -1
  85. package/src/components/Status/Status.stories.tsx +1 -1
  86. package/src/components/Tag/Tag.stories.tsx +1 -1
  87. package/src/components/Toast/Toast.stories.tsx +3 -2
  88. package/src/components/Toolbar/Toolbar.stories.tsx +3 -2
  89. package/src/components/Tooltip/Tooltip.stories.tsx +3 -2
  90. package/src/playground/Controls.stories.tsx +1 -1
  91. package/src/playground/Surfaces.stories.tsx +4 -3
  92. package/src/playground/Typography.stories.tsx +2 -2
@@ -122,8 +122,8 @@ var useVisualViewport = (deps) => {
122
122
  // packages/ui/react-ui/src/components/AnchoredOverflow/AnchoredOverflow.tsx
123
123
  var AnchoredOverflowRoot = /* @__PURE__ */ forwardRef(({ asChild, classNames, children, ...props }, forwardedRef) => {
124
124
  const { tx } = useThemeContext();
125
- const Root3 = asChild ? Slot : Primitive.div;
126
- return /* @__PURE__ */ React2.createElement(Root3, {
125
+ const Root5 = asChild ? Slot : Primitive.div;
126
+ return /* @__PURE__ */ React2.createElement(Root5, {
127
127
  role: "none",
128
128
  ...props,
129
129
  className: tx("anchoredOverflow.root", "overflow-anchored", {}, classNames),
@@ -132,8 +132,8 @@ var AnchoredOverflowRoot = /* @__PURE__ */ forwardRef(({ asChild, classNames, ch
132
132
  });
133
133
  var AnchoredOverflowAnchor = /* @__PURE__ */ forwardRef(({ asChild, classNames, children, ...props }, forwardedRef) => {
134
134
  const { tx } = useThemeContext();
135
- const Root3 = asChild ? Slot : Primitive.div;
136
- return /* @__PURE__ */ React2.createElement(Root3, {
135
+ const Root5 = asChild ? Slot : Primitive.div;
136
+ return /* @__PURE__ */ React2.createElement(Root5, {
137
137
  role: "none",
138
138
  ...props,
139
139
  className: tx("anchoredOverflow.anchor", "overflow-anchor", {}, classNames),
@@ -154,8 +154,8 @@ import React4, { forwardRef as forwardRef3 } from "react";
154
154
  import { useId } from "@dxos/react-hooks";
155
155
 
156
156
  // packages/ui/react-ui/src/components/Icon/Icon.tsx
157
- import React3, { forwardRef as forwardRef2 } from "react";
158
- var Icon = /* @__PURE__ */ forwardRef2(({ icon, classNames, size, ...props }, forwardedRef) => {
157
+ import React3, { forwardRef as forwardRef2, memo } from "react";
158
+ var Icon = /* @__PURE__ */ memo(/* @__PURE__ */ forwardRef2(({ icon, classNames, size, ...props }, forwardedRef) => {
159
159
  const { tx } = useThemeContext();
160
160
  return /* @__PURE__ */ React3.createElement("svg", {
161
161
  ...props,
@@ -166,7 +166,7 @@ var Icon = /* @__PURE__ */ forwardRef2(({ icon, classNames, size, ...props }, fo
166
166
  }, /* @__PURE__ */ React3.createElement("use", {
167
167
  href: `/icons.svg#${icon}`
168
168
  }));
169
- });
169
+ }));
170
170
 
171
171
  // packages/ui/react-ui/src/components/Avatars/Avatar.tsx
172
172
  var AVATAR_NAME = "Avatar";
@@ -260,10 +260,10 @@ var AvatarFrame = /* @__PURE__ */ forwardRef3(({ classNames, children, ...props
260
260
  }));
261
261
  });
262
262
  var AvatarLabel = /* @__PURE__ */ forwardRef3(({ asChild, srOnly, classNames, ...props }, forwardedRef) => {
263
- const Root3 = asChild ? Slot2 : Primitive2.span;
263
+ const Root5 = asChild ? Slot2 : Primitive2.span;
264
264
  const { tx } = useThemeContext();
265
265
  const { labelId } = useAvatarContext("AvatarLabel");
266
- return /* @__PURE__ */ React4.createElement(Root3, {
266
+ return /* @__PURE__ */ React4.createElement(Root5, {
267
267
  ...props,
268
268
  id: labelId,
269
269
  ref: forwardedRef,
@@ -273,10 +273,10 @@ var AvatarLabel = /* @__PURE__ */ forwardRef3(({ asChild, srOnly, classNames, ..
273
273
  });
274
274
  });
275
275
  var AvatarDescription = /* @__PURE__ */ forwardRef3(({ asChild, srOnly, classNames, ...props }, forwardedRef) => {
276
- const Root3 = asChild ? Slot2 : Primitive2.span;
276
+ const Root5 = asChild ? Slot2 : Primitive2.span;
277
277
  const { tx } = useThemeContext();
278
278
  const { descriptionId } = useAvatarContext("AvatarDescription");
279
- return /* @__PURE__ */ React4.createElement(Root3, {
279
+ return /* @__PURE__ */ React4.createElement(Root5, {
280
280
  ...props,
281
281
  id: descriptionId,
282
282
  ref: forwardedRef,
@@ -439,8 +439,8 @@ import { Slot as Slot3 } from "@radix-ui/react-slot";
439
439
  import React6, { forwardRef as forwardRef5 } from "react";
440
440
  var Link = /* @__PURE__ */ forwardRef5(({ asChild, variant, classNames, ...props }, forwardedRef) => {
441
441
  const { tx } = useThemeContext();
442
- const Root3 = asChild ? Slot3 : Primitive3.a;
443
- return /* @__PURE__ */ React6.createElement(Root3, {
442
+ const Root5 = asChild ? Slot3 : Primitive3.a;
443
+ return /* @__PURE__ */ React6.createElement(Root5, {
444
444
  ...props,
445
445
  className: tx("link.root", "link", {
446
446
  variant
@@ -452,8 +452,8 @@ var Link = /* @__PURE__ */ forwardRef5(({ asChild, variant, classNames, ...props
452
452
  // packages/ui/react-ui/src/components/Breadcrumb/Breadcrumb.tsx
453
453
  var BreadcrumbRoot = /* @__PURE__ */ forwardRef6(({ asChild, classNames, ...props }, forwardedRef) => {
454
454
  const { tx } = useThemeContext();
455
- const Root3 = asChild ? Slot4 : Primitive4.div;
456
- return /* @__PURE__ */ React7.createElement(Root3, {
455
+ const Root5 = asChild ? Slot4 : Primitive4.div;
456
+ return /* @__PURE__ */ React7.createElement(Root5, {
457
457
  role: "navigation",
458
458
  ...props,
459
459
  className: tx("breadcrumb.root", "breadcrumb", {}, classNames),
@@ -462,8 +462,8 @@ var BreadcrumbRoot = /* @__PURE__ */ forwardRef6(({ asChild, classNames, ...prop
462
462
  });
463
463
  var BreadcrumbList = /* @__PURE__ */ forwardRef6(({ asChild, classNames, ...props }, forwardedRef) => {
464
464
  const { tx } = useThemeContext();
465
- const Root3 = asChild ? Slot4 : Primitive4.ol;
466
- return /* @__PURE__ */ React7.createElement(Root3, {
465
+ const Root5 = asChild ? Slot4 : Primitive4.ol;
466
+ return /* @__PURE__ */ React7.createElement(Root5, {
467
467
  role: "list",
468
468
  ...props,
469
469
  className: tx("breadcrumb.list", "breadcrumb__list", {}, classNames),
@@ -472,8 +472,8 @@ var BreadcrumbList = /* @__PURE__ */ forwardRef6(({ asChild, classNames, ...prop
472
472
  });
473
473
  var BreadcrumbListItem = /* @__PURE__ */ forwardRef6(({ asChild, classNames, ...props }, forwardedRef) => {
474
474
  const { tx } = useThemeContext();
475
- const Root3 = asChild ? Slot4 : Primitive4.li;
476
- return /* @__PURE__ */ React7.createElement(Root3, {
475
+ const Root5 = asChild ? Slot4 : Primitive4.li;
476
+ return /* @__PURE__ */ React7.createElement(Root5, {
477
477
  role: "listitem",
478
478
  ...props,
479
479
  className: tx("breadcrumb.listItem", "breadcrumb__list__item", {}, classNames),
@@ -481,16 +481,16 @@ var BreadcrumbListItem = /* @__PURE__ */ forwardRef6(({ asChild, classNames, ...
481
481
  });
482
482
  });
483
483
  var BreadcrumbLink = /* @__PURE__ */ forwardRef6(({ asChild, ...props }, forwardedRef) => {
484
- const Root3 = asChild ? Slot4 : Link;
485
- return /* @__PURE__ */ React7.createElement(Root3, {
484
+ const Root5 = asChild ? Slot4 : Link;
485
+ return /* @__PURE__ */ React7.createElement(Root5, {
486
486
  ...props,
487
487
  ref: forwardedRef
488
488
  });
489
489
  });
490
490
  var BreadcrumbCurrent = /* @__PURE__ */ forwardRef6(({ asChild, classNames, ...props }, forwardedRef) => {
491
491
  const { tx } = useThemeContext();
492
- const Root3 = asChild ? Slot4 : "h1";
493
- return /* @__PURE__ */ React7.createElement(Root3, {
492
+ const Root5 = asChild ? Slot4 : "h1";
493
+ return /* @__PURE__ */ React7.createElement(Root5, {
494
494
  ...props,
495
495
  "aria-current": "page",
496
496
  className: tx("breadcrumb.current", "breadcrumb__item__heading--current", {}, classNames),
@@ -521,19 +521,19 @@ var Breadcrumb = {
521
521
  import { createContext as createContext3 } from "@radix-ui/react-context";
522
522
  import { Primitive as Primitive5 } from "@radix-ui/react-primitive";
523
523
  import { Slot as Slot5 } from "@radix-ui/react-slot";
524
- import React8, { forwardRef as forwardRef7 } from "react";
524
+ import React8, { forwardRef as forwardRef7, memo as memo2 } from "react";
525
525
  var BUTTON_GROUP_NAME = "ButtonGroup";
526
526
  var BUTTON_NAME = "Button";
527
527
  var [ButtonGroupProvider, useButtonGroupContext] = createContext3(BUTTON_GROUP_NAME, {
528
528
  inGroup: false
529
529
  });
530
- var Button = /* @__PURE__ */ forwardRef7(({ classNames, children, density: propsDensity, elevation: propsElevation, variant = "default", asChild, ...props }, ref) => {
530
+ var Button = /* @__PURE__ */ memo2(/* @__PURE__ */ forwardRef7(({ classNames, children, density: propsDensity, elevation: propsElevation, variant = "default", asChild, ...props }, ref) => {
531
531
  const { inGroup } = useButtonGroupContext(BUTTON_NAME);
532
532
  const { tx } = useThemeContext();
533
533
  const elevation = useElevationContext(propsElevation);
534
534
  const density = useDensityContext(propsDensity);
535
- const Root3 = asChild ? Slot5 : Primitive5.button;
536
- return /* @__PURE__ */ React8.createElement(Root3, {
535
+ const Root5 = asChild ? Slot5 : Primitive5.button;
536
+ return /* @__PURE__ */ React8.createElement(Root5, {
537
537
  ref,
538
538
  ...props,
539
539
  "data-variant": variant,
@@ -550,13 +550,13 @@ var Button = /* @__PURE__ */ forwardRef7(({ classNames, children, density: props
550
550
  disabled: true
551
551
  }
552
552
  }, children);
553
- });
553
+ }));
554
554
  Button.displayName = BUTTON_NAME;
555
555
  var ButtonGroup = /* @__PURE__ */ forwardRef7(({ children, elevation: propsElevation, classNames, asChild, ...props }, forwardedRef) => {
556
556
  const { tx } = useThemeContext();
557
557
  const elevation = useElevationContext(propsElevation);
558
- const Root3 = asChild ? Slot5 : Primitive5.div;
559
- return /* @__PURE__ */ React8.createElement(Root3, {
558
+ const Root5 = asChild ? Slot5 : Primitive5.div;
559
+ return /* @__PURE__ */ React8.createElement(Root5, {
560
560
  role: "none",
561
561
  ...props,
562
562
  className: tx("button.group", "button-group", {
@@ -786,8 +786,8 @@ var ContextMenuContent = /* @__PURE__ */ forwardRef12(({ classNames, children, .
786
786
  });
787
787
  var ContextMenuViewport = /* @__PURE__ */ forwardRef12(({ classNames, asChild, children, ...props }, forwardedRef) => {
788
788
  const { tx } = useThemeContext();
789
- const Root3 = asChild ? Slot6 : Primitive6.div;
790
- return /* @__PURE__ */ React14.createElement(Root3, {
789
+ const Root5 = asChild ? Slot6 : Primitive6.div;
790
+ return /* @__PURE__ */ React14.createElement(Root5, {
791
791
  ...props,
792
792
  className: tx("menu.viewport", "menu__viewport", {}, classNames),
793
793
  ref: forwardedRef
@@ -851,99 +851,364 @@ var ContextMenu2 = {
851
851
  };
852
852
 
853
853
  // packages/ui/react-ui/src/components/Menus/DropdownMenu.tsx
854
- import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
854
+ import { composeEventHandlers } from "@radix-ui/primitive";
855
+ import { composeRefs } from "@radix-ui/react-compose-refs";
856
+ import { createContextScope } from "@radix-ui/react-context";
857
+ import { useId as useId3 } from "@radix-ui/react-id";
858
+ import * as MenuPrimitive from "@radix-ui/react-menu";
859
+ import { createMenuScope } from "@radix-ui/react-menu";
855
860
  import { Primitive as Primitive7 } from "@radix-ui/react-primitive";
856
861
  import { Slot as Slot7 } from "@radix-ui/react-slot";
857
- import React15, { forwardRef as forwardRef13 } from "react";
858
- var DropdownMenuRoot = DropdownMenuPrimitive.DropdownMenu;
859
- var DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
860
- var DropdownMenuPortal = DropdownMenuPrimitive.Portal;
861
- var useDropdownMenuContext2 = DropdownMenuPrimitive.useDropdownMenuContext;
862
- var useDropdownMenuMenuScope2 = DropdownMenuPrimitive.useDropdownMenuMenuScope;
863
- var DropdownMenuContent = /* @__PURE__ */ forwardRef13(({ classNames, children, ...props }, forwardedRef) => {
864
- const { tx } = useThemeContext();
865
- return /* @__PURE__ */ React15.createElement(DropdownMenuPrimitive.Content, {
866
- sideOffset: 4,
867
- collisionPadding: 8,
868
- ...props,
869
- className: tx("menu.content", "menu", {}, classNames),
870
- ref: forwardedRef
871
- }, /* @__PURE__ */ React15.createElement(ElevationProvider, {
872
- elevation: "chrome"
862
+ import { useControllableState } from "@radix-ui/react-use-controllable-state";
863
+ import React15, { useRef, useCallback, forwardRef as forwardRef13, useEffect as useEffect3 } from "react";
864
+ var DROPDOWN_MENU_NAME = "DropdownMenu";
865
+ var [createDropdownMenuContext, createDropdownMenuScope] = createContextScope(DROPDOWN_MENU_NAME, [
866
+ createMenuScope
867
+ ]);
868
+ var useMenuScope = createMenuScope();
869
+ var [DropdownMenuProvider, useDropdownMenuContext] = createDropdownMenuContext(DROPDOWN_MENU_NAME);
870
+ var DropdownMenuRoot = (props) => {
871
+ const { __scopeDropdownMenu, children, dir, open: openProp, defaultOpen, onOpenChange, modal = true } = props;
872
+ const menuScope = useMenuScope(__scopeDropdownMenu);
873
+ const triggerRef = useRef(null);
874
+ const [open = false, setOpen] = useControllableState({
875
+ prop: openProp,
876
+ defaultProp: defaultOpen,
877
+ onChange: onOpenChange
878
+ });
879
+ return /* @__PURE__ */ React15.createElement(DropdownMenuProvider, {
880
+ scope: __scopeDropdownMenu,
881
+ triggerId: useId3(),
882
+ triggerRef,
883
+ contentId: useId3(),
884
+ open,
885
+ onOpenChange: setOpen,
886
+ onOpenToggle: useCallback(() => setOpen((prevOpen) => !prevOpen), [
887
+ setOpen
888
+ ]),
889
+ modal
890
+ }, /* @__PURE__ */ React15.createElement(MenuPrimitive.Root, {
891
+ ...menuScope,
892
+ open,
893
+ onOpenChange: setOpen,
894
+ dir,
895
+ modal
873
896
  }, children));
897
+ };
898
+ DropdownMenuRoot.displayName = DROPDOWN_MENU_NAME;
899
+ var TRIGGER_NAME = "DropdownMenuTrigger";
900
+ var DropdownMenuTrigger = /* @__PURE__ */ forwardRef13((props, forwardedRef) => {
901
+ const { __scopeDropdownMenu, disabled = false, ...triggerProps } = props;
902
+ const context = useDropdownMenuContext(TRIGGER_NAME, __scopeDropdownMenu);
903
+ const menuScope = useMenuScope(__scopeDropdownMenu);
904
+ return /* @__PURE__ */ React15.createElement(MenuPrimitive.Anchor, {
905
+ asChild: true,
906
+ ...menuScope
907
+ }, /* @__PURE__ */ React15.createElement(Primitive7.button, {
908
+ type: "button",
909
+ id: context.triggerId,
910
+ "aria-haspopup": "menu",
911
+ "aria-expanded": context.open,
912
+ "aria-controls": context.open ? context.contentId : void 0,
913
+ "data-state": context.open ? "open" : "closed",
914
+ "data-disabled": disabled ? "" : void 0,
915
+ disabled,
916
+ ...triggerProps,
917
+ ref: composeRefs(forwardedRef, context.triggerRef),
918
+ onPointerDown: composeEventHandlers(props.onPointerDown, (event) => {
919
+ if (!disabled && event.button === 0 && event.ctrlKey === false) {
920
+ context.onOpenToggle();
921
+ if (!context.open) {
922
+ event.preventDefault();
923
+ }
924
+ }
925
+ }),
926
+ onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {
927
+ if (disabled) {
928
+ return;
929
+ }
930
+ if ([
931
+ "Enter",
932
+ " "
933
+ ].includes(event.key)) {
934
+ context.onOpenToggle();
935
+ }
936
+ if (event.key === "ArrowDown") {
937
+ context.onOpenChange(true);
938
+ }
939
+ if ([
940
+ "Enter",
941
+ " ",
942
+ "ArrowDown"
943
+ ].includes(event.key)) {
944
+ event.preventDefault();
945
+ }
946
+ })
947
+ }));
874
948
  });
949
+ DropdownMenuTrigger.displayName = TRIGGER_NAME;
950
+ var VIRTUAL_TRIGGER_NAME = "DropdownMenuVirtualTrigger";
951
+ var DropdownMenuVirtualTrigger = (props) => {
952
+ const { __scopeDropdownMenu, virtualRef } = props;
953
+ const context = useDropdownMenuContext(VIRTUAL_TRIGGER_NAME, __scopeDropdownMenu);
954
+ const menuScope = useMenuScope(__scopeDropdownMenu);
955
+ useEffect3(() => {
956
+ if (virtualRef.current) {
957
+ context.triggerRef.current = virtualRef.current;
958
+ }
959
+ });
960
+ return /* @__PURE__ */ React15.createElement(MenuPrimitive.Anchor, {
961
+ ...menuScope,
962
+ virtualRef
963
+ });
964
+ };
965
+ DropdownMenuVirtualTrigger.displayName = VIRTUAL_TRIGGER_NAME;
966
+ var PORTAL_NAME = "DropdownMenuPortal";
967
+ var DropdownMenuPortal = (props) => {
968
+ const { __scopeDropdownMenu, ...portalProps } = props;
969
+ const menuScope = useMenuScope(__scopeDropdownMenu);
970
+ return /* @__PURE__ */ React15.createElement(MenuPrimitive.Portal, {
971
+ ...menuScope,
972
+ ...portalProps
973
+ });
974
+ };
975
+ DropdownMenuPortal.displayName = PORTAL_NAME;
875
976
  var DropdownMenuViewport = /* @__PURE__ */ forwardRef13(({ classNames, asChild, children, ...props }, forwardedRef) => {
876
977
  const { tx } = useThemeContext();
877
- const Root3 = asChild ? Slot7 : Primitive7.div;
878
- return /* @__PURE__ */ React15.createElement(Root3, {
978
+ const Root5 = asChild ? Slot7 : Primitive7.div;
979
+ return /* @__PURE__ */ React15.createElement(Root5, {
879
980
  ...props,
880
981
  className: tx("menu.viewport", "menu__viewport", {}, classNames),
881
982
  ref: forwardedRef
882
983
  }, children);
883
984
  });
884
- var DropdownMenuArrow = /* @__PURE__ */ forwardRef13(({ classNames, ...props }, forwardedRef) => {
985
+ var CONTENT_NAME = "DropdownMenuContent";
986
+ var DropdownMenuContent = /* @__PURE__ */ forwardRef13((props, forwardedRef) => {
987
+ const { __scopeDropdownMenu, classNames, ...contentProps } = props;
988
+ const { tx } = useThemeContext();
989
+ const context = useDropdownMenuContext(CONTENT_NAME, __scopeDropdownMenu);
990
+ const menuScope = useMenuScope(__scopeDropdownMenu);
991
+ const hasInteractedOutsideRef = useRef(false);
992
+ return /* @__PURE__ */ React15.createElement(MenuPrimitive.Content, {
993
+ id: context.contentId,
994
+ "aria-labelledby": context.triggerId,
995
+ ...menuScope,
996
+ ...contentProps,
997
+ ref: forwardedRef,
998
+ onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => {
999
+ if (!hasInteractedOutsideRef.current) {
1000
+ context.triggerRef.current?.focus();
1001
+ }
1002
+ hasInteractedOutsideRef.current = false;
1003
+ event.preventDefault();
1004
+ }),
1005
+ onInteractOutside: composeEventHandlers(props.onInteractOutside, (event) => {
1006
+ const originalEvent = event.detail.originalEvent;
1007
+ const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;
1008
+ const isRightClick = originalEvent.button === 2 || ctrlLeftClick;
1009
+ if (!context.modal || isRightClick) {
1010
+ hasInteractedOutsideRef.current = true;
1011
+ }
1012
+ }),
1013
+ className: tx("menu.content", "menu", {}, classNames),
1014
+ style: {
1015
+ ...props.style,
1016
+ // re-namespace exposed content custom properties
1017
+ ...{
1018
+ "--radix-dropdown-menu-content-transform-origin": "var(--radix-popper-transform-origin)",
1019
+ "--radix-dropdown-menu-content-available-width": "var(--radix-popper-available-width)",
1020
+ "--radix-dropdown-menu-content-available-height": "var(--radix-popper-available-height)",
1021
+ "--radix-dropdown-menu-trigger-width": "var(--radix-popper-anchor-width)",
1022
+ "--radix-dropdown-menu-trigger-height": "var(--radix-popper-anchor-height)"
1023
+ }
1024
+ }
1025
+ });
1026
+ });
1027
+ DropdownMenuContent.displayName = CONTENT_NAME;
1028
+ var GROUP_NAME = "DropdownMenuGroup";
1029
+ var DropdownMenuGroup = /* @__PURE__ */ forwardRef13((props, forwardedRef) => {
1030
+ const { __scopeDropdownMenu, ...groupProps } = props;
1031
+ const menuScope = useMenuScope(__scopeDropdownMenu);
1032
+ return /* @__PURE__ */ React15.createElement(MenuPrimitive.Group, {
1033
+ ...menuScope,
1034
+ ...groupProps,
1035
+ ref: forwardedRef
1036
+ });
1037
+ });
1038
+ DropdownMenuGroup.displayName = GROUP_NAME;
1039
+ var LABEL_NAME = "DropdownMenuLabel";
1040
+ var DropdownMenuGroupLabel = /* @__PURE__ */ forwardRef13((props, forwardedRef) => {
1041
+ const { __scopeDropdownMenu, classNames, ...labelProps } = props;
1042
+ const menuScope = useMenuScope(__scopeDropdownMenu);
885
1043
  const { tx } = useThemeContext();
886
- return /* @__PURE__ */ React15.createElement(DropdownMenuPrimitive.Arrow, {
887
- ...props,
888
- className: tx("menu.arrow", "menu__arrow", {}, classNames),
1044
+ return /* @__PURE__ */ React15.createElement(MenuPrimitive.Label, {
1045
+ ...menuScope,
1046
+ ...labelProps,
1047
+ className: tx("menu.groupLabel", "menu__group__label", {}, classNames),
889
1048
  ref: forwardedRef
890
1049
  });
891
1050
  });
892
- var DropdownMenuGroup = DropdownMenuPrimitive.Group;
893
- var DropdownMenuItemIndicator = DropdownMenuPrimitive.ItemIndicator;
894
- var DropdownMenuItem = /* @__PURE__ */ forwardRef13(({ classNames, ...props }, forwardedRef) => {
1051
+ DropdownMenuGroupLabel.displayName = LABEL_NAME;
1052
+ var ITEM_NAME = "DropdownMenuItem";
1053
+ var DropdownMenuItem = /* @__PURE__ */ forwardRef13((props, forwardedRef) => {
1054
+ const { __scopeDropdownMenu, classNames, ...itemProps } = props;
1055
+ const menuScope = useMenuScope(__scopeDropdownMenu);
895
1056
  const { tx } = useThemeContext();
896
- return /* @__PURE__ */ React15.createElement(DropdownMenuPrimitive.Item, {
897
- ...props,
1057
+ return /* @__PURE__ */ React15.createElement(MenuPrimitive.Item, {
1058
+ ...menuScope,
1059
+ ...itemProps,
898
1060
  className: tx("menu.item", "menu__item", {}, classNames),
899
1061
  ref: forwardedRef
900
1062
  });
901
1063
  });
902
- var DropdownMenuCheckboxItem = /* @__PURE__ */ forwardRef13(({ classNames, ...props }, forwardedRef) => {
1064
+ DropdownMenuItem.displayName = ITEM_NAME;
1065
+ var CHECKBOX_ITEM_NAME = "DropdownMenuCheckboxItem";
1066
+ var DropdownMenuCheckboxItem = /* @__PURE__ */ forwardRef13((props, forwardedRef) => {
1067
+ const { __scopeDropdownMenu, classNames, ...checkboxItemProps } = props;
1068
+ const menuScope = useMenuScope(__scopeDropdownMenu);
903
1069
  const { tx } = useThemeContext();
904
- return /* @__PURE__ */ React15.createElement(DropdownMenuPrimitive.CheckboxItem, {
905
- ...props,
1070
+ return /* @__PURE__ */ React15.createElement(MenuPrimitive.CheckboxItem, {
1071
+ ...menuScope,
1072
+ ...checkboxItemProps,
906
1073
  className: tx("menu.item", "menu__item--checkbox", {}, classNames),
907
1074
  ref: forwardedRef
908
1075
  });
909
1076
  });
910
- var DropdownMenuSeparator = /* @__PURE__ */ forwardRef13(({ classNames, ...props }, forwardedRef) => {
1077
+ DropdownMenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME;
1078
+ var RADIO_GROUP_NAME = "DropdownMenuRadioGroup";
1079
+ var DropdownMenuRadioGroup = /* @__PURE__ */ forwardRef13((props, forwardedRef) => {
1080
+ const { __scopeDropdownMenu, ...radioGroupProps } = props;
1081
+ const menuScope = useMenuScope(__scopeDropdownMenu);
1082
+ return /* @__PURE__ */ React15.createElement(MenuPrimitive.RadioGroup, {
1083
+ ...menuScope,
1084
+ ...radioGroupProps,
1085
+ ref: forwardedRef
1086
+ });
1087
+ });
1088
+ DropdownMenuRadioGroup.displayName = RADIO_GROUP_NAME;
1089
+ var RADIO_ITEM_NAME = "DropdownMenuRadioItem";
1090
+ var DropdownMenuRadioItem = /* @__PURE__ */ forwardRef13((props, forwardedRef) => {
1091
+ const { __scopeDropdownMenu, ...radioItemProps } = props;
1092
+ const menuScope = useMenuScope(__scopeDropdownMenu);
1093
+ return /* @__PURE__ */ React15.createElement(MenuPrimitive.RadioItem, {
1094
+ ...menuScope,
1095
+ ...radioItemProps,
1096
+ ref: forwardedRef
1097
+ });
1098
+ });
1099
+ DropdownMenuRadioItem.displayName = RADIO_ITEM_NAME;
1100
+ var INDICATOR_NAME = "DropdownMenuItemIndicator";
1101
+ var DropdownMenuItemIndicator = /* @__PURE__ */ forwardRef13((props, forwardedRef) => {
1102
+ const { __scopeDropdownMenu, ...itemIndicatorProps } = props;
1103
+ const menuScope = useMenuScope(__scopeDropdownMenu);
1104
+ return /* @__PURE__ */ React15.createElement(MenuPrimitive.ItemIndicator, {
1105
+ ...menuScope,
1106
+ ...itemIndicatorProps,
1107
+ ref: forwardedRef
1108
+ });
1109
+ });
1110
+ DropdownMenuItemIndicator.displayName = INDICATOR_NAME;
1111
+ var SEPARATOR_NAME = "DropdownMenuSeparator";
1112
+ var DropdownMenuSeparator = /* @__PURE__ */ forwardRef13((props, forwardedRef) => {
1113
+ const { __scopeDropdownMenu, classNames, ...separatorProps } = props;
1114
+ const menuScope = useMenuScope(__scopeDropdownMenu);
911
1115
  const { tx } = useThemeContext();
912
- return /* @__PURE__ */ React15.createElement(DropdownMenuPrimitive.Separator, {
913
- ...props,
1116
+ return /* @__PURE__ */ React15.createElement(MenuPrimitive.Separator, {
1117
+ ...menuScope,
1118
+ ...separatorProps,
914
1119
  className: tx("menu.separator", "menu__item", {}, classNames),
915
1120
  ref: forwardedRef
916
1121
  });
917
1122
  });
918
- var DropdownMenuGroupLabel = /* @__PURE__ */ forwardRef13(({ classNames, ...props }, forwardedRef) => {
1123
+ DropdownMenuSeparator.displayName = SEPARATOR_NAME;
1124
+ var ARROW_NAME = "DropdownMenuArrow";
1125
+ var DropdownMenuArrow = /* @__PURE__ */ forwardRef13((props, forwardedRef) => {
1126
+ const { __scopeDropdownMenu, classNames, ...arrowProps } = props;
1127
+ const menuScope = useMenuScope(__scopeDropdownMenu);
919
1128
  const { tx } = useThemeContext();
920
- return /* @__PURE__ */ React15.createElement(DropdownMenuPrimitive.Label, {
921
- ...props,
922
- className: tx("menu.groupLabel", "menu__group__label", {}, classNames),
1129
+ return /* @__PURE__ */ React15.createElement(MenuPrimitive.Arrow, {
1130
+ ...menuScope,
1131
+ ...arrowProps,
1132
+ className: tx("menu.arrow", "menu__arrow", {}, classNames),
923
1133
  ref: forwardedRef
924
1134
  });
925
1135
  });
926
- var DropdownMenu2 = {
1136
+ DropdownMenuArrow.displayName = ARROW_NAME;
1137
+ var DropdownMenuSub = (props) => {
1138
+ const { __scopeDropdownMenu, children, open: openProp, onOpenChange, defaultOpen } = props;
1139
+ const menuScope = useMenuScope(__scopeDropdownMenu);
1140
+ const [open = false, setOpen] = useControllableState({
1141
+ prop: openProp,
1142
+ defaultProp: defaultOpen,
1143
+ onChange: onOpenChange
1144
+ });
1145
+ return /* @__PURE__ */ React15.createElement(MenuPrimitive.Sub, {
1146
+ ...menuScope,
1147
+ open,
1148
+ onOpenChange: setOpen
1149
+ }, children);
1150
+ };
1151
+ var SUB_TRIGGER_NAME = "DropdownMenuSubTrigger";
1152
+ var DropdownMenuSubTrigger = /* @__PURE__ */ forwardRef13((props, forwardedRef) => {
1153
+ const { __scopeDropdownMenu, ...subTriggerProps } = props;
1154
+ const menuScope = useMenuScope(__scopeDropdownMenu);
1155
+ return /* @__PURE__ */ React15.createElement(MenuPrimitive.SubTrigger, {
1156
+ ...menuScope,
1157
+ ...subTriggerProps,
1158
+ ref: forwardedRef
1159
+ });
1160
+ });
1161
+ DropdownMenuSubTrigger.displayName = SUB_TRIGGER_NAME;
1162
+ var SUB_CONTENT_NAME = "DropdownMenuSubContent";
1163
+ var DropdownMenuSubContent = /* @__PURE__ */ forwardRef13((props, forwardedRef) => {
1164
+ const { __scopeDropdownMenu, ...subContentProps } = props;
1165
+ const menuScope = useMenuScope(__scopeDropdownMenu);
1166
+ return /* @__PURE__ */ React15.createElement(MenuPrimitive.SubContent, {
1167
+ ...menuScope,
1168
+ ...subContentProps,
1169
+ ref: forwardedRef,
1170
+ style: {
1171
+ ...props.style,
1172
+ // re-namespace exposed content custom properties
1173
+ ...{
1174
+ "--radix-dropdown-menu-content-transform-origin": "var(--radix-popper-transform-origin)",
1175
+ "--radix-dropdown-menu-content-available-width": "var(--radix-popper-available-width)",
1176
+ "--radix-dropdown-menu-content-available-height": "var(--radix-popper-available-height)",
1177
+ "--radix-dropdown-menu-trigger-width": "var(--radix-popper-anchor-width)",
1178
+ "--radix-dropdown-menu-trigger-height": "var(--radix-popper-anchor-height)"
1179
+ }
1180
+ }
1181
+ });
1182
+ });
1183
+ DropdownMenuSubContent.displayName = SUB_CONTENT_NAME;
1184
+ var DropdownMenu = {
927
1185
  Root: DropdownMenuRoot,
928
1186
  Trigger: DropdownMenuTrigger,
1187
+ VirtualTrigger: DropdownMenuVirtualTrigger,
929
1188
  Portal: DropdownMenuPortal,
930
1189
  Content: DropdownMenuContent,
931
1190
  Viewport: DropdownMenuViewport,
932
- Arrow: DropdownMenuArrow,
933
1191
  Group: DropdownMenuGroup,
1192
+ GroupLabel: DropdownMenuGroupLabel,
934
1193
  Item: DropdownMenuItem,
935
1194
  CheckboxItem: DropdownMenuCheckboxItem,
1195
+ RadioGroup: DropdownMenuRadioGroup,
1196
+ RadioItem: DropdownMenuRadioItem,
936
1197
  ItemIndicator: DropdownMenuItemIndicator,
937
1198
  Separator: DropdownMenuSeparator,
938
- GroupLabel: DropdownMenuGroupLabel
1199
+ Arrow: DropdownMenuArrow,
1200
+ Sub: DropdownMenuSub,
1201
+ SubTrigger: DropdownMenuSubTrigger,
1202
+ SubContent: DropdownMenuSubContent
939
1203
  };
1204
+ var useDropdownMenuMenuScope = useMenuScope;
940
1205
 
941
1206
  // packages/ui/react-ui/src/components/Input/Input.tsx
942
1207
  import { Check, Minus } from "@phosphor-icons/react";
943
1208
  import { Root as CheckboxPrimitive, Indicator as CheckboxIndicatorPrimitive } from "@radix-ui/react-checkbox";
944
1209
  import { Root as SwitchPrimitive, Thumb as SwitchThumbPrimitive } from "@radix-ui/react-switch";
945
- import { useControllableState } from "@radix-ui/react-use-controllable-state";
946
- import React16, { forwardRef as forwardRef14, Fragment, useCallback } from "react";
1210
+ import { useControllableState as useControllableState2 } from "@radix-ui/react-use-controllable-state";
1211
+ import React16, { forwardRef as forwardRef14, Fragment, useCallback as useCallback2 } from "react";
947
1212
  import { InputRoot, PinInput as PinInputPrimitive, TextInput as TextInputPrimitive, TextArea as TextAreaPrimitive, useInputContext, INPUT_NAME, Description as DescriptionPrimitive, DescriptionAndValidation as DescriptionAndValidationPrimitive, Label as LabelPrimitive, Validation as ValidationPrimitive } from "@dxos/react-input";
948
1213
  var Label3 = /* @__PURE__ */ forwardRef14(({ srOnly, classNames, children, ...props }, forwardedRef) => {
949
1214
  const { tx } = useThemeContext();
@@ -992,7 +1257,7 @@ var PinInput = /* @__PURE__ */ forwardRef14(({ density: propsDensity, elevation:
992
1257
  const { tx } = useThemeContext();
993
1258
  const density = useDensityContext(propsDensity);
994
1259
  const elevation = useElevationContext(propsElevation);
995
- const segmentClassName = useCallback(({ focused, validationValence }) => tx("input.input", "input--pin-segment", {
1260
+ const segmentClassName = useCallback2(({ focused, validationValence }) => tx("input.input", "input--pin-segment", {
996
1261
  variant: "static",
997
1262
  focused,
998
1263
  disabled: props.disabled,
@@ -1062,7 +1327,7 @@ var TextArea = /* @__PURE__ */ forwardRef14(({ __inputScope, classNames, density
1062
1327
  });
1063
1328
  });
1064
1329
  var Checkbox = /* @__PURE__ */ forwardRef14(({ __inputScope, checked: propsChecked, defaultChecked: propsDefaultChecked, onCheckedChange: propsOnCheckedChange, size, weight = "bold", classNames, ...props }, forwardedRef) => {
1065
- const [checked, onCheckedChange] = useControllableState({
1330
+ const [checked, onCheckedChange] = useControllableState2({
1066
1331
  prop: propsChecked,
1067
1332
  defaultProp: propsDefaultChecked,
1068
1333
  onChange: propsOnCheckedChange
@@ -1095,7 +1360,7 @@ var Checkbox = /* @__PURE__ */ forwardRef14(({ __inputScope, checked: propsCheck
1095
1360
  });
1096
1361
  var Switch = /* @__PURE__ */ forwardRef14(({ __inputScope, checked: propsChecked, defaultChecked: propsDefaultChecked, onCheckedChange: propsOnCheckedChange, size = 5, classNames, ...props }, forwardedRef) => {
1097
1362
  const { tx } = useThemeContext();
1098
- const [checked, onCheckedChange] = useControllableState({
1363
+ const [checked, onCheckedChange] = useControllableState2({
1099
1364
  prop: propsChecked,
1100
1365
  defaultProp: propsDefaultChecked,
1101
1366
  onChange: propsOnCheckedChange
@@ -1164,10 +1429,10 @@ var List = /* @__PURE__ */ forwardRef15(({ classNames, children, ...props }, for
1164
1429
  }, children));
1165
1430
  });
1166
1431
  var ListItemEndcap = /* @__PURE__ */ forwardRef15(({ children, classNames, asChild, ...props }, forwardedRef) => {
1167
- const Root3 = asChild ? Slot8 : "div";
1432
+ const Root5 = asChild ? Slot8 : "div";
1168
1433
  const density = useDensityContext();
1169
1434
  const { tx } = useThemeContext();
1170
- return /* @__PURE__ */ React18.createElement(Root3, {
1435
+ return /* @__PURE__ */ React18.createElement(Root5, {
1171
1436
  ...!asChild && {
1172
1437
  role: "none"
1173
1438
  },
@@ -1278,25 +1543,25 @@ var TreeItem = {
1278
1543
 
1279
1544
  // packages/ui/react-ui/src/components/Lists/Treegrid.tsx
1280
1545
  import { useFocusableGroup, useArrowNavigationGroup } from "@fluentui/react-tabster";
1281
- import { createContextScope } from "@radix-ui/react-context";
1546
+ import { createContextScope as createContextScope2 } from "@radix-ui/react-context";
1282
1547
  import { Primitive as Primitive8 } from "@radix-ui/react-primitive";
1283
1548
  import { Slot as Slot9 } from "@radix-ui/react-slot";
1284
- import { useControllableState as useControllableState2 } from "@radix-ui/react-use-controllable-state";
1549
+ import { useControllableState as useControllableState3 } from "@radix-ui/react-use-controllable-state";
1285
1550
  import React20, { forwardRef as forwardRef17 } from "react";
1286
1551
  var TREEGRID_ROW_NAME = "TreegridRow";
1287
- var [createTreegridRowContext, createTreegridRowScope] = createContextScope(TREEGRID_ROW_NAME, []);
1552
+ var [createTreegridRowContext, createTreegridRowScope] = createContextScope2(TREEGRID_ROW_NAME, []);
1288
1553
  var [TreegridRowProvider, useTreegridRowContext] = createTreegridRowContext(TREEGRID_ROW_NAME);
1289
1554
  var PATH_SEPARATOR = "~";
1290
1555
  var PARENT_OF_SEPARATOR = " ";
1291
1556
  var TreegridRoot = /* @__PURE__ */ forwardRef17(({ asChild, classNames, children, style, gridTemplateColumns, ...props }, forwardedRef) => {
1292
1557
  const { tx } = useThemeContext();
1293
- const Root3 = asChild ? Slot9 : Primitive8.div;
1558
+ const Root5 = asChild ? Slot9 : Primitive8.div;
1294
1559
  const arrowNavigationAttrs = useArrowNavigationGroup({
1295
1560
  axis: "vertical",
1296
1561
  tabbable: false,
1297
1562
  circular: true
1298
1563
  });
1299
- return /* @__PURE__ */ React20.createElement(Root3, {
1564
+ return /* @__PURE__ */ React20.createElement(Root5, {
1300
1565
  role: "treegrid",
1301
1566
  ...arrowNavigationAttrs,
1302
1567
  ...props,
@@ -1310,10 +1575,10 @@ var TreegridRoot = /* @__PURE__ */ forwardRef17(({ asChild, classNames, children
1310
1575
  });
1311
1576
  var TreegridRow = /* @__PURE__ */ forwardRef17(({ __treegridRowScope, asChild, classNames, children, id, parentOf, open: propsOpen, defaultOpen, onOpenChange: propsOnOpenChange, ...props }, forwardedRef) => {
1312
1577
  const { tx } = useThemeContext();
1313
- const Root3 = asChild ? Slot9 : Primitive8.div;
1578
+ const Root5 = asChild ? Slot9 : Primitive8.div;
1314
1579
  const pathParts = id.split(PATH_SEPARATOR);
1315
1580
  const level = pathParts.length - 1;
1316
- const [open, onOpenChange] = useControllableState2({
1581
+ const [open, onOpenChange] = useControllableState3({
1317
1582
  prop: propsOpen,
1318
1583
  onChange: propsOnOpenChange,
1319
1584
  defaultProp: defaultOpen
@@ -1331,7 +1596,7 @@ var TreegridRow = /* @__PURE__ */ forwardRef17(({ __treegridRowScope, asChild, c
1331
1596
  open,
1332
1597
  onOpenChange,
1333
1598
  scope: __treegridRowScope
1334
- }, /* @__PURE__ */ React20.createElement(Root3, {
1599
+ }, /* @__PURE__ */ React20.createElement(Root5, {
1335
1600
  role: "row",
1336
1601
  "aria-level": level,
1337
1602
  className: tx("treegrid.row", "treegrid__row", {
@@ -1380,13 +1645,13 @@ import { createContext as createContext8 } from "@radix-ui/react-context";
1380
1645
  import { Root as DialogRoot2, DialogContent as DialogContent2 } from "@radix-ui/react-dialog";
1381
1646
  import { Primitive as Primitive9 } from "@radix-ui/react-primitive";
1382
1647
  import { Slot as Slot10 } from "@radix-ui/react-slot";
1383
- import { useControllableState as useControllableState3 } from "@radix-ui/react-use-controllable-state";
1384
- import React21, { forwardRef as forwardRef18, useCallback as useCallback3, useEffect as useEffect4, useRef, useState as useState4 } from "react";
1648
+ import { useControllableState as useControllableState4 } from "@radix-ui/react-use-controllable-state";
1649
+ import React21, { forwardRef as forwardRef18, useCallback as useCallback4, useEffect as useEffect5, useRef as useRef2, useState as useState4 } from "react";
1385
1650
  import { log } from "@dxos/log";
1386
1651
  import { useMediaQuery, useForwardedRef } from "@dxos/react-hooks";
1387
1652
 
1388
1653
  // packages/ui/react-ui/src/components/Main/useSwipeToDismiss.ts
1389
- import { useCallback as useCallback2, useEffect as useEffect3, useState as useState3 } from "react";
1654
+ import { useCallback as useCallback3, useEffect as useEffect4, useState as useState3 } from "react";
1390
1655
  var MotionState;
1391
1656
  (function(MotionState2) {
1392
1657
  MotionState2[MotionState2["IDLE"] = 0] = "IDLE";
@@ -1403,20 +1668,20 @@ var useSwipeToDismiss = (ref, {
1403
1668
  const $root = ref.current;
1404
1669
  const [motionState, setMotionState] = useState3(0);
1405
1670
  const [gestureStartX, setGestureStartX] = useState3(0);
1406
- const setIdle = useCallback2(() => {
1671
+ const setIdle = useCallback3(() => {
1407
1672
  setMotionState(0);
1408
1673
  $root?.style.removeProperty("inset-inline-start");
1409
1674
  $root?.style.setProperty("transition-duration", "200ms");
1410
1675
  }, [
1411
1676
  $root
1412
1677
  ]);
1413
- const setFollowing = useCallback2(() => {
1678
+ const setFollowing = useCallback3(() => {
1414
1679
  setMotionState(2);
1415
1680
  $root?.style.setProperty("transition-duration", "0ms");
1416
1681
  }, [
1417
1682
  $root
1418
1683
  ]);
1419
- const handlePointerDown = useCallback2(({ screenX }) => {
1684
+ const handlePointerDown = useCallback3(({ screenX }) => {
1420
1685
  if (motionState === 0) {
1421
1686
  setMotionState(1);
1422
1687
  setGestureStartX(screenX);
@@ -1424,7 +1689,7 @@ var useSwipeToDismiss = (ref, {
1424
1689
  }, [
1425
1690
  motionState
1426
1691
  ]);
1427
- const handlePointerMove = useCallback2(({ screenX }) => {
1692
+ const handlePointerMove = useCallback3(({ screenX }) => {
1428
1693
  if ($root) {
1429
1694
  const delta = Math.min(screenX - gestureStartX, 0);
1430
1695
  switch (motionState) {
@@ -1448,12 +1713,12 @@ var useSwipeToDismiss = (ref, {
1448
1713
  motionState,
1449
1714
  gestureStartX
1450
1715
  ]);
1451
- const handlePointerUp = useCallback2(() => {
1716
+ const handlePointerUp = useCallback3(() => {
1452
1717
  setIdle();
1453
1718
  }, [
1454
1719
  setIdle
1455
1720
  ]);
1456
- useEffect3(() => {
1721
+ useEffect4(() => {
1457
1722
  $root?.addEventListener("pointerdown", handlePointerDown);
1458
1723
  return () => {
1459
1724
  $root?.removeEventListener("pointerdown", handlePointerDown);
@@ -1462,7 +1727,7 @@ var useSwipeToDismiss = (ref, {
1462
1727
  $root,
1463
1728
  handlePointerDown
1464
1729
  ]);
1465
- useEffect3(() => {
1730
+ useEffect4(() => {
1466
1731
  $root && document.documentElement.addEventListener("pointermove", handlePointerMove);
1467
1732
  return () => {
1468
1733
  document.documentElement.removeEventListener("pointermove", handlePointerMove);
@@ -1471,7 +1736,7 @@ var useSwipeToDismiss = (ref, {
1471
1736
  $root,
1472
1737
  handlePointerMove
1473
1738
  ]);
1474
- useEffect3(() => {
1739
+ useEffect4(() => {
1475
1740
  $root && document.documentElement.addEventListener("pointerup", handlePointerUp);
1476
1741
  return () => {
1477
1742
  document.documentElement.removeEventListener("pointerup", handlePointerUp);
@@ -1491,7 +1756,7 @@ var MAIN_NAME = "Main";
1491
1756
  var GENERIC_CONSUMER_NAME = "GenericConsumer";
1492
1757
  var landmarkAttr = "data-main-landmark";
1493
1758
  var useLandmarkMover = (propsOnKeyDown, landmark) => {
1494
- const handleKeyDown = useCallback3((event) => {
1759
+ const handleKeyDown = useCallback4((event) => {
1495
1760
  const target = event.target;
1496
1761
  if (event.target === event.currentTarget && event.key === "Tab" && target.hasAttribute(landmarkAttr)) {
1497
1762
  event.preventDefault();
@@ -1544,26 +1809,26 @@ var useSidebars = (consumerName = GENERIC_CONSUMER_NAME) => {
1544
1809
  return {
1545
1810
  navigationSidebarOpen,
1546
1811
  setNavigationSidebarOpen,
1547
- toggleNavigationSidebar: useCallback3(() => setNavigationSidebarOpen(!navigationSidebarOpen), [
1812
+ toggleNavigationSidebar: useCallback4(() => setNavigationSidebarOpen(!navigationSidebarOpen), [
1548
1813
  navigationSidebarOpen,
1549
1814
  setNavigationSidebarOpen
1550
1815
  ]),
1551
- openNavigationSidebar: useCallback3(() => setNavigationSidebarOpen(true), [
1816
+ openNavigationSidebar: useCallback4(() => setNavigationSidebarOpen(true), [
1552
1817
  setNavigationSidebarOpen
1553
1818
  ]),
1554
- closeNavigationSidebar: useCallback3(() => setNavigationSidebarOpen(false), [
1819
+ closeNavigationSidebar: useCallback4(() => setNavigationSidebarOpen(false), [
1555
1820
  setNavigationSidebarOpen
1556
1821
  ]),
1557
1822
  complementarySidebarOpen,
1558
1823
  setComplementarySidebarOpen,
1559
- toggleComplementarySidebar: useCallback3(() => setComplementarySidebarOpen(!complementarySidebarOpen), [
1824
+ toggleComplementarySidebar: useCallback4(() => setComplementarySidebarOpen(!complementarySidebarOpen), [
1560
1825
  complementarySidebarOpen,
1561
1826
  setComplementarySidebarOpen
1562
1827
  ]),
1563
- openComplementarySidebar: useCallback3(() => setComplementarySidebarOpen(true), [
1828
+ openComplementarySidebar: useCallback4(() => setComplementarySidebarOpen(true), [
1564
1829
  setComplementarySidebarOpen
1565
1830
  ]),
1566
- closeComplementarySidebar: useCallback3(() => setComplementarySidebarOpen(false), [
1831
+ closeComplementarySidebar: useCallback4(() => setComplementarySidebarOpen(false), [
1567
1832
  setComplementarySidebarOpen
1568
1833
  ])
1569
1834
  };
@@ -1573,19 +1838,19 @@ var MainRoot = ({ navigationSidebarOpen: propsNavigationSidebarOpen, defaultNavi
1573
1838
  const [isLg] = useMediaQuery("lg", {
1574
1839
  ssr: false
1575
1840
  });
1576
- const [navigationSidebarOpen = isLg, setNavigationSidebarOpen] = useControllableState3({
1841
+ const [navigationSidebarOpen = isLg, setNavigationSidebarOpen] = useControllableState4({
1577
1842
  prop: propsNavigationSidebarOpen,
1578
1843
  defaultProp: defaultNavigationSidebarOpen,
1579
1844
  onChange: onNavigationSidebarOpenChange
1580
1845
  });
1581
- const [complementarySidebarOpen = false, setComplementarySidebarOpen] = useControllableState3({
1846
+ const [complementarySidebarOpen = false, setComplementarySidebarOpen] = useControllableState4({
1582
1847
  prop: propsComplementarySidebarOpen,
1583
1848
  defaultProp: defaultComplementarySidebarOpen,
1584
1849
  onChange: onComplementarySidebarOpenChange
1585
1850
  });
1586
1851
  const [resizing, setResizing] = useState4(false);
1587
- const resizeInterval = useRef(null);
1588
- const handleResize = useCallback3(() => {
1852
+ const resizeInterval = useRef2(null);
1853
+ const handleResize = useCallback4(() => {
1589
1854
  setResizing(true);
1590
1855
  if (resizeInterval.current) {
1591
1856
  clearTimeout(resizeInterval.current);
@@ -1595,7 +1860,7 @@ var MainRoot = ({ navigationSidebarOpen: propsNavigationSidebarOpen, defaultNavi
1595
1860
  resizeInterval.current = null;
1596
1861
  }, resizeDebounce);
1597
1862
  }, []);
1598
- useEffect4(() => {
1863
+ useEffect5(() => {
1599
1864
  window.addEventListener("resize", handleResize);
1600
1865
  return () => window.removeEventListener("resize", handleResize);
1601
1866
  }, [
@@ -1620,11 +1885,11 @@ var MainSidebar = /* @__PURE__ */ forwardRef18(({ classNames, children, swipeToD
1620
1885
  });
1621
1886
  const { tx } = useThemeContext();
1622
1887
  const ref = useForwardedRef(forwardedRef);
1623
- const noopRef = useRef(null);
1888
+ const noopRef = useRef2(null);
1624
1889
  useSwipeToDismiss(swipeToDismiss ? ref : noopRef, {
1625
1890
  onDismiss: () => setOpen(false)
1626
1891
  });
1627
- const handleKeyDown = useCallback3((event) => {
1892
+ const handleKeyDown = useCallback4((event) => {
1628
1893
  if (event.key === "Escape") {
1629
1894
  event.target.closest("[data-tabster]")?.focus();
1630
1895
  }
@@ -1632,11 +1897,11 @@ var MainSidebar = /* @__PURE__ */ forwardRef18(({ classNames, children, swipeToD
1632
1897
  }, [
1633
1898
  props.onKeyDown
1634
1899
  ]);
1635
- const Root3 = isLg ? Primitive9.div : DialogContent2;
1900
+ const Root5 = isLg ? Primitive9.div : DialogContent2;
1636
1901
  return /* @__PURE__ */ React21.createElement(DialogRoot2, {
1637
1902
  open,
1638
1903
  modal: false
1639
- }, /* @__PURE__ */ React21.createElement(Root3, {
1904
+ }, /* @__PURE__ */ React21.createElement(Root5, {
1640
1905
  ...!isLg && {
1641
1906
  forceMount: true,
1642
1907
  tabIndex: -1,
@@ -1687,9 +1952,9 @@ MainNavigationSidebar.displayName = NAVIGATION_SIDEBAR_NAME;
1687
1952
  var MainContent = /* @__PURE__ */ forwardRef18(({ asChild, classNames, bounce, handlesFocus, children, role, ...props }, forwardedRef) => {
1688
1953
  const { navigationSidebarOpen, complementarySidebarOpen } = useMainContext(MAIN_NAME);
1689
1954
  const { tx } = useThemeContext();
1690
- const Root3 = asChild ? Slot10 : role ? "div" : "main";
1955
+ const Root5 = asChild ? Slot10 : role ? "div" : "main";
1691
1956
  const mover = useLandmarkMover(props.onKeyDown, "1");
1692
- return /* @__PURE__ */ React21.createElement(Root3, {
1957
+ return /* @__PURE__ */ React21.createElement(Root5, {
1693
1958
  role,
1694
1959
  ...handlesFocus && {
1695
1960
  ...mover
@@ -1730,9 +1995,9 @@ var MainOverlay = /* @__PURE__ */ forwardRef18(({ classNames, ...props }, forwar
1730
1995
  var MainNotch = /* @__PURE__ */ forwardRef18(({ classNames, ...props }, forwardedRef) => {
1731
1996
  const { tx } = useThemeContext();
1732
1997
  const { navigationSidebarOpen } = useMainContext(MAIN_NAME);
1733
- const notchElement = useRef(null);
1998
+ const notchElement = useRef2(null);
1734
1999
  const ref = useComposedRefs(forwardedRef, notchElement);
1735
- const handleKeyDown = useCallback3((event) => {
2000
+ const handleKeyDown = useCallback4((event) => {
1736
2001
  switch (event.key) {
1737
2002
  case "Escape":
1738
2003
  props?.onKeyDown?.(event);
@@ -1765,19 +2030,19 @@ import { createContext as createContext9 } from "@radix-ui/react-context";
1765
2030
  import { Primitive as Primitive10 } from "@radix-ui/react-primitive";
1766
2031
  import { Slot as Slot11 } from "@radix-ui/react-slot";
1767
2032
  import React22, { forwardRef as forwardRef19 } from "react";
1768
- import { useId as useId3 } from "@dxos/react-hooks";
2033
+ import { useId as useId4 } from "@dxos/react-hooks";
1769
2034
  var MESSAGE_NAME = "Message";
1770
2035
  var [MessageProvider, useMessageContext] = createContext9(MESSAGE_NAME);
1771
2036
  var MessageRoot = /* @__PURE__ */ forwardRef19(({ asChild, valence, elevation: propsElevation, className, titleId: propsTitleId, descriptionId: propsDescriptionId, children, ...props }, forwardedRef) => {
1772
2037
  const { tx } = useThemeContext();
1773
- const titleId = useId3("message__title", propsTitleId);
1774
- const descriptionId = useId3("message__description", propsDescriptionId);
2038
+ const titleId = useId4("message__title", propsTitleId);
2039
+ const descriptionId = useId4("message__description", propsDescriptionId);
1775
2040
  const elevation = useElevationContext(propsElevation);
1776
- const Root3 = asChild ? Slot11 : Primitive10.div;
2041
+ const Root5 = asChild ? Slot11 : Primitive10.div;
1777
2042
  return /* @__PURE__ */ React22.createElement(MessageProvider, {
1778
2043
  titleId,
1779
2044
  descriptionId
1780
- }, /* @__PURE__ */ React22.createElement(Root3, {
2045
+ }, /* @__PURE__ */ React22.createElement(Root5, {
1781
2046
  ...props,
1782
2047
  className: tx("message.root", "message", {
1783
2048
  valence,
@@ -1793,8 +2058,8 @@ var MESSAGE_TITLE_NAME = "MessageTitle";
1793
2058
  var MessageTitle = /* @__PURE__ */ forwardRef19(({ asChild, className, children, ...props }, forwardedRef) => {
1794
2059
  const { tx } = useThemeContext();
1795
2060
  const { titleId } = useMessageContext(MESSAGE_TITLE_NAME);
1796
- const Root3 = asChild ? Slot11 : Primitive10.h2;
1797
- return /* @__PURE__ */ React22.createElement(Root3, {
2061
+ const Root5 = asChild ? Slot11 : Primitive10.h2;
2062
+ return /* @__PURE__ */ React22.createElement(Root5, {
1798
2063
  ...props,
1799
2064
  className: tx("message.title", "message__title", {}, className),
1800
2065
  id: titleId,
@@ -1806,8 +2071,8 @@ var MESSAGE_BODY_NAME = "MessageBody";
1806
2071
  var MessageBody = /* @__PURE__ */ forwardRef19(({ asChild, className, children, ...props }, forwardedRef) => {
1807
2072
  const { tx } = useThemeContext();
1808
2073
  const { descriptionId } = useMessageContext(MESSAGE_BODY_NAME);
1809
- const Root3 = asChild ? Slot11 : Primitive10.p;
1810
- return /* @__PURE__ */ React22.createElement(Root3, {
2074
+ const Root5 = asChild ? Slot11 : Primitive10.p;
2075
+ return /* @__PURE__ */ React22.createElement(Root5, {
1811
2076
  ...props,
1812
2077
  className: tx("message.body", "message__body", {}, className),
1813
2078
  id: descriptionId,
@@ -1822,39 +2087,298 @@ var Message = {
1822
2087
  };
1823
2088
 
1824
2089
  // packages/ui/react-ui/src/components/Popover/Popover.tsx
1825
- import { Root as PopoverRootPrimitive, PopoverContent as PopoverContentPrimitive, PopoverTrigger as PopoverTriggerPrimitive, PopoverAnchor as PopoverAnchorPrimitive, PopoverPortal as PopoverPortalPrimitive, PopoverArrow as PopoverArrowPrimitive, PopoverClose as PopoverClosePrimitive } from "@radix-ui/react-popover";
2090
+ import { composeEventHandlers as composeEventHandlers2 } from "@radix-ui/primitive";
2091
+ import { useComposedRefs as useComposedRefs2 } from "@radix-ui/react-compose-refs";
2092
+ import { createContextScope as createContextScope3 } from "@radix-ui/react-context";
2093
+ import { DismissableLayer } from "@radix-ui/react-dismissable-layer";
2094
+ import { useFocusGuards } from "@radix-ui/react-focus-guards";
2095
+ import { FocusScope } from "@radix-ui/react-focus-scope";
2096
+ import { useId as useId5 } from "@radix-ui/react-id";
2097
+ import * as PopperPrimitive from "@radix-ui/react-popper";
2098
+ import { createPopperScope } from "@radix-ui/react-popper";
2099
+ import { Portal as PortalPrimitive } from "@radix-ui/react-portal";
2100
+ import { Presence } from "@radix-ui/react-presence";
1826
2101
  import { Primitive as Primitive11 } from "@radix-ui/react-primitive";
1827
2102
  import { Slot as Slot12 } from "@radix-ui/react-slot";
1828
- import React23, { forwardRef as forwardRef20 } from "react";
1829
- var PopoverRoot = PopoverRootPrimitive;
1830
- var PopoverPortal = PopoverPortalPrimitive;
1831
- var PopoverTrigger = PopoverTriggerPrimitive;
1832
- var PopoverAnchor = PopoverAnchorPrimitive;
1833
- var PopoverClose = PopoverClosePrimitive;
1834
- var PopoverArrow = /* @__PURE__ */ forwardRef20(({ classNames, ...props }, forwardedRef) => {
1835
- const { tx } = useThemeContext();
1836
- return /* @__PURE__ */ React23.createElement(PopoverArrowPrimitive, {
1837
- ...props,
1838
- className: tx("popover.arrow", "popover__arrow", {}, classNames),
2103
+ import { useControllableState as useControllableState5 } from "@radix-ui/react-use-controllable-state";
2104
+ import { hideOthers } from "aria-hidden";
2105
+ import React23, { forwardRef as forwardRef20, useRef as useRef3, useCallback as useCallback5, useState as useState5, useEffect as useEffect6 } from "react";
2106
+ import { RemoveScroll } from "react-remove-scroll";
2107
+ var POPOVER_NAME = "Popover";
2108
+ var [createPopoverContext, createPopoverScope] = createContextScope3(POPOVER_NAME, [
2109
+ createPopperScope
2110
+ ]);
2111
+ var usePopperScope = createPopperScope();
2112
+ var [PopoverProvider, usePopoverContext] = createPopoverContext(POPOVER_NAME);
2113
+ var PopoverRoot = (props) => {
2114
+ const { __scopePopover, children, open: openProp, defaultOpen, onOpenChange, modal = false } = props;
2115
+ const popperScope = usePopperScope(__scopePopover);
2116
+ const triggerRef = useRef3(null);
2117
+ const [hasCustomAnchor, setHasCustomAnchor] = useState5(false);
2118
+ const [open = false, setOpen] = useControllableState5({
2119
+ prop: openProp,
2120
+ defaultProp: defaultOpen,
2121
+ onChange: onOpenChange
2122
+ });
2123
+ return /* @__PURE__ */ React23.createElement(PopperPrimitive.Root, popperScope, /* @__PURE__ */ React23.createElement(PopoverProvider, {
2124
+ scope: __scopePopover,
2125
+ contentId: useId5(),
2126
+ triggerRef,
2127
+ open,
2128
+ onOpenChange: setOpen,
2129
+ onOpenToggle: useCallback5(() => setOpen((prevOpen) => !prevOpen), [
2130
+ setOpen
2131
+ ]),
2132
+ hasCustomAnchor,
2133
+ onCustomAnchorAdd: useCallback5(() => setHasCustomAnchor(true), []),
2134
+ onCustomAnchorRemove: useCallback5(() => setHasCustomAnchor(false), []),
2135
+ modal
2136
+ }, children));
2137
+ };
2138
+ PopoverRoot.displayName = POPOVER_NAME;
2139
+ var ANCHOR_NAME = "PopoverAnchor";
2140
+ var PopoverAnchor = /* @__PURE__ */ forwardRef20((props, forwardedRef) => {
2141
+ const { __scopePopover, ...anchorProps } = props;
2142
+ const context = usePopoverContext(ANCHOR_NAME, __scopePopover);
2143
+ const popperScope = usePopperScope(__scopePopover);
2144
+ const { onCustomAnchorAdd, onCustomAnchorRemove } = context;
2145
+ useEffect6(() => {
2146
+ onCustomAnchorAdd();
2147
+ return () => onCustomAnchorRemove();
2148
+ }, [
2149
+ onCustomAnchorAdd,
2150
+ onCustomAnchorRemove
2151
+ ]);
2152
+ return /* @__PURE__ */ React23.createElement(PopperPrimitive.Anchor, {
2153
+ ...popperScope,
2154
+ ...anchorProps,
2155
+ ref: forwardedRef
2156
+ });
2157
+ });
2158
+ PopoverAnchor.displayName = ANCHOR_NAME;
2159
+ var TRIGGER_NAME2 = "PopoverTrigger";
2160
+ var PopoverTrigger = /* @__PURE__ */ forwardRef20((props, forwardedRef) => {
2161
+ const { __scopePopover, ...triggerProps } = props;
2162
+ const context = usePopoverContext(TRIGGER_NAME2, __scopePopover);
2163
+ const popperScope = usePopperScope(__scopePopover);
2164
+ const composedTriggerRef = useComposedRefs2(forwardedRef, context.triggerRef);
2165
+ const trigger = /* @__PURE__ */ React23.createElement(Primitive11.button, {
2166
+ type: "button",
2167
+ "aria-haspopup": "dialog",
2168
+ "aria-expanded": context.open,
2169
+ "aria-controls": context.contentId,
2170
+ "data-state": getState(context.open),
2171
+ ...triggerProps,
2172
+ ref: composedTriggerRef,
2173
+ onClick: composeEventHandlers2(props.onClick, context.onOpenToggle)
2174
+ });
2175
+ return context.hasCustomAnchor ? trigger : /* @__PURE__ */ React23.createElement(PopperPrimitive.Anchor, {
2176
+ asChild: true,
2177
+ ...popperScope
2178
+ }, trigger);
2179
+ });
2180
+ PopoverTrigger.displayName = TRIGGER_NAME2;
2181
+ var VIRTUAL_TRIGGER_NAME2 = "PopoverVirtualTrigger";
2182
+ var PopoverVirtualTrigger = (props) => {
2183
+ const { __scopePopover, virtualRef } = props;
2184
+ const context = usePopoverContext(VIRTUAL_TRIGGER_NAME2, __scopePopover);
2185
+ const popperScope = usePopperScope(__scopePopover);
2186
+ useEffect6(() => {
2187
+ if (virtualRef.current) {
2188
+ context.triggerRef.current = virtualRef.current;
2189
+ }
2190
+ });
2191
+ return /* @__PURE__ */ React23.createElement(PopperPrimitive.Anchor, {
2192
+ ...popperScope,
2193
+ virtualRef
2194
+ });
2195
+ };
2196
+ PopoverVirtualTrigger.displayName = VIRTUAL_TRIGGER_NAME2;
2197
+ var PORTAL_NAME2 = "PopoverPortal";
2198
+ var [PortalProvider, usePortalContext] = createPopoverContext(PORTAL_NAME2, {
2199
+ forceMount: void 0
2200
+ });
2201
+ var PopoverPortal = (props) => {
2202
+ const { __scopePopover, forceMount, children, container } = props;
2203
+ const context = usePopoverContext(PORTAL_NAME2, __scopePopover);
2204
+ return /* @__PURE__ */ React23.createElement(PortalProvider, {
2205
+ scope: __scopePopover,
2206
+ forceMount
2207
+ }, /* @__PURE__ */ React23.createElement(Presence, {
2208
+ present: forceMount || context.open
2209
+ }, /* @__PURE__ */ React23.createElement(PortalPrimitive, {
2210
+ asChild: true,
2211
+ container
2212
+ }, children)));
2213
+ };
2214
+ PopoverPortal.displayName = PORTAL_NAME2;
2215
+ var CONTENT_NAME2 = "PopoverContent";
2216
+ var PopoverContent = /* @__PURE__ */ forwardRef20((props, forwardedRef) => {
2217
+ const portalContext = usePortalContext(CONTENT_NAME2, props.__scopePopover);
2218
+ const { forceMount = portalContext.forceMount, ...contentProps } = props;
2219
+ const context = usePopoverContext(CONTENT_NAME2, props.__scopePopover);
2220
+ return /* @__PURE__ */ React23.createElement(Presence, {
2221
+ present: forceMount || context.open
2222
+ }, context.modal ? /* @__PURE__ */ React23.createElement(PopoverContentModal, {
2223
+ ...contentProps,
2224
+ ref: forwardedRef
2225
+ }) : /* @__PURE__ */ React23.createElement(PopoverContentNonModal, {
2226
+ ...contentProps,
1839
2227
  ref: forwardedRef
2228
+ }));
2229
+ });
2230
+ PopoverContent.displayName = CONTENT_NAME2;
2231
+ var PopoverContentModal = /* @__PURE__ */ forwardRef20((props, forwardedRef) => {
2232
+ const context = usePopoverContext(CONTENT_NAME2, props.__scopePopover);
2233
+ const contentRef = useRef3(null);
2234
+ const composedRefs = useComposedRefs2(forwardedRef, contentRef);
2235
+ const isRightClickOutsideRef = useRef3(false);
2236
+ useEffect6(() => {
2237
+ const content = contentRef.current;
2238
+ if (content) {
2239
+ return hideOthers(content);
2240
+ }
2241
+ }, []);
2242
+ return /* @__PURE__ */ React23.createElement(RemoveScroll, {
2243
+ as: Slot12,
2244
+ allowPinchZoom: true
2245
+ }, /* @__PURE__ */ React23.createElement(PopoverContentImpl, {
2246
+ ...props,
2247
+ ref: composedRefs,
2248
+ // we make sure we're not trapping once it's been closed
2249
+ // (closed !== unmounted when animating out)
2250
+ trapFocus: context.open,
2251
+ disableOutsidePointerEvents: true,
2252
+ onCloseAutoFocus: composeEventHandlers2(props.onCloseAutoFocus, (event) => {
2253
+ event.preventDefault();
2254
+ if (!isRightClickOutsideRef.current) {
2255
+ context.triggerRef.current?.focus();
2256
+ }
2257
+ }),
2258
+ onPointerDownOutside: composeEventHandlers2(props.onPointerDownOutside, (event) => {
2259
+ const originalEvent = event.detail.originalEvent;
2260
+ const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;
2261
+ const isRightClick = originalEvent.button === 2 || ctrlLeftClick;
2262
+ isRightClickOutsideRef.current = isRightClick;
2263
+ }, {
2264
+ checkForDefaultPrevented: false
2265
+ }),
2266
+ // When focus is trapped, a `focusout` event may still happen.
2267
+ // We make sure we don't trigger our `onDismiss` in such case.
2268
+ onFocusOutside: composeEventHandlers2(props.onFocusOutside, (event) => event.preventDefault(), {
2269
+ checkForDefaultPrevented: false
2270
+ })
2271
+ }));
2272
+ });
2273
+ var PopoverContentNonModal = /* @__PURE__ */ forwardRef20((props, forwardedRef) => {
2274
+ const context = usePopoverContext(CONTENT_NAME2, props.__scopePopover);
2275
+ const hasInteractedOutsideRef = useRef3(false);
2276
+ const hasPointerDownOutsideRef = useRef3(false);
2277
+ return /* @__PURE__ */ React23.createElement(PopoverContentImpl, {
2278
+ ...props,
2279
+ ref: forwardedRef,
2280
+ trapFocus: false,
2281
+ disableOutsidePointerEvents: false,
2282
+ onCloseAutoFocus: (event) => {
2283
+ props.onCloseAutoFocus?.(event);
2284
+ if (!event.defaultPrevented) {
2285
+ if (!hasInteractedOutsideRef.current) {
2286
+ context.triggerRef.current?.focus();
2287
+ }
2288
+ event.preventDefault();
2289
+ }
2290
+ hasInteractedOutsideRef.current = false;
2291
+ hasPointerDownOutsideRef.current = false;
2292
+ },
2293
+ onInteractOutside: (event) => {
2294
+ props.onInteractOutside?.(event);
2295
+ if (!event.defaultPrevented) {
2296
+ hasInteractedOutsideRef.current = true;
2297
+ if (event.detail.originalEvent.type === "pointerdown") {
2298
+ hasPointerDownOutsideRef.current = true;
2299
+ }
2300
+ }
2301
+ const target = event.target;
2302
+ const targetIsTrigger = context.triggerRef.current?.contains(target);
2303
+ if (targetIsTrigger) {
2304
+ event.preventDefault();
2305
+ }
2306
+ if (event.detail.originalEvent.type === "focusin" && hasPointerDownOutsideRef.current) {
2307
+ event.preventDefault();
2308
+ }
2309
+ }
1840
2310
  });
1841
2311
  });
1842
- var PopoverContent = /* @__PURE__ */ forwardRef20(({ classNames, children, ...props }, forwardedRef) => {
2312
+ var PopoverContentImpl = /* @__PURE__ */ forwardRef20((props, forwardedRef) => {
2313
+ const { __scopePopover, trapFocus, onOpenAutoFocus, onCloseAutoFocus, disableOutsidePointerEvents, onEscapeKeyDown, onPointerDownOutside, onFocusOutside, onInteractOutside, classNames, ...contentProps } = props;
2314
+ const context = usePopoverContext(CONTENT_NAME2, __scopePopover);
2315
+ const popperScope = usePopperScope(__scopePopover);
1843
2316
  const { tx } = useThemeContext();
1844
- return /* @__PURE__ */ React23.createElement(PopoverContentPrimitive, {
1845
- sideOffset: 4,
1846
- collisionPadding: 8,
1847
- ...props,
2317
+ useFocusGuards();
2318
+ return /* @__PURE__ */ React23.createElement(FocusScope, {
2319
+ asChild: true,
2320
+ loop: true,
2321
+ trapped: trapFocus,
2322
+ onMountAutoFocus: onOpenAutoFocus,
2323
+ onUnmountAutoFocus: onCloseAutoFocus
2324
+ }, /* @__PURE__ */ React23.createElement(DismissableLayer, {
2325
+ asChild: true,
2326
+ disableOutsidePointerEvents,
2327
+ onInteractOutside,
2328
+ onEscapeKeyDown,
2329
+ onPointerDownOutside,
2330
+ onFocusOutside,
2331
+ onDismiss: () => context.onOpenChange(false)
2332
+ }, /* @__PURE__ */ React23.createElement(PopperPrimitive.Content, {
2333
+ "data-state": getState(context.open),
2334
+ role: "dialog",
2335
+ id: context.contentId,
2336
+ ...popperScope,
2337
+ ...contentProps,
1848
2338
  className: tx("popover.content", "popover", {}, classNames),
2339
+ ref: forwardedRef,
2340
+ style: {
2341
+ ...contentProps.style,
2342
+ // re-namespace exposed content custom properties
2343
+ ...{
2344
+ "--radix-popover-content-transform-origin": "var(--radix-popper-transform-origin)",
2345
+ "--radix-popover-content-available-width": "var(--radix-popper-available-width)",
2346
+ "--radix-popover-content-available-height": "var(--radix-popper-available-height)",
2347
+ "--radix-popover-trigger-width": "var(--radix-popper-anchor-width)",
2348
+ "--radix-popover-trigger-height": "var(--radix-popper-anchor-height)"
2349
+ }
2350
+ }
2351
+ })));
2352
+ });
2353
+ var CLOSE_NAME = "PopoverClose";
2354
+ var PopoverClose = /* @__PURE__ */ forwardRef20((props, forwardedRef) => {
2355
+ const { __scopePopover, ...closeProps } = props;
2356
+ const context = usePopoverContext(CLOSE_NAME, __scopePopover);
2357
+ return /* @__PURE__ */ React23.createElement(Primitive11.button, {
2358
+ type: "button",
2359
+ ...closeProps,
2360
+ ref: forwardedRef,
2361
+ onClick: composeEventHandlers2(props.onClick, () => context.onOpenChange(false))
2362
+ });
2363
+ });
2364
+ PopoverClose.displayName = CLOSE_NAME;
2365
+ var ARROW_NAME2 = "PopoverArrow";
2366
+ var PopoverArrow = /* @__PURE__ */ forwardRef20((props, forwardedRef) => {
2367
+ const { __scopePopover, classNames, ...arrowProps } = props;
2368
+ const popperScope = usePopperScope(__scopePopover);
2369
+ const { tx } = useThemeContext();
2370
+ return /* @__PURE__ */ React23.createElement(PopperPrimitive.Arrow, {
2371
+ ...popperScope,
2372
+ ...arrowProps,
2373
+ className: tx("popover.arrow", "popover__arrow", {}, classNames),
1849
2374
  ref: forwardedRef
1850
- }, /* @__PURE__ */ React23.createElement(ElevationProvider, {
1851
- elevation: "chrome"
1852
- }, children));
2375
+ });
1853
2376
  });
2377
+ PopoverArrow.displayName = ARROW_NAME2;
1854
2378
  var PopoverViewport = /* @__PURE__ */ forwardRef20(({ classNames, asChild, constrainInline = true, constrainBlock = true, children, ...props }, forwardedRef) => {
1855
2379
  const { tx } = useThemeContext();
1856
- const Root3 = asChild ? Slot12 : Primitive11.div;
1857
- return /* @__PURE__ */ React23.createElement(Root3, {
2380
+ const Root5 = asChild ? Slot12 : Primitive11.div;
2381
+ return /* @__PURE__ */ React23.createElement(Root5, {
1858
2382
  ...props,
1859
2383
  className: tx("popover.viewport", "popover__viewport", {
1860
2384
  constrainInline,
@@ -1863,14 +2387,16 @@ var PopoverViewport = /* @__PURE__ */ forwardRef20(({ classNames, asChild, const
1863
2387
  ref: forwardedRef
1864
2388
  }, children);
1865
2389
  });
2390
+ var getState = (open) => open ? "open" : "closed";
1866
2391
  var Popover = {
1867
2392
  Root: PopoverRoot,
1868
- Portal: PopoverPortal,
1869
- Trigger: PopoverTrigger,
1870
2393
  Anchor: PopoverAnchor,
1871
- Arrow: PopoverArrow,
1872
- Close: PopoverClose,
2394
+ Trigger: PopoverTrigger,
2395
+ VirtualTrigger: PopoverVirtualTrigger,
2396
+ Portal: PopoverPortal,
1873
2397
  Content: PopoverContent,
2398
+ Close: PopoverClose,
2399
+ Arrow: PopoverArrow,
1874
2400
  Viewport: PopoverViewport
1875
2401
  };
1876
2402
 
@@ -2093,8 +2619,8 @@ import { Slot as Slot13 } from "@radix-ui/react-slot";
2093
2619
  import React28, { forwardRef as forwardRef24 } from "react";
2094
2620
  var Tag = /* @__PURE__ */ forwardRef24(({ asChild, palette, classNames, ...props }, forwardedRef) => {
2095
2621
  const { tx } = useThemeContext();
2096
- const Root3 = asChild ? Slot13 : Primitive12.span;
2097
- return /* @__PURE__ */ React28.createElement(Root3, {
2622
+ const Root5 = asChild ? Slot13 : Primitive12.span;
2623
+ return /* @__PURE__ */ React28.createElement(Root5, {
2098
2624
  ...props,
2099
2625
  className: tx("tag.root", "tag", {
2100
2626
  palette
@@ -2128,8 +2654,8 @@ var ToastRoot = /* @__PURE__ */ forwardRef25(({ classNames, children, ...props }
2128
2654
  });
2129
2655
  var ToastBody = /* @__PURE__ */ forwardRef25(({ asChild, classNames, ...props }, forwardedRef) => {
2130
2656
  const { tx } = useThemeContext();
2131
- const Root3 = asChild ? Slot14 : Primitive13.div;
2132
- return /* @__PURE__ */ React29.createElement(Root3, {
2657
+ const Root5 = asChild ? Slot14 : Primitive13.div;
2658
+ return /* @__PURE__ */ React29.createElement(Root5, {
2133
2659
  ...props,
2134
2660
  className: tx("toast.body", "toast__body", {}, classNames),
2135
2661
  ref: forwardedRef
@@ -2137,8 +2663,8 @@ var ToastBody = /* @__PURE__ */ forwardRef25(({ asChild, classNames, ...props },
2137
2663
  });
2138
2664
  var ToastTitle = /* @__PURE__ */ forwardRef25(({ asChild, classNames, ...props }, forwardedRef) => {
2139
2665
  const { tx } = useThemeContext();
2140
- const Root3 = asChild ? Slot14 : ToastTitlePrimitive;
2141
- return /* @__PURE__ */ React29.createElement(Root3, {
2666
+ const Root5 = asChild ? Slot14 : ToastTitlePrimitive;
2667
+ return /* @__PURE__ */ React29.createElement(Root5, {
2142
2668
  ...props,
2143
2669
  className: tx("toast.title", "toast__title", {}, classNames),
2144
2670
  ref: forwardedRef
@@ -2146,8 +2672,8 @@ var ToastTitle = /* @__PURE__ */ forwardRef25(({ asChild, classNames, ...props }
2146
2672
  });
2147
2673
  var ToastDescription = /* @__PURE__ */ forwardRef25(({ asChild, classNames, ...props }, forwardedRef) => {
2148
2674
  const { tx } = useThemeContext();
2149
- const Root3 = asChild ? Slot14 : ToastDescriptionPrimitive;
2150
- return /* @__PURE__ */ React29.createElement(Root3, {
2675
+ const Root5 = asChild ? Slot14 : ToastDescriptionPrimitive;
2676
+ return /* @__PURE__ */ React29.createElement(Root5, {
2151
2677
  ...props,
2152
2678
  className: tx("toast.description", "toast__description", {}, classNames),
2153
2679
  ref: forwardedRef
@@ -2155,8 +2681,8 @@ var ToastDescription = /* @__PURE__ */ forwardRef25(({ asChild, classNames, ...p
2155
2681
  });
2156
2682
  var ToastActions = /* @__PURE__ */ forwardRef25(({ asChild, classNames, ...props }, forwardedRef) => {
2157
2683
  const { tx } = useThemeContext();
2158
- const Root3 = asChild ? Slot14 : Primitive13.div;
2159
- return /* @__PURE__ */ React29.createElement(Root3, {
2684
+ const Root5 = asChild ? Slot14 : Primitive13.div;
2685
+ return /* @__PURE__ */ React29.createElement(Root5, {
2160
2686
  ...props,
2161
2687
  className: tx("toast.actions", "toast__actions", {}, classNames),
2162
2688
  ref: forwardedRef
@@ -2289,7 +2815,7 @@ var Tooltip = {
2289
2815
 
2290
2816
  // packages/ui/react-ui/src/components/ThemeProvider/ThemeProvider.tsx
2291
2817
  import { createKeyborg } from "keyborg";
2292
- import React32, { createContext as createContext10, useEffect as useEffect5 } from "react";
2818
+ import React32, { createContext as createContext10, useEffect as useEffect7 } from "react";
2293
2819
 
2294
2820
  // packages/ui/react-ui/src/util/hasIosKeyboard.ts
2295
2821
  var hasIosKeyboard = () => {
@@ -2299,7 +2825,7 @@ var hasIosKeyboard = () => {
2299
2825
  // packages/ui/react-ui/src/components/ThemeProvider/ThemeProvider.tsx
2300
2826
  var ThemeContext = /* @__PURE__ */ createContext10(void 0);
2301
2827
  var ThemeProvider = ({ children, fallback = null, resourceExtensions, appNs, tx = (_path, defaultClassName, _styleProps, ..._options) => defaultClassName, themeMode = "dark", rootDensity = "fine", rootElevation = "base" }) => {
2302
- useEffect5(() => {
2828
+ useEffect7(() => {
2303
2829
  if (document.defaultView) {
2304
2830
  const kb = createKeyborg(document.defaultView);
2305
2831
  kb.subscribe(handleInputModalityChange);
@@ -2343,7 +2869,7 @@ export {
2343
2869
  DensityContext,
2344
2870
  DensityProvider,
2345
2871
  Dialog,
2346
- DropdownMenu2 as DropdownMenu,
2872
+ DropdownMenu,
2347
2873
  ElevationContext,
2348
2874
  ElevationProvider,
2349
2875
  Icon,
@@ -2373,14 +2899,16 @@ export {
2373
2899
  Tree,
2374
2900
  TreeItem,
2375
2901
  Treegrid,
2902
+ createDropdownMenuScope,
2903
+ createPopoverScope,
2376
2904
  hasIosKeyboard,
2377
2905
  isLabel,
2378
2906
  toLocalizedString,
2379
2907
  useAvatarContext,
2380
2908
  useButtonGroupContext,
2381
2909
  useDensityContext,
2382
- useDropdownMenuContext2 as useDropdownMenuContext,
2383
- useDropdownMenuMenuScope2 as useDropdownMenuMenuScope,
2910
+ useDropdownMenuContext,
2911
+ useDropdownMenuMenuScope,
2384
2912
  useElevationContext,
2385
2913
  useListContext,
2386
2914
  useListItemContext,