@dxos/react-ui 0.8.4-main.84f28bd → 0.8.4-main.ae835ea

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 (211) hide show
  1. package/dist/lib/browser/{chunk-T6YPS45E.mjs → chunk-HUZZ56DW.mjs} +323 -190
  2. package/dist/lib/browser/chunk-HUZZ56DW.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +7 -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 +54 -27
  7. package/dist/lib/browser/testing/index.mjs.map +4 -4
  8. package/dist/lib/node-esm/{chunk-TYVQJ4KW.mjs → chunk-OJLL6E2Z.mjs} +323 -190
  9. package/dist/lib/node-esm/chunk-OJLL6E2Z.mjs.map +7 -0
  10. package/dist/lib/node-esm/index.mjs +7 -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 +54 -27
  14. package/dist/lib/node-esm/testing/index.mjs.map +4 -4
  15. package/dist/types/src/components/Avatars/Avatar.d.ts +1 -1
  16. package/dist/types/src/components/Avatars/Avatar.d.ts.map +1 -1
  17. package/dist/types/src/components/Avatars/Avatar.stories.d.ts +5 -31
  18. package/dist/types/src/components/Avatars/Avatar.stories.d.ts.map +1 -1
  19. package/dist/types/src/components/Avatars/AvatarGroup.stories.d.ts +5 -11
  20. package/dist/types/src/components/Avatars/AvatarGroup.stories.d.ts.map +1 -1
  21. package/dist/types/src/components/Breadcrumb/Breadcrumb.d.ts +1 -1
  22. package/dist/types/src/components/Breadcrumb/Breadcrumb.d.ts.map +1 -1
  23. package/dist/types/src/components/Breadcrumb/Breadcrumb.stories.d.ts +8 -20
  24. package/dist/types/src/components/Breadcrumb/Breadcrumb.stories.d.ts.map +1 -1
  25. package/dist/types/src/components/Buttons/Button.d.ts +1 -1
  26. package/dist/types/src/components/Buttons/Button.d.ts.map +1 -1
  27. package/dist/types/src/components/Buttons/Button.stories.d.ts +9 -4
  28. package/dist/types/src/components/Buttons/Button.stories.d.ts.map +1 -1
  29. package/dist/types/src/components/Buttons/IconButton.d.ts +2 -2
  30. package/dist/types/src/components/Buttons/IconButton.d.ts.map +1 -1
  31. package/dist/types/src/components/Buttons/IconButton.stories.d.ts +6 -15
  32. package/dist/types/src/components/Buttons/IconButton.stories.d.ts.map +1 -1
  33. package/dist/types/src/components/Buttons/Toggle.stories.d.ts +5 -11
  34. package/dist/types/src/components/Buttons/Toggle.stories.d.ts.map +1 -1
  35. package/dist/types/src/components/Buttons/ToggleGroup.d.ts +7 -8
  36. package/dist/types/src/components/Buttons/ToggleGroup.d.ts.map +1 -1
  37. package/dist/types/src/components/Buttons/ToggleGroup.stories.d.ts +7 -19
  38. package/dist/types/src/components/Buttons/ToggleGroup.stories.d.ts.map +1 -1
  39. package/dist/types/src/components/Clipboard/ClipboardProvider.d.ts.map +1 -1
  40. package/dist/types/src/components/Clipboard/CopyButton.d.ts.map +1 -1
  41. package/dist/types/src/components/DensityProvider/DensityProvider.d.ts.map +1 -1
  42. package/dist/types/src/components/Dialogs/AlertDialog.d.ts +1 -1
  43. package/dist/types/src/components/Dialogs/AlertDialog.d.ts.map +1 -1
  44. package/dist/types/src/components/Dialogs/AlertDialog.stories.d.ts +7 -39
  45. package/dist/types/src/components/Dialogs/AlertDialog.stories.d.ts.map +1 -1
  46. package/dist/types/src/components/Dialogs/Dialog.d.ts +1 -1
  47. package/dist/types/src/components/Dialogs/Dialog.d.ts.map +1 -1
  48. package/dist/types/src/components/Dialogs/Dialog.stories.d.ts +6 -29
  49. package/dist/types/src/components/Dialogs/Dialog.stories.d.ts.map +1 -1
  50. package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts.map +1 -1
  51. package/dist/types/src/components/Icon/Icon.d.ts +1 -1
  52. package/dist/types/src/components/Icon/Icon.d.ts.map +1 -1
  53. package/dist/types/src/components/Icon/Icon.stories.d.ts +17 -0
  54. package/dist/types/src/components/Icon/Icon.stories.d.ts.map +1 -0
  55. package/dist/types/src/components/Input/Input.d.ts +2 -4
  56. package/dist/types/src/components/Input/Input.d.ts.map +1 -1
  57. package/dist/types/src/components/Input/Input.stories.d.ts +10 -11
  58. package/dist/types/src/components/Input/Input.stories.d.ts.map +1 -1
  59. package/dist/types/src/components/Link/Link.stories.d.ts +8 -8
  60. package/dist/types/src/components/Link/Link.stories.d.ts.map +1 -1
  61. package/dist/types/src/components/Lists/List.d.ts +2 -2
  62. package/dist/types/src/components/Lists/List.d.ts.map +1 -1
  63. package/dist/types/src/components/Lists/List.stories.d.ts +8 -31
  64. package/dist/types/src/components/Lists/List.stories.d.ts.map +1 -1
  65. package/dist/types/src/components/Lists/Tree.d.ts +1 -1
  66. package/dist/types/src/components/Lists/Tree.d.ts.map +1 -1
  67. package/dist/types/src/components/Lists/Tree.stories.d.ts +6 -32
  68. package/dist/types/src/components/Lists/Tree.stories.d.ts.map +1 -1
  69. package/dist/types/src/components/Lists/Treegrid.d.ts +1 -1
  70. package/dist/types/src/components/Lists/Treegrid.d.ts.map +1 -1
  71. package/dist/types/src/components/Lists/Treegrid.stories.d.ts +6 -4
  72. package/dist/types/src/components/Lists/Treegrid.stories.d.ts.map +1 -1
  73. package/dist/types/src/components/Main/Main.d.ts +2 -11
  74. package/dist/types/src/components/Main/Main.d.ts.map +1 -1
  75. package/dist/types/src/components/Main/Main.stories.d.ts +6 -7
  76. package/dist/types/src/components/Main/Main.stories.d.ts.map +1 -1
  77. package/dist/types/src/components/Menus/ContextMenu.d.ts.map +1 -1
  78. package/dist/types/src/components/Menus/ContextMenu.stories.d.ts +6 -44
  79. package/dist/types/src/components/Menus/ContextMenu.stories.d.ts.map +1 -1
  80. package/dist/types/src/components/Menus/DropdownMenu.d.ts +6 -5
  81. package/dist/types/src/components/Menus/DropdownMenu.d.ts.map +1 -1
  82. package/dist/types/src/components/Menus/DropdownMenu.stories.d.ts +6 -41
  83. package/dist/types/src/components/Menus/DropdownMenu.stories.d.ts.map +1 -1
  84. package/dist/types/src/components/Message/Message.d.ts +1 -1
  85. package/dist/types/src/components/Message/Message.d.ts.map +1 -1
  86. package/dist/types/src/components/Message/Message.stories.d.ts +7 -16
  87. package/dist/types/src/components/Message/Message.stories.d.ts.map +1 -1
  88. package/dist/types/src/components/Popover/Popover.d.ts +2 -2
  89. package/dist/types/src/components/Popover/Popover.d.ts.map +1 -1
  90. package/dist/types/src/components/Popover/Popover.stories.d.ts +6 -34
  91. package/dist/types/src/components/Popover/Popover.stories.d.ts.map +1 -1
  92. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts +1 -1
  93. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts.map +1 -1
  94. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts +6 -32
  95. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts.map +1 -1
  96. package/dist/types/src/components/Select/Select.d.ts.map +1 -1
  97. package/dist/types/src/components/Select/Select.stories.d.ts +4 -9
  98. package/dist/types/src/components/Select/Select.stories.d.ts.map +1 -1
  99. package/dist/types/src/components/Status/Status.stories.d.ts +2 -8
  100. package/dist/types/src/components/Status/Status.stories.d.ts.map +1 -1
  101. package/dist/types/src/components/Tag/Tag.stories.d.ts +12 -12
  102. package/dist/types/src/components/Tag/Tag.stories.d.ts.map +1 -1
  103. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts +1 -1
  104. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts.map +1 -1
  105. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts +1 -1
  106. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts.map +1 -1
  107. package/dist/types/src/components/Toast/Toast.d.ts +1 -1
  108. package/dist/types/src/components/Toast/Toast.d.ts.map +1 -1
  109. package/dist/types/src/components/Toast/Toast.stories.d.ts +6 -44
  110. package/dist/types/src/components/Toast/Toast.stories.d.ts.map +1 -1
  111. package/dist/types/src/components/Toolbar/Toolbar.d.ts +12 -12
  112. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
  113. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts +6 -50
  114. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts.map +1 -1
  115. package/dist/types/src/components/Tooltip/Tooltip.d.ts +2 -4
  116. package/dist/types/src/components/Tooltip/Tooltip.d.ts.map +1 -1
  117. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts +8 -61
  118. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts.map +1 -1
  119. package/dist/types/src/hooks/useSafeArea.d.ts.map +1 -1
  120. package/dist/types/src/hooks/useVisualViewport.d.ts +2 -2
  121. package/dist/types/src/hooks/useVisualViewport.d.ts.map +1 -1
  122. package/dist/types/src/playground/Controls.stories.d.ts +5 -9
  123. package/dist/types/src/playground/Controls.stories.d.ts.map +1 -1
  124. package/dist/types/src/playground/Custom.stories.d.ts +12 -4
  125. package/dist/types/src/playground/Custom.stories.d.ts.map +1 -1
  126. package/dist/types/src/playground/Typography.stories.d.ts +5 -11
  127. package/dist/types/src/playground/Typography.stories.d.ts.map +1 -1
  128. package/dist/types/src/testing/decorators/index.d.ts +2 -1
  129. package/dist/types/src/testing/decorators/index.d.ts.map +1 -1
  130. package/dist/types/src/testing/decorators/withLayout.d.ts +15 -0
  131. package/dist/types/src/testing/decorators/withLayout.d.ts.map +1 -0
  132. package/dist/types/src/testing/decorators/withTheme.d.ts +3 -0
  133. package/dist/types/src/testing/decorators/withTheme.d.ts.map +1 -1
  134. package/dist/types/src/util/domino.d.ts +18 -0
  135. package/dist/types/src/util/domino.d.ts.map +1 -0
  136. package/dist/types/src/util/index.d.ts +3 -1
  137. package/dist/types/src/util/index.d.ts.map +1 -1
  138. package/dist/types/src/util/usePx.d.ts +8 -0
  139. package/dist/types/src/util/usePx.d.ts.map +1 -0
  140. package/dist/types/tsconfig.tsbuildinfo +1 -1
  141. package/package.json +23 -22
  142. package/src/components/Avatars/Avatar.stories.tsx +19 -10
  143. package/src/components/Avatars/Avatar.tsx +3 -3
  144. package/src/components/Avatars/AvatarGroup.stories.tsx +10 -6
  145. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +16 -11
  146. package/src/components/Breadcrumb/Breadcrumb.tsx +3 -3
  147. package/src/components/Buttons/Button.stories.tsx +10 -11
  148. package/src/components/Buttons/IconButton.stories.tsx +11 -8
  149. package/src/components/Buttons/IconButton.tsx +4 -3
  150. package/src/components/Buttons/Toggle.stories.tsx +12 -9
  151. package/src/components/Buttons/ToggleGroup.stories.tsx +13 -10
  152. package/src/components/Buttons/ToggleGroup.tsx +17 -4
  153. package/src/components/Clipboard/ClipboardProvider.tsx +1 -1
  154. package/src/components/Clipboard/CopyButton.tsx +3 -2
  155. package/src/components/DensityProvider/DensityProvider.tsx +1 -1
  156. package/src/components/Dialogs/AlertDialog.stories.tsx +14 -11
  157. package/src/components/Dialogs/AlertDialog.tsx +13 -13
  158. package/src/components/Dialogs/Dialog.stories.tsx +16 -14
  159. package/src/components/Dialogs/Dialog.tsx +13 -13
  160. package/src/components/ElevationProvider/ElevationProvider.tsx +1 -1
  161. package/src/components/Icon/Icon.stories.tsx +113 -0
  162. package/src/components/Icon/Icon.tsx +1 -1
  163. package/src/components/Input/Input.stories.tsx +12 -14
  164. package/src/components/Input/Input.tsx +16 -16
  165. package/src/components/Link/Link.stories.tsx +10 -6
  166. package/src/components/Lists/List.stories.tsx +22 -20
  167. package/src/components/Lists/List.tsx +15 -16
  168. package/src/components/Lists/Tree.stories.tsx +11 -8
  169. package/src/components/Lists/Tree.tsx +4 -3
  170. package/src/components/Lists/TreeDropIndicator.tsx +1 -1
  171. package/src/components/Lists/Treegrid.stories.tsx +12 -6
  172. package/src/components/Lists/Treegrid.tsx +58 -17
  173. package/src/components/Main/Main.stories.tsx +16 -8
  174. package/src/components/Main/Main.tsx +32 -17
  175. package/src/components/Menus/ContextMenu.stories.tsx +11 -8
  176. package/src/components/Menus/ContextMenu.tsx +1 -0
  177. package/src/components/Menus/DropdownMenu.stories.tsx +11 -8
  178. package/src/components/Menus/DropdownMenu.tsx +23 -13
  179. package/src/components/Message/Message.stories.tsx +11 -7
  180. package/src/components/Message/Message.tsx +1 -1
  181. package/src/components/Popover/Popover.stories.tsx +11 -8
  182. package/src/components/Popover/Popover.tsx +12 -12
  183. package/src/components/ScrollArea/ScrollArea.stories.tsx +11 -8
  184. package/src/components/ScrollArea/ScrollArea.tsx +4 -4
  185. package/src/components/Select/Select.stories.tsx +15 -12
  186. package/src/components/Select/Select.tsx +5 -5
  187. package/src/components/Status/Status.stories.tsx +9 -6
  188. package/src/components/Tag/Tag.stories.tsx +18 -9
  189. package/src/components/ThemeProvider/ThemeProvider.tsx +3 -2
  190. package/src/components/ThemeProvider/TranslationsProvider.tsx +3 -3
  191. package/src/components/Toast/Toast.stories.tsx +11 -8
  192. package/src/components/Toast/Toast.tsx +9 -9
  193. package/src/components/Toolbar/Toolbar.stories.tsx +20 -16
  194. package/src/components/Toolbar/Toolbar.tsx +19 -7
  195. package/src/components/Tooltip/Tooltip.stories.tsx +15 -11
  196. package/src/components/Tooltip/Tooltip.tsx +5 -4
  197. package/src/hooks/useSafeArea.ts +3 -2
  198. package/src/hooks/useSafeCollisionPadding.ts +1 -1
  199. package/src/hooks/useVisualViewport.ts +4 -4
  200. package/src/playground/Controls.stories.tsx +20 -17
  201. package/src/playground/Custom.stories.tsx +7 -16
  202. package/src/playground/Typography.stories.tsx +8 -6
  203. package/src/testing/decorators/index.ts +2 -1
  204. package/src/testing/decorators/withLayout.tsx +56 -0
  205. package/src/testing/decorators/withTheme.tsx +31 -0
  206. package/src/util/domino.ts +53 -0
  207. package/src/util/index.ts +3 -1
  208. package/src/util/usePx.ts +61 -0
  209. package/dist/lib/browser/chunk-T6YPS45E.mjs.map +0 -7
  210. package/dist/lib/node-esm/chunk-TYVQJ4KW.mjs.map +0 -7
  211. package/src/testing/decorators/withTheme.ts +0 -22
@@ -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
 
@@ -57,7 +57,7 @@ import { useContext as useContext4 } from "react";
57
57
  import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
58
58
  import { enUS as dtLocaleEnUs } from "date-fns/locale";
59
59
  import i18Next from "i18next";
60
- import React, { useEffect, createContext, useState as useState2, Suspense, useContext as useContext3 } from "react";
60
+ import React, { Suspense, createContext, useContext as useContext3, useEffect, useState as useState2 } from "react";
61
61
  import { initReactI18next, useTranslation as useI18NextTranslation } from "react-i18next";
62
62
  var initialLng = "en-US";
63
63
  var initialNs = "dxos-common";
@@ -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);
141
+ useViewportResize2(handleResize, deps);
142
142
  return {
143
143
  width,
144
144
  height
@@ -267,23 +267,44 @@ var Avatar = {
267
267
  };
268
268
 
269
269
  // src/components/Breadcrumb/Breadcrumb.tsx
270
- import { useSignals as _useSignals5 } from "@preact-signals/safe-react/tracking";
271
- import { Dot } from "@phosphor-icons/react";
270
+ import { useSignals as _useSignals6 } from "@preact-signals/safe-react/tracking";
272
271
  import { Primitive as Primitive4 } from "@radix-ui/react-primitive";
273
272
  import { Slot as Slot4 } from "@radix-ui/react-slot";
274
- import React5, { forwardRef as forwardRef4 } from "react";
273
+ import React6, { forwardRef as forwardRef5 } from "react";
275
274
 
276
- // src/components/Link/Link.tsx
275
+ // src/components/Icon/Icon.tsx
277
276
  import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
277
+ import React4, { forwardRef as forwardRef3, memo } from "react";
278
+ var Icon = /* @__PURE__ */ memo(/* @__PURE__ */ forwardRef3(({ icon, classNames, size = 4, ...props }, forwardedRef) => {
279
+ var _effect = _useSignals4();
280
+ try {
281
+ const { tx } = useThemeContext();
282
+ const href = useIconHref(icon);
283
+ return /* @__PURE__ */ React4.createElement("svg", {
284
+ ...props,
285
+ className: tx("icon.root", "icon", {
286
+ size
287
+ }, classNames),
288
+ ref: forwardedRef
289
+ }, /* @__PURE__ */ React4.createElement("use", {
290
+ href
291
+ }));
292
+ } finally {
293
+ _effect.f();
294
+ }
295
+ }));
296
+
297
+ // src/components/Link/Link.tsx
298
+ import { useSignals as _useSignals5 } from "@preact-signals/safe-react/tracking";
278
299
  import { Primitive as Primitive3 } from "@radix-ui/react-primitive";
279
300
  import { Slot as Slot3 } from "@radix-ui/react-slot";
280
- import React4, { forwardRef as forwardRef3 } from "react";
281
- var Link = /* @__PURE__ */ forwardRef3(({ asChild, variant, classNames, ...props }, forwardedRef) => {
282
- var _effect = _useSignals4();
301
+ import React5, { forwardRef as forwardRef4 } from "react";
302
+ var Link = /* @__PURE__ */ forwardRef4(({ asChild, variant, classNames, ...props }, forwardedRef) => {
303
+ var _effect = _useSignals5();
283
304
  try {
284
305
  const { tx } = useThemeContext();
285
306
  const Root7 = asChild ? Slot3 : Primitive3.a;
286
- return /* @__PURE__ */ React4.createElement(Root7, {
307
+ return /* @__PURE__ */ React5.createElement(Root7, {
287
308
  ...props,
288
309
  className: tx("link.root", "link", {
289
310
  variant
@@ -296,12 +317,12 @@ var Link = /* @__PURE__ */ forwardRef3(({ asChild, variant, classNames, ...props
296
317
  });
297
318
 
298
319
  // src/components/Breadcrumb/Breadcrumb.tsx
299
- var BreadcrumbRoot = /* @__PURE__ */ forwardRef4(({ asChild, classNames, ...props }, forwardedRef) => {
300
- var _effect = _useSignals5();
320
+ var BreadcrumbRoot = /* @__PURE__ */ forwardRef5(({ asChild, classNames, ...props }, forwardedRef) => {
321
+ var _effect = _useSignals6();
301
322
  try {
302
323
  const { tx } = useThemeContext();
303
324
  const Root7 = asChild ? Slot4 : Primitive4.div;
304
- return /* @__PURE__ */ React5.createElement(Root7, {
325
+ return /* @__PURE__ */ React6.createElement(Root7, {
305
326
  role: "navigation",
306
327
  ...props,
307
328
  className: tx("breadcrumb.root", "breadcrumb", {}, classNames),
@@ -311,12 +332,12 @@ var BreadcrumbRoot = /* @__PURE__ */ forwardRef4(({ asChild, classNames, ...prop
311
332
  _effect.f();
312
333
  }
313
334
  });
314
- var BreadcrumbList = /* @__PURE__ */ forwardRef4(({ asChild, classNames, ...props }, forwardedRef) => {
315
- var _effect = _useSignals5();
335
+ var BreadcrumbList = /* @__PURE__ */ forwardRef5(({ asChild, classNames, ...props }, forwardedRef) => {
336
+ var _effect = _useSignals6();
316
337
  try {
317
338
  const { tx } = useThemeContext();
318
339
  const Root7 = asChild ? Slot4 : Primitive4.ol;
319
- return /* @__PURE__ */ React5.createElement(Root7, {
340
+ return /* @__PURE__ */ React6.createElement(Root7, {
320
341
  role: "list",
321
342
  ...props,
322
343
  className: tx("breadcrumb.list", "breadcrumb__list", {}, classNames),
@@ -326,12 +347,12 @@ var BreadcrumbList = /* @__PURE__ */ forwardRef4(({ asChild, classNames, ...prop
326
347
  _effect.f();
327
348
  }
328
349
  });
329
- var BreadcrumbListItem = /* @__PURE__ */ forwardRef4(({ asChild, classNames, ...props }, forwardedRef) => {
330
- var _effect = _useSignals5();
350
+ var BreadcrumbListItem = /* @__PURE__ */ forwardRef5(({ asChild, classNames, ...props }, forwardedRef) => {
351
+ var _effect = _useSignals6();
331
352
  try {
332
353
  const { tx } = useThemeContext();
333
354
  const Root7 = asChild ? Slot4 : Primitive4.li;
334
- return /* @__PURE__ */ React5.createElement(Root7, {
355
+ return /* @__PURE__ */ React6.createElement(Root7, {
335
356
  role: "listitem",
336
357
  ...props,
337
358
  className: tx("breadcrumb.listItem", "breadcrumb__list__item", {}, classNames),
@@ -341,11 +362,11 @@ var BreadcrumbListItem = /* @__PURE__ */ forwardRef4(({ asChild, classNames, ...
341
362
  _effect.f();
342
363
  }
343
364
  });
344
- var BreadcrumbLink = /* @__PURE__ */ forwardRef4(({ asChild, ...props }, forwardedRef) => {
345
- var _effect = _useSignals5();
365
+ var BreadcrumbLink = /* @__PURE__ */ forwardRef5(({ asChild, ...props }, forwardedRef) => {
366
+ var _effect = _useSignals6();
346
367
  try {
347
368
  const Root7 = asChild ? Slot4 : Link;
348
- return /* @__PURE__ */ React5.createElement(Root7, {
369
+ return /* @__PURE__ */ React6.createElement(Root7, {
349
370
  ...props,
350
371
  ref: forwardedRef
351
372
  });
@@ -353,12 +374,12 @@ var BreadcrumbLink = /* @__PURE__ */ forwardRef4(({ asChild, ...props }, forward
353
374
  _effect.f();
354
375
  }
355
376
  });
356
- var BreadcrumbCurrent = /* @__PURE__ */ forwardRef4(({ asChild, classNames, ...props }, forwardedRef) => {
357
- var _effect = _useSignals5();
377
+ var BreadcrumbCurrent = /* @__PURE__ */ forwardRef5(({ asChild, classNames, ...props }, forwardedRef) => {
378
+ var _effect = _useSignals6();
358
379
  try {
359
380
  const { tx } = useThemeContext();
360
381
  const Root7 = asChild ? Slot4 : "h1";
361
- return /* @__PURE__ */ React5.createElement(Root7, {
382
+ return /* @__PURE__ */ React6.createElement(Root7, {
362
383
  ...props,
363
384
  "aria-current": "page",
364
385
  className: tx("breadcrumb.current", "breadcrumb__item__heading--current", {}, classNames),
@@ -369,16 +390,16 @@ var BreadcrumbCurrent = /* @__PURE__ */ forwardRef4(({ asChild, classNames, ...p
369
390
  }
370
391
  });
371
392
  var BreadcrumbSeparator = ({ children, classNames, ...props }) => {
372
- var _effect = _useSignals5();
393
+ var _effect = _useSignals6();
373
394
  try {
374
395
  const { tx } = useThemeContext();
375
- return /* @__PURE__ */ React5.createElement(Primitive4.span, {
396
+ return /* @__PURE__ */ React6.createElement(Primitive4.span, {
376
397
  role: "separator",
377
398
  "aria-hidden": "true",
378
399
  ...props,
379
400
  className: tx("breadcrumb.separator", "breadcrumb__separator", {}, classNames)
380
- }, children ?? /* @__PURE__ */ React5.createElement(Dot, {
381
- weight: "bold"
401
+ }, children ?? /* @__PURE__ */ React6.createElement(Icon, {
402
+ icon: "ph--dot--bold"
382
403
  }));
383
404
  } finally {
384
405
  _effect.f();
@@ -394,25 +415,25 @@ var Breadcrumb = {
394
415
  };
395
416
 
396
417
  // src/components/Buttons/Button.tsx
397
- import { useSignals as _useSignals6 } from "@preact-signals/safe-react/tracking";
418
+ import { useSignals as _useSignals7 } from "@preact-signals/safe-react/tracking";
398
419
  import { createContext as createContext3 } from "@radix-ui/react-context";
399
420
  import { Primitive as Primitive5 } from "@radix-ui/react-primitive";
400
421
  import { Slot as Slot5 } from "@radix-ui/react-slot";
401
- import React6, { forwardRef as forwardRef5, memo } from "react";
422
+ import React7, { forwardRef as forwardRef6, memo as memo2 } from "react";
402
423
  var BUTTON_GROUP_NAME = "ButtonGroup";
403
424
  var BUTTON_NAME = "Button";
404
425
  var [ButtonGroupProvider, useButtonGroupContext] = createContext3(BUTTON_GROUP_NAME, {
405
426
  inGroup: false
406
427
  });
407
- var Button = /* @__PURE__ */ memo(/* @__PURE__ */ forwardRef5(({ classNames, children, density: propsDensity, elevation: propsElevation, variant = "default", asChild, ...props }, ref) => {
408
- var _effect = _useSignals6();
428
+ var Button = /* @__PURE__ */ memo2(/* @__PURE__ */ forwardRef6(({ classNames, children, density: propsDensity, elevation: propsElevation, variant = "default", asChild, ...props }, ref) => {
429
+ var _effect = _useSignals7();
409
430
  try {
410
431
  const { inGroup } = useButtonGroupContext(BUTTON_NAME);
411
432
  const { tx } = useThemeContext();
412
433
  const elevation = useElevationContext(propsElevation);
413
434
  const density = useDensityContext(propsDensity);
414
435
  const Root7 = asChild ? Slot5 : Primitive5.button;
415
- return /* @__PURE__ */ React6.createElement(Root7, {
436
+ return /* @__PURE__ */ React7.createElement(Root7, {
416
437
  ref,
417
438
  ...props,
418
439
  "data-variant": variant,
@@ -434,20 +455,20 @@ var Button = /* @__PURE__ */ memo(/* @__PURE__ */ forwardRef5(({ classNames, chi
434
455
  }
435
456
  }));
436
457
  Button.displayName = BUTTON_NAME;
437
- var ButtonGroup = /* @__PURE__ */ forwardRef5(({ children, elevation: propsElevation, classNames, asChild, ...props }, forwardedRef) => {
438
- var _effect = _useSignals6();
458
+ var ButtonGroup = /* @__PURE__ */ forwardRef6(({ children, elevation: propsElevation, classNames, asChild, ...props }, forwardedRef) => {
459
+ var _effect = _useSignals7();
439
460
  try {
440
461
  const { tx } = useThemeContext();
441
462
  const elevation = useElevationContext(propsElevation);
442
463
  const Root7 = asChild ? Slot5 : Primitive5.div;
443
- return /* @__PURE__ */ React6.createElement(Root7, {
464
+ return /* @__PURE__ */ React7.createElement(Root7, {
444
465
  role: "none",
445
466
  ...props,
446
467
  className: tx("button.group", "button-group", {
447
468
  elevation
448
469
  }, classNames),
449
470
  ref: forwardedRef
450
- }, /* @__PURE__ */ React6.createElement(ButtonGroupProvider, {
471
+ }, /* @__PURE__ */ React7.createElement(ButtonGroupProvider, {
451
472
  inGroup: true
452
473
  }, children));
453
474
  } finally {
@@ -460,28 +481,6 @@ ButtonGroup.displayName = BUTTON_GROUP_NAME;
460
481
  import { useSignals as _useSignals9 } from "@preact-signals/safe-react/tracking";
461
482
  import React9, { forwardRef as forwardRef8 } from "react";
462
483
 
463
- // src/components/Icon/Icon.tsx
464
- import { useSignals as _useSignals7 } from "@preact-signals/safe-react/tracking";
465
- import React7, { forwardRef as forwardRef6, memo as memo2 } from "react";
466
- var Icon = /* @__PURE__ */ memo2(/* @__PURE__ */ forwardRef6(({ icon, classNames, size, ...props }, forwardedRef) => {
467
- var _effect = _useSignals7();
468
- try {
469
- const { tx } = useThemeContext();
470
- const href = useIconHref(icon);
471
- return /* @__PURE__ */ React7.createElement("svg", {
472
- ...props,
473
- className: tx("icon.root", "icon", {
474
- size
475
- }, classNames),
476
- ref: forwardedRef
477
- }, /* @__PURE__ */ React7.createElement("use", {
478
- href
479
- }));
480
- } finally {
481
- _effect.f();
482
- }
483
- }));
484
-
485
484
  // src/components/Tooltip/Tooltip.tsx
486
485
  import { useSignals as _useSignals8 } from "@preact-signals/safe-react/tracking";
487
486
  import { composeEventHandlers } from "@radix-ui/primitive";
@@ -1137,7 +1136,7 @@ var LabelledIconButton = /* @__PURE__ */ forwardRef8(({ icon, size, iconOnly, la
1137
1136
  iconOnly
1138
1137
  }, classNames),
1139
1138
  ref: forwardedRef
1140
- }, /* @__PURE__ */ React9.createElement(Icon, {
1139
+ }, icon && /* @__PURE__ */ React9.createElement(Icon, {
1141
1140
  icon,
1142
1141
  size,
1143
1142
  classNames: iconClassNames
@@ -1189,7 +1188,7 @@ var Toggle = /* @__PURE__ */ forwardRef9(({ defaultPressed, pressed, onPressedCh
1189
1188
 
1190
1189
  // src/components/Buttons/ToggleGroup.tsx
1191
1190
  import { useSignals as _useSignals11 } from "@preact-signals/safe-react/tracking";
1192
- import { ToggleGroup as ToggleGroupPrimitive, ToggleGroupItem as ToggleGroupItemPrimitive } from "@radix-ui/react-toggle-group";
1191
+ import { ToggleGroupItem as ToggleGroupItemPrimitive, ToggleGroup as ToggleGroupPrimitive } from "@radix-ui/react-toggle-group";
1193
1192
  import React11, { forwardRef as forwardRef10 } from "react";
1194
1193
  var ToggleGroup = /* @__PURE__ */ forwardRef10(({ classNames, children, ...props }, forwardedRef) => {
1195
1194
  var _effect = _useSignals11();
@@ -1224,6 +1223,26 @@ var ToggleGroupItem = /* @__PURE__ */ forwardRef10(({ variant, elevation, densit
1224
1223
  _effect.f();
1225
1224
  }
1226
1225
  });
1226
+ var ToggleGroupIconItem = /* @__PURE__ */ forwardRef10(({ variant, label, icon, size, elevation, density, classNames, ...props }, forwardedRef) => {
1227
+ var _effect = _useSignals11();
1228
+ try {
1229
+ return /* @__PURE__ */ React11.createElement(ToggleGroupItemPrimitive, {
1230
+ ...props,
1231
+ asChild: true
1232
+ }, /* @__PURE__ */ React11.createElement(IconButton, {
1233
+ variant,
1234
+ elevation,
1235
+ density,
1236
+ classNames,
1237
+ label,
1238
+ icon,
1239
+ size,
1240
+ ref: forwardedRef
1241
+ }));
1242
+ } finally {
1243
+ _effect.f();
1244
+ }
1245
+ });
1227
1246
 
1228
1247
  // src/components/Clipboard/ClipboardProvider.tsx
1229
1248
  import { useSignals as _useSignals12 } from "@preact-signals/safe-react/tracking";
@@ -1256,18 +1275,103 @@ var ClipboardProvider = ({ children }) => {
1256
1275
  // src/components/Clipboard/CopyButton.tsx
1257
1276
  import { useSignals as _useSignals16 } from "@preact-signals/safe-react/tracking";
1258
1277
  import React16 from "react";
1259
- import { mx as mx2 } from "@dxos/react-ui-theme";
1278
+ import { mx as mx3 } from "@dxos/react-ui-theme";
1260
1279
 
1261
1280
  // src/components/ThemeProvider/ThemeProvider.tsx
1262
1281
  import { useSignals as _useSignals15 } from "@preact-signals/safe-react/tracking";
1263
1282
  import { createKeyborg } from "keyborg";
1264
- import React15, { createContext as createContext7, useEffect as useEffect3, useMemo as useMemo2 } from "react";
1283
+ import React15, { createContext as createContext7, useEffect as useEffect4, useMemo as useMemo3 } from "react";
1284
+
1285
+ // src/util/domino.ts
1286
+ import { mx as mx2 } from "@dxos/react-ui-theme";
1287
+ var Domino = class _Domino {
1288
+ static of(tag) {
1289
+ return new _Domino(tag);
1290
+ }
1291
+ _el;
1292
+ constructor(tag) {
1293
+ this._el = document.createElement(tag);
1294
+ }
1295
+ classNames(...classNames) {
1296
+ this._el.className = mx2(classNames);
1297
+ return this;
1298
+ }
1299
+ text(value) {
1300
+ this._el.textContent = value;
1301
+ return this;
1302
+ }
1303
+ data(key, value) {
1304
+ this._el.dataset[key] = value;
1305
+ return this;
1306
+ }
1307
+ attributes(attr) {
1308
+ Object.entries(attr).filter(([_, value]) => value !== void 0).map(([key, value]) => this._el.setAttribute(key, value));
1309
+ return this;
1310
+ }
1311
+ style(styles) {
1312
+ Object.assign(this._el.style, styles);
1313
+ return this;
1314
+ }
1315
+ children(...children) {
1316
+ children.forEach((child) => this._el.appendChild(child.build()));
1317
+ return this;
1318
+ }
1319
+ on(event, handler) {
1320
+ this._el.addEventListener(event, handler);
1321
+ return this;
1322
+ }
1323
+ build() {
1324
+ return this._el;
1325
+ }
1326
+ };
1265
1327
 
1266
1328
  // src/util/hasIosKeyboard.ts
1267
1329
  var hasIosKeyboard = () => {
1268
1330
  return !!navigator.userAgent.match(/iP(ad|od|hone).+Safari/);
1269
1331
  };
1270
1332
 
1333
+ // src/util/usePx.ts
1334
+ import { useCallback as useCallback5, useEffect as useEffect3, useMemo as useMemo2, useState as useState6 } from "react";
1335
+ var getDocumentElementFontSize = () => parseFloat(getComputedStyle(document.documentElement).fontSize);
1336
+ var usePx = (rem) => {
1337
+ const [fontSize, setFontSize] = useState6(() => {
1338
+ if (typeof document !== "undefined") {
1339
+ return getDocumentElementFontSize();
1340
+ }
1341
+ return 16;
1342
+ });
1343
+ const updateFontSize = useCallback5(() => {
1344
+ setFontSize(getDocumentElementFontSize());
1345
+ }, []);
1346
+ useEffect3(() => {
1347
+ if (typeof document === "undefined") {
1348
+ return;
1349
+ }
1350
+ const resizeObserver = new ResizeObserver(updateFontSize);
1351
+ resizeObserver.observe(document.documentElement);
1352
+ const mediaQueryList = window.matchMedia("all");
1353
+ const handleMediaChange = () => {
1354
+ updateFontSize();
1355
+ };
1356
+ if (mediaQueryList.addEventListener) {
1357
+ mediaQueryList.addEventListener("change", handleMediaChange);
1358
+ } else {
1359
+ mediaQueryList.addListener(handleMediaChange);
1360
+ }
1361
+ return () => {
1362
+ resizeObserver.disconnect();
1363
+ if (mediaQueryList.removeEventListener) {
1364
+ mediaQueryList.removeEventListener("change", handleMediaChange);
1365
+ } else {
1366
+ mediaQueryList.removeListener(handleMediaChange);
1367
+ }
1368
+ };
1369
+ }, []);
1370
+ return useMemo2(() => rem * fontSize, [
1371
+ fontSize
1372
+ ]);
1373
+ };
1374
+
1271
1375
  // src/components/DensityProvider/DensityProvider.tsx
1272
1376
  import { useSignals as _useSignals13 } from "@preact-signals/safe-react/tracking";
1273
1377
  import React13, { createContext as createContext5 } from "react";
@@ -1311,7 +1415,7 @@ var ThemeContext = /* @__PURE__ */ createContext7(void 0);
1311
1415
  var ThemeProvider = ({ children, fallback = null, resourceExtensions, appNs, tx = (_path, defaultClassName, _styleProps, ..._options) => defaultClassName, themeMode = "dark", rootDensity = "fine", ...rest }) => {
1312
1416
  var _effect = _useSignals15();
1313
1417
  try {
1314
- useEffect3(() => {
1418
+ useEffect4(() => {
1315
1419
  if (document.defaultView) {
1316
1420
  const kb = createKeyborg(document.defaultView);
1317
1421
  kb.subscribe(handleInputModalityChange);
@@ -1319,7 +1423,7 @@ var ThemeProvider = ({ children, fallback = null, resourceExtensions, appNs, tx
1319
1423
  }
1320
1424
  }, []);
1321
1425
  const safeAreaPadding = useSafeArea();
1322
- const contextValue = useMemo2(() => ({
1426
+ const contextValue = useMemo3(() => ({
1323
1427
  tx,
1324
1428
  themeMode,
1325
1429
  hasIosKeyboard: hasIosKeyboard(),
@@ -1372,7 +1476,7 @@ var CopyButton = ({ classNames, value, size = 5, ...props }) => {
1372
1476
  "data-testid": "copy-invitation"
1373
1477
  }, /* @__PURE__ */ React16.createElement("div", {
1374
1478
  role: "none",
1375
- className: mx2("flex gap-1 items-center", isCopied && inactiveLabelStyles)
1479
+ className: mx3("flex gap-1 items-center", isCopied && inactiveLabelStyles)
1376
1480
  }, /* @__PURE__ */ React16.createElement("span", {
1377
1481
  className: "pli-1"
1378
1482
  }, t("copy label")), /* @__PURE__ */ React16.createElement(Icon, {
@@ -1380,7 +1484,7 @@ var CopyButton = ({ classNames, value, size = 5, ...props }) => {
1380
1484
  size
1381
1485
  })), /* @__PURE__ */ React16.createElement("div", {
1382
1486
  role: "none",
1383
- className: mx2("flex gap-1 items-center", !isCopied && inactiveLabelStyles)
1487
+ className: mx3("flex gap-1 items-center", !isCopied && inactiveLabelStyles)
1384
1488
  }, /* @__PURE__ */ React16.createElement("span", {
1385
1489
  className: "pli-1"
1386
1490
  }, t("copy success label")), /* @__PURE__ */ React16.createElement(Icon, {
@@ -1427,7 +1531,7 @@ var Clipboard = {
1427
1531
  // src/components/Dialogs/Dialog.tsx
1428
1532
  import { useSignals as _useSignals17 } from "@preact-signals/safe-react/tracking";
1429
1533
  import { createContext as createContext8 } from "@radix-ui/react-context";
1430
- import { Root as DialogRootPrimitive, DialogTrigger as DialogTriggerPrimitive, DialogPortal as DialogPortalPrimitive, DialogOverlay as DialogOverlayPrimitive, DialogTitle as DialogTitlePrimitive, DialogDescription as DialogDescriptionPrimitive, DialogClose as DialogClosePrimitive, DialogContent as DialogContentPrimitive } from "@radix-ui/react-dialog";
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";
1431
1535
  import React17, { forwardRef as forwardRef11 } from "react";
1432
1536
  var DialogRoot = (props) => {
1433
1537
  var _effect = _useSignals17();
@@ -1525,7 +1629,7 @@ var Dialog = {
1525
1629
 
1526
1630
  // src/components/Dialogs/AlertDialog.tsx
1527
1631
  import { useSignals as _useSignals18 } from "@preact-signals/safe-react/tracking";
1528
- import { Root as AlertDialogRootPrimitive, AlertDialogTrigger as AlertDialogTriggerPrimitive, AlertDialogPortal as AlertDialogPortalPrimitive, AlertDialogOverlay as AlertDialogOverlayPrimitive, AlertDialogTitle as AlertDialogTitlePrimitive, AlertDialogDescription as AlertDialogDescriptionPrimitive, AlertDialogAction as AlertDialogActionPrimitive, AlertDialogCancel as AlertDialogCancelPrimitive, AlertDialogContent as AlertDialogContentPrimitive } from "@radix-ui/react-alert-dialog";
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";
1529
1633
  import { createContext as createContext9 } from "@radix-ui/react-context";
1530
1634
  import React18, { forwardRef as forwardRef12 } from "react";
1531
1635
  var AlertDialogRoot = (props) => {
@@ -1627,9 +1731,9 @@ var AlertDialog = {
1627
1731
  import { useSignals as _useSignals19 } from "@preact-signals/safe-react/tracking";
1628
1732
  import { Root as CheckboxPrimitive } from "@radix-ui/react-checkbox";
1629
1733
  import { useControllableState as useControllableState2 } from "@radix-ui/react-use-controllable-state";
1630
- import React19, { forwardRef as forwardRef13, useCallback as useCallback5 } from "react";
1631
- import { InputRoot, PinInput as PinInputPrimitive, TextInput as TextInputPrimitive, TextArea as TextAreaPrimitive, useInputContext, INPUT_NAME, Description as DescriptionPrimitive, DescriptionAndValidation as DescriptionAndValidationPrimitive, Label as LabelPrimitive, Validation as ValidationPrimitive } from "@dxos/react-input";
1632
- import { mx as mx3 } from "@dxos/react-ui-theme";
1734
+ import React19, { forwardRef as forwardRef13, useCallback as useCallback6 } from "react";
1735
+ import { DescriptionAndValidation as DescriptionAndValidationPrimitive, Description as DescriptionPrimitive, INPUT_NAME, InputRoot, Label as LabelPrimitive, PinInput as PinInputPrimitive, TextArea as TextAreaPrimitive, TextInput as TextInputPrimitive, Validation as ValidationPrimitive, useInputContext } from "@dxos/react-input";
1736
+ import { mx as mx4 } from "@dxos/react-ui-theme";
1633
1737
  var Label = /* @__PURE__ */ forwardRef13(({ srOnly, classNames, children, ...props }, forwardedRef) => {
1634
1738
  var _effect = _useSignals19();
1635
1739
  try {
@@ -1699,7 +1803,7 @@ var PinInput = /* @__PURE__ */ forwardRef13(({ density: propsDensity, elevation:
1699
1803
  const { tx } = useThemeContext();
1700
1804
  const density = useDensityContext(propsDensity);
1701
1805
  const elevation = useElevationContext(propsElevation);
1702
- const segmentClassName = useCallback5(({ focused, validationValence }) => tx("input.input", "input--pin-segment", {
1806
+ const segmentClassName = useCallback6(({ focused, validationValence }) => tx("input.input", "input--pin-segment", {
1703
1807
  variant: "static",
1704
1808
  focused,
1705
1809
  disabled: props.disabled,
@@ -1781,7 +1885,7 @@ var TextArea = /* @__PURE__ */ forwardRef13(({ __inputScope, classNames, density
1781
1885
  _effect.f();
1782
1886
  }
1783
1887
  });
1784
- var Checkbox = /* @__PURE__ */ forwardRef13(({ __inputScope, checked: propsChecked, defaultChecked: propsDefaultChecked, onCheckedChange: propsOnCheckedChange, size, weight = "bold", classNames, ...props }, forwardedRef) => {
1888
+ var Checkbox = /* @__PURE__ */ forwardRef13(({ __inputScope, checked: propsChecked, defaultChecked: propsDefaultChecked, onCheckedChange: propsOnCheckedChange, size, classNames, ...props }, forwardedRef) => {
1785
1889
  var _effect = _useSignals19();
1786
1890
  try {
1787
1891
  const [checked, onCheckedChange] = useControllableState2({
@@ -1827,7 +1931,7 @@ var Switch = /* @__PURE__ */ forwardRef13(({ __inputScope, checked: propsChecked
1827
1931
  const { id, validationValence, descriptionId, errorMessageId } = useInputContext(INPUT_NAME, __inputScope);
1828
1932
  return /* @__PURE__ */ React19.createElement("input", {
1829
1933
  type: "checkbox",
1830
- className: mx3("dx-checkbox--switch dx-focus-ring", classNames),
1934
+ className: mx4("dx-checkbox--switch dx-focus-ring", classNames),
1831
1935
  checked,
1832
1936
  onChange: (event) => {
1833
1937
  onCheckedChange(event.target.checked);
@@ -1860,10 +1964,9 @@ var Input = {
1860
1964
 
1861
1965
  // src/components/Lists/List.tsx
1862
1966
  import { useSignals as _useSignals21 } from "@preact-signals/safe-react/tracking";
1863
- import { CaretDown, CaretRight } from "@phosphor-icons/react";
1864
1967
  import { Slot as Slot6 } from "@radix-ui/react-slot";
1865
1968
  import React21, { forwardRef as forwardRef14 } from "react";
1866
- import { List as ListPrimitive, ListItemHeading as ListPrimitiveItemHeading, ListItemOpenTrigger as ListPrimitiveItemOpenTrigger, ListItemCollapsibleContent, ListItem as ListPrimitiveItem, LIST_NAME, LIST_ITEM_NAME, useListContext, useListItemContext } from "@dxos/react-list";
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";
1867
1970
 
1868
1971
  // src/components/Lists/ListDropIndicator.tsx
1869
1972
  import { useSignals as _useSignals20 } from "@preact-signals/safe-react/tracking";
@@ -1984,16 +2087,16 @@ var ListItemOpenTrigger = /* @__PURE__ */ forwardRef14(({ __listItemScope, class
1984
2087
  const { tx } = useThemeContext();
1985
2088
  const density = useDensityContext();
1986
2089
  const { open } = useListItemContext(LIST_ITEM_NAME, __listItemScope);
1987
- const Icon3 = open ? CaretDown : CaretRight;
1988
2090
  return /* @__PURE__ */ React21.createElement(ListPrimitiveItemOpenTrigger, {
1989
2091
  ...props,
1990
2092
  className: tx("list.item.openTrigger", "list__listItem__openTrigger", {
1991
2093
  density
1992
2094
  }, classNames),
1993
2095
  ref: forwardedRef
1994
- }, children || /* @__PURE__ */ React21.createElement(Icon3, {
1995
- weight: "bold",
1996
- className: tx("list.item.openTriggerIcon", "list__listItem__openTrigger__icon", {})
2096
+ }, children || /* @__PURE__ */ React21.createElement(Icon, {
2097
+ size: 3,
2098
+ icon: open ? "ph--caret-down--bold" : "ph--caret-right--bold",
2099
+ classNames: tx("list.item.openTriggerIcon", "list__listItem__openTrigger__icon", {})
1997
2100
  }));
1998
2101
  } finally {
1999
2102
  _effect.f();
@@ -2137,12 +2240,12 @@ var TreeItem = {
2137
2240
 
2138
2241
  // src/components/Lists/Treegrid.tsx
2139
2242
  import { useSignals as _useSignals24 } from "@preact-signals/safe-react/tracking";
2140
- import { useArrowNavigationGroup, useFocusableGroup } from "@fluentui/react-tabster";
2243
+ import { useFocusFinders } from "@fluentui/react-tabster";
2141
2244
  import { createContextScope as createContextScope2 } from "@radix-ui/react-context";
2142
2245
  import { Primitive as Primitive7 } from "@radix-ui/react-primitive";
2143
2246
  import { Slot as Slot7 } from "@radix-ui/react-slot";
2144
2247
  import { useControllableState as useControllableState3 } from "@radix-ui/react-use-controllable-state";
2145
- import React24, { forwardRef as forwardRef16 } from "react";
2248
+ import React24, { forwardRef as forwardRef16, useCallback as useCallback7 } from "react";
2146
2249
  var TREEGRID_ROW_NAME = "TreegridRow";
2147
2250
  var [createTreegridRowContext, createTreegridRowScope] = createContextScope2(TREEGRID_ROW_NAME, []);
2148
2251
  var [TreegridRowProvider, useTreegridRowContext] = createTreegridRowContext(TREEGRID_ROW_NAME);
@@ -2153,14 +2256,43 @@ var TreegridRoot = /* @__PURE__ */ forwardRef16(({ asChild, classNames, children
2153
2256
  try {
2154
2257
  const { tx } = useThemeContext();
2155
2258
  const Root7 = asChild ? Slot7 : Primitive7.div;
2156
- const arrowNavigationAttrs = useArrowNavigationGroup({
2157
- axis: "vertical",
2158
- tabbable: false,
2159
- circular: true
2160
- });
2259
+ const { findFirstFocusable } = useFocusFinders();
2260
+ const handleKeyDown = useCallback7((event) => {
2261
+ switch (event.key) {
2262
+ case "ArrowDown":
2263
+ case "ArrowUp": {
2264
+ const direction = event.key === "ArrowDown" ? "down" : "up";
2265
+ const target = event.target;
2266
+ const ancestorWithArrowKeys = target.closest(`[data-arrow-keys*="${direction}"], [data-arrow-keys="all"]`);
2267
+ if (!ancestorWithArrowKeys) {
2268
+ const currentRow = target.closest('[role="row"]');
2269
+ if (currentRow) {
2270
+ const treegrid = currentRow.closest('[role="treegrid"]');
2271
+ if (treegrid) {
2272
+ const rows = Array.from(treegrid.querySelectorAll('[role="row"]'));
2273
+ const currentIndex = rows.indexOf(currentRow);
2274
+ const nextIndex = direction === "down" ? currentIndex + 1 : currentIndex - 1;
2275
+ const targetRow = rows[nextIndex];
2276
+ if (targetRow) {
2277
+ const firstFocusable = findFirstFocusable(targetRow);
2278
+ if (firstFocusable) {
2279
+ event.preventDefault();
2280
+ firstFocusable.focus();
2281
+ }
2282
+ }
2283
+ }
2284
+ }
2285
+ }
2286
+ break;
2287
+ }
2288
+ }
2289
+ props.onKeyDown?.(event);
2290
+ }, [
2291
+ findFirstFocusable
2292
+ ]);
2161
2293
  return /* @__PURE__ */ React24.createElement(Root7, {
2162
2294
  role: "treegrid",
2163
- ...arrowNavigationAttrs,
2295
+ onKeyDown: handleKeyDown,
2164
2296
  ...props,
2165
2297
  className: tx("treegrid.root", "treegrid", {}, classNames),
2166
2298
  style: {
@@ -2185,15 +2317,6 @@ var TreegridRow = /* @__PURE__ */ forwardRef16(({ __treegridRowScope, asChild, c
2185
2317
  onChange: propsOnOpenChange,
2186
2318
  defaultProp: defaultOpen
2187
2319
  });
2188
- const focusableGroupAttrs = useFocusableGroup({
2189
- tabBehavior: "limited"
2190
- });
2191
- const arrowGroupAttrs = useArrowNavigationGroup({
2192
- axis: "horizontal",
2193
- tabbable: false,
2194
- circular: false,
2195
- memorizeCurrent: false
2196
- });
2197
2320
  return /* @__PURE__ */ React24.createElement(TreegridRowProvider, {
2198
2321
  open,
2199
2322
  onOpenChange,
@@ -2208,16 +2331,10 @@ var TreegridRow = /* @__PURE__ */ forwardRef16(({ __treegridRowScope, asChild, c
2208
2331
  "aria-expanded": open,
2209
2332
  "aria-owns": parentOf
2210
2333
  },
2211
- tabIndex: 0,
2212
- ...focusableGroupAttrs,
2213
2334
  ...props,
2214
2335
  id,
2215
2336
  ref: forwardedRef
2216
- }, /* @__PURE__ */ React24.createElement("div", {
2217
- role: "none",
2218
- className: "contents",
2219
- ...arrowGroupAttrs
2220
- }, children)));
2337
+ }, children));
2221
2338
  } finally {
2222
2339
  _effect.f();
2223
2340
  }
@@ -2250,17 +2367,18 @@ var Treegrid = {
2250
2367
 
2251
2368
  // src/components/Main/Main.tsx
2252
2369
  import { useSignals as _useSignals25 } from "@preact-signals/safe-react/tracking";
2370
+ import { useFocusableGroup } from "@fluentui/react-tabster";
2253
2371
  import { createContext as createContext10 } from "@radix-ui/react-context";
2254
- import { Root as DialogRoot2, DialogContent as DialogContent2, DialogTitle as DialogTitle2 } from "@radix-ui/react-dialog";
2372
+ import { DialogContent as DialogContent2, Root as DialogRoot2, DialogTitle as DialogTitle2 } from "@radix-ui/react-dialog";
2255
2373
  import { Primitive as Primitive8 } from "@radix-ui/react-primitive";
2256
2374
  import { Slot as Slot8 } from "@radix-ui/react-slot";
2257
2375
  import { useControllableState as useControllableState4 } from "@radix-ui/react-use-controllable-state";
2258
- import React25, { forwardRef as forwardRef17, useCallback as useCallback7, useEffect as useEffect5, useRef as useRef2, useState as useState7 } from "react";
2376
+ import React25, { forwardRef as forwardRef17, useCallback as useCallback9, useEffect as useEffect6, useRef as useRef2, useState as useState8 } from "react";
2259
2377
  import { log } from "@dxos/log";
2260
- import { useMediaQuery, useForwardedRef } from "@dxos/react-hooks";
2378
+ import { useForwardedRef, useMediaQuery } from "@dxos/react-hooks";
2261
2379
 
2262
2380
  // src/components/Main/useSwipeToDismiss.ts
2263
- import { useCallback as useCallback6, useEffect as useEffect4, useState as useState6 } from "react";
2381
+ import { useCallback as useCallback8, useEffect as useEffect5, useState as useState7 } from "react";
2264
2382
  var useSwipeToDismiss = (ref, {
2265
2383
  onDismiss,
2266
2384
  dismissThreshold = 64,
@@ -2269,22 +2387,22 @@ var useSwipeToDismiss = (ref, {
2269
2387
  /* side = 'inline-start' */
2270
2388
  }) => {
2271
2389
  const $root = ref.current;
2272
- const [motionState, setMotionState] = useState6(0);
2273
- const [gestureStartX, setGestureStartX] = useState6(0);
2274
- const setIdle = useCallback6(() => {
2390
+ const [motionState, setMotionState] = useState7(0);
2391
+ const [gestureStartX, setGestureStartX] = useState7(0);
2392
+ const setIdle = useCallback8(() => {
2275
2393
  setMotionState(0);
2276
2394
  $root?.style.removeProperty("inset-inline-start");
2277
2395
  $root?.style.setProperty("transition-duration", "200ms");
2278
2396
  }, [
2279
2397
  $root
2280
2398
  ]);
2281
- const setFollowing = useCallback6(() => {
2399
+ const setFollowing = useCallback8(() => {
2282
2400
  setMotionState(2);
2283
2401
  $root?.style.setProperty("transition-duration", "0ms");
2284
2402
  }, [
2285
2403
  $root
2286
2404
  ]);
2287
- const handlePointerDown = useCallback6(({ screenX }) => {
2405
+ const handlePointerDown = useCallback8(({ screenX }) => {
2288
2406
  if (motionState === 0) {
2289
2407
  setMotionState(1);
2290
2408
  setGestureStartX(screenX);
@@ -2292,7 +2410,7 @@ var useSwipeToDismiss = (ref, {
2292
2410
  }, [
2293
2411
  motionState
2294
2412
  ]);
2295
- const handlePointerMove = useCallback6(({ screenX }) => {
2413
+ const handlePointerMove = useCallback8(({ screenX }) => {
2296
2414
  if ($root) {
2297
2415
  const delta = Math.min(screenX - gestureStartX, 0);
2298
2416
  switch (motionState) {
@@ -2316,12 +2434,12 @@ var useSwipeToDismiss = (ref, {
2316
2434
  motionState,
2317
2435
  gestureStartX
2318
2436
  ]);
2319
- const handlePointerUp = useCallback6(() => {
2437
+ const handlePointerUp = useCallback8(() => {
2320
2438
  setIdle();
2321
2439
  }, [
2322
2440
  setIdle
2323
2441
  ]);
2324
- useEffect4(() => {
2442
+ useEffect5(() => {
2325
2443
  $root?.addEventListener("pointerdown", handlePointerDown);
2326
2444
  return () => {
2327
2445
  $root?.removeEventListener("pointerdown", handlePointerDown);
@@ -2330,7 +2448,7 @@ var useSwipeToDismiss = (ref, {
2330
2448
  $root,
2331
2449
  handlePointerDown
2332
2450
  ]);
2333
- useEffect4(() => {
2451
+ useEffect5(() => {
2334
2452
  $root && document.documentElement.addEventListener("pointermove", handlePointerMove);
2335
2453
  return () => {
2336
2454
  document.documentElement.removeEventListener("pointermove", handlePointerMove);
@@ -2339,7 +2457,7 @@ var useSwipeToDismiss = (ref, {
2339
2457
  $root,
2340
2458
  handlePointerMove
2341
2459
  ]);
2342
- useEffect4(() => {
2460
+ useEffect5(() => {
2343
2461
  $root && document.documentElement.addEventListener("pointerup", handlePointerUp);
2344
2462
  return () => {
2345
2463
  document.documentElement.removeEventListener("pointerup", handlePointerUp);
@@ -2359,7 +2477,7 @@ var MAIN_NAME = "Main";
2359
2477
  var GENERIC_CONSUMER_NAME = "GenericConsumer";
2360
2478
  var landmarkAttr = "data-main-landmark";
2361
2479
  var useLandmarkMover = (propsOnKeyDown, landmark) => {
2362
- const handleKeyDown = useCallback7((event) => {
2480
+ const handleKeyDown = useCallback9((event) => {
2363
2481
  const target = event.target;
2364
2482
  if (event.target === event.currentTarget && event.key === "Tab" && target.hasAttribute(landmarkAttr)) {
2365
2483
  event.preventDefault();
@@ -2373,12 +2491,12 @@ var useLandmarkMover = (propsOnKeyDown, landmark) => {
2373
2491
  }, [
2374
2492
  propsOnKeyDown
2375
2493
  ]);
2376
- const focusableGroupAttrs = window ? {} : {
2494
+ const focusableGroupAttrs = useFocusableGroup({
2377
2495
  tabBehavior: "limited",
2378
2496
  ignoreDefaultKeydown: {
2379
2497
  Tab: true
2380
2498
  }
2381
- };
2499
+ });
2382
2500
  return {
2383
2501
  onKeyDown: handleKeyDown,
2384
2502
  [landmarkAttr]: landmark,
@@ -2389,19 +2507,19 @@ var useLandmarkMover = (propsOnKeyDown, landmark) => {
2389
2507
  var [MainProvider, useMainContext] = createContext10(MAIN_NAME, {
2390
2508
  resizing: false,
2391
2509
  navigationSidebarState: "closed",
2392
- setNavigationSidebarState: (nextState) => {
2510
+ setNavigationSidebarState: (_nextState) => {
2393
2511
  log.warn("Attempt to set sidebar state without initializing `MainRoot`", void 0, {
2394
2512
  F: __dxlog_file,
2395
- L: 82,
2513
+ L: 92,
2396
2514
  S: void 0,
2397
2515
  C: (f, a) => f(...a)
2398
2516
  });
2399
2517
  },
2400
2518
  complementarySidebarState: "closed",
2401
- setComplementarySidebarState: (nextState) => {
2519
+ setComplementarySidebarState: (_nextState) => {
2402
2520
  log.warn("Attempt to set sidebar state without initializing `MainRoot`", void 0, {
2403
2521
  F: __dxlog_file,
2404
- L: 87,
2522
+ L: 97,
2405
2523
  S: void 0,
2406
2524
  C: (f, a) => f(...a)
2407
2525
  });
@@ -2412,31 +2530,29 @@ var useSidebars = (consumerName = GENERIC_CONSUMER_NAME) => {
2412
2530
  return {
2413
2531
  navigationSidebarState,
2414
2532
  setNavigationSidebarState,
2415
- toggleNavigationSidebar: useCallback7(() => setNavigationSidebarState(navigationSidebarState === "expanded" ? "closed" : "expanded"), [
2533
+ toggleNavigationSidebar: useCallback9(() => setNavigationSidebarState(navigationSidebarState === "expanded" ? "closed" : "expanded"), [
2416
2534
  navigationSidebarState,
2417
2535
  setNavigationSidebarState
2418
2536
  ]),
2419
- openNavigationSidebar: useCallback7(() => setNavigationSidebarState("expanded"), []),
2420
- collapseNavigationSidebar: useCallback7(() => setNavigationSidebarState("collapsed"), []),
2421
- closeNavigationSidebar: useCallback7(() => setNavigationSidebarState("closed"), []),
2537
+ openNavigationSidebar: useCallback9(() => setNavigationSidebarState("expanded"), []),
2538
+ collapseNavigationSidebar: useCallback9(() => setNavigationSidebarState("collapsed"), []),
2539
+ closeNavigationSidebar: useCallback9(() => setNavigationSidebarState("closed"), []),
2422
2540
  complementarySidebarState,
2423
2541
  setComplementarySidebarState,
2424
- toggleComplementarySidebar: useCallback7(() => setComplementarySidebarState(complementarySidebarState === "expanded" ? "closed" : "expanded"), [
2542
+ toggleComplementarySidebar: useCallback9(() => setComplementarySidebarState(complementarySidebarState === "expanded" ? "closed" : "expanded"), [
2425
2543
  complementarySidebarState,
2426
2544
  setComplementarySidebarState
2427
2545
  ]),
2428
- openComplementarySidebar: useCallback7(() => setComplementarySidebarState("expanded"), []),
2429
- collapseComplementarySidebar: useCallback7(() => setComplementarySidebarState("collapsed"), []),
2430
- closeComplementarySidebar: useCallback7(() => setComplementarySidebarState("closed"), [])
2546
+ openComplementarySidebar: useCallback9(() => setComplementarySidebarState("expanded"), []),
2547
+ collapseComplementarySidebar: useCallback9(() => setComplementarySidebarState("collapsed"), []),
2548
+ closeComplementarySidebar: useCallback9(() => setComplementarySidebarState("closed"), [])
2431
2549
  };
2432
2550
  };
2433
2551
  var resizeDebounce = 3e3;
2434
2552
  var MainRoot = ({ navigationSidebarState: propsNavigationSidebarState, defaultNavigationSidebarState, onNavigationSidebarStateChange, complementarySidebarState: propsComplementarySidebarState, defaultComplementarySidebarState, onComplementarySidebarStateChange, children, ...props }) => {
2435
2553
  var _effect = _useSignals25();
2436
2554
  try {
2437
- const [isLg] = useMediaQuery("lg", {
2438
- ssr: false
2439
- });
2555
+ const [isLg] = useMediaQuery("lg");
2440
2556
  const [navigationSidebarState = isLg ? "expanded" : "collapsed", setNavigationSidebarState] = useControllableState4({
2441
2557
  prop: propsNavigationSidebarState,
2442
2558
  defaultProp: defaultNavigationSidebarState,
@@ -2447,9 +2563,9 @@ var MainRoot = ({ navigationSidebarState: propsNavigationSidebarState, defaultNa
2447
2563
  defaultProp: defaultComplementarySidebarState,
2448
2564
  onChange: onComplementarySidebarStateChange
2449
2565
  });
2450
- const [resizing, setResizing] = useState7(false);
2566
+ const [resizing, setResizing] = useState8(false);
2451
2567
  const resizeInterval = useRef2(null);
2452
- const handleResize = useCallback7(() => {
2568
+ const handleResize = useCallback9(() => {
2453
2569
  setResizing(true);
2454
2570
  if (resizeInterval.current) {
2455
2571
  clearTimeout(resizeInterval.current);
@@ -2459,7 +2575,7 @@ var MainRoot = ({ navigationSidebarState: propsNavigationSidebarState, defaultNa
2459
2575
  resizeInterval.current = null;
2460
2576
  }, resizeDebounce);
2461
2577
  }, []);
2462
- useEffect5(() => {
2578
+ useEffect6(() => {
2463
2579
  window.addEventListener("resize", handleResize);
2464
2580
  return () => window.removeEventListener("resize", handleResize);
2465
2581
  }, [
@@ -2484,9 +2600,7 @@ var handleOpenAutoFocus = (event) => {
2484
2600
  var MainSidebar = /* @__PURE__ */ forwardRef17(({ classNames, children, swipeToDismiss, onOpenAutoFocus, state, resizing, onStateChange, side, label, ...props }, forwardedRef) => {
2485
2601
  var _effect = _useSignals25();
2486
2602
  try {
2487
- const [isLg] = useMediaQuery("lg", {
2488
- ssr: false
2489
- });
2603
+ const [isLg] = useMediaQuery("lg");
2490
2604
  const { tx } = useThemeContext();
2491
2605
  const { t } = useTranslation();
2492
2606
  const ref = useForwardedRef(forwardedRef);
@@ -2494,9 +2608,12 @@ var MainSidebar = /* @__PURE__ */ forwardRef17(({ classNames, children, swipeToD
2494
2608
  useSwipeToDismiss(swipeToDismiss ? ref : noopRef, {
2495
2609
  onDismiss: () => onStateChange?.("closed")
2496
2610
  });
2497
- const handleKeyDown = useCallback7((event) => {
2498
- if (event.key === "Escape") {
2499
- event.target.closest("[data-tabster]")?.focus();
2611
+ const handleKeyDown = useCallback9((event) => {
2612
+ const focusGroupParent = event.target.closest("[data-tabster]");
2613
+ if (event.key === "Escape" && focusGroupParent) {
2614
+ event.preventDefault();
2615
+ event.stopPropagation();
2616
+ focusGroupParent.focus();
2500
2617
  }
2501
2618
  props.onKeyDown?.(event);
2502
2619
  }, [
@@ -2520,9 +2637,9 @@ var MainSidebar = /* @__PURE__ */ forwardRef17(({ classNames, children, swipeToD
2520
2637
  "data-state": state,
2521
2638
  "data-resizing": resizing ? "true" : "false",
2522
2639
  className: tx("main.sidebar", "main__sidebar", {}, classNames),
2523
- onKeyDown: handleKeyDown,
2640
+ onKeyDownCapture: handleKeyDown,
2524
2641
  ...state === "closed" && {
2525
- inert: "true"
2642
+ inert: true
2526
2643
  },
2527
2644
  ref
2528
2645
  }, children));
@@ -2598,9 +2715,7 @@ MainContent.displayName = MAIN_NAME;
2598
2715
  var MainOverlay = /* @__PURE__ */ forwardRef17(({ classNames, ...props }, forwardedRef) => {
2599
2716
  var _effect = _useSignals25();
2600
2717
  try {
2601
- const [isLg] = useMediaQuery("lg", {
2602
- ssr: false
2603
- });
2718
+ const [isLg] = useMediaQuery("lg");
2604
2719
  const { navigationSidebarState, setNavigationSidebarState, complementarySidebarState, setComplementarySidebarState } = useMainContext(MAIN_NAME);
2605
2720
  const { tx } = useThemeContext();
2606
2721
  return /* @__PURE__ */ React25.createElement("div", {
@@ -2638,7 +2753,7 @@ import { Slot as Slot9 } from "@radix-ui/react-slot";
2638
2753
  import React26, { forwardRef as forwardRef18 } from "react";
2639
2754
 
2640
2755
  // src/hooks/useSafeCollisionPadding.ts
2641
- import { useMemo as useMemo3 } from "react";
2756
+ import { useMemo as useMemo4 } from "react";
2642
2757
  var propIsNumber = (prop) => Number.isFinite(prop);
2643
2758
  var propsIsRecord = (prop) => !!(prop && typeof prop === "object");
2644
2759
  var safePadding = (propsPadding, safePadding2, side) => {
@@ -2646,7 +2761,7 @@ var safePadding = (propsPadding, safePadding2, side) => {
2646
2761
  };
2647
2762
  var useSafeCollisionPadding = (collisionPadding) => {
2648
2763
  const { safeAreaPadding } = useThemeContext();
2649
- return useMemo3(() => ({
2764
+ return useMemo4(() => ({
2650
2765
  top: safePadding(collisionPadding, safeAreaPadding, "top"),
2651
2766
  right: safePadding(collisionPadding, safeAreaPadding, "right"),
2652
2767
  bottom: safePadding(collisionPadding, safeAreaPadding, "bottom"),
@@ -2669,6 +2784,7 @@ var ContextMenuContent = /* @__PURE__ */ forwardRef18(({ classNames, children, c
2669
2784
  const safeCollisionPadding = useSafeCollisionPadding(collisionPadding);
2670
2785
  return /* @__PURE__ */ React26.createElement(ContextMenuPrimitive.Content, {
2671
2786
  ...props,
2787
+ "data-arrow-keys": "up down",
2672
2788
  collisionPadding: safeCollisionPadding,
2673
2789
  className: tx("menu.content", "menu", {
2674
2790
  elevation
@@ -2786,7 +2902,7 @@ import { createMenuScope } from "@radix-ui/react-menu";
2786
2902
  import { Primitive as Primitive10 } from "@radix-ui/react-primitive";
2787
2903
  import { Slot as Slot10 } from "@radix-ui/react-slot";
2788
2904
  import { useControllableState as useControllableState5 } from "@radix-ui/react-use-controllable-state";
2789
- import React27, { useRef as useRef3, useCallback as useCallback8, forwardRef as forwardRef19, useEffect as useEffect6 } from "react";
2905
+ import React27, { forwardRef as forwardRef19, useCallback as useCallback10, useEffect as useEffect7, useRef as useRef3 } from "react";
2790
2906
  var DROPDOWN_MENU_NAME = "DropdownMenu";
2791
2907
  var [createDropdownMenuContext, createDropdownMenuScope] = createContextScope3(DROPDOWN_MENU_NAME, [
2792
2908
  createMenuScope
@@ -2811,7 +2927,7 @@ var DropdownMenuRoot = (props) => {
2811
2927
  contentId: useId3(),
2812
2928
  open,
2813
2929
  onOpenChange: setOpen,
2814
- onOpenToggle: useCallback8(() => setOpen((prevOpen) => !prevOpen), [
2930
+ onOpenToggle: useCallback10(() => setOpen((prevOpen) => !prevOpen), [
2815
2931
  setOpen
2816
2932
  ]),
2817
2933
  modal
@@ -2848,6 +2964,7 @@ var DropdownMenuTrigger = /* @__PURE__ */ forwardRef19((props, forwardedRef) =>
2848
2964
  disabled,
2849
2965
  ...triggerProps,
2850
2966
  ref: composeRefs(forwardedRef, context.triggerRef),
2967
+ "data-arrow-keys": "down",
2851
2968
  onPointerDown: composeEventHandlers2(props.onPointerDown, (event) => {
2852
2969
  if (!disabled && event.button === 0 && event.ctrlKey === false) {
2853
2970
  context.onOpenToggle();
@@ -2890,7 +3007,7 @@ var DropdownMenuVirtualTrigger = (props) => {
2890
3007
  const { __scopeDropdownMenu, virtualRef } = props;
2891
3008
  const context = useDropdownMenuContext(VIRTUAL_TRIGGER_NAME, __scopeDropdownMenu);
2892
3009
  const menuScope = useMenuScope(__scopeDropdownMenu);
2893
- useEffect6(() => {
3010
+ useEffect7(() => {
2894
3011
  if (virtualRef.current) {
2895
3012
  context.triggerRef.current = virtualRef.current;
2896
3013
  }
@@ -2966,6 +3083,7 @@ var DropdownMenuContent = /* @__PURE__ */ forwardRef19((props, forwardedRef) =>
2966
3083
  hasInteractedOutsideRef.current = true;
2967
3084
  }
2968
3085
  }),
3086
+ "data-arrow-keys": "up down",
2969
3087
  className: tx("menu.content", "menu", {
2970
3088
  elevation
2971
3089
  }, classNames),
@@ -3076,11 +3194,13 @@ var RADIO_ITEM_NAME = "DropdownMenuRadioItem";
3076
3194
  var DropdownMenuRadioItem = /* @__PURE__ */ forwardRef19((props, forwardedRef) => {
3077
3195
  var _effect = _useSignals27();
3078
3196
  try {
3079
- const { __scopeDropdownMenu, ...radioItemProps } = props;
3197
+ const { __scopeDropdownMenu, classNames, ...itemProps } = props;
3080
3198
  const menuScope = useMenuScope(__scopeDropdownMenu);
3081
- return /* @__PURE__ */ React27.createElement(MenuPrimitive.RadioItem, {
3199
+ const { tx } = useThemeContext();
3200
+ return /* @__PURE__ */ React27.createElement(MenuPrimitive.Item, {
3082
3201
  ...menuScope,
3083
- ...radioItemProps,
3202
+ ...itemProps,
3203
+ className: tx("menu.item", "menu__item", {}, classNames),
3084
3204
  ref: forwardedRef
3085
3205
  });
3086
3206
  } finally {
@@ -3334,7 +3454,7 @@ import { Primitive as Primitive12 } from "@radix-ui/react-primitive";
3334
3454
  import { Slot as Slot12 } from "@radix-ui/react-slot";
3335
3455
  import { useControllableState as useControllableState6 } from "@radix-ui/react-use-controllable-state";
3336
3456
  import { hideOthers } from "aria-hidden";
3337
- import React29, { forwardRef as forwardRef21, useRef as useRef4, useCallback as useCallback9, useState as useState8, useEffect as useEffect7 } from "react";
3457
+ import React29, { forwardRef as forwardRef21, useCallback as useCallback11, useEffect as useEffect8, useRef as useRef4, useState as useState9 } from "react";
3338
3458
  import { RemoveScroll } from "react-remove-scroll";
3339
3459
  var POPOVER_NAME = "Popover";
3340
3460
  var [createPopoverContext, createPopoverScope] = createContextScope4(POPOVER_NAME, [
@@ -3348,7 +3468,7 @@ var PopoverRoot = (props) => {
3348
3468
  const { __scopePopover, children, open: openProp, defaultOpen, onOpenChange, modal = false } = props;
3349
3469
  const popperScope = usePopperScope2(__scopePopover);
3350
3470
  const triggerRef = useRef4(null);
3351
- const [hasCustomAnchor, setHasCustomAnchor] = useState8(false);
3471
+ const [hasCustomAnchor, setHasCustomAnchor] = useState9(false);
3352
3472
  const [open = false, setOpen] = useControllableState6({
3353
3473
  prop: openProp,
3354
3474
  defaultProp: defaultOpen,
@@ -3360,12 +3480,12 @@ var PopoverRoot = (props) => {
3360
3480
  triggerRef,
3361
3481
  open,
3362
3482
  onOpenChange: setOpen,
3363
- onOpenToggle: useCallback9(() => setOpen((prevOpen) => !prevOpen), [
3483
+ onOpenToggle: useCallback11(() => setOpen((prevOpen) => !prevOpen), [
3364
3484
  setOpen
3365
3485
  ]),
3366
3486
  hasCustomAnchor,
3367
- onCustomAnchorAdd: useCallback9(() => setHasCustomAnchor(true), []),
3368
- onCustomAnchorRemove: useCallback9(() => setHasCustomAnchor(false), []),
3487
+ onCustomAnchorAdd: useCallback11(() => setHasCustomAnchor(true), []),
3488
+ onCustomAnchorRemove: useCallback11(() => setHasCustomAnchor(false), []),
3369
3489
  modal
3370
3490
  }, children));
3371
3491
  } finally {
@@ -3381,7 +3501,7 @@ var PopoverAnchor = /* @__PURE__ */ forwardRef21((props, forwardedRef) => {
3381
3501
  const context = usePopoverContext(ANCHOR_NAME, __scopePopover);
3382
3502
  const popperScope = usePopperScope2(__scopePopover);
3383
3503
  const { onCustomAnchorAdd, onCustomAnchorRemove } = context;
3384
- useEffect7(() => {
3504
+ useEffect8(() => {
3385
3505
  onCustomAnchorAdd();
3386
3506
  return () => onCustomAnchorRemove();
3387
3507
  }, [
@@ -3432,7 +3552,7 @@ var PopoverVirtualTrigger = (props) => {
3432
3552
  const { __scopePopover, virtualRef } = props;
3433
3553
  const context = usePopoverContext(VIRTUAL_TRIGGER_NAME2, __scopePopover);
3434
3554
  const popperScope = usePopperScope2(__scopePopover);
3435
- useEffect7(() => {
3555
+ useEffect8(() => {
3436
3556
  if (virtualRef.current) {
3437
3557
  context.triggerRef.current = virtualRef.current;
3438
3558
  }
@@ -3497,7 +3617,7 @@ var PopoverContentModal = /* @__PURE__ */ forwardRef21((props, forwardedRef) =>
3497
3617
  const contentRef = useRef4(null);
3498
3618
  const composedRefs = useComposedRefs2(forwardedRef, contentRef);
3499
3619
  const isRightClickOutsideRef = useRef4(false);
3500
- useEffect7(() => {
3620
+ useEffect8(() => {
3501
3621
  const content = contentRef.current;
3502
3622
  if (content) {
3503
3623
  return hideOthers(content);
@@ -3618,7 +3738,7 @@ var PopoverContentImpl = /* @__PURE__ */ forwardRef21((props, forwardedRef) => {
3618
3738
  ref: forwardedRef,
3619
3739
  style: {
3620
3740
  ...contentProps.style,
3621
- // re-namespace exposed content custom properties
3741
+ // Re-namespace exposed content custom properties.
3622
3742
  ...{
3623
3743
  "--radix-popover-content-transform-origin": "var(--radix-popper-transform-origin)",
3624
3744
  "--radix-popover-content-available-width": "var(--radix-popper-available-width)",
@@ -3731,7 +3851,7 @@ var Status = /* @__PURE__ */ forwardRef22(({ classNames, children, progress = 0,
3731
3851
 
3732
3852
  // src/components/ScrollArea/ScrollArea.tsx
3733
3853
  import { useSignals as _useSignals31 } from "@preact-signals/safe-react/tracking";
3734
- import { Root as ScrollAreaPrimitiveRoot, Viewport as ScrollAreaPrimitiveViewport, Scrollbar as ScrollAreaPrimitiveScrollbar, Thumb as ScrollAreaPrimitiveThumb, Corner as ScrollAreaPrimitiveCorner } from "@radix-ui/react-scroll-area";
3854
+ import { Corner as ScrollAreaPrimitiveCorner, Root as ScrollAreaPrimitiveRoot, Scrollbar as ScrollAreaPrimitiveScrollbar, Thumb as ScrollAreaPrimitiveThumb, Viewport as ScrollAreaPrimitiveViewport } from "@radix-ui/react-scroll-area";
3735
3855
  import React31, { forwardRef as forwardRef23 } from "react";
3736
3856
  var ScrollAreaRoot = /* @__PURE__ */ forwardRef23(({ classNames, ...props }, forwardedRef) => {
3737
3857
  var _effect = _useSignals31();
@@ -3809,7 +3929,6 @@ var ScrollArea = {
3809
3929
 
3810
3930
  // src/components/Select/Select.tsx
3811
3931
  import { useSignals as _useSignals32 } from "@preact-signals/safe-react/tracking";
3812
- import { CaretDown as CaretDown2, CaretUp } from "@phosphor-icons/react";
3813
3932
  import * as SelectPrimitive from "@radix-ui/react-select";
3814
3933
  import React32, { forwardRef as forwardRef24 } from "react";
3815
3934
  var SelectRoot = SelectPrimitive.Root;
@@ -3820,7 +3939,6 @@ var SelectPortal = SelectPrimitive.Portal;
3820
3939
  var SelectTriggerButton = /* @__PURE__ */ forwardRef24(({ children, placeholder, ...props }, forwardedRef) => {
3821
3940
  var _effect = _useSignals32();
3822
3941
  try {
3823
- const { tx } = useThemeContext();
3824
3942
  return /* @__PURE__ */ React32.createElement(SelectPrimitive.Trigger, {
3825
3943
  asChild: true,
3826
3944
  ref: forwardedRef
@@ -3830,9 +3948,9 @@ var SelectTriggerButton = /* @__PURE__ */ forwardRef24(({ children, placeholder,
3830
3948
  className: "w-1 flex-1"
3831
3949
  }), /* @__PURE__ */ React32.createElement(SelectPrimitive.Icon, {
3832
3950
  asChild: true
3833
- }, /* @__PURE__ */ React32.createElement(CaretDown2, {
3834
- className: tx("select.triggerIcon", "select__trigger__icon", {}),
3835
- weight: "bold"
3951
+ }, /* @__PURE__ */ React32.createElement(Icon, {
3952
+ size: 3,
3953
+ icon: "ph--caret-down--bold"
3836
3954
  }))));
3837
3955
  } finally {
3838
3956
  _effect.f();
@@ -3846,6 +3964,7 @@ var SelectContent = /* @__PURE__ */ forwardRef24(({ classNames, children, collis
3846
3964
  const safeCollisionPadding = useSafeCollisionPadding(collisionPadding);
3847
3965
  return /* @__PURE__ */ React32.createElement(SelectPrimitive.Content, {
3848
3966
  ...props,
3967
+ "data-arrow-keys": "up down",
3849
3968
  collisionPadding: safeCollisionPadding,
3850
3969
  className: tx("select.content", "select__content", {
3851
3970
  elevation
@@ -3865,8 +3984,9 @@ var SelectScrollUpButton2 = /* @__PURE__ */ forwardRef24(({ classNames, children
3865
3984
  ...props,
3866
3985
  className: tx("select.scrollButton", "select__scroll-button--up", {}, classNames),
3867
3986
  ref: forwardedRef
3868
- }, children ?? /* @__PURE__ */ React32.createElement(CaretUp, {
3869
- weight: "bold"
3987
+ }, children ?? /* @__PURE__ */ React32.createElement(Icon, {
3988
+ size: 3,
3989
+ icon: "ph--caret-up--bold"
3870
3990
  }));
3871
3991
  } finally {
3872
3992
  _effect.f();
@@ -3880,8 +4000,9 @@ var SelectScrollDownButton2 = /* @__PURE__ */ forwardRef24(({ classNames, childr
3880
4000
  ...props,
3881
4001
  className: tx("select.scrollButton", "select__scroll-button--down", {}, classNames),
3882
4002
  ref: forwardedRef
3883
- }, children ?? /* @__PURE__ */ React32.createElement(CaretDown2, {
3884
- weight: "bold"
4003
+ }, children ?? /* @__PURE__ */ React32.createElement(Icon, {
4004
+ size: 3,
4005
+ icon: "ph--caret-down--bold"
3885
4006
  }));
3886
4007
  } finally {
3887
4008
  _effect.f();
@@ -4042,7 +4163,7 @@ var Tag = /* @__PURE__ */ forwardRef26(({ asChild, palette = "neutral", classNam
4042
4163
  import { useSignals as _useSignals35 } from "@preact-signals/safe-react/tracking";
4043
4164
  import { Primitive as Primitive14 } from "@radix-ui/react-primitive";
4044
4165
  import { Slot as Slot14 } from "@radix-ui/react-slot";
4045
- import { ToastProvider as ToastProviderPrimitive, ToastViewport as ToastViewportPrimitive, Root as ToastRootPrimitive, ToastTitle as ToastTitlePrimitive, ToastDescription as ToastDescriptionPrimitive, ToastAction as ToastActionPrimitive, ToastClose as ToastClosePrimitive } from "@radix-ui/react-toast";
4166
+ 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";
4046
4167
  import React35, { forwardRef as forwardRef27 } from "react";
4047
4168
  var ToastProvider = ToastProviderPrimitive;
4048
4169
  var ToastViewport = /* @__PURE__ */ forwardRef27(({ classNames, ...props }, forwardedRef) => {
@@ -4145,18 +4266,27 @@ var Toast = {
4145
4266
  // src/components/Toolbar/Toolbar.tsx
4146
4267
  import { useSignals as _useSignals36 } from "@preact-signals/safe-react/tracking";
4147
4268
  import * as ToolbarPrimitive from "@radix-ui/react-toolbar";
4148
- import React36, { forwardRef as forwardRef28 } from "react";
4149
- var ToolbarRoot = /* @__PURE__ */ forwardRef28(({ classNames, children, layoutManaged, ...props }, forwardedRef) => {
4269
+ import React36, { Fragment, forwardRef as forwardRef28 } from "react";
4270
+ var ToolbarRoot = /* @__PURE__ */ forwardRef28(({ classNames, children, layoutManaged, textBlockWidth: textBlockWidthParam, disabled, ...props }, forwardedRef) => {
4150
4271
  var _effect = _useSignals36();
4151
4272
  try {
4152
4273
  const { tx } = useThemeContext();
4274
+ const InnerRoot = textBlockWidthParam ? "div" : Fragment;
4275
+ const innerRootProps = textBlockWidthParam ? {
4276
+ role: "none",
4277
+ className: tx("toolbar.inner", "toolbar", {
4278
+ layoutManaged
4279
+ }, classNames)
4280
+ } : {};
4153
4281
  return /* @__PURE__ */ React36.createElement(ToolbarPrimitive.Root, {
4154
4282
  ...props,
4283
+ "data-arrow-keys": props.orientation === "vertical" ? "up down" : "left right",
4155
4284
  className: tx("toolbar.root", "toolbar", {
4156
- layoutManaged
4285
+ layoutManaged,
4286
+ disabled
4157
4287
  }, classNames),
4158
4288
  ref: forwardedRef
4159
- }, children);
4289
+ }, /* @__PURE__ */ React36.createElement(InnerRoot, innerRootProps, children));
4160
4290
  } finally {
4161
4291
  _effect.f();
4162
4292
  }
@@ -4316,13 +4446,13 @@ export {
4316
4446
  AnchoredOverflow,
4317
4447
  useAvatarContext,
4318
4448
  Avatar,
4449
+ Icon,
4319
4450
  Link,
4320
4451
  Breadcrumb,
4321
4452
  BUTTON_GROUP_NAME,
4322
4453
  useButtonGroupContext,
4323
4454
  Button,
4324
4455
  ButtonGroup,
4325
- Icon,
4326
4456
  createTooltipScope,
4327
4457
  useTooltipContext,
4328
4458
  Tooltip,
@@ -4330,8 +4460,11 @@ export {
4330
4460
  Toggle,
4331
4461
  ToggleGroup,
4332
4462
  ToggleGroupItem,
4463
+ ToggleGroupIconItem,
4333
4464
  useClipboard,
4465
+ Domino,
4334
4466
  hasIosKeyboard,
4467
+ usePx,
4335
4468
  DensityContext,
4336
4469
  DensityProvider,
4337
4470
  ElevationContext,
@@ -4342,8 +4475,8 @@ export {
4342
4475
  Dialog,
4343
4476
  AlertDialog,
4344
4477
  Input,
4345
- LIST_NAME,
4346
4478
  LIST_ITEM_NAME,
4479
+ LIST_NAME,
4347
4480
  useListContext,
4348
4481
  useListItemContext,
4349
4482
  List,
@@ -4373,4 +4506,4 @@ export {
4373
4506
  Toast,
4374
4507
  Toolbar
4375
4508
  };
4376
- //# sourceMappingURL=chunk-T6YPS45E.mjs.map
4509
+ //# sourceMappingURL=chunk-HUZZ56DW.mjs.map