@dxos/react-ui 0.8.4-main.5ad4a44 → 0.8.4-main.66e292d

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 (174) hide show
  1. package/dist/lib/browser/{chunk-B7HPXBP2.mjs → chunk-N5GDJTT2.mjs} +421 -228
  2. package/dist/lib/browser/chunk-N5GDJTT2.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +5 -1
  4. package/dist/lib/browser/index.mjs.map +1 -1
  5. package/dist/lib/browser/meta.json +1 -1
  6. package/dist/lib/browser/testing/index.mjs +47 -19
  7. package/dist/lib/browser/testing/index.mjs.map +4 -4
  8. package/dist/lib/node-esm/{chunk-6JCSY5Y7.mjs → chunk-SP7VQH72.mjs} +421 -228
  9. package/dist/lib/node-esm/chunk-SP7VQH72.mjs.map +7 -0
  10. package/dist/lib/node-esm/index.mjs +5 -1
  11. package/dist/lib/node-esm/index.mjs.map +1 -1
  12. package/dist/lib/node-esm/meta.json +1 -1
  13. package/dist/lib/node-esm/testing/index.mjs +47 -19
  14. package/dist/lib/node-esm/testing/index.mjs.map +4 -4
  15. package/dist/types/src/components/Button/Button.d.ts.map +1 -0
  16. package/dist/types/src/components/Button/Button.stories.d.ts.map +1 -0
  17. package/dist/types/src/components/{Buttons → Button}/IconButton.d.ts +0 -1
  18. package/dist/types/src/components/Button/IconButton.d.ts.map +1 -0
  19. package/dist/types/src/components/Button/IconButton.stories.d.ts.map +1 -0
  20. package/dist/types/src/components/Button/Toggle.d.ts.map +1 -0
  21. package/dist/types/src/components/Button/Toggle.stories.d.ts +16 -0
  22. package/dist/types/src/components/Button/Toggle.stories.d.ts.map +1 -0
  23. package/dist/types/src/components/Button/ToggleGroup.d.ts.map +1 -0
  24. package/dist/types/src/components/Button/ToggleGroup.stories.d.ts.map +1 -0
  25. package/dist/types/src/components/Button/index.d.ts.map +1 -0
  26. package/dist/types/src/components/Clipboard/CopyButton.d.ts +1 -1
  27. package/dist/types/src/components/Clipboard/CopyButton.d.ts.map +1 -1
  28. package/dist/types/src/components/Dialog/AlertDialog.d.ts.map +1 -0
  29. package/dist/types/src/components/Dialog/AlertDialog.stories.d.ts.map +1 -0
  30. package/dist/types/src/components/Dialog/Dialog.d.ts.map +1 -0
  31. package/dist/types/src/components/Dialog/Dialog.stories.d.ts.map +1 -0
  32. package/dist/types/src/components/Dialog/index.d.ts.map +1 -0
  33. package/dist/types/src/components/Icon/Icon.stories.d.ts +17 -0
  34. package/dist/types/src/components/Icon/Icon.stories.d.ts.map +1 -0
  35. package/dist/types/src/components/List/List.d.ts.map +1 -0
  36. package/dist/types/src/components/List/List.stories.d.ts.map +1 -0
  37. package/dist/types/src/components/List/ListDropIndicator.d.ts.map +1 -0
  38. package/dist/types/src/components/List/Tree.d.ts.map +1 -0
  39. package/dist/types/src/components/List/Tree.stories.d.ts.map +1 -0
  40. package/dist/types/src/components/List/TreeDropIndicator.d.ts.map +1 -0
  41. package/dist/types/src/components/List/Treegrid.d.ts.map +1 -0
  42. package/dist/types/src/components/List/Treegrid.stories.d.ts.map +1 -0
  43. package/dist/types/src/components/List/index.d.ts.map +1 -0
  44. package/dist/types/src/components/Main/Main.d.ts +8 -8
  45. package/dist/types/src/components/Main/Main.d.ts.map +1 -1
  46. package/dist/types/src/components/Menus/DropdownMenu.d.ts +2 -3
  47. package/dist/types/src/components/Menus/DropdownMenu.d.ts.map +1 -1
  48. package/dist/types/src/components/Popover/Popover.d.ts.map +1 -1
  49. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts +37 -0
  50. package/dist/types/src/components/ScrollContainer/ScrollContainer.d.ts.map +1 -0
  51. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts +18 -0
  52. package/dist/types/src/components/ScrollContainer/ScrollContainer.stories.d.ts.map +1 -0
  53. package/dist/types/src/components/ScrollContainer/index.d.ts +2 -0
  54. package/dist/types/src/components/ScrollContainer/index.d.ts.map +1 -0
  55. package/dist/types/src/components/Select/Select.d.ts +1 -1
  56. package/dist/types/src/components/Select/Select.d.ts.map +1 -1
  57. package/dist/types/src/components/Toolbar/Toolbar.d.ts +10 -6
  58. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
  59. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts.map +1 -1
  60. package/dist/types/src/components/index.d.ts +4 -3
  61. package/dist/types/src/components/index.d.ts.map +1 -1
  62. package/dist/types/src/hooks/useVisualViewport.d.ts +2 -2
  63. package/dist/types/src/hooks/useVisualViewport.d.ts.map +1 -1
  64. package/dist/types/src/playground/Custom.stories.d.ts.map +1 -1
  65. package/dist/types/src/testing/decorators/index.d.ts +2 -1
  66. package/dist/types/src/testing/decorators/index.d.ts.map +1 -1
  67. package/dist/types/src/testing/decorators/withLayout.d.ts +15 -0
  68. package/dist/types/src/testing/decorators/withLayout.d.ts.map +1 -0
  69. package/dist/types/src/testing/decorators/{withSurfaceVariantsLayout.d.ts → withLayoutVariants.d.ts} +2 -2
  70. package/dist/types/src/testing/decorators/withLayoutVariants.d.ts.map +1 -0
  71. package/dist/types/src/util/domino.d.ts +1 -1
  72. package/dist/types/src/util/domino.d.ts.map +1 -1
  73. package/dist/types/tsconfig.tsbuildinfo +1 -1
  74. package/package.json +18 -15
  75. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +1 -1
  76. package/src/components/{Buttons → Button}/Button.stories.tsx +2 -2
  77. package/src/components/{Buttons → Button}/IconButton.tsx +12 -11
  78. package/src/components/{Buttons → Button}/Toggle.stories.tsx +5 -4
  79. package/src/components/Clipboard/CopyButton.tsx +1 -1
  80. package/src/components/{Dialogs → Dialog}/AlertDialog.stories.tsx +1 -1
  81. package/src/components/{Dialogs → Dialog}/Dialog.stories.tsx +1 -1
  82. package/src/components/Icon/Icon.stories.tsx +113 -0
  83. package/src/components/Icon/Icon.tsx +1 -1
  84. package/src/components/{Lists → List}/List.stories.tsx +1 -1
  85. package/src/components/{Lists → List}/ListDropIndicator.tsx +1 -1
  86. package/src/components/Main/Main.stories.tsx +1 -1
  87. package/src/components/Main/Main.tsx +13 -13
  88. package/src/components/Menus/DropdownMenu.stories.tsx +1 -1
  89. package/src/components/Menus/DropdownMenu.tsx +22 -3
  90. package/src/components/Popover/Popover.stories.tsx +1 -1
  91. package/src/components/Popover/Popover.tsx +20 -3
  92. package/src/components/ScrollArea/ScrollArea.stories.tsx +1 -1
  93. package/src/components/ScrollContainer/ScrollContainer.stories.tsx +69 -0
  94. package/src/components/ScrollContainer/ScrollContainer.tsx +231 -0
  95. package/src/components/ScrollContainer/index.ts +5 -0
  96. package/src/components/Select/Select.stories.tsx +2 -2
  97. package/src/components/Select/Select.tsx +4 -4
  98. package/src/components/Toast/Toast.stories.tsx +1 -1
  99. package/src/components/Toolbar/Toolbar.stories.tsx +2 -4
  100. package/src/components/Toolbar/Toolbar.tsx +17 -6
  101. package/src/components/Tooltip/Tooltip.stories.tsx +1 -1
  102. package/src/components/index.ts +4 -3
  103. package/src/hooks/useSafeArea.ts +2 -2
  104. package/src/hooks/useVisualViewport.ts +3 -3
  105. package/src/playground/Controls.stories.tsx +2 -2
  106. package/src/playground/Custom.stories.tsx +6 -8
  107. package/src/testing/decorators/index.ts +2 -1
  108. package/src/testing/decorators/withLayout.tsx +56 -0
  109. package/src/testing/decorators/{withSurfaceVariantsLayout.tsx → withLayoutVariants.tsx} +2 -2
  110. package/src/util/domino.ts +6 -4
  111. package/dist/lib/browser/chunk-B7HPXBP2.mjs.map +0 -7
  112. package/dist/lib/node-esm/chunk-6JCSY5Y7.mjs.map +0 -7
  113. package/dist/types/src/components/Buttons/Button.d.ts.map +0 -1
  114. package/dist/types/src/components/Buttons/Button.stories.d.ts.map +0 -1
  115. package/dist/types/src/components/Buttons/IconButton.d.ts.map +0 -1
  116. package/dist/types/src/components/Buttons/IconButton.stories.d.ts.map +0 -1
  117. package/dist/types/src/components/Buttons/Toggle.d.ts.map +0 -1
  118. package/dist/types/src/components/Buttons/Toggle.stories.d.ts +0 -13
  119. package/dist/types/src/components/Buttons/Toggle.stories.d.ts.map +0 -1
  120. package/dist/types/src/components/Buttons/ToggleGroup.d.ts.map +0 -1
  121. package/dist/types/src/components/Buttons/ToggleGroup.stories.d.ts.map +0 -1
  122. package/dist/types/src/components/Buttons/index.d.ts.map +0 -1
  123. package/dist/types/src/components/Dialogs/AlertDialog.d.ts.map +0 -1
  124. package/dist/types/src/components/Dialogs/AlertDialog.stories.d.ts.map +0 -1
  125. package/dist/types/src/components/Dialogs/Dialog.d.ts.map +0 -1
  126. package/dist/types/src/components/Dialogs/Dialog.stories.d.ts.map +0 -1
  127. package/dist/types/src/components/Dialogs/index.d.ts.map +0 -1
  128. package/dist/types/src/components/Lists/List.d.ts.map +0 -1
  129. package/dist/types/src/components/Lists/List.stories.d.ts.map +0 -1
  130. package/dist/types/src/components/Lists/ListDropIndicator.d.ts.map +0 -1
  131. package/dist/types/src/components/Lists/Tree.d.ts.map +0 -1
  132. package/dist/types/src/components/Lists/Tree.stories.d.ts.map +0 -1
  133. package/dist/types/src/components/Lists/TreeDropIndicator.d.ts.map +0 -1
  134. package/dist/types/src/components/Lists/Treegrid.d.ts.map +0 -1
  135. package/dist/types/src/components/Lists/Treegrid.stories.d.ts.map +0 -1
  136. package/dist/types/src/components/Lists/index.d.ts.map +0 -1
  137. package/dist/types/src/testing/decorators/withSurfaceVariantsLayout.d.ts.map +0 -1
  138. /package/dist/types/src/components/{Buttons → Button}/Button.d.ts +0 -0
  139. /package/dist/types/src/components/{Buttons → Button}/Button.stories.d.ts +0 -0
  140. /package/dist/types/src/components/{Buttons → Button}/IconButton.stories.d.ts +0 -0
  141. /package/dist/types/src/components/{Buttons → Button}/Toggle.d.ts +0 -0
  142. /package/dist/types/src/components/{Buttons → Button}/ToggleGroup.d.ts +0 -0
  143. /package/dist/types/src/components/{Buttons → Button}/ToggleGroup.stories.d.ts +0 -0
  144. /package/dist/types/src/components/{Buttons → Button}/index.d.ts +0 -0
  145. /package/dist/types/src/components/{Dialogs → Dialog}/AlertDialog.d.ts +0 -0
  146. /package/dist/types/src/components/{Dialogs → Dialog}/AlertDialog.stories.d.ts +0 -0
  147. /package/dist/types/src/components/{Dialogs → Dialog}/Dialog.d.ts +0 -0
  148. /package/dist/types/src/components/{Dialogs → Dialog}/Dialog.stories.d.ts +0 -0
  149. /package/dist/types/src/components/{Dialogs → Dialog}/index.d.ts +0 -0
  150. /package/dist/types/src/components/{Lists → List}/List.d.ts +0 -0
  151. /package/dist/types/src/components/{Lists → List}/List.stories.d.ts +0 -0
  152. /package/dist/types/src/components/{Lists → List}/ListDropIndicator.d.ts +0 -0
  153. /package/dist/types/src/components/{Lists → List}/Tree.d.ts +0 -0
  154. /package/dist/types/src/components/{Lists → List}/Tree.stories.d.ts +0 -0
  155. /package/dist/types/src/components/{Lists → List}/TreeDropIndicator.d.ts +0 -0
  156. /package/dist/types/src/components/{Lists → List}/Treegrid.d.ts +0 -0
  157. /package/dist/types/src/components/{Lists → List}/Treegrid.stories.d.ts +0 -0
  158. /package/dist/types/src/components/{Lists → List}/index.d.ts +0 -0
  159. /package/src/components/{Buttons → Button}/Button.tsx +0 -0
  160. /package/src/components/{Buttons → Button}/IconButton.stories.tsx +0 -0
  161. /package/src/components/{Buttons → Button}/Toggle.tsx +0 -0
  162. /package/src/components/{Buttons → Button}/ToggleGroup.stories.tsx +0 -0
  163. /package/src/components/{Buttons → Button}/ToggleGroup.tsx +0 -0
  164. /package/src/components/{Buttons → Button}/index.ts +0 -0
  165. /package/src/components/{Dialogs → Dialog}/AlertDialog.tsx +0 -0
  166. /package/src/components/{Dialogs → Dialog}/Dialog.tsx +0 -0
  167. /package/src/components/{Dialogs → Dialog}/index.ts +0 -0
  168. /package/src/components/{Lists → List}/List.tsx +0 -0
  169. /package/src/components/{Lists → List}/Tree.stories.tsx +0 -0
  170. /package/src/components/{Lists → List}/Tree.tsx +0 -0
  171. /package/src/components/{Lists → List}/TreeDropIndicator.tsx +0 -0
  172. /package/src/components/{Lists → List}/Treegrid.stories.tsx +0 -0
  173. /package/src/components/{Lists → List}/Treegrid.tsx +0 -0
  174. /package/src/components/{Lists → List}/index.ts +0 -0
@@ -31,7 +31,7 @@ var useIconHref = (icon) => {
31
31
 
32
32
  // src/hooks/useSafeArea.ts
33
33
  import { useCallback, useState } from "react";
34
- import { useResize } from "@dxos/react-hooks";
34
+ import { useViewportResize } from "@dxos/react-hooks";
35
35
  var initialSafeArea = {
36
36
  top: NaN,
37
37
  right: NaN,
@@ -48,7 +48,7 @@ var useSafeArea = () => {
48
48
  left: parseFloat(getComputedStyle(document.documentElement).getPropertyValue("--safe-area-left"))
49
49
  });
50
50
  }, []);
51
- useResize(handleResize);
51
+ useViewportResize(handleResize);
52
52
  return padding;
53
53
  };
54
54
 
@@ -130,7 +130,7 @@ var useTranslationsContext = () => useContext4(TranslationsContext);
130
130
 
131
131
  // src/hooks/useVisualViewport.ts
132
132
  import { useCallback as useCallback2, useState as useState3 } from "react";
133
- import { useResize as useResize2 } from "@dxos/react-hooks";
133
+ import { useViewportResize as useViewportResize2 } from "@dxos/react-hooks";
134
134
  var useVisualViewport = (deps) => {
135
135
  const [width, setWidth] = useState3(null);
136
136
  const [height, setHeight] = useState3(null);
@@ -140,7 +140,7 @@ var useVisualViewport = (deps) => {
140
140
  setHeight(window.visualViewport.height);
141
141
  }
142
142
  }, []);
143
- useResize2(handleResize, deps);
143
+ useViewportResize2(handleResize, deps);
144
144
  return {
145
145
  width,
146
146
  height
@@ -152,8 +152,8 @@ var AnchoredOverflowRoot = /* @__PURE__ */ forwardRef(({ asChild, classNames, ch
152
152
  var _effect = _useSignals2();
153
153
  try {
154
154
  const { tx } = useThemeContext();
155
- const Root7 = asChild ? Slot : Primitive.div;
156
- return /* @__PURE__ */ React2.createElement(Root7, {
155
+ const Root8 = asChild ? Slot : Primitive.div;
156
+ return /* @__PURE__ */ React2.createElement(Root8, {
157
157
  role: "none",
158
158
  ...props,
159
159
  className: tx("anchoredOverflow.root", "overflow-anchored", {}, classNames),
@@ -167,8 +167,8 @@ var AnchoredOverflowAnchor = /* @__PURE__ */ forwardRef(({ asChild, classNames,
167
167
  var _effect = _useSignals2();
168
168
  try {
169
169
  const { tx } = useThemeContext();
170
- const Root7 = asChild ? Slot : Primitive.div;
171
- return /* @__PURE__ */ React2.createElement(Root7, {
170
+ const Root8 = asChild ? Slot : Primitive.div;
171
+ return /* @__PURE__ */ React2.createElement(Root8, {
172
172
  role: "none",
173
173
  ...props,
174
174
  className: tx("anchoredOverflow.anchor", "overflow-anchor", {}, classNames),
@@ -228,10 +228,10 @@ var AvatarContent = /* @__PURE__ */ forwardRef2(({ icon, classNames, ...props },
228
228
  var AvatarLabel = /* @__PURE__ */ forwardRef2(({ asChild, srOnly, classNames, ...props }, forwardedRef) => {
229
229
  var _effect = _useSignals3();
230
230
  try {
231
- const Root7 = asChild ? Slot2 : Primitive2.span;
231
+ const Root8 = asChild ? Slot2 : Primitive2.span;
232
232
  const { tx } = useThemeContext();
233
233
  const { labelId } = useAvatarContext("AvatarLabel");
234
- return /* @__PURE__ */ React3.createElement(Root7, {
234
+ return /* @__PURE__ */ React3.createElement(Root8, {
235
235
  ...props,
236
236
  id: labelId,
237
237
  ref: forwardedRef,
@@ -246,10 +246,10 @@ var AvatarLabel = /* @__PURE__ */ forwardRef2(({ asChild, srOnly, classNames, ..
246
246
  var AvatarDescription = /* @__PURE__ */ forwardRef2(({ asChild, srOnly, classNames, ...props }, forwardedRef) => {
247
247
  var _effect = _useSignals3();
248
248
  try {
249
- const Root7 = asChild ? Slot2 : Primitive2.span;
249
+ const Root8 = asChild ? Slot2 : Primitive2.span;
250
250
  const { tx } = useThemeContext();
251
251
  const { descriptionId } = useAvatarContext("AvatarDescription");
252
- return /* @__PURE__ */ React3.createElement(Root7, {
252
+ return /* @__PURE__ */ React3.createElement(Root8, {
253
253
  ...props,
254
254
  id: descriptionId,
255
255
  ref: forwardedRef,
@@ -277,7 +277,7 @@ import React6, { forwardRef as forwardRef5 } from "react";
277
277
  // src/components/Icon/Icon.tsx
278
278
  import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
279
279
  import React4, { forwardRef as forwardRef3, memo } from "react";
280
- var Icon = /* @__PURE__ */ memo(/* @__PURE__ */ forwardRef3(({ icon, classNames, size, ...props }, forwardedRef) => {
280
+ var Icon = /* @__PURE__ */ memo(/* @__PURE__ */ forwardRef3(({ icon, classNames, size = 4, ...props }, forwardedRef) => {
281
281
  var _effect = _useSignals4();
282
282
  try {
283
283
  const { tx } = useThemeContext();
@@ -305,8 +305,8 @@ var Link = /* @__PURE__ */ forwardRef4(({ asChild, variant, classNames, ...props
305
305
  var _effect = _useSignals5();
306
306
  try {
307
307
  const { tx } = useThemeContext();
308
- const Root7 = asChild ? Slot3 : Primitive3.a;
309
- return /* @__PURE__ */ React5.createElement(Root7, {
308
+ const Root8 = asChild ? Slot3 : Primitive3.a;
309
+ return /* @__PURE__ */ React5.createElement(Root8, {
310
310
  ...props,
311
311
  className: tx("link.root", "link", {
312
312
  variant
@@ -323,8 +323,8 @@ var BreadcrumbRoot = /* @__PURE__ */ forwardRef5(({ asChild, classNames, ...prop
323
323
  var _effect = _useSignals6();
324
324
  try {
325
325
  const { tx } = useThemeContext();
326
- const Root7 = asChild ? Slot4 : Primitive4.div;
327
- return /* @__PURE__ */ React6.createElement(Root7, {
326
+ const Root8 = asChild ? Slot4 : Primitive4.div;
327
+ return /* @__PURE__ */ React6.createElement(Root8, {
328
328
  role: "navigation",
329
329
  ...props,
330
330
  className: tx("breadcrumb.root", "breadcrumb", {}, classNames),
@@ -338,8 +338,8 @@ var BreadcrumbList = /* @__PURE__ */ forwardRef5(({ asChild, classNames, ...prop
338
338
  var _effect = _useSignals6();
339
339
  try {
340
340
  const { tx } = useThemeContext();
341
- const Root7 = asChild ? Slot4 : Primitive4.ol;
342
- return /* @__PURE__ */ React6.createElement(Root7, {
341
+ const Root8 = asChild ? Slot4 : Primitive4.ol;
342
+ return /* @__PURE__ */ React6.createElement(Root8, {
343
343
  role: "list",
344
344
  ...props,
345
345
  className: tx("breadcrumb.list", "breadcrumb__list", {}, classNames),
@@ -353,8 +353,8 @@ var BreadcrumbListItem = /* @__PURE__ */ forwardRef5(({ asChild, classNames, ...
353
353
  var _effect = _useSignals6();
354
354
  try {
355
355
  const { tx } = useThemeContext();
356
- const Root7 = asChild ? Slot4 : Primitive4.li;
357
- return /* @__PURE__ */ React6.createElement(Root7, {
356
+ const Root8 = asChild ? Slot4 : Primitive4.li;
357
+ return /* @__PURE__ */ React6.createElement(Root8, {
358
358
  role: "listitem",
359
359
  ...props,
360
360
  className: tx("breadcrumb.listItem", "breadcrumb__list__item", {}, classNames),
@@ -367,8 +367,8 @@ var BreadcrumbListItem = /* @__PURE__ */ forwardRef5(({ asChild, classNames, ...
367
367
  var BreadcrumbLink = /* @__PURE__ */ forwardRef5(({ asChild, ...props }, forwardedRef) => {
368
368
  var _effect = _useSignals6();
369
369
  try {
370
- const Root7 = asChild ? Slot4 : Link;
371
- return /* @__PURE__ */ React6.createElement(Root7, {
370
+ const Root8 = asChild ? Slot4 : Link;
371
+ return /* @__PURE__ */ React6.createElement(Root8, {
372
372
  ...props,
373
373
  ref: forwardedRef
374
374
  });
@@ -380,8 +380,8 @@ var BreadcrumbCurrent = /* @__PURE__ */ forwardRef5(({ asChild, classNames, ...p
380
380
  var _effect = _useSignals6();
381
381
  try {
382
382
  const { tx } = useThemeContext();
383
- const Root7 = asChild ? Slot4 : "h1";
384
- return /* @__PURE__ */ React6.createElement(Root7, {
383
+ const Root8 = asChild ? Slot4 : "h1";
384
+ return /* @__PURE__ */ React6.createElement(Root8, {
385
385
  ...props,
386
386
  "aria-current": "page",
387
387
  className: tx("breadcrumb.current", "breadcrumb__item__heading--current", {}, classNames),
@@ -416,7 +416,7 @@ var Breadcrumb = {
416
416
  Separator: BreadcrumbSeparator
417
417
  };
418
418
 
419
- // src/components/Buttons/Button.tsx
419
+ // src/components/Button/Button.tsx
420
420
  import { useSignals as _useSignals7 } from "@preact-signals/safe-react/tracking";
421
421
  import { createContext as createContext3 } from "@radix-ui/react-context";
422
422
  import { Primitive as Primitive5 } from "@radix-ui/react-primitive";
@@ -434,8 +434,8 @@ var Button = /* @__PURE__ */ memo2(/* @__PURE__ */ forwardRef6(({ classNames, ch
434
434
  const { tx } = useThemeContext();
435
435
  const elevation = useElevationContext(propsElevation);
436
436
  const density = useDensityContext(propsDensity);
437
- const Root7 = asChild ? Slot5 : Primitive5.button;
438
- return /* @__PURE__ */ React7.createElement(Root7, {
437
+ const Root8 = asChild ? Slot5 : Primitive5.button;
438
+ return /* @__PURE__ */ React7.createElement(Root8, {
439
439
  ref,
440
440
  ...props,
441
441
  "data-variant": variant,
@@ -462,8 +462,8 @@ var ButtonGroup = /* @__PURE__ */ forwardRef6(({ children, elevation: propsEleva
462
462
  try {
463
463
  const { tx } = useThemeContext();
464
464
  const elevation = useElevationContext(propsElevation);
465
- const Root7 = asChild ? Slot5 : Primitive5.div;
466
- return /* @__PURE__ */ React7.createElement(Root7, {
465
+ const Root8 = asChild ? Slot5 : Primitive5.div;
466
+ return /* @__PURE__ */ React7.createElement(Root8, {
467
467
  role: "none",
468
468
  ...props,
469
469
  className: tx("button.group", "button-group", {
@@ -479,7 +479,7 @@ var ButtonGroup = /* @__PURE__ */ forwardRef6(({ children, elevation: propsEleva
479
479
  });
480
480
  ButtonGroup.displayName = BUTTON_GROUP_NAME;
481
481
 
482
- // src/components/Buttons/IconButton.tsx
482
+ // src/components/Button/IconButton.tsx
483
483
  import { useSignals as _useSignals9 } from "@preact-signals/safe-react/tracking";
484
484
  import React9, { forwardRef as forwardRef8 } from "react";
485
485
 
@@ -1106,8 +1106,22 @@ var Tooltip = {
1106
1106
  Trigger: TooltipTrigger
1107
1107
  };
1108
1108
 
1109
- // src/components/Buttons/IconButton.tsx
1110
- var IconOnlyButton = /* @__PURE__ */ forwardRef8(({ noTooltip, tooltipPortal = true, tooltipSide, ...props }, forwardedRef) => {
1109
+ // src/components/Button/IconButton.tsx
1110
+ var IconButton = /* @__PURE__ */ forwardRef8((props, forwardedRef) => {
1111
+ var _effect = _useSignals9();
1112
+ try {
1113
+ return props.iconOnly ? /* @__PURE__ */ React9.createElement(IconOnlyButton, {
1114
+ ...props,
1115
+ ref: forwardedRef
1116
+ }) : /* @__PURE__ */ React9.createElement(LabelledIconButton, {
1117
+ ...props,
1118
+ ref: forwardedRef
1119
+ });
1120
+ } finally {
1121
+ _effect.f();
1122
+ }
1123
+ });
1124
+ var IconOnlyButton = /* @__PURE__ */ forwardRef8(({ noTooltip, tooltipSide, ...props }, forwardedRef) => {
1111
1125
  var _effect = _useSignals9();
1112
1126
  try {
1113
1127
  if (noTooltip) {
@@ -1128,7 +1142,7 @@ var IconOnlyButton = /* @__PURE__ */ forwardRef8(({ noTooltip, tooltipPortal = t
1128
1142
  _effect.f();
1129
1143
  }
1130
1144
  });
1131
- var LabelledIconButton = /* @__PURE__ */ forwardRef8(({ icon, size, iconOnly, label, classNames, iconClassNames, caretDown, ...props }, forwardedRef) => {
1145
+ var LabelledIconButton = /* @__PURE__ */ forwardRef8(({ icon, size = 5, iconOnly, label, classNames, iconClassNames, caretDown, ...props }, forwardedRef) => {
1132
1146
  var _effect = _useSignals9();
1133
1147
  try {
1134
1148
  const { tx } = useThemeContext();
@@ -1152,22 +1166,8 @@ var LabelledIconButton = /* @__PURE__ */ forwardRef8(({ icon, size, iconOnly, la
1152
1166
  _effect.f();
1153
1167
  }
1154
1168
  });
1155
- var IconButton = /* @__PURE__ */ forwardRef8((props, forwardedRef) => {
1156
- var _effect = _useSignals9();
1157
- try {
1158
- return props.iconOnly ? /* @__PURE__ */ React9.createElement(IconOnlyButton, {
1159
- ...props,
1160
- ref: forwardedRef
1161
- }) : /* @__PURE__ */ React9.createElement(LabelledIconButton, {
1162
- ...props,
1163
- ref: forwardedRef
1164
- });
1165
- } finally {
1166
- _effect.f();
1167
- }
1168
- });
1169
1169
 
1170
- // src/components/Buttons/Toggle.tsx
1170
+ // src/components/Button/Toggle.tsx
1171
1171
  import { useSignals as _useSignals10 } from "@preact-signals/safe-react/tracking";
1172
1172
  import { Toggle as TogglePrimitive } from "@radix-ui/react-toggle";
1173
1173
  import React10, { forwardRef as forwardRef9 } from "react";
@@ -1188,7 +1188,7 @@ var Toggle = /* @__PURE__ */ forwardRef9(({ defaultPressed, pressed, onPressedCh
1188
1188
  }
1189
1189
  });
1190
1190
 
1191
- // src/components/Buttons/ToggleGroup.tsx
1191
+ // src/components/Button/ToggleGroup.tsx
1192
1192
  import { useSignals as _useSignals11 } from "@preact-signals/safe-react/tracking";
1193
1193
  import { ToggleGroupItem as ToggleGroupItemPrimitive, ToggleGroup as ToggleGroupPrimitive } from "@radix-ui/react-toggle-group";
1194
1194
  import React11, { forwardRef as forwardRef10 } from "react";
@@ -1286,23 +1286,14 @@ import React15, { createContext as createContext7, useEffect as useEffect4, useM
1286
1286
 
1287
1287
  // src/util/domino.ts
1288
1288
  import { mx as mx2 } from "@dxos/react-ui-theme";
1289
- function _define_property(obj, key, value) {
1290
- if (key in obj) {
1291
- Object.defineProperty(obj, key, {
1292
- value,
1293
- enumerable: true,
1294
- configurable: true,
1295
- writable: true
1296
- });
1297
- } else {
1298
- obj[key] = value;
1299
- }
1300
- return obj;
1301
- }
1302
1289
  var Domino = class _Domino {
1303
1290
  static of(tag) {
1304
1291
  return new _Domino(tag);
1305
1292
  }
1293
+ _el;
1294
+ constructor(tag) {
1295
+ this._el = document.createElement(tag);
1296
+ }
1306
1297
  classNames(...classNames) {
1307
1298
  this._el.className = mx2(classNames);
1308
1299
  return this;
@@ -1315,12 +1306,12 @@ var Domino = class _Domino {
1315
1306
  this._el.dataset[key] = value;
1316
1307
  return this;
1317
1308
  }
1318
- style(styles) {
1319
- Object.assign(this._el.style, styles);
1309
+ attributes(attr) {
1310
+ Object.entries(attr).filter(([_, value]) => value !== void 0).map(([key, value]) => this._el.setAttribute(key, value));
1320
1311
  return this;
1321
1312
  }
1322
- attr(key, value) {
1323
- this._el[key] = value;
1313
+ style(styles) {
1314
+ Object.assign(this._el.style, styles);
1324
1315
  return this;
1325
1316
  }
1326
1317
  children(...children) {
@@ -1334,10 +1325,6 @@ var Domino = class _Domino {
1334
1325
  build() {
1335
1326
  return this._el;
1336
1327
  }
1337
- constructor(tag) {
1338
- _define_property(this, "_el", void 0);
1339
- this._el = document.createElement(tag);
1340
- }
1341
1328
  };
1342
1329
 
1343
1330
  // src/util/hasIosKeyboard.ts
@@ -1543,7 +1530,7 @@ var Clipboard = {
1543
1530
  Provider: ClipboardProvider
1544
1531
  };
1545
1532
 
1546
- // src/components/Dialogs/Dialog.tsx
1533
+ // src/components/Dialog/Dialog.tsx
1547
1534
  import { useSignals as _useSignals17 } from "@preact-signals/safe-react/tracking";
1548
1535
  import { createContext as createContext8 } from "@radix-ui/react-context";
1549
1536
  import { DialogClose as DialogClosePrimitive, DialogContent as DialogContentPrimitive, DialogDescription as DialogDescriptionPrimitive, DialogOverlay as DialogOverlayPrimitive, DialogPortal as DialogPortalPrimitive, Root as DialogRootPrimitive, DialogTitle as DialogTitlePrimitive, DialogTrigger as DialogTriggerPrimitive } from "@radix-ui/react-dialog";
@@ -1642,7 +1629,7 @@ var Dialog = {
1642
1629
  Close: DialogClose
1643
1630
  };
1644
1631
 
1645
- // src/components/Dialogs/AlertDialog.tsx
1632
+ // src/components/Dialog/AlertDialog.tsx
1646
1633
  import { useSignals as _useSignals18 } from "@preact-signals/safe-react/tracking";
1647
1634
  import { AlertDialogAction as AlertDialogActionPrimitive, AlertDialogCancel as AlertDialogCancelPrimitive, AlertDialogContent as AlertDialogContentPrimitive, AlertDialogDescription as AlertDialogDescriptionPrimitive, AlertDialogOverlay as AlertDialogOverlayPrimitive, AlertDialogPortal as AlertDialogPortalPrimitive, Root as AlertDialogRootPrimitive, AlertDialogTitle as AlertDialogTitlePrimitive, AlertDialogTrigger as AlertDialogTriggerPrimitive } from "@radix-ui/react-alert-dialog";
1648
1635
  import { createContext as createContext9 } from "@radix-ui/react-context";
@@ -1977,13 +1964,13 @@ var Input = {
1977
1964
  DescriptionAndValidation
1978
1965
  };
1979
1966
 
1980
- // src/components/Lists/List.tsx
1967
+ // src/components/List/List.tsx
1981
1968
  import { useSignals as _useSignals21 } from "@preact-signals/safe-react/tracking";
1982
1969
  import { Slot as Slot6 } from "@radix-ui/react-slot";
1983
1970
  import React21, { forwardRef as forwardRef14 } from "react";
1984
1971
  import { LIST_ITEM_NAME, LIST_NAME, ListItemCollapsibleContent, List as ListPrimitive, ListItem as ListPrimitiveItem, ListItemHeading as ListPrimitiveItemHeading, ListItemOpenTrigger as ListPrimitiveItemOpenTrigger, useListContext, useListItemContext } from "@dxos/react-list";
1985
1972
 
1986
- // src/components/Lists/ListDropIndicator.tsx
1973
+ // src/components/List/ListDropIndicator.tsx
1987
1974
  import { useSignals as _useSignals20 } from "@preact-signals/safe-react/tracking";
1988
1975
  import React20 from "react";
1989
1976
  var edgeToOrientationMap = {
@@ -1994,7 +1981,7 @@ var edgeToOrientationMap = {
1994
1981
  };
1995
1982
  var orientationStyles = {
1996
1983
  horizontal: "h-[--line-thickness] left-[calc(var(--line-inset)+var(--terminal-radius))] right-[--line-inset] before:left-[--terminal-inset]",
1997
- vertical: "w-[--line-thickness] top-[calc(var(--line-inset)+var(--terminal-radius))] bottom-[--line-inset] before:top-[--terminal-inset]"
1984
+ vertical: "is-[--line-thickness] top-[calc(var(--line-inset)+var(--terminal-radius))] bottom-[--line-inset] before:top-[--terminal-inset]"
1998
1985
  };
1999
1986
  var edgeStyles = {
2000
1987
  top: "top-[--line-offset] before:top-[--offset-terminal]",
@@ -2027,7 +2014,7 @@ var ListDropIndicator = ({ edge, gap = 0, lineInset = 0, terminalInset = lineIns
2027
2014
  }
2028
2015
  };
2029
2016
 
2030
- // src/components/Lists/List.tsx
2017
+ // src/components/List/List.tsx
2031
2018
  var List = /* @__PURE__ */ forwardRef14(({ classNames, children, ...props }, forwardedRef) => {
2032
2019
  var _effect = _useSignals21();
2033
2020
  try {
@@ -2047,10 +2034,10 @@ var List = /* @__PURE__ */ forwardRef14(({ classNames, children, ...props }, for
2047
2034
  var ListItemEndcap = /* @__PURE__ */ forwardRef14(({ children, classNames, asChild, ...props }, forwardedRef) => {
2048
2035
  var _effect = _useSignals21();
2049
2036
  try {
2050
- const Root7 = asChild ? Slot6 : "div";
2037
+ const Root8 = asChild ? Slot6 : "div";
2051
2038
  const density = useDensityContext();
2052
2039
  const { tx } = useThemeContext();
2053
- return /* @__PURE__ */ React21.createElement(Root7, {
2040
+ return /* @__PURE__ */ React21.createElement(Root8, {
2054
2041
  ...!asChild && {
2055
2042
  role: "none"
2056
2043
  },
@@ -2144,11 +2131,11 @@ var ListItem = {
2144
2131
  DropIndicator: ListDropIndicator
2145
2132
  };
2146
2133
 
2147
- // src/components/Lists/Tree.tsx
2134
+ // src/components/List/Tree.tsx
2148
2135
  import { useSignals as _useSignals23 } from "@preact-signals/safe-react/tracking";
2149
2136
  import React23, { forwardRef as forwardRef15 } from "react";
2150
2137
 
2151
- // src/components/Lists/TreeDropIndicator.tsx
2138
+ // src/components/List/TreeDropIndicator.tsx
2152
2139
  import { useSignals as _useSignals22 } from "@preact-signals/safe-react/tracking";
2153
2140
  import React22 from "react";
2154
2141
  var edgeToOrientationMap2 = {
@@ -2199,7 +2186,7 @@ var TreeDropIndicator = ({ instruction, gap = 0 }) => {
2199
2186
  }
2200
2187
  };
2201
2188
 
2202
- // src/components/Lists/Tree.tsx
2189
+ // src/components/List/Tree.tsx
2203
2190
  var TreeRoot = /* @__PURE__ */ forwardRef15((props, forwardedRef) => {
2204
2191
  var _effect = _useSignals23();
2205
2192
  try {
@@ -2253,7 +2240,7 @@ var TreeItem = {
2253
2240
  DropIndicator: TreeDropIndicator
2254
2241
  };
2255
2242
 
2256
- // src/components/Lists/Treegrid.tsx
2243
+ // src/components/List/Treegrid.tsx
2257
2244
  import { useSignals as _useSignals24 } from "@preact-signals/safe-react/tracking";
2258
2245
  import { useFocusFinders } from "@fluentui/react-tabster";
2259
2246
  import { createContextScope as createContextScope2 } from "@radix-ui/react-context";
@@ -2270,7 +2257,7 @@ var TreegridRoot = /* @__PURE__ */ forwardRef16(({ asChild, classNames, children
2270
2257
  var _effect = _useSignals24();
2271
2258
  try {
2272
2259
  const { tx } = useThemeContext();
2273
- const Root7 = asChild ? Slot7 : Primitive7.div;
2260
+ const Root8 = asChild ? Slot7 : Primitive7.div;
2274
2261
  const { findFirstFocusable } = useFocusFinders();
2275
2262
  const handleKeyDown = useCallback7((event) => {
2276
2263
  switch (event.key) {
@@ -2305,7 +2292,7 @@ var TreegridRoot = /* @__PURE__ */ forwardRef16(({ asChild, classNames, children
2305
2292
  }, [
2306
2293
  findFirstFocusable
2307
2294
  ]);
2308
- return /* @__PURE__ */ React24.createElement(Root7, {
2295
+ return /* @__PURE__ */ React24.createElement(Root8, {
2309
2296
  role: "treegrid",
2310
2297
  onKeyDown: handleKeyDown,
2311
2298
  ...props,
@@ -2324,7 +2311,7 @@ var TreegridRow = /* @__PURE__ */ forwardRef16(({ __treegridRowScope, asChild, c
2324
2311
  var _effect = _useSignals24();
2325
2312
  try {
2326
2313
  const { tx } = useThemeContext();
2327
- const Root7 = asChild ? Slot7 : Primitive7.div;
2314
+ const Root8 = asChild ? Slot7 : Primitive7.div;
2328
2315
  const pathParts = id.split(PATH_SEPARATOR);
2329
2316
  const level = pathParts.length - 1;
2330
2317
  const [open, onOpenChange] = useControllableState3({
@@ -2336,7 +2323,7 @@ var TreegridRow = /* @__PURE__ */ forwardRef16(({ __treegridRowScope, asChild, c
2336
2323
  open,
2337
2324
  onOpenChange,
2338
2325
  scope: __treegridRowScope
2339
- }, /* @__PURE__ */ React24.createElement(Root7, {
2326
+ }, /* @__PURE__ */ React24.createElement(Root8, {
2340
2327
  role: "row",
2341
2328
  "aria-level": level,
2342
2329
  className: tx("treegrid.row", "treegrid__row", {
@@ -2485,10 +2472,10 @@ var useSwipeToDismiss = (ref, {
2485
2472
 
2486
2473
  // src/components/Main/Main.tsx
2487
2474
  var __dxlog_file = "/__w/dxos/dxos/packages/ui/react-ui/src/components/Main/Main.tsx";
2475
+ var MAIN_NAME = "Main";
2488
2476
  var MAIN_ROOT_NAME = "MainRoot";
2489
2477
  var NAVIGATION_SIDEBAR_NAME = "NavigationSidebar";
2490
2478
  var COMPLEMENTARY_SIDEBAR_NAME = "ComplementarySidebar";
2491
- var MAIN_NAME = "Main";
2492
2479
  var GENERIC_CONSUMER_NAME = "GenericConsumer";
2493
2480
  var landmarkAttr = "data-main-landmark";
2494
2481
  var useLandmarkMover = (propsOnKeyDown, landmark) => {
@@ -2634,14 +2621,14 @@ var MainSidebar = /* @__PURE__ */ forwardRef17(({ classNames, children, swipeToD
2634
2621
  }, [
2635
2622
  props.onKeyDown
2636
2623
  ]);
2637
- const Root7 = isLg ? Primitive8.div : DialogContent2;
2624
+ const Root8 = isLg ? Primitive8.div : DialogContent2;
2638
2625
  return /* @__PURE__ */ React25.createElement(DialogRoot2, {
2639
2626
  open: state !== "closed",
2640
2627
  "aria-label": toLocalizedString(label, t),
2641
2628
  modal: false
2642
2629
  }, !isLg && /* @__PURE__ */ React25.createElement(DialogTitle2, {
2643
2630
  className: "sr-only"
2644
- }, toLocalizedString(label, t)), /* @__PURE__ */ React25.createElement(Root7, {
2631
+ }, toLocalizedString(label, t)), /* @__PURE__ */ React25.createElement(Root8, {
2645
2632
  ...!isLg && {
2646
2633
  forceMount: true,
2647
2634
  tabIndex: -1,
@@ -2705,9 +2692,9 @@ var MainContent = /* @__PURE__ */ forwardRef17(({ asChild, classNames, bounce, h
2705
2692
  try {
2706
2693
  const { navigationSidebarState, complementarySidebarState } = useMainContext(MAIN_NAME);
2707
2694
  const { tx } = useThemeContext();
2708
- const Root7 = asChild ? Slot8 : role ? "div" : "main";
2695
+ const Root8 = asChild ? Slot8 : role ? "div" : "main";
2709
2696
  const mover = useLandmarkMover(props.onKeyDown, "1");
2710
- return /* @__PURE__ */ React25.createElement(Root7, {
2697
+ return /* @__PURE__ */ React25.createElement(Root8, {
2711
2698
  role,
2712
2699
  ...handlesFocus && {
2713
2700
  ...mover
@@ -2814,8 +2801,8 @@ var ContextMenuViewport = /* @__PURE__ */ forwardRef18(({ classNames, asChild, c
2814
2801
  var _effect = _useSignals26();
2815
2802
  try {
2816
2803
  const { tx } = useThemeContext();
2817
- const Root7 = asChild ? Slot9 : Primitive9.div;
2818
- return /* @__PURE__ */ React26.createElement(Root7, {
2804
+ const Root8 = asChild ? Slot9 : Primitive9.div;
2805
+ return /* @__PURE__ */ React26.createElement(Root8, {
2819
2806
  ...props,
2820
2807
  className: tx("menu.viewport", "menu__viewport", {}, classNames),
2821
2808
  ref: forwardedRef
@@ -2917,7 +2904,7 @@ import { createMenuScope } from "@radix-ui/react-menu";
2917
2904
  import { Primitive as Primitive10 } from "@radix-ui/react-primitive";
2918
2905
  import { Slot as Slot10 } from "@radix-ui/react-slot";
2919
2906
  import { useControllableState as useControllableState5 } from "@radix-ui/react-use-controllable-state";
2920
- import React27, { forwardRef as forwardRef19, useCallback as useCallback10, useEffect as useEffect7, useRef as useRef3 } from "react";
2907
+ import React27, { forwardRef as forwardRef19, useCallback as useCallback10, useEffect as useEffect7, useMemo as useMemo5, useRef as useRef3 } from "react";
2921
2908
  var DROPDOWN_MENU_NAME = "DropdownMenu";
2922
2909
  var [createDropdownMenuContext, createDropdownMenuScope] = createContextScope3(DROPDOWN_MENU_NAME, [
2923
2910
  createMenuScope
@@ -3055,8 +3042,8 @@ var DropdownMenuViewport = /* @__PURE__ */ forwardRef19(({ classNames, asChild,
3055
3042
  var _effect = _useSignals27();
3056
3043
  try {
3057
3044
  const { tx } = useThemeContext();
3058
- const Root7 = asChild ? Slot10 : Primitive10.div;
3059
- return /* @__PURE__ */ React27.createElement(Root7, {
3045
+ const Root8 = asChild ? Slot10 : Primitive10.div;
3046
+ return /* @__PURE__ */ React27.createElement(Root8, {
3060
3047
  ...props,
3061
3048
  className: tx("menu.viewport", "menu__viewport", {}, classNames),
3062
3049
  ref: forwardedRef
@@ -3069,18 +3056,35 @@ var CONTENT_NAME2 = "DropdownMenuContent";
3069
3056
  var DropdownMenuContent = /* @__PURE__ */ forwardRef19((props, forwardedRef) => {
3070
3057
  var _effect = _useSignals27();
3071
3058
  try {
3072
- const { __scopeDropdownMenu, classNames, collisionPadding = 8, ...contentProps } = props;
3059
+ const { __scopeDropdownMenu, classNames, collisionPadding = 8, collisionBoundary, ...contentProps } = props;
3073
3060
  const { tx } = useThemeContext();
3074
3061
  const context = useDropdownMenuContext(CONTENT_NAME2, __scopeDropdownMenu);
3075
3062
  const elevation = useElevationContext();
3076
3063
  const menuScope = useMenuScope(__scopeDropdownMenu);
3077
3064
  const hasInteractedOutsideRef = useRef3(false);
3078
3065
  const safeCollisionPadding = useSafeCollisionPadding(collisionPadding);
3066
+ const computedCollisionBoundary = useMemo5(() => {
3067
+ const closestBoundary = context.triggerRef.current?.closest("[data-popover-collision-boundary]");
3068
+ return closestBoundary ? Array.isArray(collisionBoundary) ? [
3069
+ closestBoundary,
3070
+ ...collisionBoundary
3071
+ ] : collisionBoundary ? [
3072
+ closestBoundary,
3073
+ collisionBoundary
3074
+ ] : [
3075
+ closestBoundary
3076
+ ] : collisionBoundary;
3077
+ }, [
3078
+ context.open,
3079
+ collisionBoundary,
3080
+ context.triggerRef.current
3081
+ ]);
3079
3082
  return /* @__PURE__ */ React27.createElement(MenuPrimitive.Content, {
3080
3083
  id: context.contentId,
3081
3084
  "aria-labelledby": context.triggerId,
3082
3085
  ...menuScope,
3083
3086
  ...contentProps,
3087
+ collisionBoundary: computedCollisionBoundary,
3084
3088
  collisionPadding: safeCollisionPadding,
3085
3089
  ref: forwardedRef,
3086
3090
  onCloseAutoFocus: composeEventHandlers2(props.onCloseAutoFocus, (event) => {
@@ -3382,12 +3386,12 @@ var MessageRoot = /* @__PURE__ */ forwardRef20(({ asChild, valence = "neutral",
3382
3386
  const titleId = useId4("message__title", propsTitleId);
3383
3387
  const descriptionId = useId4("message__description", propsDescriptionId);
3384
3388
  const elevation = useElevationContext(propsElevation);
3385
- const Root7 = asChild ? Slot11 : Primitive11.div;
3389
+ const Root8 = asChild ? Slot11 : Primitive11.div;
3386
3390
  return /* @__PURE__ */ React28.createElement(MessageProvider, {
3387
3391
  titleId,
3388
3392
  descriptionId,
3389
3393
  valence
3390
- }, /* @__PURE__ */ React28.createElement(Root7, {
3394
+ }, /* @__PURE__ */ React28.createElement(Root8, {
3391
3395
  role: valence === "neutral" ? "paragraph" : "alert",
3392
3396
  ...props,
3393
3397
  className: tx("message.root", "message", {
@@ -3409,8 +3413,8 @@ var MessageTitle = /* @__PURE__ */ forwardRef20(({ asChild, classNames, children
3409
3413
  try {
3410
3414
  const { tx } = useThemeContext();
3411
3415
  const { titleId, valence } = useMessageContext(MESSAGE_TITLE_NAME);
3412
- const Root7 = asChild ? Slot11 : Primitive11.h2;
3413
- return /* @__PURE__ */ React28.createElement(Root7, {
3416
+ const Root8 = asChild ? Slot11 : Primitive11.h2;
3417
+ return /* @__PURE__ */ React28.createElement(Root8, {
3414
3418
  ...props,
3415
3419
  className: tx("message.title", "message__title", {}, classNames),
3416
3420
  id: titleId,
@@ -3433,8 +3437,8 @@ var MessageContent = /* @__PURE__ */ forwardRef20(({ asChild, classNames, childr
3433
3437
  try {
3434
3438
  const { tx } = useThemeContext();
3435
3439
  const { descriptionId } = useMessageContext(MESSAGE_BODY_NAME);
3436
- const Root7 = asChild ? Slot11 : Primitive11.p;
3437
- return /* @__PURE__ */ React28.createElement(Root7, {
3440
+ const Root8 = asChild ? Slot11 : Primitive11.p;
3441
+ return /* @__PURE__ */ React28.createElement(Root8, {
3438
3442
  ...props,
3439
3443
  className: tx("message.content", "message__content", {}, classNames),
3440
3444
  id: descriptionId,
@@ -3469,7 +3473,7 @@ import { Primitive as Primitive12 } from "@radix-ui/react-primitive";
3469
3473
  import { Slot as Slot12 } from "@radix-ui/react-slot";
3470
3474
  import { useControllableState as useControllableState6 } from "@radix-ui/react-use-controllable-state";
3471
3475
  import { hideOthers } from "aria-hidden";
3472
- import React29, { forwardRef as forwardRef21, useCallback as useCallback11, useEffect as useEffect8, useRef as useRef4, useState as useState9 } from "react";
3476
+ import React29, { forwardRef as forwardRef21, useCallback as useCallback11, useEffect as useEffect8, useMemo as useMemo6, useRef as useRef4, useState as useState9 } from "react";
3473
3477
  import { RemoveScroll } from "react-remove-scroll";
3474
3478
  var POPOVER_NAME = "Popover";
3475
3479
  var [createPopoverContext, createPopoverScope] = createContextScope4(POPOVER_NAME, [
@@ -3719,13 +3723,29 @@ var PopoverContentNonModal = /* @__PURE__ */ forwardRef21((props, forwardedRef)
3719
3723
  var PopoverContentImpl = /* @__PURE__ */ forwardRef21((props, forwardedRef) => {
3720
3724
  var _effect = _useSignals29();
3721
3725
  try {
3722
- const { __scopePopover, trapFocus, onOpenAutoFocus, onCloseAutoFocus, disableOutsidePointerEvents, onEscapeKeyDown, onPointerDownOutside, onFocusOutside, onInteractOutside, collisionPadding = 8, classNames, ...contentProps } = props;
3726
+ const { __scopePopover, trapFocus, onOpenAutoFocus, onCloseAutoFocus, disableOutsidePointerEvents, onEscapeKeyDown, onPointerDownOutside, onFocusOutside, onInteractOutside, collisionPadding = 8, collisionBoundary, classNames, ...contentProps } = props;
3723
3727
  const context = usePopoverContext(CONTENT_NAME3, __scopePopover);
3724
3728
  const popperScope = usePopperScope2(__scopePopover);
3725
3729
  const { tx } = useThemeContext();
3726
3730
  const elevation = useElevationContext();
3727
3731
  const safeCollisionPadding = useSafeCollisionPadding(collisionPadding);
3728
3732
  useFocusGuards();
3733
+ const computedCollisionBoundary = useMemo6(() => {
3734
+ const closestBoundary = context.triggerRef.current?.closest("[data-popover-collision-boundary]");
3735
+ return closestBoundary ? Array.isArray(collisionBoundary) ? [
3736
+ closestBoundary,
3737
+ ...collisionBoundary
3738
+ ] : collisionBoundary ? [
3739
+ closestBoundary,
3740
+ collisionBoundary
3741
+ ] : [
3742
+ closestBoundary
3743
+ ] : collisionBoundary;
3744
+ }, [
3745
+ context.open,
3746
+ collisionBoundary,
3747
+ context.triggerRef.current
3748
+ ]);
3729
3749
  return /* @__PURE__ */ React29.createElement(FocusScope, {
3730
3750
  asChild: true,
3731
3751
  loop: true,
@@ -3747,13 +3767,14 @@ var PopoverContentImpl = /* @__PURE__ */ forwardRef21((props, forwardedRef) => {
3747
3767
  ...popperScope,
3748
3768
  ...contentProps,
3749
3769
  collisionPadding: safeCollisionPadding,
3770
+ collisionBoundary: computedCollisionBoundary,
3750
3771
  className: tx("popover.content", "popover", {
3751
3772
  elevation
3752
3773
  }, classNames),
3753
3774
  ref: forwardedRef,
3754
3775
  style: {
3755
3776
  ...contentProps.style,
3756
- // re-namespace exposed content custom properties
3777
+ // Re-namespace exposed content custom properties.
3757
3778
  ...{
3758
3779
  "--radix-popover-content-transform-origin": "var(--radix-popper-transform-origin)",
3759
3780
  "--radix-popover-content-available-width": "var(--radix-popper-available-width)",
@@ -3806,8 +3827,8 @@ var PopoverViewport = /* @__PURE__ */ forwardRef21(({ classNames, asChild, const
3806
3827
  var _effect = _useSignals29();
3807
3828
  try {
3808
3829
  const { tx } = useThemeContext();
3809
- const Root7 = asChild ? Slot12 : Primitive12.div;
3810
- return /* @__PURE__ */ React29.createElement(Root7, {
3830
+ const Root8 = asChild ? Slot12 : Primitive12.div;
3831
+ return /* @__PURE__ */ React29.createElement(Root8, {
3811
3832
  ...props,
3812
3833
  className: tx("popover.viewport", "popover__viewport", {
3813
3834
  constrainInline,
@@ -3942,28 +3963,190 @@ var ScrollArea = {
3942
3963
  Corner: ScrollAreaCorner
3943
3964
  };
3944
3965
 
3945
- // src/components/Select/Select.tsx
3966
+ // src/components/ScrollContainer/ScrollContainer.tsx
3946
3967
  import { useSignals as _useSignals32 } from "@preact-signals/safe-react/tracking";
3968
+ import { useState as useState10 } from "@preact-signals/safe-react/react";
3969
+ import { createContext as createContext12 } from "@radix-ui/react-context";
3970
+ import React32, { forwardRef as forwardRef24, useCallback as useCallback12, useEffect as useEffect9, useImperativeHandle, useMemo as useMemo7, useRef as useRef5 } from "react";
3971
+ import { addEventListener, combine } from "@dxos/async";
3972
+ import { invariant } from "@dxos/invariant";
3973
+ import { useForwardedRef as useForwardedRef2 } from "@dxos/react-hooks";
3974
+ import { mx as mx5 } from "@dxos/react-ui-theme";
3975
+ var __dxlog_file2 = "/__w/dxos/dxos/packages/ui/react-ui/src/components/ScrollContainer/ScrollContainer.tsx";
3976
+ var isBottom = (el) => {
3977
+ return !!(el && el.scrollHeight - el.scrollTop === el.clientHeight);
3978
+ };
3979
+ var [ScrollContainerProvider, useScrollContainerContext] = createContext12("ScrollContainer");
3980
+ var Root5 = /* @__PURE__ */ forwardRef24(({ children, classNames, pin, fade }, forwardedRef) => {
3981
+ var _effect = _useSignals32();
3982
+ try {
3983
+ const scrollerRef = useRef5(null);
3984
+ const autoScrollRef = useRef5(false);
3985
+ const [overflow, setOverflow] = useState10(false);
3986
+ const [pinned, setPinned] = useState10(pin);
3987
+ const timeoutRef = useRef5(void 0);
3988
+ const scrollToBottom = useCallback12((behavior = "instant") => {
3989
+ if (scrollerRef.current) {
3990
+ autoScrollRef.current = true;
3991
+ scrollerRef.current.classList.add("scrollbar-none");
3992
+ scrollerRef.current.scrollTo({
3993
+ top: scrollerRef.current.scrollHeight,
3994
+ behavior
3995
+ });
3996
+ clearTimeout(timeoutRef.current);
3997
+ if (behavior !== "instant") {
3998
+ timeoutRef.current = setTimeout(() => {
3999
+ scrollerRef.current?.classList.remove("scrollbar-none");
4000
+ autoScrollRef.current = false;
4001
+ }, 500);
4002
+ }
4003
+ setPinned(true);
4004
+ }
4005
+ }, []);
4006
+ const controller = useMemo7(() => ({
4007
+ viewport: scrollerRef.current,
4008
+ scrollToTop: () => {
4009
+ invariant(scrollerRef.current, void 0, {
4010
+ F: __dxlog_file2,
4011
+ L: 92,
4012
+ S: void 0,
4013
+ A: [
4014
+ "scrollerRef.current",
4015
+ ""
4016
+ ]
4017
+ });
4018
+ scrollerRef.current.scrollTo({
4019
+ top: 0,
4020
+ behavior: "smooth"
4021
+ });
4022
+ setPinned(false);
4023
+ },
4024
+ scrollToBottom: () => {
4025
+ scrollToBottom("smooth");
4026
+ }
4027
+ }), [
4028
+ scrollToBottom,
4029
+ scrollerRef.current
4030
+ ]);
4031
+ useImperativeHandle(forwardedRef, () => controller, [
4032
+ controller
4033
+ ]);
4034
+ useEffect9(() => {
4035
+ if (!scrollerRef.current) {
4036
+ return;
4037
+ }
4038
+ return combine(
4039
+ // Check if user scrolls.
4040
+ addEventListener(scrollerRef.current, "wheel", () => {
4041
+ setPinned(isBottom(scrollerRef.current));
4042
+ }),
4043
+ // Check if scrolls.
4044
+ addEventListener(scrollerRef.current, "scroll", () => {
4045
+ setOverflow((scrollerRef.current?.scrollTop ?? 0) > 0);
4046
+ })
4047
+ );
4048
+ }, []);
4049
+ return /* @__PURE__ */ React32.createElement(ScrollContainerProvider, {
4050
+ pinned,
4051
+ controller,
4052
+ scrollToBottom
4053
+ }, /* @__PURE__ */ React32.createElement("div", {
4054
+ className: "relative grid flex-1 min-bs-0 overflow-hidden"
4055
+ }, fade && /* @__PURE__ */ React32.createElement("div", {
4056
+ role: "none",
4057
+ "data-visible": overflow,
4058
+ className: mx5(
4059
+ // NOTE: Gradients may not be visible with dark reader extensions.
4060
+ "z-10 absolute block-start-0 inset-inline-0 bs-24 is-full",
4061
+ 'opacity-0 duration-200 transition-opacity data-[visible="true"]:opacity-100',
4062
+ "bg-gradient-to-b from-[--surface-bg] to-transparent pointer-events-none"
4063
+ )
4064
+ }), /* @__PURE__ */ React32.createElement("div", {
4065
+ className: mx5("flex flex-col min-bs-0 overflow-y-auto scrollbar-thin", classNames),
4066
+ ref: scrollerRef
4067
+ }, children)));
4068
+ } finally {
4069
+ _effect.f();
4070
+ }
4071
+ });
4072
+ Root5.displayName = "ScrollContainer.Root";
4073
+ var Viewport = /* @__PURE__ */ forwardRef24(({ classNames, children, ...props }, forwardedRef) => {
4074
+ var _effect = _useSignals32();
4075
+ try {
4076
+ const contentRef = useForwardedRef2(forwardedRef);
4077
+ const { pinned, scrollToBottom } = useScrollContainerContext(Viewport.displayName);
4078
+ useEffect9(() => {
4079
+ if (!pinned || !contentRef.current) {
4080
+ return;
4081
+ }
4082
+ const resizeObserver = new ResizeObserver(() => scrollToBottom());
4083
+ scrollToBottom("instant");
4084
+ resizeObserver.observe(contentRef.current);
4085
+ return () => {
4086
+ resizeObserver.disconnect();
4087
+ };
4088
+ }, [
4089
+ pinned,
4090
+ scrollToBottom
4091
+ ]);
4092
+ return /* @__PURE__ */ React32.createElement("div", {
4093
+ className: mx5("is-full", classNames),
4094
+ ...props,
4095
+ ref: contentRef
4096
+ }, children);
4097
+ } finally {
4098
+ _effect.f();
4099
+ }
4100
+ });
4101
+ Viewport.displayName = "ScrollContainer.Viewport";
4102
+ var ScrollDownButton = ({ classNames }) => {
4103
+ var _effect = _useSignals32();
4104
+ try {
4105
+ const { pinned, scrollToBottom } = useScrollContainerContext(ScrollDownButton.displayName);
4106
+ return /* @__PURE__ */ React32.createElement("div", {
4107
+ role: "none",
4108
+ className: mx5("absolute bottom-2 right-4 opacity-100 transition-opacity duration-300", pinned && "opacity-0", classNames)
4109
+ }, /* @__PURE__ */ React32.createElement(IconButton, {
4110
+ variant: "primary",
4111
+ icon: "ph--arrow-down--regular",
4112
+ iconOnly: true,
4113
+ size: 4,
4114
+ label: "Scroll down",
4115
+ onClick: () => scrollToBottom()
4116
+ }));
4117
+ } finally {
4118
+ _effect.f();
4119
+ }
4120
+ };
4121
+ ScrollDownButton.displayName = "ScrollContainer.ScrollDownButton";
4122
+ var ScrollContainer = {
4123
+ Root: Root5,
4124
+ Viewport,
4125
+ ScrollDownButton
4126
+ };
4127
+
4128
+ // src/components/Select/Select.tsx
4129
+ import { useSignals as _useSignals33 } from "@preact-signals/safe-react/tracking";
3947
4130
  import * as SelectPrimitive from "@radix-ui/react-select";
3948
- import React32, { forwardRef as forwardRef24 } from "react";
4131
+ import React33, { forwardRef as forwardRef25 } from "react";
3949
4132
  var SelectRoot = SelectPrimitive.Root;
3950
4133
  var SelectTrigger = SelectPrimitive.Trigger;
3951
4134
  var SelectValue = SelectPrimitive.Value;
3952
4135
  var SelectIcon = SelectPrimitive.Icon;
3953
4136
  var SelectPortal = SelectPrimitive.Portal;
3954
- var SelectTriggerButton = /* @__PURE__ */ forwardRef24(({ children, placeholder, ...props }, forwardedRef) => {
3955
- var _effect = _useSignals32();
4137
+ var SelectTriggerButton = /* @__PURE__ */ forwardRef25(({ children, placeholder, ...props }, forwardedRef) => {
4138
+ var _effect = _useSignals33();
3956
4139
  try {
3957
- return /* @__PURE__ */ React32.createElement(SelectPrimitive.Trigger, {
4140
+ return /* @__PURE__ */ React33.createElement(SelectPrimitive.Trigger, {
3958
4141
  asChild: true,
3959
4142
  ref: forwardedRef
3960
- }, /* @__PURE__ */ React32.createElement(Button, props, /* @__PURE__ */ React32.createElement(SelectPrimitive.Value, {
4143
+ }, /* @__PURE__ */ React33.createElement(Button, props, /* @__PURE__ */ React33.createElement(SelectPrimitive.Value, {
3961
4144
  placeholder
3962
- }, children), /* @__PURE__ */ React32.createElement("span", {
3963
- className: "w-1 flex-1"
3964
- }), /* @__PURE__ */ React32.createElement(SelectPrimitive.Icon, {
4145
+ }, children), /* @__PURE__ */ React33.createElement("span", {
4146
+ className: "is-1 flex-1"
4147
+ }), /* @__PURE__ */ React33.createElement(SelectPrimitive.Icon, {
3965
4148
  asChild: true
3966
- }, /* @__PURE__ */ React32.createElement(Icon, {
4149
+ }, /* @__PURE__ */ React33.createElement(Icon, {
3967
4150
  size: 3,
3968
4151
  icon: "ph--caret-down--bold"
3969
4152
  }))));
@@ -3971,13 +4154,13 @@ var SelectTriggerButton = /* @__PURE__ */ forwardRef24(({ children, placeholder,
3971
4154
  _effect.f();
3972
4155
  }
3973
4156
  });
3974
- var SelectContent = /* @__PURE__ */ forwardRef24(({ classNames, children, collisionPadding = 8, ...props }, forwardedRef) => {
3975
- var _effect = _useSignals32();
4157
+ var SelectContent = /* @__PURE__ */ forwardRef25(({ classNames, children, collisionPadding = 8, ...props }, forwardedRef) => {
4158
+ var _effect = _useSignals33();
3976
4159
  try {
3977
4160
  const { tx } = useThemeContext();
3978
4161
  const elevation = useElevationContext();
3979
4162
  const safeCollisionPadding = useSafeCollisionPadding(collisionPadding);
3980
- return /* @__PURE__ */ React32.createElement(SelectPrimitive.Content, {
4163
+ return /* @__PURE__ */ React33.createElement(SelectPrimitive.Content, {
3981
4164
  ...props,
3982
4165
  "data-arrow-keys": "up down",
3983
4166
  collisionPadding: safeCollisionPadding,
@@ -3991,15 +4174,15 @@ var SelectContent = /* @__PURE__ */ forwardRef24(({ classNames, children, collis
3991
4174
  _effect.f();
3992
4175
  }
3993
4176
  });
3994
- var SelectScrollUpButton2 = /* @__PURE__ */ forwardRef24(({ classNames, children, ...props }, forwardedRef) => {
3995
- var _effect = _useSignals32();
4177
+ var SelectScrollUpButton2 = /* @__PURE__ */ forwardRef25(({ classNames, children, ...props }, forwardedRef) => {
4178
+ var _effect = _useSignals33();
3996
4179
  try {
3997
4180
  const { tx } = useThemeContext();
3998
- return /* @__PURE__ */ React32.createElement(SelectPrimitive.SelectScrollUpButton, {
4181
+ return /* @__PURE__ */ React33.createElement(SelectPrimitive.SelectScrollUpButton, {
3999
4182
  ...props,
4000
4183
  className: tx("select.scrollButton", "select__scroll-button--up", {}, classNames),
4001
4184
  ref: forwardedRef
4002
- }, children ?? /* @__PURE__ */ React32.createElement(Icon, {
4185
+ }, children ?? /* @__PURE__ */ React33.createElement(Icon, {
4003
4186
  size: 3,
4004
4187
  icon: "ph--caret-up--bold"
4005
4188
  }));
@@ -4007,15 +4190,15 @@ var SelectScrollUpButton2 = /* @__PURE__ */ forwardRef24(({ classNames, children
4007
4190
  _effect.f();
4008
4191
  }
4009
4192
  });
4010
- var SelectScrollDownButton2 = /* @__PURE__ */ forwardRef24(({ classNames, children, ...props }, forwardedRef) => {
4011
- var _effect = _useSignals32();
4193
+ var SelectScrollDownButton2 = /* @__PURE__ */ forwardRef25(({ classNames, children, ...props }, forwardedRef) => {
4194
+ var _effect = _useSignals33();
4012
4195
  try {
4013
4196
  const { tx } = useThemeContext();
4014
- return /* @__PURE__ */ React32.createElement(SelectPrimitive.SelectScrollDownButton, {
4197
+ return /* @__PURE__ */ React33.createElement(SelectPrimitive.SelectScrollDownButton, {
4015
4198
  ...props,
4016
4199
  className: tx("select.scrollButton", "select__scroll-button--down", {}, classNames),
4017
4200
  ref: forwardedRef
4018
- }, children ?? /* @__PURE__ */ React32.createElement(Icon, {
4201
+ }, children ?? /* @__PURE__ */ React33.createElement(Icon, {
4019
4202
  size: 3,
4020
4203
  icon: "ph--caret-down--bold"
4021
4204
  }));
@@ -4023,11 +4206,11 @@ var SelectScrollDownButton2 = /* @__PURE__ */ forwardRef24(({ classNames, childr
4023
4206
  _effect.f();
4024
4207
  }
4025
4208
  });
4026
- var SelectViewport2 = /* @__PURE__ */ forwardRef24(({ classNames, asChild, children, ...props }, forwardedRef) => {
4027
- var _effect = _useSignals32();
4209
+ var SelectViewport2 = /* @__PURE__ */ forwardRef25(({ classNames, children, ...props }, forwardedRef) => {
4210
+ var _effect = _useSignals33();
4028
4211
  try {
4029
4212
  const { tx } = useThemeContext();
4030
- return /* @__PURE__ */ React32.createElement(SelectPrimitive.SelectViewport, {
4213
+ return /* @__PURE__ */ React33.createElement(SelectPrimitive.SelectViewport, {
4031
4214
  ...props,
4032
4215
  className: tx("select.viewport", "select__viewport", {}, classNames),
4033
4216
  ref: forwardedRef
@@ -4036,11 +4219,11 @@ var SelectViewport2 = /* @__PURE__ */ forwardRef24(({ classNames, asChild, child
4036
4219
  _effect.f();
4037
4220
  }
4038
4221
  });
4039
- var SelectItem = /* @__PURE__ */ forwardRef24(({ classNames, ...props }, forwardedRef) => {
4040
- var _effect = _useSignals32();
4222
+ var SelectItem = /* @__PURE__ */ forwardRef25(({ classNames, ...props }, forwardedRef) => {
4223
+ var _effect = _useSignals33();
4041
4224
  try {
4042
4225
  const { tx } = useThemeContext();
4043
- return /* @__PURE__ */ React32.createElement(SelectPrimitive.Item, {
4226
+ return /* @__PURE__ */ React33.createElement(SelectPrimitive.Item, {
4044
4227
  ...props,
4045
4228
  className: tx("select.item", "option", {}, classNames),
4046
4229
  ref: forwardedRef
@@ -4050,11 +4233,11 @@ var SelectItem = /* @__PURE__ */ forwardRef24(({ classNames, ...props }, forward
4050
4233
  }
4051
4234
  });
4052
4235
  var SelectItemText = SelectPrimitive.ItemText;
4053
- var SelectItemIndicator = /* @__PURE__ */ forwardRef24(({ classNames, children, ...props }, forwardedRef) => {
4054
- var _effect = _useSignals32();
4236
+ var SelectItemIndicator = /* @__PURE__ */ forwardRef25(({ classNames, children, ...props }, forwardedRef) => {
4237
+ var _effect = _useSignals33();
4055
4238
  try {
4056
4239
  const { tx } = useThemeContext();
4057
- return /* @__PURE__ */ React32.createElement(SelectPrimitive.ItemIndicator, {
4240
+ return /* @__PURE__ */ React33.createElement(SelectPrimitive.ItemIndicator, {
4058
4241
  ...props,
4059
4242
  className: tx("select.itemIndicator", "option__indicator", {}, classNames),
4060
4243
  ref: forwardedRef
@@ -4063,17 +4246,17 @@ var SelectItemIndicator = /* @__PURE__ */ forwardRef24(({ classNames, children,
4063
4246
  _effect.f();
4064
4247
  }
4065
4248
  });
4066
- var SelectOption = /* @__PURE__ */ forwardRef24(({ children, classNames, ...props }, forwardedRef) => {
4067
- var _effect = _useSignals32();
4249
+ var SelectOption = /* @__PURE__ */ forwardRef25(({ children, classNames, ...props }, forwardedRef) => {
4250
+ var _effect = _useSignals33();
4068
4251
  try {
4069
4252
  const { tx } = useThemeContext();
4070
- return /* @__PURE__ */ React32.createElement(SelectPrimitive.Item, {
4253
+ return /* @__PURE__ */ React33.createElement(SelectPrimitive.Item, {
4071
4254
  ...props,
4072
4255
  className: tx("select.item", "option", {}, classNames),
4073
4256
  ref: forwardedRef
4074
- }, /* @__PURE__ */ React32.createElement(SelectPrimitive.ItemText, null, children), /* @__PURE__ */ React32.createElement("span", {
4075
- className: "grow w-1"
4076
- }), /* @__PURE__ */ React32.createElement(Icon, {
4257
+ }, /* @__PURE__ */ React33.createElement(SelectPrimitive.ItemText, null, children), /* @__PURE__ */ React33.createElement("span", {
4258
+ className: "grow is-1"
4259
+ }), /* @__PURE__ */ React33.createElement(Icon, {
4077
4260
  icon: "ph--check--regular"
4078
4261
  }));
4079
4262
  } finally {
@@ -4082,11 +4265,11 @@ var SelectOption = /* @__PURE__ */ forwardRef24(({ children, classNames, ...prop
4082
4265
  });
4083
4266
  var SelectGroup = SelectPrimitive.Group;
4084
4267
  var SelectLabel = SelectPrimitive.Label;
4085
- var SelectSeparator = /* @__PURE__ */ forwardRef24(({ classNames, ...props }, forwardedRef) => {
4086
- var _effect = _useSignals32();
4268
+ var SelectSeparator = /* @__PURE__ */ forwardRef25(({ classNames, ...props }, forwardedRef) => {
4269
+ var _effect = _useSignals33();
4087
4270
  try {
4088
4271
  const { tx } = useThemeContext();
4089
- return /* @__PURE__ */ React32.createElement(SelectPrimitive.Separator, {
4272
+ return /* @__PURE__ */ React33.createElement(SelectPrimitive.Separator, {
4090
4273
  ...props,
4091
4274
  className: tx("select.separator", "select__separator", {}, classNames),
4092
4275
  ref: forwardedRef
@@ -4095,11 +4278,11 @@ var SelectSeparator = /* @__PURE__ */ forwardRef24(({ classNames, ...props }, fo
4095
4278
  _effect.f();
4096
4279
  }
4097
4280
  });
4098
- var SelectArrow = /* @__PURE__ */ forwardRef24(({ classNames, ...props }, forwardedRef) => {
4099
- var _effect = _useSignals32();
4281
+ var SelectArrow = /* @__PURE__ */ forwardRef25(({ classNames, ...props }, forwardedRef) => {
4282
+ var _effect = _useSignals33();
4100
4283
  try {
4101
4284
  const { tx } = useThemeContext();
4102
- return /* @__PURE__ */ React32.createElement(SelectPrimitive.Arrow, {
4285
+ return /* @__PURE__ */ React33.createElement(SelectPrimitive.Arrow, {
4103
4286
  ...props,
4104
4287
  className: tx("select.arrow", "select__arrow", {}, classNames),
4105
4288
  ref: forwardedRef
@@ -4130,14 +4313,14 @@ var Select = {
4130
4313
  };
4131
4314
 
4132
4315
  // src/components/Separator/Separator.tsx
4133
- import { useSignals as _useSignals33 } from "@preact-signals/safe-react/tracking";
4316
+ import { useSignals as _useSignals34 } from "@preact-signals/safe-react/tracking";
4134
4317
  import { Separator as SeparatorPrimitive } from "@radix-ui/react-separator";
4135
- import React33, { forwardRef as forwardRef25 } from "react";
4136
- var Separator4 = /* @__PURE__ */ forwardRef25(({ classNames, orientation = "horizontal", subdued, ...props }, forwardedRef) => {
4137
- var _effect = _useSignals33();
4318
+ import React34, { forwardRef as forwardRef26 } from "react";
4319
+ var Separator4 = /* @__PURE__ */ forwardRef26(({ classNames, orientation = "horizontal", subdued, ...props }, forwardedRef) => {
4320
+ var _effect = _useSignals34();
4138
4321
  try {
4139
4322
  const { tx } = useThemeContext();
4140
- return /* @__PURE__ */ React33.createElement(SeparatorPrimitive, {
4323
+ return /* @__PURE__ */ React34.createElement(SeparatorPrimitive, {
4141
4324
  orientation,
4142
4325
  ...props,
4143
4326
  className: tx("separator.root", "separator", {
@@ -4152,16 +4335,16 @@ var Separator4 = /* @__PURE__ */ forwardRef25(({ classNames, orientation = "hori
4152
4335
  });
4153
4336
 
4154
4337
  // src/components/Tag/Tag.tsx
4155
- import { useSignals as _useSignals34 } from "@preact-signals/safe-react/tracking";
4338
+ import { useSignals as _useSignals35 } from "@preact-signals/safe-react/tracking";
4156
4339
  import { Primitive as Primitive13 } from "@radix-ui/react-primitive";
4157
4340
  import { Slot as Slot13 } from "@radix-ui/react-slot";
4158
- import React34, { forwardRef as forwardRef26 } from "react";
4159
- var Tag = /* @__PURE__ */ forwardRef26(({ asChild, palette = "neutral", classNames, ...props }, forwardedRef) => {
4160
- var _effect = _useSignals34();
4341
+ import React35, { forwardRef as forwardRef27 } from "react";
4342
+ var Tag = /* @__PURE__ */ forwardRef27(({ asChild, palette = "neutral", classNames, ...props }, forwardedRef) => {
4343
+ var _effect = _useSignals35();
4161
4344
  try {
4162
4345
  const { tx } = useThemeContext();
4163
- const Root7 = asChild ? Slot13 : Primitive13.span;
4164
- return /* @__PURE__ */ React34.createElement(Root7, {
4346
+ const Root8 = asChild ? Slot13 : Primitive13.span;
4347
+ return /* @__PURE__ */ React35.createElement(Root8, {
4165
4348
  ...props,
4166
4349
  className: tx("tag.root", "dx-tag", {
4167
4350
  palette
@@ -4175,17 +4358,17 @@ var Tag = /* @__PURE__ */ forwardRef26(({ asChild, palette = "neutral", classNam
4175
4358
  });
4176
4359
 
4177
4360
  // src/components/Toast/Toast.tsx
4178
- import { useSignals as _useSignals35 } from "@preact-signals/safe-react/tracking";
4361
+ import { useSignals as _useSignals36 } from "@preact-signals/safe-react/tracking";
4179
4362
  import { Primitive as Primitive14 } from "@radix-ui/react-primitive";
4180
4363
  import { Slot as Slot14 } from "@radix-ui/react-slot";
4181
4364
  import { ToastAction as ToastActionPrimitive, ToastClose as ToastClosePrimitive, ToastDescription as ToastDescriptionPrimitive, ToastProvider as ToastProviderPrimitive, Root as ToastRootPrimitive, ToastTitle as ToastTitlePrimitive, ToastViewport as ToastViewportPrimitive } from "@radix-ui/react-toast";
4182
- import React35, { forwardRef as forwardRef27 } from "react";
4365
+ import React36, { forwardRef as forwardRef28 } from "react";
4183
4366
  var ToastProvider = ToastProviderPrimitive;
4184
- var ToastViewport = /* @__PURE__ */ forwardRef27(({ classNames, ...props }, forwardedRef) => {
4185
- var _effect = _useSignals35();
4367
+ var ToastViewport = /* @__PURE__ */ forwardRef28(({ classNames, ...props }, forwardedRef) => {
4368
+ var _effect = _useSignals36();
4186
4369
  try {
4187
4370
  const { tx } = useThemeContext();
4188
- return /* @__PURE__ */ React35.createElement(ToastViewportPrimitive, {
4371
+ return /* @__PURE__ */ React36.createElement(ToastViewportPrimitive, {
4189
4372
  className: tx("toast.viewport", "toast-viewport", {}, classNames),
4190
4373
  ref: forwardedRef
4191
4374
  });
@@ -4193,27 +4376,27 @@ var ToastViewport = /* @__PURE__ */ forwardRef27(({ classNames, ...props }, forw
4193
4376
  _effect.f();
4194
4377
  }
4195
4378
  });
4196
- var ToastRoot = /* @__PURE__ */ forwardRef27(({ classNames, children, ...props }, forwardedRef) => {
4197
- var _effect = _useSignals35();
4379
+ var ToastRoot = /* @__PURE__ */ forwardRef28(({ classNames, children, ...props }, forwardedRef) => {
4380
+ var _effect = _useSignals36();
4198
4381
  try {
4199
4382
  const { tx } = useThemeContext();
4200
- return /* @__PURE__ */ React35.createElement(ToastRootPrimitive, {
4383
+ return /* @__PURE__ */ React36.createElement(ToastRootPrimitive, {
4201
4384
  ...props,
4202
4385
  className: tx("toast.root", "toast", {}, classNames),
4203
4386
  ref: forwardedRef
4204
- }, /* @__PURE__ */ React35.createElement(ElevationProvider, {
4387
+ }, /* @__PURE__ */ React36.createElement(ElevationProvider, {
4205
4388
  elevation: "toast"
4206
4389
  }, children));
4207
4390
  } finally {
4208
4391
  _effect.f();
4209
4392
  }
4210
4393
  });
4211
- var ToastBody = /* @__PURE__ */ forwardRef27(({ asChild, classNames, ...props }, forwardedRef) => {
4212
- var _effect = _useSignals35();
4394
+ var ToastBody = /* @__PURE__ */ forwardRef28(({ asChild, classNames, ...props }, forwardedRef) => {
4395
+ var _effect = _useSignals36();
4213
4396
  try {
4214
4397
  const { tx } = useThemeContext();
4215
- const Root7 = asChild ? Slot14 : Primitive14.div;
4216
- return /* @__PURE__ */ React35.createElement(Root7, {
4398
+ const Root8 = asChild ? Slot14 : Primitive14.div;
4399
+ return /* @__PURE__ */ React36.createElement(Root8, {
4217
4400
  ...props,
4218
4401
  className: tx("toast.body", "toast__body", {}, classNames),
4219
4402
  ref: forwardedRef
@@ -4222,12 +4405,12 @@ var ToastBody = /* @__PURE__ */ forwardRef27(({ asChild, classNames, ...props },
4222
4405
  _effect.f();
4223
4406
  }
4224
4407
  });
4225
- var ToastTitle = /* @__PURE__ */ forwardRef27(({ asChild, classNames, ...props }, forwardedRef) => {
4226
- var _effect = _useSignals35();
4408
+ var ToastTitle = /* @__PURE__ */ forwardRef28(({ asChild, classNames, ...props }, forwardedRef) => {
4409
+ var _effect = _useSignals36();
4227
4410
  try {
4228
4411
  const { tx } = useThemeContext();
4229
- const Root7 = asChild ? Slot14 : ToastTitlePrimitive;
4230
- return /* @__PURE__ */ React35.createElement(Root7, {
4412
+ const Root8 = asChild ? Slot14 : ToastTitlePrimitive;
4413
+ return /* @__PURE__ */ React36.createElement(Root8, {
4231
4414
  ...props,
4232
4415
  className: tx("toast.title", "toast__title", {}, classNames),
4233
4416
  ref: forwardedRef
@@ -4236,12 +4419,12 @@ var ToastTitle = /* @__PURE__ */ forwardRef27(({ asChild, classNames, ...props }
4236
4419
  _effect.f();
4237
4420
  }
4238
4421
  });
4239
- var ToastDescription = /* @__PURE__ */ forwardRef27(({ asChild, classNames, ...props }, forwardedRef) => {
4240
- var _effect = _useSignals35();
4422
+ var ToastDescription = /* @__PURE__ */ forwardRef28(({ asChild, classNames, ...props }, forwardedRef) => {
4423
+ var _effect = _useSignals36();
4241
4424
  try {
4242
4425
  const { tx } = useThemeContext();
4243
- const Root7 = asChild ? Slot14 : ToastDescriptionPrimitive;
4244
- return /* @__PURE__ */ React35.createElement(Root7, {
4426
+ const Root8 = asChild ? Slot14 : ToastDescriptionPrimitive;
4427
+ return /* @__PURE__ */ React36.createElement(Root8, {
4245
4428
  ...props,
4246
4429
  className: tx("toast.description", "toast__description", {}, classNames),
4247
4430
  ref: forwardedRef
@@ -4250,12 +4433,12 @@ var ToastDescription = /* @__PURE__ */ forwardRef27(({ asChild, classNames, ...p
4250
4433
  _effect.f();
4251
4434
  }
4252
4435
  });
4253
- var ToastActions = /* @__PURE__ */ forwardRef27(({ asChild, classNames, ...props }, forwardedRef) => {
4254
- var _effect = _useSignals35();
4436
+ var ToastActions = /* @__PURE__ */ forwardRef28(({ asChild, classNames, ...props }, forwardedRef) => {
4437
+ var _effect = _useSignals36();
4255
4438
  try {
4256
4439
  const { tx } = useThemeContext();
4257
- const Root7 = asChild ? Slot14 : Primitive14.div;
4258
- return /* @__PURE__ */ React35.createElement(Root7, {
4440
+ const Root8 = asChild ? Slot14 : Primitive14.div;
4441
+ return /* @__PURE__ */ React36.createElement(Root8, {
4259
4442
  ...props,
4260
4443
  className: tx("toast.actions", "toast__actions", {}, classNames),
4261
4444
  ref: forwardedRef
@@ -4279,31 +4462,39 @@ var Toast = {
4279
4462
  };
4280
4463
 
4281
4464
  // src/components/Toolbar/Toolbar.tsx
4282
- import { useSignals as _useSignals36 } from "@preact-signals/safe-react/tracking";
4465
+ import { useSignals as _useSignals37 } from "@preact-signals/safe-react/tracking";
4283
4466
  import * as ToolbarPrimitive from "@radix-ui/react-toolbar";
4284
- import React36, { forwardRef as forwardRef28 } from "react";
4285
- var ToolbarRoot = /* @__PURE__ */ forwardRef28(({ classNames, children, layoutManaged, ...props }, forwardedRef) => {
4286
- var _effect = _useSignals36();
4467
+ import React37, { Fragment, forwardRef as forwardRef29 } from "react";
4468
+ var ToolbarRoot = /* @__PURE__ */ forwardRef29(({ classNames, children, layoutManaged, textBlockWidth: textBlockWidthParam, disabled, ...props }, forwardedRef) => {
4469
+ var _effect = _useSignals37();
4287
4470
  try {
4288
4471
  const { tx } = useThemeContext();
4289
- return /* @__PURE__ */ React36.createElement(ToolbarPrimitive.Root, {
4472
+ const InnerRoot = textBlockWidthParam ? "div" : Fragment;
4473
+ const innerRootProps = textBlockWidthParam ? {
4474
+ role: "none",
4475
+ className: tx("toolbar.inner", "toolbar", {
4476
+ layoutManaged
4477
+ }, classNames)
4478
+ } : {};
4479
+ return /* @__PURE__ */ React37.createElement(ToolbarPrimitive.Root, {
4290
4480
  ...props,
4291
4481
  "data-arrow-keys": props.orientation === "vertical" ? "up down" : "left right",
4292
4482
  className: tx("toolbar.root", "toolbar", {
4293
- layoutManaged
4483
+ layoutManaged,
4484
+ disabled
4294
4485
  }, classNames),
4295
4486
  ref: forwardedRef
4296
- }, children);
4487
+ }, /* @__PURE__ */ React37.createElement(InnerRoot, innerRootProps, children));
4297
4488
  } finally {
4298
4489
  _effect.f();
4299
4490
  }
4300
4491
  });
4301
- var ToolbarButton = /* @__PURE__ */ forwardRef28((props, forwardedRef) => {
4302
- var _effect = _useSignals36();
4492
+ var ToolbarButton = /* @__PURE__ */ forwardRef29((props, forwardedRef) => {
4493
+ var _effect = _useSignals37();
4303
4494
  try {
4304
- return /* @__PURE__ */ React36.createElement(ToolbarPrimitive.Button, {
4495
+ return /* @__PURE__ */ React37.createElement(ToolbarPrimitive.Button, {
4305
4496
  asChild: true
4306
- }, /* @__PURE__ */ React36.createElement(Button, {
4497
+ }, /* @__PURE__ */ React37.createElement(Button, {
4307
4498
  ...props,
4308
4499
  ref: forwardedRef
4309
4500
  }));
@@ -4311,12 +4502,12 @@ var ToolbarButton = /* @__PURE__ */ forwardRef28((props, forwardedRef) => {
4311
4502
  _effect.f();
4312
4503
  }
4313
4504
  });
4314
- var ToolbarIconButton = /* @__PURE__ */ forwardRef28((props, forwardedRef) => {
4315
- var _effect = _useSignals36();
4505
+ var ToolbarIconButton = /* @__PURE__ */ forwardRef29((props, forwardedRef) => {
4506
+ var _effect = _useSignals37();
4316
4507
  try {
4317
- return /* @__PURE__ */ React36.createElement(ToolbarPrimitive.Button, {
4508
+ return /* @__PURE__ */ React37.createElement(ToolbarPrimitive.Button, {
4318
4509
  asChild: true
4319
- }, /* @__PURE__ */ React36.createElement(IconButton, {
4510
+ }, /* @__PURE__ */ React37.createElement(IconButton, {
4320
4511
  ...props,
4321
4512
  ref: forwardedRef
4322
4513
  }));
@@ -4324,12 +4515,12 @@ var ToolbarIconButton = /* @__PURE__ */ forwardRef28((props, forwardedRef) => {
4324
4515
  _effect.f();
4325
4516
  }
4326
4517
  });
4327
- var ToolbarToggle = /* @__PURE__ */ forwardRef28((props, forwardedRef) => {
4328
- var _effect = _useSignals36();
4518
+ var ToolbarToggle = /* @__PURE__ */ forwardRef29((props, forwardedRef) => {
4519
+ var _effect = _useSignals37();
4329
4520
  try {
4330
- return /* @__PURE__ */ React36.createElement(ToolbarPrimitive.Button, {
4521
+ return /* @__PURE__ */ React37.createElement(ToolbarPrimitive.Button, {
4331
4522
  asChild: true
4332
- }, /* @__PURE__ */ React36.createElement(Toggle, {
4523
+ }, /* @__PURE__ */ React37.createElement(Toggle, {
4333
4524
  ...props,
4334
4525
  ref: forwardedRef
4335
4526
  }));
@@ -4337,12 +4528,12 @@ var ToolbarToggle = /* @__PURE__ */ forwardRef28((props, forwardedRef) => {
4337
4528
  _effect.f();
4338
4529
  }
4339
4530
  });
4340
- var ToolbarLink = /* @__PURE__ */ forwardRef28((props, forwardedRef) => {
4341
- var _effect = _useSignals36();
4531
+ var ToolbarLink = /* @__PURE__ */ forwardRef29((props, forwardedRef) => {
4532
+ var _effect = _useSignals37();
4342
4533
  try {
4343
- return /* @__PURE__ */ React36.createElement(ToolbarPrimitive.Link, {
4534
+ return /* @__PURE__ */ React37.createElement(ToolbarPrimitive.Link, {
4344
4535
  asChild: true
4345
- }, /* @__PURE__ */ React36.createElement(Link, {
4536
+ }, /* @__PURE__ */ React37.createElement(Link, {
4346
4537
  ...props,
4347
4538
  ref: forwardedRef
4348
4539
  }));
@@ -4350,13 +4541,13 @@ var ToolbarLink = /* @__PURE__ */ forwardRef28((props, forwardedRef) => {
4350
4541
  _effect.f();
4351
4542
  }
4352
4543
  });
4353
- var ToolbarToggleGroup2 = /* @__PURE__ */ forwardRef28(({ classNames, children, elevation, ...props }, forwardedRef) => {
4354
- var _effect = _useSignals36();
4544
+ var ToolbarToggleGroup2 = /* @__PURE__ */ forwardRef29(({ classNames, children, elevation, ...props }, forwardedRef) => {
4545
+ var _effect = _useSignals37();
4355
4546
  try {
4356
- return /* @__PURE__ */ React36.createElement(ToolbarPrimitive.ToolbarToggleGroup, {
4547
+ return /* @__PURE__ */ React37.createElement(ToolbarPrimitive.ToolbarToggleGroup, {
4357
4548
  ...props,
4358
4549
  asChild: true
4359
- }, /* @__PURE__ */ React36.createElement(ButtonGroup, {
4550
+ }, /* @__PURE__ */ React37.createElement(ButtonGroup, {
4360
4551
  classNames,
4361
4552
  children,
4362
4553
  elevation,
@@ -4366,13 +4557,13 @@ var ToolbarToggleGroup2 = /* @__PURE__ */ forwardRef28(({ classNames, children,
4366
4557
  _effect.f();
4367
4558
  }
4368
4559
  });
4369
- var ToolbarToggleGroupItem = /* @__PURE__ */ forwardRef28(({ variant, density, elevation, classNames, children, ...props }, forwardedRef) => {
4370
- var _effect = _useSignals36();
4560
+ var ToolbarToggleGroupItem = /* @__PURE__ */ forwardRef29(({ variant, density, elevation, classNames, children, ...props }, forwardedRef) => {
4561
+ var _effect = _useSignals37();
4371
4562
  try {
4372
- return /* @__PURE__ */ React36.createElement(ToolbarPrimitive.ToolbarToggleItem, {
4563
+ return /* @__PURE__ */ React37.createElement(ToolbarPrimitive.ToolbarToggleItem, {
4373
4564
  ...props,
4374
4565
  asChild: true
4375
- }, /* @__PURE__ */ React36.createElement(Button, {
4566
+ }, /* @__PURE__ */ React37.createElement(Button, {
4376
4567
  variant,
4377
4568
  density,
4378
4569
  elevation,
@@ -4384,13 +4575,13 @@ var ToolbarToggleGroupItem = /* @__PURE__ */ forwardRef28(({ variant, density, e
4384
4575
  _effect.f();
4385
4576
  }
4386
4577
  });
4387
- var ToolbarToggleGroupIconItem = /* @__PURE__ */ forwardRef28(({ variant, density, elevation, classNames, icon, label, iconOnly, ...props }, forwardedRef) => {
4388
- var _effect = _useSignals36();
4578
+ var ToolbarToggleGroupIconItem = /* @__PURE__ */ forwardRef29(({ variant, density, elevation, classNames, icon, label, iconOnly, ...props }, forwardedRef) => {
4579
+ var _effect = _useSignals37();
4389
4580
  try {
4390
- return /* @__PURE__ */ React36.createElement(ToolbarPrimitive.ToolbarToggleItem, {
4581
+ return /* @__PURE__ */ React37.createElement(ToolbarPrimitive.ToolbarToggleItem, {
4391
4582
  ...props,
4392
4583
  asChild: true
4393
- }, /* @__PURE__ */ React36.createElement(IconButton, {
4584
+ }, /* @__PURE__ */ React37.createElement(IconButton, {
4394
4585
  variant,
4395
4586
  density,
4396
4587
  elevation,
@@ -4404,15 +4595,15 @@ var ToolbarToggleGroupIconItem = /* @__PURE__ */ forwardRef28(({ variant, densit
4404
4595
  _effect.f();
4405
4596
  }
4406
4597
  });
4407
- var ToolbarSeparator = /* @__PURE__ */ forwardRef28(({ variant = "line", ...props }, forwardedRef) => {
4408
- var _effect = _useSignals36();
4598
+ var ToolbarSeparator = /* @__PURE__ */ forwardRef29(({ variant = "line", ...props }, forwardedRef) => {
4599
+ var _effect = _useSignals37();
4409
4600
  try {
4410
- return variant === "line" ? /* @__PURE__ */ React36.createElement(ToolbarPrimitive.Separator, {
4601
+ return variant === "line" ? /* @__PURE__ */ React37.createElement(ToolbarPrimitive.Separator, {
4411
4602
  asChild: true
4412
- }, /* @__PURE__ */ React36.createElement(Separator4, {
4603
+ }, /* @__PURE__ */ React37.createElement(Separator4, {
4413
4604
  ...props,
4414
4605
  ref: forwardedRef
4415
- })) : /* @__PURE__ */ React36.createElement(ToolbarPrimitive.Separator, {
4606
+ })) : /* @__PURE__ */ React37.createElement(ToolbarPrimitive.Separator, {
4416
4607
  className: "grow",
4417
4608
  ref: forwardedRef
4418
4609
  });
@@ -4507,10 +4698,12 @@ export {
4507
4698
  Popover,
4508
4699
  Status,
4509
4700
  ScrollArea,
4701
+ useScrollContainerContext,
4702
+ ScrollContainer,
4510
4703
  Select,
4511
4704
  Separator4 as Separator,
4512
4705
  Tag,
4513
4706
  Toast,
4514
4707
  Toolbar
4515
4708
  };
4516
- //# sourceMappingURL=chunk-6JCSY5Y7.mjs.map
4709
+ //# sourceMappingURL=chunk-SP7VQH72.mjs.map