@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
@@ -31,7 +31,7 @@ var useIconHref = (icon) => {
31
31
 
32
32
  // src/hooks/useSafeArea.ts
33
33
  import { useCallback, useState } from "react";
34
- import { useResize } from "@dxos/react-hooks";
34
+ import { useViewportResize } from "@dxos/react-hooks";
35
35
  var initialSafeArea = {
36
36
  top: NaN,
37
37
  right: NaN,
@@ -48,7 +48,7 @@ var useSafeArea = () => {
48
48
  left: parseFloat(getComputedStyle(document.documentElement).getPropertyValue("--safe-area-left"))
49
49
  });
50
50
  }, []);
51
- useResize(handleResize);
51
+ useViewportResize(handleResize);
52
52
  return padding;
53
53
  };
54
54
 
@@ -59,7 +59,7 @@ import { useContext as useContext4 } from "react";
59
59
  import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
60
60
  import { enUS as dtLocaleEnUs } from "date-fns/locale";
61
61
  import i18Next from "i18next";
62
- import React, { useEffect, createContext, useState as useState2, Suspense, useContext as useContext3 } from "react";
62
+ import React, { Suspense, createContext, useContext as useContext3, useEffect, useState as useState2 } from "react";
63
63
  import { initReactI18next, useTranslation as useI18NextTranslation } from "react-i18next";
64
64
  var initialLng = "en-US";
65
65
  var initialNs = "dxos-common";
@@ -130,7 +130,7 @@ var useTranslationsContext = () => useContext4(TranslationsContext);
130
130
 
131
131
  // src/hooks/useVisualViewport.ts
132
132
  import { useCallback as useCallback2, useState as useState3 } from "react";
133
- import { useResize as useResize2 } from "@dxos/react-hooks";
133
+ import { useViewportResize as useViewportResize2 } from "@dxos/react-hooks";
134
134
  var useVisualViewport = (deps) => {
135
135
  const [width, setWidth] = useState3(null);
136
136
  const [height, setHeight] = useState3(null);
@@ -140,7 +140,7 @@ var useVisualViewport = (deps) => {
140
140
  setHeight(window.visualViewport.height);
141
141
  }
142
142
  }, []);
143
- useResize2(handleResize);
143
+ useViewportResize2(handleResize, deps);
144
144
  return {
145
145
  width,
146
146
  height
@@ -269,23 +269,44 @@ var Avatar = {
269
269
  };
270
270
 
271
271
  // src/components/Breadcrumb/Breadcrumb.tsx
272
- import { useSignals as _useSignals5 } from "@preact-signals/safe-react/tracking";
273
- import { Dot } from "@phosphor-icons/react";
272
+ import { useSignals as _useSignals6 } from "@preact-signals/safe-react/tracking";
274
273
  import { Primitive as Primitive4 } from "@radix-ui/react-primitive";
275
274
  import { Slot as Slot4 } from "@radix-ui/react-slot";
276
- import React5, { forwardRef as forwardRef4 } from "react";
275
+ import React6, { forwardRef as forwardRef5 } from "react";
277
276
 
278
- // src/components/Link/Link.tsx
277
+ // src/components/Icon/Icon.tsx
279
278
  import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
279
+ import React4, { forwardRef as forwardRef3, memo } from "react";
280
+ var Icon = /* @__PURE__ */ memo(/* @__PURE__ */ forwardRef3(({ icon, classNames, size = 4, ...props }, forwardedRef) => {
281
+ var _effect = _useSignals4();
282
+ try {
283
+ const { tx } = useThemeContext();
284
+ const href = useIconHref(icon);
285
+ return /* @__PURE__ */ React4.createElement("svg", {
286
+ ...props,
287
+ className: tx("icon.root", "icon", {
288
+ size
289
+ }, classNames),
290
+ ref: forwardedRef
291
+ }, /* @__PURE__ */ React4.createElement("use", {
292
+ href
293
+ }));
294
+ } finally {
295
+ _effect.f();
296
+ }
297
+ }));
298
+
299
+ // src/components/Link/Link.tsx
300
+ import { useSignals as _useSignals5 } from "@preact-signals/safe-react/tracking";
280
301
  import { Primitive as Primitive3 } from "@radix-ui/react-primitive";
281
302
  import { Slot as Slot3 } from "@radix-ui/react-slot";
282
- import React4, { forwardRef as forwardRef3 } from "react";
283
- var Link = /* @__PURE__ */ forwardRef3(({ asChild, variant, classNames, ...props }, forwardedRef) => {
284
- var _effect = _useSignals4();
303
+ import React5, { forwardRef as forwardRef4 } from "react";
304
+ var Link = /* @__PURE__ */ forwardRef4(({ asChild, variant, classNames, ...props }, forwardedRef) => {
305
+ var _effect = _useSignals5();
285
306
  try {
286
307
  const { tx } = useThemeContext();
287
308
  const Root7 = asChild ? Slot3 : Primitive3.a;
288
- return /* @__PURE__ */ React4.createElement(Root7, {
309
+ return /* @__PURE__ */ React5.createElement(Root7, {
289
310
  ...props,
290
311
  className: tx("link.root", "link", {
291
312
  variant
@@ -298,12 +319,12 @@ var Link = /* @__PURE__ */ forwardRef3(({ asChild, variant, classNames, ...props
298
319
  });
299
320
 
300
321
  // src/components/Breadcrumb/Breadcrumb.tsx
301
- var BreadcrumbRoot = /* @__PURE__ */ forwardRef4(({ asChild, classNames, ...props }, forwardedRef) => {
302
- var _effect = _useSignals5();
322
+ var BreadcrumbRoot = /* @__PURE__ */ forwardRef5(({ asChild, classNames, ...props }, forwardedRef) => {
323
+ var _effect = _useSignals6();
303
324
  try {
304
325
  const { tx } = useThemeContext();
305
326
  const Root7 = asChild ? Slot4 : Primitive4.div;
306
- return /* @__PURE__ */ React5.createElement(Root7, {
327
+ return /* @__PURE__ */ React6.createElement(Root7, {
307
328
  role: "navigation",
308
329
  ...props,
309
330
  className: tx("breadcrumb.root", "breadcrumb", {}, classNames),
@@ -313,12 +334,12 @@ var BreadcrumbRoot = /* @__PURE__ */ forwardRef4(({ asChild, classNames, ...prop
313
334
  _effect.f();
314
335
  }
315
336
  });
316
- var BreadcrumbList = /* @__PURE__ */ forwardRef4(({ asChild, classNames, ...props }, forwardedRef) => {
317
- var _effect = _useSignals5();
337
+ var BreadcrumbList = /* @__PURE__ */ forwardRef5(({ asChild, classNames, ...props }, forwardedRef) => {
338
+ var _effect = _useSignals6();
318
339
  try {
319
340
  const { tx } = useThemeContext();
320
341
  const Root7 = asChild ? Slot4 : Primitive4.ol;
321
- return /* @__PURE__ */ React5.createElement(Root7, {
342
+ return /* @__PURE__ */ React6.createElement(Root7, {
322
343
  role: "list",
323
344
  ...props,
324
345
  className: tx("breadcrumb.list", "breadcrumb__list", {}, classNames),
@@ -328,12 +349,12 @@ var BreadcrumbList = /* @__PURE__ */ forwardRef4(({ asChild, classNames, ...prop
328
349
  _effect.f();
329
350
  }
330
351
  });
331
- var BreadcrumbListItem = /* @__PURE__ */ forwardRef4(({ asChild, classNames, ...props }, forwardedRef) => {
332
- var _effect = _useSignals5();
352
+ var BreadcrumbListItem = /* @__PURE__ */ forwardRef5(({ asChild, classNames, ...props }, forwardedRef) => {
353
+ var _effect = _useSignals6();
333
354
  try {
334
355
  const { tx } = useThemeContext();
335
356
  const Root7 = asChild ? Slot4 : Primitive4.li;
336
- return /* @__PURE__ */ React5.createElement(Root7, {
357
+ return /* @__PURE__ */ React6.createElement(Root7, {
337
358
  role: "listitem",
338
359
  ...props,
339
360
  className: tx("breadcrumb.listItem", "breadcrumb__list__item", {}, classNames),
@@ -343,11 +364,11 @@ var BreadcrumbListItem = /* @__PURE__ */ forwardRef4(({ asChild, classNames, ...
343
364
  _effect.f();
344
365
  }
345
366
  });
346
- var BreadcrumbLink = /* @__PURE__ */ forwardRef4(({ asChild, ...props }, forwardedRef) => {
347
- var _effect = _useSignals5();
367
+ var BreadcrumbLink = /* @__PURE__ */ forwardRef5(({ asChild, ...props }, forwardedRef) => {
368
+ var _effect = _useSignals6();
348
369
  try {
349
370
  const Root7 = asChild ? Slot4 : Link;
350
- return /* @__PURE__ */ React5.createElement(Root7, {
371
+ return /* @__PURE__ */ React6.createElement(Root7, {
351
372
  ...props,
352
373
  ref: forwardedRef
353
374
  });
@@ -355,12 +376,12 @@ var BreadcrumbLink = /* @__PURE__ */ forwardRef4(({ asChild, ...props }, forward
355
376
  _effect.f();
356
377
  }
357
378
  });
358
- var BreadcrumbCurrent = /* @__PURE__ */ forwardRef4(({ asChild, classNames, ...props }, forwardedRef) => {
359
- var _effect = _useSignals5();
379
+ var BreadcrumbCurrent = /* @__PURE__ */ forwardRef5(({ asChild, classNames, ...props }, forwardedRef) => {
380
+ var _effect = _useSignals6();
360
381
  try {
361
382
  const { tx } = useThemeContext();
362
383
  const Root7 = asChild ? Slot4 : "h1";
363
- return /* @__PURE__ */ React5.createElement(Root7, {
384
+ return /* @__PURE__ */ React6.createElement(Root7, {
364
385
  ...props,
365
386
  "aria-current": "page",
366
387
  className: tx("breadcrumb.current", "breadcrumb__item__heading--current", {}, classNames),
@@ -371,16 +392,16 @@ var BreadcrumbCurrent = /* @__PURE__ */ forwardRef4(({ asChild, classNames, ...p
371
392
  }
372
393
  });
373
394
  var BreadcrumbSeparator = ({ children, classNames, ...props }) => {
374
- var _effect = _useSignals5();
395
+ var _effect = _useSignals6();
375
396
  try {
376
397
  const { tx } = useThemeContext();
377
- return /* @__PURE__ */ React5.createElement(Primitive4.span, {
398
+ return /* @__PURE__ */ React6.createElement(Primitive4.span, {
378
399
  role: "separator",
379
400
  "aria-hidden": "true",
380
401
  ...props,
381
402
  className: tx("breadcrumb.separator", "breadcrumb__separator", {}, classNames)
382
- }, children ?? /* @__PURE__ */ React5.createElement(Dot, {
383
- weight: "bold"
403
+ }, children ?? /* @__PURE__ */ React6.createElement(Icon, {
404
+ icon: "ph--dot--bold"
384
405
  }));
385
406
  } finally {
386
407
  _effect.f();
@@ -396,25 +417,25 @@ var Breadcrumb = {
396
417
  };
397
418
 
398
419
  // src/components/Buttons/Button.tsx
399
- import { useSignals as _useSignals6 } from "@preact-signals/safe-react/tracking";
420
+ import { useSignals as _useSignals7 } from "@preact-signals/safe-react/tracking";
400
421
  import { createContext as createContext3 } from "@radix-ui/react-context";
401
422
  import { Primitive as Primitive5 } from "@radix-ui/react-primitive";
402
423
  import { Slot as Slot5 } from "@radix-ui/react-slot";
403
- import React6, { forwardRef as forwardRef5, memo } from "react";
424
+ import React7, { forwardRef as forwardRef6, memo as memo2 } from "react";
404
425
  var BUTTON_GROUP_NAME = "ButtonGroup";
405
426
  var BUTTON_NAME = "Button";
406
427
  var [ButtonGroupProvider, useButtonGroupContext] = createContext3(BUTTON_GROUP_NAME, {
407
428
  inGroup: false
408
429
  });
409
- var Button = /* @__PURE__ */ memo(/* @__PURE__ */ forwardRef5(({ classNames, children, density: propsDensity, elevation: propsElevation, variant = "default", asChild, ...props }, ref) => {
410
- var _effect = _useSignals6();
430
+ var Button = /* @__PURE__ */ memo2(/* @__PURE__ */ forwardRef6(({ classNames, children, density: propsDensity, elevation: propsElevation, variant = "default", asChild, ...props }, ref) => {
431
+ var _effect = _useSignals7();
411
432
  try {
412
433
  const { inGroup } = useButtonGroupContext(BUTTON_NAME);
413
434
  const { tx } = useThemeContext();
414
435
  const elevation = useElevationContext(propsElevation);
415
436
  const density = useDensityContext(propsDensity);
416
437
  const Root7 = asChild ? Slot5 : Primitive5.button;
417
- return /* @__PURE__ */ React6.createElement(Root7, {
438
+ return /* @__PURE__ */ React7.createElement(Root7, {
418
439
  ref,
419
440
  ...props,
420
441
  "data-variant": variant,
@@ -436,20 +457,20 @@ var Button = /* @__PURE__ */ memo(/* @__PURE__ */ forwardRef5(({ classNames, chi
436
457
  }
437
458
  }));
438
459
  Button.displayName = BUTTON_NAME;
439
- var ButtonGroup = /* @__PURE__ */ forwardRef5(({ children, elevation: propsElevation, classNames, asChild, ...props }, forwardedRef) => {
440
- var _effect = _useSignals6();
460
+ var ButtonGroup = /* @__PURE__ */ forwardRef6(({ children, elevation: propsElevation, classNames, asChild, ...props }, forwardedRef) => {
461
+ var _effect = _useSignals7();
441
462
  try {
442
463
  const { tx } = useThemeContext();
443
464
  const elevation = useElevationContext(propsElevation);
444
465
  const Root7 = asChild ? Slot5 : Primitive5.div;
445
- return /* @__PURE__ */ React6.createElement(Root7, {
466
+ return /* @__PURE__ */ React7.createElement(Root7, {
446
467
  role: "none",
447
468
  ...props,
448
469
  className: tx("button.group", "button-group", {
449
470
  elevation
450
471
  }, classNames),
451
472
  ref: forwardedRef
452
- }, /* @__PURE__ */ React6.createElement(ButtonGroupProvider, {
473
+ }, /* @__PURE__ */ React7.createElement(ButtonGroupProvider, {
453
474
  inGroup: true
454
475
  }, children));
455
476
  } finally {
@@ -462,28 +483,6 @@ ButtonGroup.displayName = BUTTON_GROUP_NAME;
462
483
  import { useSignals as _useSignals9 } from "@preact-signals/safe-react/tracking";
463
484
  import React9, { forwardRef as forwardRef8 } from "react";
464
485
 
465
- // src/components/Icon/Icon.tsx
466
- import { useSignals as _useSignals7 } from "@preact-signals/safe-react/tracking";
467
- import React7, { forwardRef as forwardRef6, memo as memo2 } from "react";
468
- var Icon = /* @__PURE__ */ memo2(/* @__PURE__ */ forwardRef6(({ icon, classNames, size, ...props }, forwardedRef) => {
469
- var _effect = _useSignals7();
470
- try {
471
- const { tx } = useThemeContext();
472
- const href = useIconHref(icon);
473
- return /* @__PURE__ */ React7.createElement("svg", {
474
- ...props,
475
- className: tx("icon.root", "icon", {
476
- size
477
- }, classNames),
478
- ref: forwardedRef
479
- }, /* @__PURE__ */ React7.createElement("use", {
480
- href
481
- }));
482
- } finally {
483
- _effect.f();
484
- }
485
- }));
486
-
487
486
  // src/components/Tooltip/Tooltip.tsx
488
487
  import { useSignals as _useSignals8 } from "@preact-signals/safe-react/tracking";
489
488
  import { composeEventHandlers } from "@radix-ui/primitive";
@@ -1139,7 +1138,7 @@ var LabelledIconButton = /* @__PURE__ */ forwardRef8(({ icon, size, iconOnly, la
1139
1138
  iconOnly
1140
1139
  }, classNames),
1141
1140
  ref: forwardedRef
1142
- }, /* @__PURE__ */ React9.createElement(Icon, {
1141
+ }, icon && /* @__PURE__ */ React9.createElement(Icon, {
1143
1142
  icon,
1144
1143
  size,
1145
1144
  classNames: iconClassNames
@@ -1191,7 +1190,7 @@ var Toggle = /* @__PURE__ */ forwardRef9(({ defaultPressed, pressed, onPressedCh
1191
1190
 
1192
1191
  // src/components/Buttons/ToggleGroup.tsx
1193
1192
  import { useSignals as _useSignals11 } from "@preact-signals/safe-react/tracking";
1194
- import { ToggleGroup as ToggleGroupPrimitive, ToggleGroupItem as ToggleGroupItemPrimitive } from "@radix-ui/react-toggle-group";
1193
+ import { ToggleGroupItem as ToggleGroupItemPrimitive, ToggleGroup as ToggleGroupPrimitive } from "@radix-ui/react-toggle-group";
1195
1194
  import React11, { forwardRef as forwardRef10 } from "react";
1196
1195
  var ToggleGroup = /* @__PURE__ */ forwardRef10(({ classNames, children, ...props }, forwardedRef) => {
1197
1196
  var _effect = _useSignals11();
@@ -1226,6 +1225,26 @@ var ToggleGroupItem = /* @__PURE__ */ forwardRef10(({ variant, elevation, densit
1226
1225
  _effect.f();
1227
1226
  }
1228
1227
  });
1228
+ var ToggleGroupIconItem = /* @__PURE__ */ forwardRef10(({ variant, label, icon, size, elevation, density, classNames, ...props }, forwardedRef) => {
1229
+ var _effect = _useSignals11();
1230
+ try {
1231
+ return /* @__PURE__ */ React11.createElement(ToggleGroupItemPrimitive, {
1232
+ ...props,
1233
+ asChild: true
1234
+ }, /* @__PURE__ */ React11.createElement(IconButton, {
1235
+ variant,
1236
+ elevation,
1237
+ density,
1238
+ classNames,
1239
+ label,
1240
+ icon,
1241
+ size,
1242
+ ref: forwardedRef
1243
+ }));
1244
+ } finally {
1245
+ _effect.f();
1246
+ }
1247
+ });
1229
1248
 
1230
1249
  // src/components/Clipboard/ClipboardProvider.tsx
1231
1250
  import { useSignals as _useSignals12 } from "@preact-signals/safe-react/tracking";
@@ -1258,18 +1277,103 @@ var ClipboardProvider = ({ children }) => {
1258
1277
  // src/components/Clipboard/CopyButton.tsx
1259
1278
  import { useSignals as _useSignals16 } from "@preact-signals/safe-react/tracking";
1260
1279
  import React16 from "react";
1261
- import { mx as mx2 } from "@dxos/react-ui-theme";
1280
+ import { mx as mx3 } from "@dxos/react-ui-theme";
1262
1281
 
1263
1282
  // src/components/ThemeProvider/ThemeProvider.tsx
1264
1283
  import { useSignals as _useSignals15 } from "@preact-signals/safe-react/tracking";
1265
1284
  import { createKeyborg } from "keyborg";
1266
- import React15, { createContext as createContext7, useEffect as useEffect3, useMemo as useMemo2 } from "react";
1285
+ import React15, { createContext as createContext7, useEffect as useEffect4, useMemo as useMemo3 } from "react";
1286
+
1287
+ // src/util/domino.ts
1288
+ import { mx as mx2 } from "@dxos/react-ui-theme";
1289
+ var Domino = class _Domino {
1290
+ static of(tag) {
1291
+ return new _Domino(tag);
1292
+ }
1293
+ _el;
1294
+ constructor(tag) {
1295
+ this._el = document.createElement(tag);
1296
+ }
1297
+ classNames(...classNames) {
1298
+ this._el.className = mx2(classNames);
1299
+ return this;
1300
+ }
1301
+ text(value) {
1302
+ this._el.textContent = value;
1303
+ return this;
1304
+ }
1305
+ data(key, value) {
1306
+ this._el.dataset[key] = value;
1307
+ return this;
1308
+ }
1309
+ attributes(attr) {
1310
+ Object.entries(attr).filter(([_, value]) => value !== void 0).map(([key, value]) => this._el.setAttribute(key, value));
1311
+ return this;
1312
+ }
1313
+ style(styles) {
1314
+ Object.assign(this._el.style, styles);
1315
+ return this;
1316
+ }
1317
+ children(...children) {
1318
+ children.forEach((child) => this._el.appendChild(child.build()));
1319
+ return this;
1320
+ }
1321
+ on(event, handler) {
1322
+ this._el.addEventListener(event, handler);
1323
+ return this;
1324
+ }
1325
+ build() {
1326
+ return this._el;
1327
+ }
1328
+ };
1267
1329
 
1268
1330
  // src/util/hasIosKeyboard.ts
1269
1331
  var hasIosKeyboard = () => {
1270
1332
  return !!navigator.userAgent.match(/iP(ad|od|hone).+Safari/);
1271
1333
  };
1272
1334
 
1335
+ // src/util/usePx.ts
1336
+ import { useCallback as useCallback5, useEffect as useEffect3, useMemo as useMemo2, useState as useState6 } from "react";
1337
+ var getDocumentElementFontSize = () => parseFloat(getComputedStyle(document.documentElement).fontSize);
1338
+ var usePx = (rem) => {
1339
+ const [fontSize, setFontSize] = useState6(() => {
1340
+ if (typeof document !== "undefined") {
1341
+ return getDocumentElementFontSize();
1342
+ }
1343
+ return 16;
1344
+ });
1345
+ const updateFontSize = useCallback5(() => {
1346
+ setFontSize(getDocumentElementFontSize());
1347
+ }, []);
1348
+ useEffect3(() => {
1349
+ if (typeof document === "undefined") {
1350
+ return;
1351
+ }
1352
+ const resizeObserver = new ResizeObserver(updateFontSize);
1353
+ resizeObserver.observe(document.documentElement);
1354
+ const mediaQueryList = window.matchMedia("all");
1355
+ const handleMediaChange = () => {
1356
+ updateFontSize();
1357
+ };
1358
+ if (mediaQueryList.addEventListener) {
1359
+ mediaQueryList.addEventListener("change", handleMediaChange);
1360
+ } else {
1361
+ mediaQueryList.addListener(handleMediaChange);
1362
+ }
1363
+ return () => {
1364
+ resizeObserver.disconnect();
1365
+ if (mediaQueryList.removeEventListener) {
1366
+ mediaQueryList.removeEventListener("change", handleMediaChange);
1367
+ } else {
1368
+ mediaQueryList.removeListener(handleMediaChange);
1369
+ }
1370
+ };
1371
+ }, []);
1372
+ return useMemo2(() => rem * fontSize, [
1373
+ fontSize
1374
+ ]);
1375
+ };
1376
+
1273
1377
  // src/components/DensityProvider/DensityProvider.tsx
1274
1378
  import { useSignals as _useSignals13 } from "@preact-signals/safe-react/tracking";
1275
1379
  import React13, { createContext as createContext5 } from "react";
@@ -1313,7 +1417,7 @@ var ThemeContext = /* @__PURE__ */ createContext7(void 0);
1313
1417
  var ThemeProvider = ({ children, fallback = null, resourceExtensions, appNs, tx = (_path, defaultClassName, _styleProps, ..._options) => defaultClassName, themeMode = "dark", rootDensity = "fine", ...rest }) => {
1314
1418
  var _effect = _useSignals15();
1315
1419
  try {
1316
- useEffect3(() => {
1420
+ useEffect4(() => {
1317
1421
  if (document.defaultView) {
1318
1422
  const kb = createKeyborg(document.defaultView);
1319
1423
  kb.subscribe(handleInputModalityChange);
@@ -1321,7 +1425,7 @@ var ThemeProvider = ({ children, fallback = null, resourceExtensions, appNs, tx
1321
1425
  }
1322
1426
  }, []);
1323
1427
  const safeAreaPadding = useSafeArea();
1324
- const contextValue = useMemo2(() => ({
1428
+ const contextValue = useMemo3(() => ({
1325
1429
  tx,
1326
1430
  themeMode,
1327
1431
  hasIosKeyboard: hasIosKeyboard(),
@@ -1374,7 +1478,7 @@ var CopyButton = ({ classNames, value, size = 5, ...props }) => {
1374
1478
  "data-testid": "copy-invitation"
1375
1479
  }, /* @__PURE__ */ React16.createElement("div", {
1376
1480
  role: "none",
1377
- className: mx2("flex gap-1 items-center", isCopied && inactiveLabelStyles)
1481
+ className: mx3("flex gap-1 items-center", isCopied && inactiveLabelStyles)
1378
1482
  }, /* @__PURE__ */ React16.createElement("span", {
1379
1483
  className: "pli-1"
1380
1484
  }, t("copy label")), /* @__PURE__ */ React16.createElement(Icon, {
@@ -1382,7 +1486,7 @@ var CopyButton = ({ classNames, value, size = 5, ...props }) => {
1382
1486
  size
1383
1487
  })), /* @__PURE__ */ React16.createElement("div", {
1384
1488
  role: "none",
1385
- className: mx2("flex gap-1 items-center", !isCopied && inactiveLabelStyles)
1489
+ className: mx3("flex gap-1 items-center", !isCopied && inactiveLabelStyles)
1386
1490
  }, /* @__PURE__ */ React16.createElement("span", {
1387
1491
  className: "pli-1"
1388
1492
  }, t("copy success label")), /* @__PURE__ */ React16.createElement(Icon, {
@@ -1429,7 +1533,7 @@ var Clipboard = {
1429
1533
  // src/components/Dialogs/Dialog.tsx
1430
1534
  import { useSignals as _useSignals17 } from "@preact-signals/safe-react/tracking";
1431
1535
  import { createContext as createContext8 } from "@radix-ui/react-context";
1432
- 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";
1536
+ import { DialogClose as DialogClosePrimitive, DialogContent as DialogContentPrimitive, DialogDescription as DialogDescriptionPrimitive, DialogOverlay as DialogOverlayPrimitive, DialogPortal as DialogPortalPrimitive, Root as DialogRootPrimitive, DialogTitle as DialogTitlePrimitive, DialogTrigger as DialogTriggerPrimitive } from "@radix-ui/react-dialog";
1433
1537
  import React17, { forwardRef as forwardRef11 } from "react";
1434
1538
  var DialogRoot = (props) => {
1435
1539
  var _effect = _useSignals17();
@@ -1527,7 +1631,7 @@ var Dialog = {
1527
1631
 
1528
1632
  // src/components/Dialogs/AlertDialog.tsx
1529
1633
  import { useSignals as _useSignals18 } from "@preact-signals/safe-react/tracking";
1530
- 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";
1634
+ import { AlertDialogAction as AlertDialogActionPrimitive, AlertDialogCancel as AlertDialogCancelPrimitive, AlertDialogContent as AlertDialogContentPrimitive, AlertDialogDescription as AlertDialogDescriptionPrimitive, AlertDialogOverlay as AlertDialogOverlayPrimitive, AlertDialogPortal as AlertDialogPortalPrimitive, Root as AlertDialogRootPrimitive, AlertDialogTitle as AlertDialogTitlePrimitive, AlertDialogTrigger as AlertDialogTriggerPrimitive } from "@radix-ui/react-alert-dialog";
1531
1635
  import { createContext as createContext9 } from "@radix-ui/react-context";
1532
1636
  import React18, { forwardRef as forwardRef12 } from "react";
1533
1637
  var AlertDialogRoot = (props) => {
@@ -1629,9 +1733,9 @@ var AlertDialog = {
1629
1733
  import { useSignals as _useSignals19 } from "@preact-signals/safe-react/tracking";
1630
1734
  import { Root as CheckboxPrimitive } from "@radix-ui/react-checkbox";
1631
1735
  import { useControllableState as useControllableState2 } from "@radix-ui/react-use-controllable-state";
1632
- import React19, { forwardRef as forwardRef13, useCallback as useCallback5 } from "react";
1633
- 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";
1634
- import { mx as mx3 } from "@dxos/react-ui-theme";
1736
+ import React19, { forwardRef as forwardRef13, useCallback as useCallback6 } from "react";
1737
+ 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";
1738
+ import { mx as mx4 } from "@dxos/react-ui-theme";
1635
1739
  var Label = /* @__PURE__ */ forwardRef13(({ srOnly, classNames, children, ...props }, forwardedRef) => {
1636
1740
  var _effect = _useSignals19();
1637
1741
  try {
@@ -1701,7 +1805,7 @@ var PinInput = /* @__PURE__ */ forwardRef13(({ density: propsDensity, elevation:
1701
1805
  const { tx } = useThemeContext();
1702
1806
  const density = useDensityContext(propsDensity);
1703
1807
  const elevation = useElevationContext(propsElevation);
1704
- const segmentClassName = useCallback5(({ focused, validationValence }) => tx("input.input", "input--pin-segment", {
1808
+ const segmentClassName = useCallback6(({ focused, validationValence }) => tx("input.input", "input--pin-segment", {
1705
1809
  variant: "static",
1706
1810
  focused,
1707
1811
  disabled: props.disabled,
@@ -1783,7 +1887,7 @@ var TextArea = /* @__PURE__ */ forwardRef13(({ __inputScope, classNames, density
1783
1887
  _effect.f();
1784
1888
  }
1785
1889
  });
1786
- var Checkbox = /* @__PURE__ */ forwardRef13(({ __inputScope, checked: propsChecked, defaultChecked: propsDefaultChecked, onCheckedChange: propsOnCheckedChange, size, weight = "bold", classNames, ...props }, forwardedRef) => {
1890
+ var Checkbox = /* @__PURE__ */ forwardRef13(({ __inputScope, checked: propsChecked, defaultChecked: propsDefaultChecked, onCheckedChange: propsOnCheckedChange, size, classNames, ...props }, forwardedRef) => {
1787
1891
  var _effect = _useSignals19();
1788
1892
  try {
1789
1893
  const [checked, onCheckedChange] = useControllableState2({
@@ -1829,7 +1933,7 @@ var Switch = /* @__PURE__ */ forwardRef13(({ __inputScope, checked: propsChecked
1829
1933
  const { id, validationValence, descriptionId, errorMessageId } = useInputContext(INPUT_NAME, __inputScope);
1830
1934
  return /* @__PURE__ */ React19.createElement("input", {
1831
1935
  type: "checkbox",
1832
- className: mx3("dx-checkbox--switch dx-focus-ring", classNames),
1936
+ className: mx4("dx-checkbox--switch dx-focus-ring", classNames),
1833
1937
  checked,
1834
1938
  onChange: (event) => {
1835
1939
  onCheckedChange(event.target.checked);
@@ -1862,10 +1966,9 @@ var Input = {
1862
1966
 
1863
1967
  // src/components/Lists/List.tsx
1864
1968
  import { useSignals as _useSignals21 } from "@preact-signals/safe-react/tracking";
1865
- import { CaretDown, CaretRight } from "@phosphor-icons/react";
1866
1969
  import { Slot as Slot6 } from "@radix-ui/react-slot";
1867
1970
  import React21, { forwardRef as forwardRef14 } from "react";
1868
- 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";
1971
+ import { LIST_ITEM_NAME, LIST_NAME, ListItemCollapsibleContent, List as ListPrimitive, ListItem as ListPrimitiveItem, ListItemHeading as ListPrimitiveItemHeading, ListItemOpenTrigger as ListPrimitiveItemOpenTrigger, useListContext, useListItemContext } from "@dxos/react-list";
1869
1972
 
1870
1973
  // src/components/Lists/ListDropIndicator.tsx
1871
1974
  import { useSignals as _useSignals20 } from "@preact-signals/safe-react/tracking";
@@ -1986,16 +2089,16 @@ var ListItemOpenTrigger = /* @__PURE__ */ forwardRef14(({ __listItemScope, class
1986
2089
  const { tx } = useThemeContext();
1987
2090
  const density = useDensityContext();
1988
2091
  const { open } = useListItemContext(LIST_ITEM_NAME, __listItemScope);
1989
- const Icon3 = open ? CaretDown : CaretRight;
1990
2092
  return /* @__PURE__ */ React21.createElement(ListPrimitiveItemOpenTrigger, {
1991
2093
  ...props,
1992
2094
  className: tx("list.item.openTrigger", "list__listItem__openTrigger", {
1993
2095
  density
1994
2096
  }, classNames),
1995
2097
  ref: forwardedRef
1996
- }, children || /* @__PURE__ */ React21.createElement(Icon3, {
1997
- weight: "bold",
1998
- className: tx("list.item.openTriggerIcon", "list__listItem__openTrigger__icon", {})
2098
+ }, children || /* @__PURE__ */ React21.createElement(Icon, {
2099
+ size: 3,
2100
+ icon: open ? "ph--caret-down--bold" : "ph--caret-right--bold",
2101
+ classNames: tx("list.item.openTriggerIcon", "list__listItem__openTrigger__icon", {})
1999
2102
  }));
2000
2103
  } finally {
2001
2104
  _effect.f();
@@ -2139,12 +2242,12 @@ var TreeItem = {
2139
2242
 
2140
2243
  // src/components/Lists/Treegrid.tsx
2141
2244
  import { useSignals as _useSignals24 } from "@preact-signals/safe-react/tracking";
2142
- import { useArrowNavigationGroup, useFocusableGroup } from "@fluentui/react-tabster";
2245
+ import { useFocusFinders } from "@fluentui/react-tabster";
2143
2246
  import { createContextScope as createContextScope2 } from "@radix-ui/react-context";
2144
2247
  import { Primitive as Primitive7 } from "@radix-ui/react-primitive";
2145
2248
  import { Slot as Slot7 } from "@radix-ui/react-slot";
2146
2249
  import { useControllableState as useControllableState3 } from "@radix-ui/react-use-controllable-state";
2147
- import React24, { forwardRef as forwardRef16 } from "react";
2250
+ import React24, { forwardRef as forwardRef16, useCallback as useCallback7 } from "react";
2148
2251
  var TREEGRID_ROW_NAME = "TreegridRow";
2149
2252
  var [createTreegridRowContext, createTreegridRowScope] = createContextScope2(TREEGRID_ROW_NAME, []);
2150
2253
  var [TreegridRowProvider, useTreegridRowContext] = createTreegridRowContext(TREEGRID_ROW_NAME);
@@ -2155,14 +2258,43 @@ var TreegridRoot = /* @__PURE__ */ forwardRef16(({ asChild, classNames, children
2155
2258
  try {
2156
2259
  const { tx } = useThemeContext();
2157
2260
  const Root7 = asChild ? Slot7 : Primitive7.div;
2158
- const arrowNavigationAttrs = useArrowNavigationGroup({
2159
- axis: "vertical",
2160
- tabbable: false,
2161
- circular: true
2162
- });
2261
+ const { findFirstFocusable } = useFocusFinders();
2262
+ const handleKeyDown = useCallback7((event) => {
2263
+ switch (event.key) {
2264
+ case "ArrowDown":
2265
+ case "ArrowUp": {
2266
+ const direction = event.key === "ArrowDown" ? "down" : "up";
2267
+ const target = event.target;
2268
+ const ancestorWithArrowKeys = target.closest(`[data-arrow-keys*="${direction}"], [data-arrow-keys="all"]`);
2269
+ if (!ancestorWithArrowKeys) {
2270
+ const currentRow = target.closest('[role="row"]');
2271
+ if (currentRow) {
2272
+ const treegrid = currentRow.closest('[role="treegrid"]');
2273
+ if (treegrid) {
2274
+ const rows = Array.from(treegrid.querySelectorAll('[role="row"]'));
2275
+ const currentIndex = rows.indexOf(currentRow);
2276
+ const nextIndex = direction === "down" ? currentIndex + 1 : currentIndex - 1;
2277
+ const targetRow = rows[nextIndex];
2278
+ if (targetRow) {
2279
+ const firstFocusable = findFirstFocusable(targetRow);
2280
+ if (firstFocusable) {
2281
+ event.preventDefault();
2282
+ firstFocusable.focus();
2283
+ }
2284
+ }
2285
+ }
2286
+ }
2287
+ }
2288
+ break;
2289
+ }
2290
+ }
2291
+ props.onKeyDown?.(event);
2292
+ }, [
2293
+ findFirstFocusable
2294
+ ]);
2163
2295
  return /* @__PURE__ */ React24.createElement(Root7, {
2164
2296
  role: "treegrid",
2165
- ...arrowNavigationAttrs,
2297
+ onKeyDown: handleKeyDown,
2166
2298
  ...props,
2167
2299
  className: tx("treegrid.root", "treegrid", {}, classNames),
2168
2300
  style: {
@@ -2187,15 +2319,6 @@ var TreegridRow = /* @__PURE__ */ forwardRef16(({ __treegridRowScope, asChild, c
2187
2319
  onChange: propsOnOpenChange,
2188
2320
  defaultProp: defaultOpen
2189
2321
  });
2190
- const focusableGroupAttrs = useFocusableGroup({
2191
- tabBehavior: "limited"
2192
- });
2193
- const arrowGroupAttrs = useArrowNavigationGroup({
2194
- axis: "horizontal",
2195
- tabbable: false,
2196
- circular: false,
2197
- memorizeCurrent: false
2198
- });
2199
2322
  return /* @__PURE__ */ React24.createElement(TreegridRowProvider, {
2200
2323
  open,
2201
2324
  onOpenChange,
@@ -2210,16 +2333,10 @@ var TreegridRow = /* @__PURE__ */ forwardRef16(({ __treegridRowScope, asChild, c
2210
2333
  "aria-expanded": open,
2211
2334
  "aria-owns": parentOf
2212
2335
  },
2213
- tabIndex: 0,
2214
- ...focusableGroupAttrs,
2215
2336
  ...props,
2216
2337
  id,
2217
2338
  ref: forwardedRef
2218
- }, /* @__PURE__ */ React24.createElement("div", {
2219
- role: "none",
2220
- className: "contents",
2221
- ...arrowGroupAttrs
2222
- }, children)));
2339
+ }, children));
2223
2340
  } finally {
2224
2341
  _effect.f();
2225
2342
  }
@@ -2252,17 +2369,18 @@ var Treegrid = {
2252
2369
 
2253
2370
  // src/components/Main/Main.tsx
2254
2371
  import { useSignals as _useSignals25 } from "@preact-signals/safe-react/tracking";
2372
+ import { useFocusableGroup } from "@fluentui/react-tabster";
2255
2373
  import { createContext as createContext10 } from "@radix-ui/react-context";
2256
- import { Root as DialogRoot2, DialogContent as DialogContent2, DialogTitle as DialogTitle2 } from "@radix-ui/react-dialog";
2374
+ import { DialogContent as DialogContent2, Root as DialogRoot2, DialogTitle as DialogTitle2 } from "@radix-ui/react-dialog";
2257
2375
  import { Primitive as Primitive8 } from "@radix-ui/react-primitive";
2258
2376
  import { Slot as Slot8 } from "@radix-ui/react-slot";
2259
2377
  import { useControllableState as useControllableState4 } from "@radix-ui/react-use-controllable-state";
2260
- import React25, { forwardRef as forwardRef17, useCallback as useCallback7, useEffect as useEffect5, useRef as useRef2, useState as useState7 } from "react";
2378
+ import React25, { forwardRef as forwardRef17, useCallback as useCallback9, useEffect as useEffect6, useRef as useRef2, useState as useState8 } from "react";
2261
2379
  import { log } from "@dxos/log";
2262
- import { useMediaQuery, useForwardedRef } from "@dxos/react-hooks";
2380
+ import { useForwardedRef, useMediaQuery } from "@dxos/react-hooks";
2263
2381
 
2264
2382
  // src/components/Main/useSwipeToDismiss.ts
2265
- import { useCallback as useCallback6, useEffect as useEffect4, useState as useState6 } from "react";
2383
+ import { useCallback as useCallback8, useEffect as useEffect5, useState as useState7 } from "react";
2266
2384
  var useSwipeToDismiss = (ref, {
2267
2385
  onDismiss,
2268
2386
  dismissThreshold = 64,
@@ -2271,22 +2389,22 @@ var useSwipeToDismiss = (ref, {
2271
2389
  /* side = 'inline-start' */
2272
2390
  }) => {
2273
2391
  const $root = ref.current;
2274
- const [motionState, setMotionState] = useState6(0);
2275
- const [gestureStartX, setGestureStartX] = useState6(0);
2276
- const setIdle = useCallback6(() => {
2392
+ const [motionState, setMotionState] = useState7(0);
2393
+ const [gestureStartX, setGestureStartX] = useState7(0);
2394
+ const setIdle = useCallback8(() => {
2277
2395
  setMotionState(0);
2278
2396
  $root?.style.removeProperty("inset-inline-start");
2279
2397
  $root?.style.setProperty("transition-duration", "200ms");
2280
2398
  }, [
2281
2399
  $root
2282
2400
  ]);
2283
- const setFollowing = useCallback6(() => {
2401
+ const setFollowing = useCallback8(() => {
2284
2402
  setMotionState(2);
2285
2403
  $root?.style.setProperty("transition-duration", "0ms");
2286
2404
  }, [
2287
2405
  $root
2288
2406
  ]);
2289
- const handlePointerDown = useCallback6(({ screenX }) => {
2407
+ const handlePointerDown = useCallback8(({ screenX }) => {
2290
2408
  if (motionState === 0) {
2291
2409
  setMotionState(1);
2292
2410
  setGestureStartX(screenX);
@@ -2294,7 +2412,7 @@ var useSwipeToDismiss = (ref, {
2294
2412
  }, [
2295
2413
  motionState
2296
2414
  ]);
2297
- const handlePointerMove = useCallback6(({ screenX }) => {
2415
+ const handlePointerMove = useCallback8(({ screenX }) => {
2298
2416
  if ($root) {
2299
2417
  const delta = Math.min(screenX - gestureStartX, 0);
2300
2418
  switch (motionState) {
@@ -2318,12 +2436,12 @@ var useSwipeToDismiss = (ref, {
2318
2436
  motionState,
2319
2437
  gestureStartX
2320
2438
  ]);
2321
- const handlePointerUp = useCallback6(() => {
2439
+ const handlePointerUp = useCallback8(() => {
2322
2440
  setIdle();
2323
2441
  }, [
2324
2442
  setIdle
2325
2443
  ]);
2326
- useEffect4(() => {
2444
+ useEffect5(() => {
2327
2445
  $root?.addEventListener("pointerdown", handlePointerDown);
2328
2446
  return () => {
2329
2447
  $root?.removeEventListener("pointerdown", handlePointerDown);
@@ -2332,7 +2450,7 @@ var useSwipeToDismiss = (ref, {
2332
2450
  $root,
2333
2451
  handlePointerDown
2334
2452
  ]);
2335
- useEffect4(() => {
2453
+ useEffect5(() => {
2336
2454
  $root && document.documentElement.addEventListener("pointermove", handlePointerMove);
2337
2455
  return () => {
2338
2456
  document.documentElement.removeEventListener("pointermove", handlePointerMove);
@@ -2341,7 +2459,7 @@ var useSwipeToDismiss = (ref, {
2341
2459
  $root,
2342
2460
  handlePointerMove
2343
2461
  ]);
2344
- useEffect4(() => {
2462
+ useEffect5(() => {
2345
2463
  $root && document.documentElement.addEventListener("pointerup", handlePointerUp);
2346
2464
  return () => {
2347
2465
  document.documentElement.removeEventListener("pointerup", handlePointerUp);
@@ -2361,7 +2479,7 @@ var MAIN_NAME = "Main";
2361
2479
  var GENERIC_CONSUMER_NAME = "GenericConsumer";
2362
2480
  var landmarkAttr = "data-main-landmark";
2363
2481
  var useLandmarkMover = (propsOnKeyDown, landmark) => {
2364
- const handleKeyDown = useCallback7((event) => {
2482
+ const handleKeyDown = useCallback9((event) => {
2365
2483
  const target = event.target;
2366
2484
  if (event.target === event.currentTarget && event.key === "Tab" && target.hasAttribute(landmarkAttr)) {
2367
2485
  event.preventDefault();
@@ -2375,12 +2493,12 @@ var useLandmarkMover = (propsOnKeyDown, landmark) => {
2375
2493
  }, [
2376
2494
  propsOnKeyDown
2377
2495
  ]);
2378
- const focusableGroupAttrs = window ? {} : {
2496
+ const focusableGroupAttrs = useFocusableGroup({
2379
2497
  tabBehavior: "limited",
2380
2498
  ignoreDefaultKeydown: {
2381
2499
  Tab: true
2382
2500
  }
2383
- };
2501
+ });
2384
2502
  return {
2385
2503
  onKeyDown: handleKeyDown,
2386
2504
  [landmarkAttr]: landmark,
@@ -2391,19 +2509,19 @@ var useLandmarkMover = (propsOnKeyDown, landmark) => {
2391
2509
  var [MainProvider, useMainContext] = createContext10(MAIN_NAME, {
2392
2510
  resizing: false,
2393
2511
  navigationSidebarState: "closed",
2394
- setNavigationSidebarState: (nextState) => {
2512
+ setNavigationSidebarState: (_nextState) => {
2395
2513
  log.warn("Attempt to set sidebar state without initializing `MainRoot`", void 0, {
2396
2514
  F: __dxlog_file,
2397
- L: 82,
2515
+ L: 92,
2398
2516
  S: void 0,
2399
2517
  C: (f, a) => f(...a)
2400
2518
  });
2401
2519
  },
2402
2520
  complementarySidebarState: "closed",
2403
- setComplementarySidebarState: (nextState) => {
2521
+ setComplementarySidebarState: (_nextState) => {
2404
2522
  log.warn("Attempt to set sidebar state without initializing `MainRoot`", void 0, {
2405
2523
  F: __dxlog_file,
2406
- L: 87,
2524
+ L: 97,
2407
2525
  S: void 0,
2408
2526
  C: (f, a) => f(...a)
2409
2527
  });
@@ -2414,31 +2532,29 @@ var useSidebars = (consumerName = GENERIC_CONSUMER_NAME) => {
2414
2532
  return {
2415
2533
  navigationSidebarState,
2416
2534
  setNavigationSidebarState,
2417
- toggleNavigationSidebar: useCallback7(() => setNavigationSidebarState(navigationSidebarState === "expanded" ? "closed" : "expanded"), [
2535
+ toggleNavigationSidebar: useCallback9(() => setNavigationSidebarState(navigationSidebarState === "expanded" ? "closed" : "expanded"), [
2418
2536
  navigationSidebarState,
2419
2537
  setNavigationSidebarState
2420
2538
  ]),
2421
- openNavigationSidebar: useCallback7(() => setNavigationSidebarState("expanded"), []),
2422
- collapseNavigationSidebar: useCallback7(() => setNavigationSidebarState("collapsed"), []),
2423
- closeNavigationSidebar: useCallback7(() => setNavigationSidebarState("closed"), []),
2539
+ openNavigationSidebar: useCallback9(() => setNavigationSidebarState("expanded"), []),
2540
+ collapseNavigationSidebar: useCallback9(() => setNavigationSidebarState("collapsed"), []),
2541
+ closeNavigationSidebar: useCallback9(() => setNavigationSidebarState("closed"), []),
2424
2542
  complementarySidebarState,
2425
2543
  setComplementarySidebarState,
2426
- toggleComplementarySidebar: useCallback7(() => setComplementarySidebarState(complementarySidebarState === "expanded" ? "closed" : "expanded"), [
2544
+ toggleComplementarySidebar: useCallback9(() => setComplementarySidebarState(complementarySidebarState === "expanded" ? "closed" : "expanded"), [
2427
2545
  complementarySidebarState,
2428
2546
  setComplementarySidebarState
2429
2547
  ]),
2430
- openComplementarySidebar: useCallback7(() => setComplementarySidebarState("expanded"), []),
2431
- collapseComplementarySidebar: useCallback7(() => setComplementarySidebarState("collapsed"), []),
2432
- closeComplementarySidebar: useCallback7(() => setComplementarySidebarState("closed"), [])
2548
+ openComplementarySidebar: useCallback9(() => setComplementarySidebarState("expanded"), []),
2549
+ collapseComplementarySidebar: useCallback9(() => setComplementarySidebarState("collapsed"), []),
2550
+ closeComplementarySidebar: useCallback9(() => setComplementarySidebarState("closed"), [])
2433
2551
  };
2434
2552
  };
2435
2553
  var resizeDebounce = 3e3;
2436
2554
  var MainRoot = ({ navigationSidebarState: propsNavigationSidebarState, defaultNavigationSidebarState, onNavigationSidebarStateChange, complementarySidebarState: propsComplementarySidebarState, defaultComplementarySidebarState, onComplementarySidebarStateChange, children, ...props }) => {
2437
2555
  var _effect = _useSignals25();
2438
2556
  try {
2439
- const [isLg] = useMediaQuery("lg", {
2440
- ssr: false
2441
- });
2557
+ const [isLg] = useMediaQuery("lg");
2442
2558
  const [navigationSidebarState = isLg ? "expanded" : "collapsed", setNavigationSidebarState] = useControllableState4({
2443
2559
  prop: propsNavigationSidebarState,
2444
2560
  defaultProp: defaultNavigationSidebarState,
@@ -2449,9 +2565,9 @@ var MainRoot = ({ navigationSidebarState: propsNavigationSidebarState, defaultNa
2449
2565
  defaultProp: defaultComplementarySidebarState,
2450
2566
  onChange: onComplementarySidebarStateChange
2451
2567
  });
2452
- const [resizing, setResizing] = useState7(false);
2568
+ const [resizing, setResizing] = useState8(false);
2453
2569
  const resizeInterval = useRef2(null);
2454
- const handleResize = useCallback7(() => {
2570
+ const handleResize = useCallback9(() => {
2455
2571
  setResizing(true);
2456
2572
  if (resizeInterval.current) {
2457
2573
  clearTimeout(resizeInterval.current);
@@ -2461,7 +2577,7 @@ var MainRoot = ({ navigationSidebarState: propsNavigationSidebarState, defaultNa
2461
2577
  resizeInterval.current = null;
2462
2578
  }, resizeDebounce);
2463
2579
  }, []);
2464
- useEffect5(() => {
2580
+ useEffect6(() => {
2465
2581
  window.addEventListener("resize", handleResize);
2466
2582
  return () => window.removeEventListener("resize", handleResize);
2467
2583
  }, [
@@ -2486,9 +2602,7 @@ var handleOpenAutoFocus = (event) => {
2486
2602
  var MainSidebar = /* @__PURE__ */ forwardRef17(({ classNames, children, swipeToDismiss, onOpenAutoFocus, state, resizing, onStateChange, side, label, ...props }, forwardedRef) => {
2487
2603
  var _effect = _useSignals25();
2488
2604
  try {
2489
- const [isLg] = useMediaQuery("lg", {
2490
- ssr: false
2491
- });
2605
+ const [isLg] = useMediaQuery("lg");
2492
2606
  const { tx } = useThemeContext();
2493
2607
  const { t } = useTranslation();
2494
2608
  const ref = useForwardedRef(forwardedRef);
@@ -2496,9 +2610,12 @@ var MainSidebar = /* @__PURE__ */ forwardRef17(({ classNames, children, swipeToD
2496
2610
  useSwipeToDismiss(swipeToDismiss ? ref : noopRef, {
2497
2611
  onDismiss: () => onStateChange?.("closed")
2498
2612
  });
2499
- const handleKeyDown = useCallback7((event) => {
2500
- if (event.key === "Escape") {
2501
- event.target.closest("[data-tabster]")?.focus();
2613
+ const handleKeyDown = useCallback9((event) => {
2614
+ const focusGroupParent = event.target.closest("[data-tabster]");
2615
+ if (event.key === "Escape" && focusGroupParent) {
2616
+ event.preventDefault();
2617
+ event.stopPropagation();
2618
+ focusGroupParent.focus();
2502
2619
  }
2503
2620
  props.onKeyDown?.(event);
2504
2621
  }, [
@@ -2522,9 +2639,9 @@ var MainSidebar = /* @__PURE__ */ forwardRef17(({ classNames, children, swipeToD
2522
2639
  "data-state": state,
2523
2640
  "data-resizing": resizing ? "true" : "false",
2524
2641
  className: tx("main.sidebar", "main__sidebar", {}, classNames),
2525
- onKeyDown: handleKeyDown,
2642
+ onKeyDownCapture: handleKeyDown,
2526
2643
  ...state === "closed" && {
2527
- inert: "true"
2644
+ inert: true
2528
2645
  },
2529
2646
  ref
2530
2647
  }, children));
@@ -2600,9 +2717,7 @@ MainContent.displayName = MAIN_NAME;
2600
2717
  var MainOverlay = /* @__PURE__ */ forwardRef17(({ classNames, ...props }, forwardedRef) => {
2601
2718
  var _effect = _useSignals25();
2602
2719
  try {
2603
- const [isLg] = useMediaQuery("lg", {
2604
- ssr: false
2605
- });
2720
+ const [isLg] = useMediaQuery("lg");
2606
2721
  const { navigationSidebarState, setNavigationSidebarState, complementarySidebarState, setComplementarySidebarState } = useMainContext(MAIN_NAME);
2607
2722
  const { tx } = useThemeContext();
2608
2723
  return /* @__PURE__ */ React25.createElement("div", {
@@ -2640,7 +2755,7 @@ import { Slot as Slot9 } from "@radix-ui/react-slot";
2640
2755
  import React26, { forwardRef as forwardRef18 } from "react";
2641
2756
 
2642
2757
  // src/hooks/useSafeCollisionPadding.ts
2643
- import { useMemo as useMemo3 } from "react";
2758
+ import { useMemo as useMemo4 } from "react";
2644
2759
  var propIsNumber = (prop) => Number.isFinite(prop);
2645
2760
  var propsIsRecord = (prop) => !!(prop && typeof prop === "object");
2646
2761
  var safePadding = (propsPadding, safePadding2, side) => {
@@ -2648,7 +2763,7 @@ var safePadding = (propsPadding, safePadding2, side) => {
2648
2763
  };
2649
2764
  var useSafeCollisionPadding = (collisionPadding) => {
2650
2765
  const { safeAreaPadding } = useThemeContext();
2651
- return useMemo3(() => ({
2766
+ return useMemo4(() => ({
2652
2767
  top: safePadding(collisionPadding, safeAreaPadding, "top"),
2653
2768
  right: safePadding(collisionPadding, safeAreaPadding, "right"),
2654
2769
  bottom: safePadding(collisionPadding, safeAreaPadding, "bottom"),
@@ -2671,6 +2786,7 @@ var ContextMenuContent = /* @__PURE__ */ forwardRef18(({ classNames, children, c
2671
2786
  const safeCollisionPadding = useSafeCollisionPadding(collisionPadding);
2672
2787
  return /* @__PURE__ */ React26.createElement(ContextMenuPrimitive.Content, {
2673
2788
  ...props,
2789
+ "data-arrow-keys": "up down",
2674
2790
  collisionPadding: safeCollisionPadding,
2675
2791
  className: tx("menu.content", "menu", {
2676
2792
  elevation
@@ -2788,7 +2904,7 @@ import { createMenuScope } from "@radix-ui/react-menu";
2788
2904
  import { Primitive as Primitive10 } from "@radix-ui/react-primitive";
2789
2905
  import { Slot as Slot10 } from "@radix-ui/react-slot";
2790
2906
  import { useControllableState as useControllableState5 } from "@radix-ui/react-use-controllable-state";
2791
- import React27, { useRef as useRef3, useCallback as useCallback8, forwardRef as forwardRef19, useEffect as useEffect6 } from "react";
2907
+ import React27, { forwardRef as forwardRef19, useCallback as useCallback10, useEffect as useEffect7, useRef as useRef3 } from "react";
2792
2908
  var DROPDOWN_MENU_NAME = "DropdownMenu";
2793
2909
  var [createDropdownMenuContext, createDropdownMenuScope] = createContextScope3(DROPDOWN_MENU_NAME, [
2794
2910
  createMenuScope
@@ -2813,7 +2929,7 @@ var DropdownMenuRoot = (props) => {
2813
2929
  contentId: useId3(),
2814
2930
  open,
2815
2931
  onOpenChange: setOpen,
2816
- onOpenToggle: useCallback8(() => setOpen((prevOpen) => !prevOpen), [
2932
+ onOpenToggle: useCallback10(() => setOpen((prevOpen) => !prevOpen), [
2817
2933
  setOpen
2818
2934
  ]),
2819
2935
  modal
@@ -2850,6 +2966,7 @@ var DropdownMenuTrigger = /* @__PURE__ */ forwardRef19((props, forwardedRef) =>
2850
2966
  disabled,
2851
2967
  ...triggerProps,
2852
2968
  ref: composeRefs(forwardedRef, context.triggerRef),
2969
+ "data-arrow-keys": "down",
2853
2970
  onPointerDown: composeEventHandlers2(props.onPointerDown, (event) => {
2854
2971
  if (!disabled && event.button === 0 && event.ctrlKey === false) {
2855
2972
  context.onOpenToggle();
@@ -2892,7 +3009,7 @@ var DropdownMenuVirtualTrigger = (props) => {
2892
3009
  const { __scopeDropdownMenu, virtualRef } = props;
2893
3010
  const context = useDropdownMenuContext(VIRTUAL_TRIGGER_NAME, __scopeDropdownMenu);
2894
3011
  const menuScope = useMenuScope(__scopeDropdownMenu);
2895
- useEffect6(() => {
3012
+ useEffect7(() => {
2896
3013
  if (virtualRef.current) {
2897
3014
  context.triggerRef.current = virtualRef.current;
2898
3015
  }
@@ -2968,6 +3085,7 @@ var DropdownMenuContent = /* @__PURE__ */ forwardRef19((props, forwardedRef) =>
2968
3085
  hasInteractedOutsideRef.current = true;
2969
3086
  }
2970
3087
  }),
3088
+ "data-arrow-keys": "up down",
2971
3089
  className: tx("menu.content", "menu", {
2972
3090
  elevation
2973
3091
  }, classNames),
@@ -3078,11 +3196,13 @@ var RADIO_ITEM_NAME = "DropdownMenuRadioItem";
3078
3196
  var DropdownMenuRadioItem = /* @__PURE__ */ forwardRef19((props, forwardedRef) => {
3079
3197
  var _effect = _useSignals27();
3080
3198
  try {
3081
- const { __scopeDropdownMenu, ...radioItemProps } = props;
3199
+ const { __scopeDropdownMenu, classNames, ...itemProps } = props;
3082
3200
  const menuScope = useMenuScope(__scopeDropdownMenu);
3083
- return /* @__PURE__ */ React27.createElement(MenuPrimitive.RadioItem, {
3201
+ const { tx } = useThemeContext();
3202
+ return /* @__PURE__ */ React27.createElement(MenuPrimitive.Item, {
3084
3203
  ...menuScope,
3085
- ...radioItemProps,
3204
+ ...itemProps,
3205
+ className: tx("menu.item", "menu__item", {}, classNames),
3086
3206
  ref: forwardedRef
3087
3207
  });
3088
3208
  } finally {
@@ -3336,7 +3456,7 @@ import { Primitive as Primitive12 } from "@radix-ui/react-primitive";
3336
3456
  import { Slot as Slot12 } from "@radix-ui/react-slot";
3337
3457
  import { useControllableState as useControllableState6 } from "@radix-ui/react-use-controllable-state";
3338
3458
  import { hideOthers } from "aria-hidden";
3339
- import React29, { forwardRef as forwardRef21, useRef as useRef4, useCallback as useCallback9, useState as useState8, useEffect as useEffect7 } from "react";
3459
+ import React29, { forwardRef as forwardRef21, useCallback as useCallback11, useEffect as useEffect8, useRef as useRef4, useState as useState9 } from "react";
3340
3460
  import { RemoveScroll } from "react-remove-scroll";
3341
3461
  var POPOVER_NAME = "Popover";
3342
3462
  var [createPopoverContext, createPopoverScope] = createContextScope4(POPOVER_NAME, [
@@ -3350,7 +3470,7 @@ var PopoverRoot = (props) => {
3350
3470
  const { __scopePopover, children, open: openProp, defaultOpen, onOpenChange, modal = false } = props;
3351
3471
  const popperScope = usePopperScope2(__scopePopover);
3352
3472
  const triggerRef = useRef4(null);
3353
- const [hasCustomAnchor, setHasCustomAnchor] = useState8(false);
3473
+ const [hasCustomAnchor, setHasCustomAnchor] = useState9(false);
3354
3474
  const [open = false, setOpen] = useControllableState6({
3355
3475
  prop: openProp,
3356
3476
  defaultProp: defaultOpen,
@@ -3362,12 +3482,12 @@ var PopoverRoot = (props) => {
3362
3482
  triggerRef,
3363
3483
  open,
3364
3484
  onOpenChange: setOpen,
3365
- onOpenToggle: useCallback9(() => setOpen((prevOpen) => !prevOpen), [
3485
+ onOpenToggle: useCallback11(() => setOpen((prevOpen) => !prevOpen), [
3366
3486
  setOpen
3367
3487
  ]),
3368
3488
  hasCustomAnchor,
3369
- onCustomAnchorAdd: useCallback9(() => setHasCustomAnchor(true), []),
3370
- onCustomAnchorRemove: useCallback9(() => setHasCustomAnchor(false), []),
3489
+ onCustomAnchorAdd: useCallback11(() => setHasCustomAnchor(true), []),
3490
+ onCustomAnchorRemove: useCallback11(() => setHasCustomAnchor(false), []),
3371
3491
  modal
3372
3492
  }, children));
3373
3493
  } finally {
@@ -3383,7 +3503,7 @@ var PopoverAnchor = /* @__PURE__ */ forwardRef21((props, forwardedRef) => {
3383
3503
  const context = usePopoverContext(ANCHOR_NAME, __scopePopover);
3384
3504
  const popperScope = usePopperScope2(__scopePopover);
3385
3505
  const { onCustomAnchorAdd, onCustomAnchorRemove } = context;
3386
- useEffect7(() => {
3506
+ useEffect8(() => {
3387
3507
  onCustomAnchorAdd();
3388
3508
  return () => onCustomAnchorRemove();
3389
3509
  }, [
@@ -3434,7 +3554,7 @@ var PopoverVirtualTrigger = (props) => {
3434
3554
  const { __scopePopover, virtualRef } = props;
3435
3555
  const context = usePopoverContext(VIRTUAL_TRIGGER_NAME2, __scopePopover);
3436
3556
  const popperScope = usePopperScope2(__scopePopover);
3437
- useEffect7(() => {
3557
+ useEffect8(() => {
3438
3558
  if (virtualRef.current) {
3439
3559
  context.triggerRef.current = virtualRef.current;
3440
3560
  }
@@ -3499,7 +3619,7 @@ var PopoverContentModal = /* @__PURE__ */ forwardRef21((props, forwardedRef) =>
3499
3619
  const contentRef = useRef4(null);
3500
3620
  const composedRefs = useComposedRefs2(forwardedRef, contentRef);
3501
3621
  const isRightClickOutsideRef = useRef4(false);
3502
- useEffect7(() => {
3622
+ useEffect8(() => {
3503
3623
  const content = contentRef.current;
3504
3624
  if (content) {
3505
3625
  return hideOthers(content);
@@ -3620,7 +3740,7 @@ var PopoverContentImpl = /* @__PURE__ */ forwardRef21((props, forwardedRef) => {
3620
3740
  ref: forwardedRef,
3621
3741
  style: {
3622
3742
  ...contentProps.style,
3623
- // re-namespace exposed content custom properties
3743
+ // Re-namespace exposed content custom properties.
3624
3744
  ...{
3625
3745
  "--radix-popover-content-transform-origin": "var(--radix-popper-transform-origin)",
3626
3746
  "--radix-popover-content-available-width": "var(--radix-popper-available-width)",
@@ -3733,7 +3853,7 @@ var Status = /* @__PURE__ */ forwardRef22(({ classNames, children, progress = 0,
3733
3853
 
3734
3854
  // src/components/ScrollArea/ScrollArea.tsx
3735
3855
  import { useSignals as _useSignals31 } from "@preact-signals/safe-react/tracking";
3736
- import { Root as ScrollAreaPrimitiveRoot, Viewport as ScrollAreaPrimitiveViewport, Scrollbar as ScrollAreaPrimitiveScrollbar, Thumb as ScrollAreaPrimitiveThumb, Corner as ScrollAreaPrimitiveCorner } from "@radix-ui/react-scroll-area";
3856
+ import { Corner as ScrollAreaPrimitiveCorner, Root as ScrollAreaPrimitiveRoot, Scrollbar as ScrollAreaPrimitiveScrollbar, Thumb as ScrollAreaPrimitiveThumb, Viewport as ScrollAreaPrimitiveViewport } from "@radix-ui/react-scroll-area";
3737
3857
  import React31, { forwardRef as forwardRef23 } from "react";
3738
3858
  var ScrollAreaRoot = /* @__PURE__ */ forwardRef23(({ classNames, ...props }, forwardedRef) => {
3739
3859
  var _effect = _useSignals31();
@@ -3811,7 +3931,6 @@ var ScrollArea = {
3811
3931
 
3812
3932
  // src/components/Select/Select.tsx
3813
3933
  import { useSignals as _useSignals32 } from "@preact-signals/safe-react/tracking";
3814
- import { CaretDown as CaretDown2, CaretUp } from "@phosphor-icons/react";
3815
3934
  import * as SelectPrimitive from "@radix-ui/react-select";
3816
3935
  import React32, { forwardRef as forwardRef24 } from "react";
3817
3936
  var SelectRoot = SelectPrimitive.Root;
@@ -3822,7 +3941,6 @@ var SelectPortal = SelectPrimitive.Portal;
3822
3941
  var SelectTriggerButton = /* @__PURE__ */ forwardRef24(({ children, placeholder, ...props }, forwardedRef) => {
3823
3942
  var _effect = _useSignals32();
3824
3943
  try {
3825
- const { tx } = useThemeContext();
3826
3944
  return /* @__PURE__ */ React32.createElement(SelectPrimitive.Trigger, {
3827
3945
  asChild: true,
3828
3946
  ref: forwardedRef
@@ -3832,9 +3950,9 @@ var SelectTriggerButton = /* @__PURE__ */ forwardRef24(({ children, placeholder,
3832
3950
  className: "w-1 flex-1"
3833
3951
  }), /* @__PURE__ */ React32.createElement(SelectPrimitive.Icon, {
3834
3952
  asChild: true
3835
- }, /* @__PURE__ */ React32.createElement(CaretDown2, {
3836
- className: tx("select.triggerIcon", "select__trigger__icon", {}),
3837
- weight: "bold"
3953
+ }, /* @__PURE__ */ React32.createElement(Icon, {
3954
+ size: 3,
3955
+ icon: "ph--caret-down--bold"
3838
3956
  }))));
3839
3957
  } finally {
3840
3958
  _effect.f();
@@ -3848,6 +3966,7 @@ var SelectContent = /* @__PURE__ */ forwardRef24(({ classNames, children, collis
3848
3966
  const safeCollisionPadding = useSafeCollisionPadding(collisionPadding);
3849
3967
  return /* @__PURE__ */ React32.createElement(SelectPrimitive.Content, {
3850
3968
  ...props,
3969
+ "data-arrow-keys": "up down",
3851
3970
  collisionPadding: safeCollisionPadding,
3852
3971
  className: tx("select.content", "select__content", {
3853
3972
  elevation
@@ -3867,8 +3986,9 @@ var SelectScrollUpButton2 = /* @__PURE__ */ forwardRef24(({ classNames, children
3867
3986
  ...props,
3868
3987
  className: tx("select.scrollButton", "select__scroll-button--up", {}, classNames),
3869
3988
  ref: forwardedRef
3870
- }, children ?? /* @__PURE__ */ React32.createElement(CaretUp, {
3871
- weight: "bold"
3989
+ }, children ?? /* @__PURE__ */ React32.createElement(Icon, {
3990
+ size: 3,
3991
+ icon: "ph--caret-up--bold"
3872
3992
  }));
3873
3993
  } finally {
3874
3994
  _effect.f();
@@ -3882,8 +4002,9 @@ var SelectScrollDownButton2 = /* @__PURE__ */ forwardRef24(({ classNames, childr
3882
4002
  ...props,
3883
4003
  className: tx("select.scrollButton", "select__scroll-button--down", {}, classNames),
3884
4004
  ref: forwardedRef
3885
- }, children ?? /* @__PURE__ */ React32.createElement(CaretDown2, {
3886
- weight: "bold"
4005
+ }, children ?? /* @__PURE__ */ React32.createElement(Icon, {
4006
+ size: 3,
4007
+ icon: "ph--caret-down--bold"
3887
4008
  }));
3888
4009
  } finally {
3889
4010
  _effect.f();
@@ -4044,7 +4165,7 @@ var Tag = /* @__PURE__ */ forwardRef26(({ asChild, palette = "neutral", classNam
4044
4165
  import { useSignals as _useSignals35 } from "@preact-signals/safe-react/tracking";
4045
4166
  import { Primitive as Primitive14 } from "@radix-ui/react-primitive";
4046
4167
  import { Slot as Slot14 } from "@radix-ui/react-slot";
4047
- 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";
4168
+ 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";
4048
4169
  import React35, { forwardRef as forwardRef27 } from "react";
4049
4170
  var ToastProvider = ToastProviderPrimitive;
4050
4171
  var ToastViewport = /* @__PURE__ */ forwardRef27(({ classNames, ...props }, forwardedRef) => {
@@ -4147,18 +4268,27 @@ var Toast = {
4147
4268
  // src/components/Toolbar/Toolbar.tsx
4148
4269
  import { useSignals as _useSignals36 } from "@preact-signals/safe-react/tracking";
4149
4270
  import * as ToolbarPrimitive from "@radix-ui/react-toolbar";
4150
- import React36, { forwardRef as forwardRef28 } from "react";
4151
- var ToolbarRoot = /* @__PURE__ */ forwardRef28(({ classNames, children, layoutManaged, ...props }, forwardedRef) => {
4271
+ import React36, { Fragment, forwardRef as forwardRef28 } from "react";
4272
+ var ToolbarRoot = /* @__PURE__ */ forwardRef28(({ classNames, children, layoutManaged, textBlockWidth: textBlockWidthParam, disabled, ...props }, forwardedRef) => {
4152
4273
  var _effect = _useSignals36();
4153
4274
  try {
4154
4275
  const { tx } = useThemeContext();
4276
+ const InnerRoot = textBlockWidthParam ? "div" : Fragment;
4277
+ const innerRootProps = textBlockWidthParam ? {
4278
+ role: "none",
4279
+ className: tx("toolbar.inner", "toolbar", {
4280
+ layoutManaged
4281
+ }, classNames)
4282
+ } : {};
4155
4283
  return /* @__PURE__ */ React36.createElement(ToolbarPrimitive.Root, {
4156
4284
  ...props,
4285
+ "data-arrow-keys": props.orientation === "vertical" ? "up down" : "left right",
4157
4286
  className: tx("toolbar.root", "toolbar", {
4158
- layoutManaged
4287
+ layoutManaged,
4288
+ disabled
4159
4289
  }, classNames),
4160
4290
  ref: forwardedRef
4161
- }, children);
4291
+ }, /* @__PURE__ */ React36.createElement(InnerRoot, innerRootProps, children));
4162
4292
  } finally {
4163
4293
  _effect.f();
4164
4294
  }
@@ -4318,13 +4448,13 @@ export {
4318
4448
  AnchoredOverflow,
4319
4449
  useAvatarContext,
4320
4450
  Avatar,
4451
+ Icon,
4321
4452
  Link,
4322
4453
  Breadcrumb,
4323
4454
  BUTTON_GROUP_NAME,
4324
4455
  useButtonGroupContext,
4325
4456
  Button,
4326
4457
  ButtonGroup,
4327
- Icon,
4328
4458
  createTooltipScope,
4329
4459
  useTooltipContext,
4330
4460
  Tooltip,
@@ -4332,8 +4462,11 @@ export {
4332
4462
  Toggle,
4333
4463
  ToggleGroup,
4334
4464
  ToggleGroupItem,
4465
+ ToggleGroupIconItem,
4335
4466
  useClipboard,
4467
+ Domino,
4336
4468
  hasIosKeyboard,
4469
+ usePx,
4337
4470
  DensityContext,
4338
4471
  DensityProvider,
4339
4472
  ElevationContext,
@@ -4344,8 +4477,8 @@ export {
4344
4477
  Dialog,
4345
4478
  AlertDialog,
4346
4479
  Input,
4347
- LIST_NAME,
4348
4480
  LIST_ITEM_NAME,
4481
+ LIST_NAME,
4349
4482
  useListContext,
4350
4483
  useListItemContext,
4351
4484
  List,
@@ -4375,4 +4508,4 @@ export {
4375
4508
  Toast,
4376
4509
  Toolbar
4377
4510
  };
4378
- //# sourceMappingURL=chunk-TYVQJ4KW.mjs.map
4511
+ //# sourceMappingURL=chunk-OJLL6E2Z.mjs.map