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