@dxos/react-ui 0.8.2-main.85fa0e5 → 0.8.2-main.9f6ec58

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 (132) hide show
  1. package/dist/lib/browser/chunk-5Y5JI6KC.mjs +4355 -0
  2. package/dist/lib/browser/chunk-5Y5JI6KC.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +75 -2988
  4. package/dist/lib/browser/index.mjs.map +4 -4
  5. package/dist/lib/browser/meta.json +1 -1
  6. package/dist/lib/browser/testing/index.mjs +85 -0
  7. package/dist/lib/browser/testing/index.mjs.map +7 -0
  8. package/dist/lib/node/chunk-KMS7RFL7.cjs +4340 -0
  9. package/dist/lib/node/chunk-KMS7RFL7.cjs.map +7 -0
  10. package/dist/lib/node/index.cjs +71 -2948
  11. package/dist/lib/node/index.cjs.map +4 -4
  12. package/dist/lib/node/meta.json +1 -1
  13. package/dist/lib/node/testing/index.cjs +114 -0
  14. package/dist/lib/node/testing/index.cjs.map +7 -0
  15. package/dist/lib/node-esm/chunk-ANVE7WX5.mjs +4357 -0
  16. package/dist/lib/node-esm/chunk-ANVE7WX5.mjs.map +7 -0
  17. package/dist/lib/node-esm/index.mjs +74 -2988
  18. package/dist/lib/node-esm/index.mjs.map +4 -4
  19. package/dist/lib/node-esm/meta.json +1 -1
  20. package/dist/lib/node-esm/testing/index.mjs +86 -0
  21. package/dist/lib/node-esm/testing/index.mjs.map +7 -0
  22. package/dist/types/src/components/Avatars/Avatar.d.ts +2 -2
  23. package/dist/types/src/components/Avatars/Avatar.d.ts.map +1 -1
  24. package/dist/types/src/components/Avatars/Avatar.stories.d.ts +2 -2
  25. package/dist/types/src/components/Avatars/Avatar.stories.d.ts.map +1 -1
  26. package/dist/types/src/components/Avatars/AvatarGroup.stories.d.ts +0 -1
  27. package/dist/types/src/components/Avatars/AvatarGroup.stories.d.ts.map +1 -1
  28. package/dist/types/src/components/Buttons/Button.stories.d.ts +10 -44
  29. package/dist/types/src/components/Buttons/Button.stories.d.ts.map +1 -1
  30. package/dist/types/src/components/Buttons/IconButton.d.ts +4 -6
  31. package/dist/types/src/components/Buttons/IconButton.d.ts.map +1 -1
  32. package/dist/types/src/components/Buttons/IconButton.stories.d.ts +7 -6
  33. package/dist/types/src/components/Buttons/IconButton.stories.d.ts.map +1 -1
  34. package/dist/types/src/components/Buttons/Toggle.stories.d.ts.map +1 -1
  35. package/dist/types/src/components/Buttons/ToggleGroup.stories.d.ts +1 -4
  36. package/dist/types/src/components/Buttons/ToggleGroup.stories.d.ts.map +1 -1
  37. package/dist/types/src/components/Clipboard/ClipboardProvider.d.ts.map +1 -1
  38. package/dist/types/src/components/Clipboard/CopyButton.d.ts +2 -1
  39. package/dist/types/src/components/Clipboard/CopyButton.d.ts.map +1 -1
  40. package/dist/types/src/components/Clipboard/index.d.ts +2 -2
  41. package/dist/types/src/components/DensityProvider/DensityProvider.d.ts.map +1 -1
  42. package/dist/types/src/components/Dialogs/AlertDialog.stories.d.ts +2 -2
  43. package/dist/types/src/components/Dialogs/AlertDialog.stories.d.ts.map +1 -1
  44. package/dist/types/src/components/Dialogs/Dialog.d.ts +2 -2
  45. package/dist/types/src/components/Dialogs/Dialog.d.ts.map +1 -1
  46. package/dist/types/src/components/Dialogs/Dialog.stories.d.ts +2 -2
  47. package/dist/types/src/components/Dialogs/Dialog.stories.d.ts.map +1 -1
  48. package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts.map +1 -1
  49. package/dist/types/src/components/Input/Input.d.ts +1 -1
  50. package/dist/types/src/components/Input/Input.d.ts.map +1 -1
  51. package/dist/types/src/components/Input/Input.stories.d.ts +33 -159
  52. package/dist/types/src/components/Input/Input.stories.d.ts.map +1 -1
  53. package/dist/types/src/components/Lists/ListDropIndicator.d.ts.map +1 -1
  54. package/dist/types/src/components/Lists/Tree.stories.d.ts.map +1 -1
  55. package/dist/types/src/components/Lists/TreeDropIndicator.d.ts.map +1 -1
  56. package/dist/types/src/components/Lists/Treegrid.stories.d.ts +1 -1
  57. package/dist/types/src/components/Lists/Treegrid.stories.d.ts.map +1 -1
  58. package/dist/types/src/components/Main/Main.d.ts.map +1 -1
  59. package/dist/types/src/components/Main/Main.stories.d.ts.map +1 -1
  60. package/dist/types/src/components/Main/useSwipeToDismiss.d.ts.map +1 -1
  61. package/dist/types/src/components/Message/Message.stories.d.ts +2 -2
  62. package/dist/types/src/components/Message/Message.stories.d.ts.map +1 -1
  63. package/dist/types/src/components/Popover/Popover.d.ts +13 -5
  64. package/dist/types/src/components/Popover/Popover.d.ts.map +1 -1
  65. package/dist/types/src/components/Popover/Popover.stories.d.ts +5 -1
  66. package/dist/types/src/components/Popover/Popover.stories.d.ts.map +1 -1
  67. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts.map +1 -1
  68. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts.map +1 -1
  69. package/dist/types/src/components/Status/Status.stories.d.ts.map +1 -1
  70. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts.map +1 -1
  71. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts +1 -1
  72. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts.map +1 -1
  73. package/dist/types/src/components/Toast/Toast.stories.d.ts +2 -2
  74. package/dist/types/src/components/Toast/Toast.stories.d.ts.map +1 -1
  75. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts.map +1 -1
  76. package/dist/types/src/components/Tooltip/Tooltip.d.ts +92 -20
  77. package/dist/types/src/components/Tooltip/Tooltip.d.ts.map +1 -1
  78. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts +40 -17
  79. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts.map +1 -1
  80. package/dist/types/src/hooks/useDensityContext.d.ts.map +1 -1
  81. package/dist/types/src/hooks/useElevationContext.d.ts.map +1 -1
  82. package/dist/types/src/hooks/useIconHref.d.ts.map +1 -1
  83. package/dist/types/src/hooks/useSafeCollisionPadding.d.ts.map +1 -1
  84. package/dist/types/src/hooks/useVisualViewport.d.ts.map +1 -1
  85. package/dist/types/src/playground/Controls.stories.d.ts +1 -1
  86. package/dist/types/src/playground/Controls.stories.d.ts.map +1 -1
  87. package/dist/types/src/playground/Custom.stories.d.ts +8 -0
  88. package/dist/types/src/playground/Custom.stories.d.ts.map +1 -0
  89. package/dist/types/src/testing/decorators/index.d.ts +1 -1
  90. package/dist/types/src/testing/decorators/index.d.ts.map +1 -1
  91. package/dist/types/src/testing/decorators/{withVariants.d.ts → withSurfaceVariantsLayout.d.ts} +2 -3
  92. package/dist/types/src/testing/decorators/withSurfaceVariantsLayout.d.ts.map +1 -0
  93. package/dist/types/tsconfig.tsbuildinfo +1 -1
  94. package/package.json +25 -15
  95. package/src/components/Avatars/Avatar.stories.tsx +27 -27
  96. package/src/components/Avatars/Avatar.tsx +7 -8
  97. package/src/components/Avatars/AvatarGroup.stories.tsx +4 -5
  98. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +2 -2
  99. package/src/components/Buttons/Button.stories.tsx +20 -15
  100. package/src/components/Buttons/IconButton.stories.tsx +9 -10
  101. package/src/components/Buttons/IconButton.tsx +9 -38
  102. package/src/components/Buttons/Toggle.stories.tsx +2 -2
  103. package/src/components/Buttons/ToggleGroup.stories.tsx +3 -7
  104. package/src/components/Clipboard/CopyButton.tsx +22 -24
  105. package/src/components/Dialogs/AlertDialog.stories.tsx +4 -11
  106. package/src/components/Dialogs/Dialog.stories.tsx +3 -3
  107. package/src/components/Dialogs/Dialog.tsx +7 -4
  108. package/src/components/Input/Input.stories.tsx +69 -58
  109. package/src/components/Input/Input.tsx +1 -0
  110. package/src/components/Lists/Tree.stories.tsx +2 -2
  111. package/src/components/Lists/Treegrid.stories.tsx +12 -12
  112. package/src/components/Main/Main.stories.tsx +2 -2
  113. package/src/components/Main/Main.tsx +1 -0
  114. package/src/components/Menus/ContextMenu.stories.tsx +2 -2
  115. package/src/components/Menus/DropdownMenu.stories.tsx +2 -2
  116. package/src/components/Message/Message.stories.tsx +3 -3
  117. package/src/components/Popover/Popover.stories.tsx +2 -2
  118. package/src/components/Popover/Popover.tsx +5 -4
  119. package/src/components/ScrollArea/ScrollArea.stories.tsx +4 -4
  120. package/src/components/ScrollArea/ScrollArea.tsx +3 -0
  121. package/src/components/Select/Select.stories.tsx +2 -2
  122. package/src/components/Toast/Toast.stories.tsx +15 -10
  123. package/src/components/Toolbar/Toolbar.stories.tsx +2 -2
  124. package/src/components/Tooltip/Tooltip.stories.tsx +43 -18
  125. package/src/components/Tooltip/Tooltip.tsx +733 -58
  126. package/src/playground/Controls.stories.tsx +4 -4
  127. package/src/playground/Custom.stories.tsx +137 -0
  128. package/src/playground/Typography.stories.tsx +2 -2
  129. package/src/testing/decorators/index.ts +1 -1
  130. package/src/testing/decorators/withSurfaceVariantsLayout.tsx +53 -0
  131. package/dist/types/src/testing/decorators/withVariants.d.ts.map +0 -1
  132. package/src/testing/decorators/withVariants.tsx +0 -45
@@ -1,2993 +1,78 @@
1
+ import {
2
+ AlertDialog,
3
+ AnchoredOverflow,
4
+ Avatar,
5
+ BUTTON_GROUP_NAME,
6
+ Breadcrumb,
7
+ Button,
8
+ ButtonGroup,
9
+ Clipboard,
10
+ ContextMenu,
11
+ DensityContext,
12
+ DensityProvider,
13
+ Dialog,
14
+ DropdownMenu,
15
+ ElevationContext,
16
+ ElevationProvider,
17
+ Icon,
18
+ IconButton,
19
+ Input,
20
+ LIST_ITEM_NAME,
21
+ LIST_NAME,
22
+ Link,
23
+ List,
24
+ ListItem,
25
+ Main,
26
+ Message,
27
+ Popover,
28
+ ScrollArea,
29
+ Select,
30
+ Separator,
31
+ Status,
32
+ Tag,
33
+ ThemeContext,
34
+ ThemeProvider,
35
+ Toast,
36
+ Toggle,
37
+ ToggleGroup,
38
+ ToggleGroupItem,
39
+ Toolbar,
40
+ Tooltip,
41
+ Tree,
42
+ TreeItem,
43
+ Treegrid,
44
+ createDropdownMenuScope,
45
+ createPopoverScope,
46
+ createTooltipScope,
47
+ hasIosKeyboard,
48
+ initialSafeArea,
49
+ isLabel,
50
+ toLocalizedString,
51
+ useAvatarContext,
52
+ useButtonGroupContext,
53
+ useClipboard,
54
+ useDensityContext,
55
+ useDropdownMenuContext,
56
+ useDropdownMenuMenuScope,
57
+ useElevationContext,
58
+ useIconHref,
59
+ useLandmarkMover,
60
+ useListContext,
61
+ useListItemContext,
62
+ useMainContext,
63
+ useSafeArea,
64
+ useSidebars,
65
+ useThemeContext,
66
+ useTooltipContext,
67
+ useTranslation,
68
+ useTranslationsContext,
69
+ useVisualViewport
70
+ } from "./chunk-5Y5JI6KC.mjs";
71
+
1
72
  // packages/ui/react-ui/src/index.ts
2
73
  import { Trans } from "react-i18next";
3
74
  export * from "@dxos/react-hooks";
4
75
  export * from "@dxos/react-ui-types";
5
-
6
- // packages/ui/react-ui/src/components/AnchoredOverflow/AnchoredOverflow.tsx
7
- import { Primitive } from "@radix-ui/react-primitive";
8
- import { Slot } from "@radix-ui/react-slot";
9
- import React2, { forwardRef } from "react";
10
-
11
- // packages/ui/react-ui/src/hooks/useDensityContext.ts
12
- import { useContext } from "react";
13
- var useDensityContext = (propsDensity) => {
14
- const { density } = useContext(DensityContext);
15
- return propsDensity ?? density;
16
- };
17
-
18
- // packages/ui/react-ui/src/hooks/useElevationContext.ts
19
- import { useContext as useContext2 } from "react";
20
- var useElevationContext = (propsElevation) => {
21
- const { elevation } = useContext2(ElevationContext);
22
- return propsElevation ?? elevation;
23
- };
24
-
25
- // packages/ui/react-ui/src/hooks/useThemeContext.ts
26
- import { useContext as useContext3 } from "react";
27
- import { raise } from "@dxos/debug";
28
- var useThemeContext = () => useContext3(ThemeContext) ?? raise(new Error("Missing ThemeContext"));
29
-
30
- // packages/ui/react-ui/src/hooks/useIconHref.ts
31
- var ICONS_URL = "/icons.svg";
32
- var useIconHref = (icon) => {
33
- const { noCache } = useThemeContext();
34
- const url = noCache ? `${ICONS_URL}?nocache=${(/* @__PURE__ */ new Date()).getMinutes()}` : ICONS_URL;
35
- return icon ? `${url}#${icon}` : void 0;
36
- };
37
-
38
- // packages/ui/react-ui/src/hooks/useSafeArea.ts
39
- import { useCallback, useState } from "react";
40
- import { useResize } from "@dxos/react-hooks";
41
- var initialSafeArea = {
42
- top: NaN,
43
- right: NaN,
44
- bottom: NaN,
45
- left: NaN
46
- };
47
- var useSafeArea = () => {
48
- const [padding, setPadding] = useState(initialSafeArea);
49
- const handleResize = useCallback(() => {
50
- setPadding({
51
- top: parseFloat(getComputedStyle(document.documentElement).getPropertyValue("--safe-area-top")),
52
- right: parseFloat(getComputedStyle(document.documentElement).getPropertyValue("--safe-area-right")),
53
- bottom: parseFloat(getComputedStyle(document.documentElement).getPropertyValue("--safe-area-bottom")),
54
- left: parseFloat(getComputedStyle(document.documentElement).getPropertyValue("--safe-area-left"))
55
- });
56
- }, []);
57
- useResize(handleResize);
58
- return padding;
59
- };
60
-
61
- // packages/ui/react-ui/src/hooks/useTranslationsContext.ts
62
- import { useContext as useContext5 } from "react";
63
-
64
- // packages/ui/react-ui/src/components/ThemeProvider/TranslationsProvider.tsx
65
- import { enUS as dtLocaleEnUs } from "date-fns/locale";
66
- import i18Next from "i18next";
67
- import React, { useEffect, createContext, useState as useState2, Suspense, useContext as useContext4 } from "react";
68
- import { initReactI18next, useTranslation as useI18NextTranslation } from "react-i18next";
69
- var initialLng = "en-US";
70
- var initialNs = "dxos-common";
71
- var initialDtLocale = dtLocaleEnUs;
72
- var isLabel = (o) => typeof o === "string" || Array.isArray(o) && o.length === 2 && typeof o[0] === "string" && !!o[1] && typeof o[1] === "object" && "ns" in o[1] && typeof o[1].ns === "string";
73
- var toLocalizedString = (label, t) => Array.isArray(label) ? t(...label) : label;
74
- var resources = {
75
- [initialLng]: {
76
- [initialNs]: {
77
- "loading translations": "Loading translations\u2026"
78
- }
79
- }
80
- };
81
- void i18Next.use(initReactI18next).init({
82
- resources,
83
- lng: initialLng,
84
- defaultNS: initialNs,
85
- interpolation: {
86
- escapeValue: false
87
- }
88
- });
89
- var TranslationsContext = /* @__PURE__ */ createContext({
90
- appNs: initialNs,
91
- dtLocale: initialDtLocale
92
- });
93
- var useTranslation = (...args) => {
94
- const result = useI18NextTranslation(...args);
95
- const { dtLocale } = useContext4(TranslationsContext);
96
- return {
97
- ...result,
98
- dtLocale
99
- };
100
- };
101
- var TranslationsProvider = ({ fallback, resourceExtensions, children, appNs, dtLocale }) => {
102
- const [loaded, setLoaded] = useState2(false);
103
- useEffect(() => {
104
- setLoaded(false);
105
- if (resourceExtensions && resourceExtensions.length) {
106
- resourceExtensions.forEach((resource) => {
107
- Object.keys(resource).forEach((language) => {
108
- Object.keys(resource[language]).forEach((ns) => {
109
- i18Next.addResourceBundle(language, ns, resource[language][ns]);
110
- });
111
- });
112
- });
113
- }
114
- setLoaded(true);
115
- }, [
116
- resourceExtensions
117
- ]);
118
- return /* @__PURE__ */ React.createElement(TranslationsContext.Provider, {
119
- value: {
120
- appNs: appNs ?? initialNs,
121
- dtLocale: dtLocale ?? initialDtLocale
122
- }
123
- }, /* @__PURE__ */ React.createElement(Suspense, {
124
- fallback
125
- }, loaded ? children : fallback));
126
- };
127
-
128
- // packages/ui/react-ui/src/hooks/useTranslationsContext.ts
129
- var useTranslationsContext = () => useContext5(TranslationsContext);
130
-
131
- // packages/ui/react-ui/src/hooks/useVisualViewport.ts
132
- import { useCallback as useCallback2, useState as useState3 } from "react";
133
- import { useResize as useResize2 } from "@dxos/react-hooks";
134
- var useVisualViewport = (deps) => {
135
- const [width, setWidth] = useState3(null);
136
- const [height, setHeight] = useState3(null);
137
- const handleResize = useCallback2(() => {
138
- if (window.visualViewport) {
139
- setWidth(window.visualViewport.width);
140
- setHeight(window.visualViewport.height);
141
- }
142
- }, []);
143
- useResize2(handleResize);
144
- return {
145
- width,
146
- height
147
- };
148
- };
149
-
150
- // packages/ui/react-ui/src/components/AnchoredOverflow/AnchoredOverflow.tsx
151
- var AnchoredOverflowRoot = /* @__PURE__ */ forwardRef(({ asChild, classNames, children, ...props }, forwardedRef) => {
152
- const { tx } = useThemeContext();
153
- const Root5 = asChild ? Slot : Primitive.div;
154
- return /* @__PURE__ */ React2.createElement(Root5, {
155
- role: "none",
156
- ...props,
157
- className: tx("anchoredOverflow.root", "overflow-anchored", {}, classNames),
158
- ref: forwardedRef
159
- }, children);
160
- });
161
- var AnchoredOverflowAnchor = /* @__PURE__ */ forwardRef(({ asChild, classNames, children, ...props }, forwardedRef) => {
162
- const { tx } = useThemeContext();
163
- const Root5 = asChild ? Slot : Primitive.div;
164
- return /* @__PURE__ */ React2.createElement(Root5, {
165
- role: "none",
166
- ...props,
167
- className: tx("anchoredOverflow.anchor", "overflow-anchor", {}, classNames),
168
- ref: forwardedRef
169
- }, children);
170
- });
171
- var AnchoredOverflow = {
172
- Root: AnchoredOverflowRoot,
173
- Anchor: AnchoredOverflowAnchor
174
- };
175
-
176
- // packages/ui/react-ui/src/components/Avatars/Avatar.tsx
177
- import "@dxos/lit-ui/dx-avatar.pcss";
178
- import { createComponent } from "@lit/react";
179
- import { createContext as createContext2 } from "@radix-ui/react-context";
180
- import { Primitive as Primitive2 } from "@radix-ui/react-primitive";
181
- import { Slot as Slot2 } from "@radix-ui/react-slot";
182
- import React3, { forwardRef as forwardRef2 } from "react";
183
- import { DxAvatar as NaturalDxAvatar } from "@dxos/lit-ui";
184
- import { useId } from "@dxos/react-hooks";
185
- import { mx } from "@dxos/react-ui-theme";
186
- var AVATAR_NAME = "Avatar";
187
- var [AvatarProvider, useAvatarContext] = createContext2(AVATAR_NAME);
188
- var AvatarRoot = ({ children, labelId: propsLabelId, descriptionId: propsDescriptionId }) => {
189
- const labelId = useId("avatar__label", propsLabelId);
190
- const descriptionId = useId("avatar__description", propsDescriptionId);
191
- return /* @__PURE__ */ React3.createElement(AvatarProvider, {
192
- labelId,
193
- descriptionId
194
- }, children);
195
- };
196
- var DxAvatar = createComponent({
197
- tagName: "dx-avatar",
198
- elementClass: NaturalDxAvatar,
199
- react: React3
200
- });
201
- var AvatarContent = /* @__PURE__ */ forwardRef2(({ icon, classNames, ...props }, forwardedRef) => {
202
- const href = useIconHref(icon);
203
- const { labelId, descriptionId } = useAvatarContext("AvatarContent");
204
- return /* @__PURE__ */ React3.createElement(DxAvatar, {
205
- ...props,
206
- icon: href,
207
- "aria-labelledby": labelId,
208
- "aria-describedby": descriptionId,
209
- rootClassName: mx(classNames),
210
- ref: forwardedRef
211
- });
212
- });
213
- var AvatarLabel = /* @__PURE__ */ forwardRef2(({ asChild, srOnly, classNames, ...props }, forwardedRef) => {
214
- const Root5 = asChild ? Slot2 : Primitive2.span;
215
- const { tx } = useThemeContext();
216
- const { labelId } = useAvatarContext("AvatarLabel");
217
- return /* @__PURE__ */ React3.createElement(Root5, {
218
- ...props,
219
- id: labelId,
220
- ref: forwardedRef,
221
- className: tx("avatar.label", "avatar__label", {
222
- srOnly
223
- }, classNames)
224
- });
225
- });
226
- var AvatarDescription = /* @__PURE__ */ forwardRef2(({ asChild, srOnly, classNames, ...props }, forwardedRef) => {
227
- const Root5 = asChild ? Slot2 : Primitive2.span;
228
- const { tx } = useThemeContext();
229
- const { descriptionId } = useAvatarContext("AvatarDescription");
230
- return /* @__PURE__ */ React3.createElement(Root5, {
231
- ...props,
232
- id: descriptionId,
233
- ref: forwardedRef,
234
- className: tx("avatar.description", "avatar__description", {
235
- srOnly
236
- }, classNames)
237
- });
238
- });
239
- var Avatar = {
240
- Root: AvatarRoot,
241
- Content: AvatarContent,
242
- Label: AvatarLabel,
243
- Description: AvatarDescription
244
- };
245
-
246
- // packages/ui/react-ui/src/components/Breadcrumb/Breadcrumb.tsx
247
- import { Dot } from "@phosphor-icons/react";
248
- import { Primitive as Primitive4 } from "@radix-ui/react-primitive";
249
- import { Slot as Slot4 } from "@radix-ui/react-slot";
250
- import React5, { forwardRef as forwardRef4 } from "react";
251
-
252
- // packages/ui/react-ui/src/components/Link/Link.tsx
253
- import { Primitive as Primitive3 } from "@radix-ui/react-primitive";
254
- import { Slot as Slot3 } from "@radix-ui/react-slot";
255
- import React4, { forwardRef as forwardRef3 } from "react";
256
- var Link = /* @__PURE__ */ forwardRef3(({ asChild, variant, classNames, ...props }, forwardedRef) => {
257
- const { tx } = useThemeContext();
258
- const Root5 = asChild ? Slot3 : Primitive3.a;
259
- return /* @__PURE__ */ React4.createElement(Root5, {
260
- ...props,
261
- className: tx("link.root", "link", {
262
- variant
263
- }, classNames),
264
- ref: forwardedRef
265
- });
266
- });
267
-
268
- // packages/ui/react-ui/src/components/Breadcrumb/Breadcrumb.tsx
269
- var BreadcrumbRoot = /* @__PURE__ */ forwardRef4(({ asChild, classNames, ...props }, forwardedRef) => {
270
- const { tx } = useThemeContext();
271
- const Root5 = asChild ? Slot4 : Primitive4.div;
272
- return /* @__PURE__ */ React5.createElement(Root5, {
273
- role: "navigation",
274
- ...props,
275
- className: tx("breadcrumb.root", "breadcrumb", {}, classNames),
276
- ref: forwardedRef
277
- });
278
- });
279
- var BreadcrumbList = /* @__PURE__ */ forwardRef4(({ asChild, classNames, ...props }, forwardedRef) => {
280
- const { tx } = useThemeContext();
281
- const Root5 = asChild ? Slot4 : Primitive4.ol;
282
- return /* @__PURE__ */ React5.createElement(Root5, {
283
- role: "list",
284
- ...props,
285
- className: tx("breadcrumb.list", "breadcrumb__list", {}, classNames),
286
- ref: forwardedRef
287
- });
288
- });
289
- var BreadcrumbListItem = /* @__PURE__ */ forwardRef4(({ asChild, classNames, ...props }, forwardedRef) => {
290
- const { tx } = useThemeContext();
291
- const Root5 = asChild ? Slot4 : Primitive4.li;
292
- return /* @__PURE__ */ React5.createElement(Root5, {
293
- role: "listitem",
294
- ...props,
295
- className: tx("breadcrumb.listItem", "breadcrumb__list__item", {}, classNames),
296
- ref: forwardedRef
297
- });
298
- });
299
- var BreadcrumbLink = /* @__PURE__ */ forwardRef4(({ asChild, ...props }, forwardedRef) => {
300
- const Root5 = asChild ? Slot4 : Link;
301
- return /* @__PURE__ */ React5.createElement(Root5, {
302
- ...props,
303
- ref: forwardedRef
304
- });
305
- });
306
- var BreadcrumbCurrent = /* @__PURE__ */ forwardRef4(({ asChild, classNames, ...props }, forwardedRef) => {
307
- const { tx } = useThemeContext();
308
- const Root5 = asChild ? Slot4 : "h1";
309
- return /* @__PURE__ */ React5.createElement(Root5, {
310
- ...props,
311
- "aria-current": "page",
312
- className: tx("breadcrumb.current", "breadcrumb__item__heading--current", {}, classNames),
313
- ref: forwardedRef
314
- });
315
- });
316
- var BreadcrumbSeparator = ({ children, classNames, ...props }) => {
317
- const { tx } = useThemeContext();
318
- return /* @__PURE__ */ React5.createElement(Primitive4.span, {
319
- role: "separator",
320
- "aria-hidden": "true",
321
- ...props,
322
- className: tx("breadcrumb.separator", "breadcrumb__separator", {}, classNames)
323
- }, children ?? /* @__PURE__ */ React5.createElement(Dot, {
324
- weight: "bold"
325
- }));
326
- };
327
- var Breadcrumb = {
328
- Root: BreadcrumbRoot,
329
- List: BreadcrumbList,
330
- ListItem: BreadcrumbListItem,
331
- Link: BreadcrumbLink,
332
- Current: BreadcrumbCurrent,
333
- Separator: BreadcrumbSeparator
334
- };
335
-
336
- // packages/ui/react-ui/src/components/Buttons/Button.tsx
337
- import { createContext as createContext3 } from "@radix-ui/react-context";
338
- import { Primitive as Primitive5 } from "@radix-ui/react-primitive";
339
- import { Slot as Slot5 } from "@radix-ui/react-slot";
340
- import React6, { forwardRef as forwardRef5, memo } from "react";
341
- var BUTTON_GROUP_NAME = "ButtonGroup";
342
- var BUTTON_NAME = "Button";
343
- var [ButtonGroupProvider, useButtonGroupContext] = createContext3(BUTTON_GROUP_NAME, {
344
- inGroup: false
345
- });
346
- var Button = /* @__PURE__ */ memo(/* @__PURE__ */ forwardRef5(({ classNames, children, density: propsDensity, elevation: propsElevation, variant = "default", asChild, ...props }, ref) => {
347
- const { inGroup } = useButtonGroupContext(BUTTON_NAME);
348
- const { tx } = useThemeContext();
349
- const elevation = useElevationContext(propsElevation);
350
- const density = useDensityContext(propsDensity);
351
- const Root5 = asChild ? Slot5 : Primitive5.button;
352
- return /* @__PURE__ */ React6.createElement(Root5, {
353
- ref,
354
- ...props,
355
- "data-variant": variant,
356
- "data-density": density,
357
- "data-props": inGroup ? "grouped" : "",
358
- className: tx("button.root", "button", {
359
- variant,
360
- inGroup,
361
- disabled: props.disabled,
362
- density,
363
- elevation
364
- }, classNames),
365
- ...props.disabled && {
366
- disabled: true
367
- }
368
- }, children);
369
- }));
370
- Button.displayName = BUTTON_NAME;
371
- var ButtonGroup = /* @__PURE__ */ forwardRef5(({ children, elevation: propsElevation, classNames, asChild, ...props }, forwardedRef) => {
372
- const { tx } = useThemeContext();
373
- const elevation = useElevationContext(propsElevation);
374
- const Root5 = asChild ? Slot5 : Primitive5.div;
375
- return /* @__PURE__ */ React6.createElement(Root5, {
376
- role: "none",
377
- ...props,
378
- className: tx("button.group", "button-group", {
379
- elevation
380
- }, classNames),
381
- ref: forwardedRef
382
- }, /* @__PURE__ */ React6.createElement(ButtonGroupProvider, {
383
- inGroup: true
384
- }, children));
385
- });
386
- ButtonGroup.displayName = BUTTON_GROUP_NAME;
387
-
388
- // packages/ui/react-ui/src/components/Buttons/IconButton.tsx
389
- import React9, { forwardRef as forwardRef8, useState as useState4 } from "react";
390
-
391
- // packages/ui/react-ui/src/components/Icon/Icon.tsx
392
- import React7, { forwardRef as forwardRef6, memo as memo2 } from "react";
393
- var Icon = /* @__PURE__ */ memo2(/* @__PURE__ */ forwardRef6(({ icon, classNames, size, ...props }, forwardedRef) => {
394
- const { tx } = useThemeContext();
395
- const href = useIconHref(icon);
396
- return /* @__PURE__ */ React7.createElement("svg", {
397
- ...props,
398
- className: tx("icon.root", "icon", {
399
- size
400
- }, classNames),
401
- ref: forwardedRef
402
- }, /* @__PURE__ */ React7.createElement("use", {
403
- href
404
- }));
405
- }));
406
-
407
- // packages/ui/react-ui/src/components/Tooltip/Tooltip.tsx
408
- import { Provider as TooltipProviderPrimitive, Root as TooltipRootPrimitive, TooltipContent as TooltipContentPrimitive, TooltipTrigger as TooltipTriggerPrimitive, TooltipPortal as TooltipPortalPrimitive, TooltipArrow as TooltipArrowPrimitive } from "@radix-ui/react-tooltip";
409
- import React8, { forwardRef as forwardRef7 } from "react";
410
-
411
- // packages/ui/react-ui/src/hooks/useSafeCollisionPadding.ts
412
- import { useMemo } from "react";
413
- var propIsNumber = (prop) => Number.isFinite(prop);
414
- var propsIsRecord = (prop) => !!(prop && typeof prop === "object");
415
- var safePadding = (propsPadding, safePadding2, side) => {
416
- return (propIsNumber(safePadding2[side]) ? safePadding2[side] : 0) + (propIsNumber(propsPadding) ? propsPadding : propsIsRecord(propsPadding) ? propsPadding[side] ?? 0 : 0);
417
- };
418
- var useSafeCollisionPadding = (collisionPadding) => {
419
- const { safeAreaPadding } = useThemeContext();
420
- return useMemo(() => ({
421
- top: safePadding(collisionPadding, safeAreaPadding, "top"),
422
- right: safePadding(collisionPadding, safeAreaPadding, "right"),
423
- bottom: safePadding(collisionPadding, safeAreaPadding, "bottom"),
424
- left: safePadding(collisionPadding, safeAreaPadding, "left")
425
- }), [
426
- collisionPadding,
427
- safeAreaPadding
428
- ]);
429
- };
430
-
431
- // packages/ui/react-ui/src/components/Tooltip/Tooltip.tsx
432
- var TooltipProvider = TooltipProviderPrimitive;
433
- var TooltipRoot = TooltipRootPrimitive;
434
- var TooltipPortal = TooltipPortalPrimitive;
435
- var TooltipTrigger = TooltipTriggerPrimitive;
436
- var TooltipArrow = /* @__PURE__ */ forwardRef7(({ classNames, ...props }, forwardedRef) => {
437
- const { tx } = useThemeContext();
438
- return /* @__PURE__ */ React8.createElement(TooltipArrowPrimitive, {
439
- ...props,
440
- className: tx("tooltip.arrow", "tooltip__arrow", {}, classNames),
441
- ref: forwardedRef
442
- });
443
- });
444
- var TooltipContent = /* @__PURE__ */ forwardRef7(({ classNames, collisionPadding = 8, ...props }, forwardedRef) => {
445
- const { tx } = useThemeContext();
446
- const elevation = useElevationContext();
447
- const safeCollisionPadding = useSafeCollisionPadding(collisionPadding);
448
- return /* @__PURE__ */ React8.createElement(TooltipContentPrimitive, {
449
- sideOffset: 4,
450
- ...props,
451
- collisionPadding: safeCollisionPadding,
452
- className: tx("tooltip.content", "tooltip", {
453
- elevation
454
- }, classNames),
455
- ref: forwardedRef
456
- });
457
- });
458
- var Tooltip = {
459
- Provider: TooltipProvider,
460
- Root: TooltipRoot,
461
- Portal: TooltipPortal,
462
- Trigger: TooltipTrigger,
463
- Arrow: TooltipArrow,
464
- Content: TooltipContent
465
- };
466
-
467
- // packages/ui/react-ui/src/components/Buttons/IconButton.tsx
468
- var IconOnlyButton = /* @__PURE__ */ forwardRef8(({ noTooltip, tooltipPortal = true, tooltipZIndex: zIndex, tooltipSide, suppressNextTooltip, ...props }, forwardedRef) => {
469
- const [triggerTooltipOpen, setTriggerTooltipOpen] = useState4(false);
470
- if (noTooltip) {
471
- return /* @__PURE__ */ React9.createElement(LabelledIconButton, {
472
- ...props,
473
- ref: forwardedRef
474
- });
475
- }
476
- const content = /* @__PURE__ */ React9.createElement(Tooltip.Content, {
477
- ...zIndex && {
478
- style: {
479
- zIndex
480
- }
481
- },
482
- side: tooltipSide
483
- }, props.label, /* @__PURE__ */ React9.createElement(Tooltip.Arrow, null));
484
- return /* @__PURE__ */ React9.createElement(Tooltip.Root, {
485
- open: triggerTooltipOpen,
486
- onOpenChange: (nextOpen) => {
487
- if (suppressNextTooltip?.current) {
488
- setTriggerTooltipOpen(false);
489
- suppressNextTooltip.current = false;
490
- } else {
491
- setTriggerTooltipOpen(nextOpen);
492
- }
493
- }
494
- }, /* @__PURE__ */ React9.createElement(Tooltip.Trigger, {
495
- asChild: true
496
- }, /* @__PURE__ */ React9.createElement(LabelledIconButton, {
497
- ...props,
498
- ref: forwardedRef
499
- })), tooltipPortal ? /* @__PURE__ */ React9.createElement(Tooltip.Portal, null, content) : content);
500
- });
501
- var LabelledIconButton = /* @__PURE__ */ forwardRef8(({ icon, size, iconOnly, label, classNames, iconClassNames, caretDown, suppressNextTooltip, ...props }, forwardedRef) => {
502
- const { tx } = useThemeContext();
503
- return /* @__PURE__ */ React9.createElement(Button, {
504
- ...props,
505
- classNames: tx("iconButton.root", "iconButton", {}, classNames),
506
- ref: forwardedRef
507
- }, /* @__PURE__ */ React9.createElement(Icon, {
508
- icon,
509
- size,
510
- classNames: iconClassNames
511
- }), /* @__PURE__ */ React9.createElement("span", {
512
- className: iconOnly ? "sr-only" : void 0
513
- }, label), caretDown && /* @__PURE__ */ React9.createElement(Icon, {
514
- size: 3,
515
- icon: "ph--caret-down--bold"
516
- }));
517
- });
518
- var IconButton = /* @__PURE__ */ forwardRef8((props, forwardedRef) => props.iconOnly ? /* @__PURE__ */ React9.createElement(IconOnlyButton, {
519
- ...props,
520
- ref: forwardedRef
521
- }) : /* @__PURE__ */ React9.createElement(LabelledIconButton, {
522
- ...props,
523
- ref: forwardedRef
524
- }));
525
-
526
- // packages/ui/react-ui/src/components/Buttons/Toggle.tsx
527
- import { Toggle as TogglePrimitive } from "@radix-ui/react-toggle";
528
- import React10, { forwardRef as forwardRef9 } from "react";
529
- var Toggle = /* @__PURE__ */ forwardRef9(({ defaultPressed, pressed, onPressedChange, ...props }, forwardedRef) => {
530
- return /* @__PURE__ */ React10.createElement(TogglePrimitive, {
531
- defaultPressed,
532
- pressed,
533
- onPressedChange,
534
- asChild: true
535
- }, /* @__PURE__ */ React10.createElement(Button, {
536
- ...props,
537
- ref: forwardedRef
538
- }));
539
- });
540
-
541
- // packages/ui/react-ui/src/components/Buttons/ToggleGroup.tsx
542
- import { ToggleGroup as ToggleGroupPrimitive, ToggleGroupItem as ToggleGroupItemPrimitive } from "@radix-ui/react-toggle-group";
543
- import React11, { forwardRef as forwardRef10 } from "react";
544
- var ToggleGroup = /* @__PURE__ */ forwardRef10(({ classNames, children, ...props }, forwardedRef) => {
545
- return /* @__PURE__ */ React11.createElement(ToggleGroupPrimitive, {
546
- ...props,
547
- asChild: true
548
- }, /* @__PURE__ */ React11.createElement(ButtonGroup, {
549
- classNames,
550
- children,
551
- ref: forwardedRef
552
- }));
553
- });
554
- var ToggleGroupItem = /* @__PURE__ */ forwardRef10(({ variant, elevation, density, classNames, children, ...props }, forwardedRef) => {
555
- return /* @__PURE__ */ React11.createElement(ToggleGroupItemPrimitive, {
556
- ...props,
557
- asChild: true
558
- }, /* @__PURE__ */ React11.createElement(Button, {
559
- variant,
560
- elevation,
561
- density,
562
- classNames,
563
- children,
564
- ref: forwardedRef
565
- }));
566
- });
567
-
568
- // packages/ui/react-ui/src/components/Clipboard/ClipboardProvider.tsx
569
- import React12, { createContext as createContext4, useCallback as useCallback3, useContext as useContext6, useState as useState5 } from "react";
570
- var ClipboardContext = /* @__PURE__ */ createContext4({
571
- textValue: "",
572
- setTextValue: async (_) => {
573
- }
574
- });
575
- var useClipboard = () => useContext6(ClipboardContext);
576
- var ClipboardProvider = ({ children }) => {
577
- const [textValue, setInternalTextValue] = useState5("");
578
- const setTextValue = useCallback3(async (nextValue) => {
579
- await navigator.clipboard.writeText(nextValue);
580
- return setInternalTextValue(nextValue);
581
- }, []);
582
- return /* @__PURE__ */ React12.createElement(ClipboardContext.Provider, {
583
- value: {
584
- textValue,
585
- setTextValue
586
- }
587
- }, children);
588
- };
589
-
590
- // packages/ui/react-ui/src/components/Clipboard/CopyButton.tsx
591
- import React16, { useState as useState6 } from "react";
592
- import { mx as mx2 } from "@dxos/react-ui-theme";
593
-
594
- // packages/ui/react-ui/src/components/ThemeProvider/ThemeProvider.tsx
595
- import { createKeyborg } from "keyborg";
596
- import React15, { createContext as createContext7, useEffect as useEffect2, useMemo as useMemo2 } from "react";
597
-
598
- // packages/ui/react-ui/src/util/hasIosKeyboard.ts
599
- var hasIosKeyboard = () => {
600
- return !!navigator.userAgent.match(/iP(ad|od|hone).+Safari/);
601
- };
602
-
603
- // packages/ui/react-ui/src/components/DensityProvider/DensityProvider.tsx
604
- import React13, { createContext as createContext5 } from "react";
605
- var DensityContext = /* @__PURE__ */ createContext5({
606
- density: "fine"
607
- });
608
- var DensityProvider = ({ density, children }) => /* @__PURE__ */ React13.createElement(DensityContext.Provider, {
609
- value: {
610
- density
611
- }
612
- }, children);
613
-
614
- // packages/ui/react-ui/src/components/ElevationProvider/ElevationProvider.tsx
615
- import React14, { createContext as createContext6 } from "react";
616
- var ElevationContext = /* @__PURE__ */ createContext6({
617
- elevation: "base"
618
- });
619
- var ElevationProvider = ({ elevation, children }) => /* @__PURE__ */ React14.createElement(ElevationContext.Provider, {
620
- value: {
621
- elevation
622
- }
623
- }, children);
624
-
625
- // packages/ui/react-ui/src/components/ThemeProvider/ThemeProvider.tsx
626
- var ThemeContext = /* @__PURE__ */ createContext7(void 0);
627
- var ThemeProvider = ({ children, fallback = null, resourceExtensions, appNs, tx = (_path, defaultClassName, _styleProps, ..._options) => defaultClassName, themeMode = "dark", rootDensity = "fine", ...rest }) => {
628
- useEffect2(() => {
629
- if (document.defaultView) {
630
- const kb = createKeyborg(document.defaultView);
631
- kb.subscribe(handleInputModalityChange);
632
- return () => kb.unsubscribe(handleInputModalityChange);
633
- }
634
- }, []);
635
- const safeAreaPadding = useSafeArea();
636
- const contextValue = useMemo2(() => ({
637
- tx,
638
- themeMode,
639
- hasIosKeyboard: hasIosKeyboard(),
640
- safeAreaPadding,
641
- ...rest
642
- }), [
643
- tx,
644
- themeMode,
645
- safeAreaPadding,
646
- rest
647
- ]);
648
- return /* @__PURE__ */ React15.createElement(ThemeContext.Provider, {
649
- value: contextValue
650
- }, /* @__PURE__ */ React15.createElement(TranslationsProvider, {
651
- fallback,
652
- resourceExtensions,
653
- appNs
654
- }, /* @__PURE__ */ React15.createElement(ElevationProvider, {
655
- elevation: "base"
656
- }, /* @__PURE__ */ React15.createElement(DensityProvider, {
657
- density: rootDensity
658
- }, children))));
659
- };
660
- var handleInputModalityChange = (isUsingKeyboard) => {
661
- if (isUsingKeyboard) {
662
- document.body.setAttribute("data-is-keyboard", "true");
663
- } else {
664
- document.body.removeAttribute("data-is-keyboard");
665
- }
666
- };
667
-
668
- // packages/ui/react-ui/src/components/Clipboard/CopyButton.tsx
669
- var inactiveLabelStyles = "invisible bs-px -mbe-px overflow-hidden";
670
- var CopyButton = ({ value, classNames, iconProps, ...props }) => {
671
- const { t } = useTranslation("os");
672
- const { textValue, setTextValue } = useClipboard();
673
- const isCopied = textValue === value;
674
- return /* @__PURE__ */ React16.createElement(Button, {
675
- ...props,
676
- classNames: [
677
- "inline-flex flex-col justify-center",
678
- classNames
679
- ],
680
- onClick: () => setTextValue(value),
681
- "data-testid": "copy-invitation"
682
- }, /* @__PURE__ */ React16.createElement("div", {
683
- role: "none",
684
- className: mx2("flex gap-1 items-center", isCopied && inactiveLabelStyles)
685
- }, /* @__PURE__ */ React16.createElement("span", {
686
- className: "pli-1"
687
- }, t("copy label")), /* @__PURE__ */ React16.createElement(Icon, {
688
- icon: "ph--copy--regular",
689
- size: 5,
690
- ...iconProps
691
- })), /* @__PURE__ */ React16.createElement("div", {
692
- role: "none",
693
- className: mx2("flex gap-1 items-center", !isCopied && inactiveLabelStyles)
694
- }, /* @__PURE__ */ React16.createElement("span", {
695
- className: "pli-1"
696
- }, t("copy success label")), /* @__PURE__ */ React16.createElement(Icon, {
697
- icon: "ph--check--regular",
698
- size: 5,
699
- ...iconProps
700
- })));
701
- };
702
- var CopyButtonIconOnly = ({ value, classNames, iconProps, variant, ...props }) => {
703
- const { t } = useTranslation("os");
704
- const { textValue, setTextValue } = useClipboard();
705
- const isCopied = textValue === value;
706
- const label = isCopied ? t("copy success label") : props.label ?? t("copy label");
707
- const [open, setOpen] = useState6(false);
708
- return /* @__PURE__ */ React16.createElement(Tooltip.Root, {
709
- delayDuration: 1500,
710
- open,
711
- onOpenChange: setOpen
712
- }, /* @__PURE__ */ React16.createElement(Tooltip.Portal, null, /* @__PURE__ */ React16.createElement(Tooltip.Content, {
713
- side: "bottom",
714
- sideOffset: 12
715
- }, /* @__PURE__ */ React16.createElement("span", null, label), /* @__PURE__ */ React16.createElement(Tooltip.Arrow, null))), /* @__PURE__ */ React16.createElement(Tooltip.Trigger, {
716
- "aria-label": label,
717
- ...props,
718
- onClick: () => setTextValue(value).then(() => setOpen(true)),
719
- "data-testid": "copy-invitation",
720
- asChild: true
721
- }, /* @__PURE__ */ React16.createElement(Button, {
722
- variant,
723
- classNames: [
724
- "inline-flex flex-col justify-center",
725
- classNames
726
- ]
727
- }, /* @__PURE__ */ React16.createElement(Icon, {
728
- icon: "ph--copy--regular",
729
- size: 5,
730
- ...iconProps
731
- }))));
732
- };
733
-
734
- // packages/ui/react-ui/src/components/Clipboard/index.ts
735
- var Clipboard = {
736
- Button: CopyButton,
737
- IconButton: CopyButtonIconOnly,
738
- Provider: ClipboardProvider
739
- };
740
-
741
- // packages/ui/react-ui/src/components/Dialogs/Dialog.tsx
742
- import { createContext as createContext8 } from "@radix-ui/react-context";
743
- 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";
744
- import React17, { forwardRef as forwardRef11 } from "react";
745
- var DialogRoot = (props) => /* @__PURE__ */ React17.createElement(ElevationProvider, {
746
- elevation: "dialog"
747
- }, /* @__PURE__ */ React17.createElement(DialogRootPrimitive, props));
748
- var DialogTrigger = DialogTriggerPrimitive;
749
- var DialogPortal = DialogPortalPrimitive;
750
- var DialogTitle = /* @__PURE__ */ forwardRef11(({ classNames, srOnly, ...props }, forwardedRef) => {
751
- const { tx } = useThemeContext();
752
- return /* @__PURE__ */ React17.createElement(DialogTitlePrimitive, {
753
- ...props,
754
- className: tx("dialog.title", "dialog__title", {
755
- srOnly
756
- }, classNames),
757
- ref: forwardedRef
758
- });
759
- });
760
- var DialogDescription = /* @__PURE__ */ forwardRef11(({ classNames, srOnly, ...props }, forwardedRef) => {
761
- const { tx } = useThemeContext();
762
- return /* @__PURE__ */ React17.createElement(DialogDescriptionPrimitive, {
763
- ...props,
764
- className: tx("dialog.description", "dialog__description", {
765
- srOnly
766
- }, classNames),
767
- ref: forwardedRef
768
- });
769
- });
770
- var DialogClose = DialogClosePrimitive;
771
- var DIALOG_OVERLAY_NAME = "DialogOverlay";
772
- var DIALOG_CONTENT_NAME = "DialogContent";
773
- var [OverlayLayoutProvider, useOverlayLayoutContext] = createContext8(DIALOG_OVERLAY_NAME, {
774
- inOverlayLayout: false
775
- });
776
- var DialogOverlay = /* @__PURE__ */ forwardRef11(({ classNames, children, blockAlign, ...props }, forwardedRef) => {
777
- const { tx } = useThemeContext();
778
- return /* @__PURE__ */ React17.createElement(DialogOverlayPrimitive, {
779
- ...props,
780
- className: tx("dialog.overlay", "dialog__overlay", {}, classNames),
781
- ref: forwardedRef,
782
- "data-block-align": blockAlign
783
- }, /* @__PURE__ */ React17.createElement(OverlayLayoutProvider, {
784
- inOverlayLayout: true
785
- }, children));
786
- });
787
- DialogOverlay.displayName = DIALOG_OVERLAY_NAME;
788
- var DialogContent = /* @__PURE__ */ forwardRef11(({ classNames, children, inOverlayLayout: propsInOverlayLayout, ...props }, forwardedRef) => {
789
- const { tx } = useThemeContext();
790
- const { inOverlayLayout } = useOverlayLayoutContext(DIALOG_CONTENT_NAME);
791
- return /* @__PURE__ */ React17.createElement(DialogContentPrimitive, {
792
- "aria-describedby": void 0,
793
- ...props,
794
- className: tx("dialog.content", "dialog", {
795
- inOverlayLayout: propsInOverlayLayout || inOverlayLayout
796
- }, classNames),
797
- ref: forwardedRef
798
- }, children);
799
- });
800
- DialogContent.displayName = DIALOG_CONTENT_NAME;
801
- var Dialog = {
802
- Root: DialogRoot,
803
- Trigger: DialogTrigger,
804
- Portal: DialogPortal,
805
- Overlay: DialogOverlay,
806
- Content: DialogContent,
807
- Title: DialogTitle,
808
- Description: DialogDescription,
809
- Close: DialogClose
810
- };
811
-
812
- // packages/ui/react-ui/src/components/Dialogs/AlertDialog.tsx
813
- 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";
814
- import { createContext as createContext9 } from "@radix-ui/react-context";
815
- import React18, { forwardRef as forwardRef12 } from "react";
816
- var AlertDialogRoot = (props) => /* @__PURE__ */ React18.createElement(ElevationProvider, {
817
- elevation: "dialog"
818
- }, /* @__PURE__ */ React18.createElement(AlertDialogRootPrimitive, props));
819
- var AlertDialogTrigger = AlertDialogTriggerPrimitive;
820
- var AlertDialogPortal = AlertDialogPortalPrimitive;
821
- var AlertDialogCancel = AlertDialogCancelPrimitive;
822
- var AlertDialogAction = AlertDialogActionPrimitive;
823
- var AlertDialogTitle = /* @__PURE__ */ forwardRef12(({ classNames, srOnly, ...props }, forwardedRef) => {
824
- const { tx } = useThemeContext();
825
- return /* @__PURE__ */ React18.createElement(AlertDialogTitlePrimitive, {
826
- ...props,
827
- className: tx("dialog.title", "dialog--alert__title", {
828
- srOnly
829
- }, classNames),
830
- ref: forwardedRef
831
- });
832
- });
833
- var AlertDialogDescription = /* @__PURE__ */ forwardRef12(({ classNames, srOnly, ...props }, forwardedRef) => {
834
- const { tx } = useThemeContext();
835
- return /* @__PURE__ */ React18.createElement(AlertDialogDescriptionPrimitive, {
836
- ...props,
837
- className: tx("dialog.description", "dialog--alert__description", {
838
- srOnly
839
- }, classNames),
840
- ref: forwardedRef
841
- });
842
- });
843
- var ALERT_DIALOG_OVERLAY_NAME = "AlertDialogOverlay";
844
- var ALERT_DIALOG_CONTENT_NAME = "AlertDialogContent";
845
- var [OverlayLayoutProvider2, useOverlayLayoutContext2] = createContext9(ALERT_DIALOG_OVERLAY_NAME, {
846
- inOverlayLayout: false
847
- });
848
- var AlertDialogOverlay = /* @__PURE__ */ forwardRef12(({ classNames, children, blockAlign, ...props }, forwardedRef) => {
849
- const { tx } = useThemeContext();
850
- return /* @__PURE__ */ React18.createElement(AlertDialogOverlayPrimitive, {
851
- ...props,
852
- className: tx("dialog.overlay", "dialog--alert__overlay", {}, classNames, "data-[block-align=start]:justify-center", "data-[block-align=start]:items-start", "data-[block-align=center]:place-content-center"),
853
- ref: forwardedRef,
854
- "data-block-align": blockAlign
855
- }, /* @__PURE__ */ React18.createElement(OverlayLayoutProvider2, {
856
- inOverlayLayout: true
857
- }, children));
858
- });
859
- AlertDialogOverlay.displayName = ALERT_DIALOG_OVERLAY_NAME;
860
- var AlertDialogContent = /* @__PURE__ */ forwardRef12(({ classNames, children, ...props }, forwardedRef) => {
861
- const { tx } = useThemeContext();
862
- const { inOverlayLayout } = useOverlayLayoutContext2(ALERT_DIALOG_CONTENT_NAME);
863
- return /* @__PURE__ */ React18.createElement(AlertDialogContentPrimitive, {
864
- ...props,
865
- className: tx("dialog.content", "dialog--alert", {
866
- inOverlayLayout
867
- }, classNames),
868
- ref: forwardedRef
869
- }, children);
870
- });
871
- AlertDialogContent.displayName = ALERT_DIALOG_CONTENT_NAME;
872
- var AlertDialog = {
873
- Root: AlertDialogRoot,
874
- Trigger: AlertDialogTrigger,
875
- Portal: AlertDialogPortal,
876
- Overlay: AlertDialogOverlay,
877
- Content: AlertDialogContent,
878
- Title: AlertDialogTitle,
879
- Description: AlertDialogDescription,
880
- Cancel: AlertDialogCancel,
881
- Action: AlertDialogAction
882
- };
883
-
884
- // packages/ui/react-ui/src/components/Input/Input.tsx
885
- import { Root as CheckboxPrimitive } from "@radix-ui/react-checkbox";
886
- import { useControllableState } from "@radix-ui/react-use-controllable-state";
887
- import React19, { forwardRef as forwardRef13, useCallback as useCallback4 } from "react";
888
- 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";
889
- import { mx as mx3 } from "@dxos/react-ui-theme";
890
- var Label = /* @__PURE__ */ forwardRef13(({ srOnly, classNames, children, ...props }, forwardedRef) => {
891
- const { tx } = useThemeContext();
892
- return /* @__PURE__ */ React19.createElement(LabelPrimitive, {
893
- ...props,
894
- className: tx("input.label", "input__label", {
895
- srOnly
896
- }, classNames),
897
- ref: forwardedRef
898
- }, children);
899
- });
900
- var Description = /* @__PURE__ */ forwardRef13(({ srOnly, classNames, children, ...props }, forwardedRef) => {
901
- const { tx } = useThemeContext();
902
- return /* @__PURE__ */ React19.createElement(DescriptionPrimitive, {
903
- ...props,
904
- className: tx("input.description", "input__description", {
905
- srOnly
906
- }, classNames),
907
- ref: forwardedRef
908
- }, children);
909
- });
910
- var Validation = /* @__PURE__ */ forwardRef13(({ __inputScope, srOnly, classNames, children, ...props }, forwardedRef) => {
911
- const { tx } = useThemeContext();
912
- const { validationValence } = useInputContext(INPUT_NAME, __inputScope);
913
- return /* @__PURE__ */ React19.createElement(ValidationPrimitive, {
914
- ...props,
915
- className: tx("input.validation", `input__validation-message input__validation-message--${validationValence}`, {
916
- srOnly,
917
- validationValence
918
- }, classNames),
919
- ref: forwardedRef
920
- }, children);
921
- });
922
- var DescriptionAndValidation = /* @__PURE__ */ forwardRef13(({ srOnly, classNames, children, ...props }, forwardedRef) => {
923
- const { tx } = useThemeContext();
924
- return /* @__PURE__ */ React19.createElement(DescriptionAndValidationPrimitive, {
925
- ...props,
926
- className: tx("input.descriptionAndValidation", "input__description-and-validation", {
927
- srOnly
928
- }, classNames),
929
- ref: forwardedRef
930
- }, children);
931
- });
932
- var PinInput = /* @__PURE__ */ forwardRef13(({ density: propsDensity, elevation: propsElevation, segmentClassName: propsSegmentClassName, inputClassName, variant, ...props }, forwardedRef) => {
933
- const { hasIosKeyboard: hasIosKeyboard2 } = useThemeContext();
934
- const { tx } = useThemeContext();
935
- const density = useDensityContext(propsDensity);
936
- const elevation = useElevationContext(propsElevation);
937
- const segmentClassName = useCallback4(({ focused, validationValence }) => tx("input.input", "input--pin-segment", {
938
- variant: "static",
939
- focused,
940
- disabled: props.disabled,
941
- density,
942
- elevation,
943
- validationValence
944
- }, propsSegmentClassName), [
945
- tx,
946
- props.disabled,
947
- elevation,
948
- propsElevation,
949
- density
950
- ]);
951
- return /* @__PURE__ */ React19.createElement(PinInputPrimitive, {
952
- ...props,
953
- segmentClassName,
954
- ...props.autoFocus && !hasIosKeyboard2 && {
955
- autoFocus: true
956
- },
957
- inputClassName: tx("input.inputWithSegments", "input input--pin", {
958
- disabled: props.disabled
959
- }, inputClassName),
960
- ref: forwardedRef
961
- });
962
- });
963
- var TextInput = /* @__PURE__ */ forwardRef13(({ __inputScope, classNames, density: propsDensity, elevation: propsElevation, variant, ...props }, forwardedRef) => {
964
- const { hasIosKeyboard: hasIosKeyboard2 } = useThemeContext();
965
- const themeContextValue = useThemeContext();
966
- const density = useDensityContext(propsDensity);
967
- const elevation = useElevationContext(propsElevation);
968
- const { validationValence } = useInputContext(INPUT_NAME, __inputScope);
969
- const { tx } = themeContextValue;
970
- return /* @__PURE__ */ React19.createElement(TextInputPrimitive, {
971
- ...props,
972
- className: tx("input.input", "input", {
973
- variant,
974
- disabled: props.disabled,
975
- density,
976
- elevation,
977
- validationValence
978
- }, classNames),
979
- ...props.autoFocus && !hasIosKeyboard2 && {
980
- autoFocus: true
981
- },
982
- ref: forwardedRef
983
- });
984
- });
985
- var TextArea = /* @__PURE__ */ forwardRef13(({ __inputScope, classNames, density: propsDensity, elevation: propsElevation, variant, ...props }, forwardedRef) => {
986
- const { hasIosKeyboard: hasIosKeyboard2 } = useThemeContext();
987
- const { tx } = useThemeContext();
988
- const density = useDensityContext(propsDensity);
989
- const elevation = useElevationContext(propsElevation);
990
- const { validationValence } = useInputContext(INPUT_NAME, __inputScope);
991
- return /* @__PURE__ */ React19.createElement(TextAreaPrimitive, {
992
- ...props,
993
- className: tx("input.input", "input--text-area", {
994
- variant,
995
- disabled: props.disabled,
996
- density,
997
- elevation,
998
- validationValence
999
- }, classNames),
1000
- ...props.autoFocus && !hasIosKeyboard2 && {
1001
- autoFocus: true
1002
- },
1003
- ref: forwardedRef
1004
- });
1005
- });
1006
- var Checkbox = /* @__PURE__ */ forwardRef13(({ __inputScope, checked: propsChecked, defaultChecked: propsDefaultChecked, onCheckedChange: propsOnCheckedChange, size, weight = "bold", classNames, ...props }, forwardedRef) => {
1007
- const [checked, onCheckedChange] = useControllableState({
1008
- prop: propsChecked,
1009
- defaultProp: propsDefaultChecked,
1010
- onChange: propsOnCheckedChange
1011
- });
1012
- const { id, validationValence, descriptionId, errorMessageId } = useInputContext(INPUT_NAME, __inputScope);
1013
- const { tx } = useThemeContext();
1014
- return /* @__PURE__ */ React19.createElement(CheckboxPrimitive, {
1015
- ...props,
1016
- checked,
1017
- onCheckedChange,
1018
- id,
1019
- "aria-describedby": descriptionId,
1020
- ...validationValence === "error" && {
1021
- "aria-invalid": "true",
1022
- "aria-errormessage": errorMessageId
1023
- },
1024
- className: tx("input.checkbox", "input--checkbox", {
1025
- size
1026
- }, "shrink-0", classNames),
1027
- ref: forwardedRef
1028
- }, /* @__PURE__ */ React19.createElement(Icon, {
1029
- icon: checked === "indeterminate" ? "ph--minus--regular" : "ph--check--regular",
1030
- classNames: tx("input.checkboxIndicator", "input--checkbox__indicator", {
1031
- size,
1032
- checked
1033
- })
1034
- }));
1035
- });
1036
- var Switch = /* @__PURE__ */ forwardRef13(({ __inputScope, checked: propsChecked, defaultChecked: propsDefaultChecked, onCheckedChange: propsOnCheckedChange, classNames, ...props }, forwardedRef) => {
1037
- const [checked, onCheckedChange] = useControllableState({
1038
- prop: propsChecked,
1039
- defaultProp: propsDefaultChecked ?? false,
1040
- onChange: propsOnCheckedChange
1041
- });
1042
- const { id, validationValence, descriptionId, errorMessageId } = useInputContext(INPUT_NAME, __inputScope);
1043
- return /* @__PURE__ */ React19.createElement("input", {
1044
- type: "checkbox",
1045
- className: mx3("dx-checkbox--switch dx-focus-ring", classNames),
1046
- checked,
1047
- onChange: (event) => {
1048
- onCheckedChange(event.target.checked);
1049
- },
1050
- id,
1051
- "aria-describedby": descriptionId,
1052
- ...props,
1053
- ...validationValence === "error" && {
1054
- "aria-invalid": "true",
1055
- "aria-errormessage": errorMessageId
1056
- },
1057
- ref: forwardedRef
1058
- });
1059
- });
1060
- var Input = {
1061
- Root: InputRoot,
1062
- PinInput,
1063
- TextInput,
1064
- TextArea,
1065
- Checkbox,
1066
- Switch,
1067
- Label,
1068
- Description,
1069
- Validation,
1070
- DescriptionAndValidation
1071
- };
1072
-
1073
- // packages/ui/react-ui/src/components/Lists/List.tsx
1074
- import { CaretDown, CaretRight } from "@phosphor-icons/react";
1075
- import { Slot as Slot6 } from "@radix-ui/react-slot";
1076
- import React21, { forwardRef as forwardRef14 } from "react";
1077
- 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";
1078
-
1079
- // packages/ui/react-ui/src/components/Lists/ListDropIndicator.tsx
1080
- import React20 from "react";
1081
- var edgeToOrientationMap = {
1082
- top: "horizontal",
1083
- bottom: "horizontal",
1084
- left: "vertical",
1085
- right: "vertical"
1086
- };
1087
- var orientationStyles = {
1088
- horizontal: "h-[--line-thickness] left-[calc(var(--line-inset)+var(--terminal-radius))] right-[--line-inset] before:left-[--terminal-inset]",
1089
- vertical: "w-[--line-thickness] top-[calc(var(--line-inset)+var(--terminal-radius))] bottom-[--line-inset] before:top-[--terminal-inset]"
1090
- };
1091
- var edgeStyles = {
1092
- top: "top-[--line-offset] before:top-[--offset-terminal]",
1093
- right: "right-[--line-offset] before:right-[--offset-terminal]",
1094
- bottom: "bottom-[--line-offset] before:bottom-[--offset-terminal]",
1095
- left: "left-[--line-offset] before:left-[--offset-terminal]"
1096
- };
1097
- var strokeSize = 2;
1098
- var terminalSize = 8;
1099
- var offsetToAlignTerminalWithLine = (strokeSize - terminalSize) / 2;
1100
- var ListDropIndicator = ({ edge, gap = 0, lineInset = 0, terminalInset = lineInset - terminalSize }) => {
1101
- const orientation = edgeToOrientationMap[edge];
1102
- return /* @__PURE__ */ React20.createElement("div", {
1103
- role: "none",
1104
- style: {
1105
- "--line-thickness": `${strokeSize}px`,
1106
- "--line-offset": `calc(-0.5 * (${gap}px + ${strokeSize}px))`,
1107
- "--line-inset": `${lineInset}px`,
1108
- "--terminal-size": `${terminalSize}px`,
1109
- "--terminal-radius": `${terminalSize / 2}px`,
1110
- "--terminal-inset": `${terminalInset}px`,
1111
- "--offset-terminal": `${offsetToAlignTerminalWithLine}px`
1112
- },
1113
- className: `absolute z-10 pointer-events-none bg-accentSurface before:content-[''] before:w-[--terminal-size] before:h-[--terminal-size] box-border before:absolute before:border-[length:--line-thickness] before:border-solid before:border-accentSurface before:rounded-full ${orientationStyles[orientation]} ${edgeStyles[edge]}`
1114
- });
1115
- };
1116
-
1117
- // packages/ui/react-ui/src/components/Lists/List.tsx
1118
- var List = /* @__PURE__ */ forwardRef14(({ classNames, children, ...props }, forwardedRef) => {
1119
- const { tx } = useThemeContext();
1120
- const density = useDensityContext(props.density);
1121
- return /* @__PURE__ */ React21.createElement(DensityProvider, {
1122
- density
1123
- }, /* @__PURE__ */ React21.createElement(ListPrimitive, {
1124
- ...props,
1125
- className: tx("list.root", "list", {}, classNames),
1126
- ref: forwardedRef
1127
- }, children));
1128
- });
1129
- var ListItemEndcap = /* @__PURE__ */ forwardRef14(({ children, classNames, asChild, ...props }, forwardedRef) => {
1130
- const Root5 = asChild ? Slot6 : "div";
1131
- const density = useDensityContext();
1132
- const { tx } = useThemeContext();
1133
- return /* @__PURE__ */ React21.createElement(Root5, {
1134
- ...!asChild && {
1135
- role: "none"
1136
- },
1137
- ...props,
1138
- className: tx("list.item.endcap", "list__listItem__endcap", {
1139
- density
1140
- }, classNames),
1141
- ref: forwardedRef
1142
- }, children);
1143
- });
1144
- var MockListItemOpenTrigger = ({ classNames, ...props }) => {
1145
- const density = useDensityContext();
1146
- const { tx } = useThemeContext();
1147
- return /* @__PURE__ */ React21.createElement("div", {
1148
- role: "none",
1149
- ...props,
1150
- className: tx("list.item.openTrigger", "list__listItem__openTrigger--mock", {
1151
- density
1152
- }, classNames)
1153
- });
1154
- };
1155
- var ListItemHeading = /* @__PURE__ */ forwardRef14(({ children, classNames, ...props }, forwardedRef) => {
1156
- const { tx } = useThemeContext();
1157
- const density = useDensityContext();
1158
- return /* @__PURE__ */ React21.createElement(ListPrimitiveItemHeading, {
1159
- ...props,
1160
- className: tx("list.item.heading", "list__listItem__heading", {
1161
- density
1162
- }, classNames),
1163
- ref: forwardedRef
1164
- }, children);
1165
- });
1166
- var ListItemOpenTrigger = /* @__PURE__ */ forwardRef14(({ __listItemScope, classNames, children, ...props }, forwardedRef) => {
1167
- const { tx } = useThemeContext();
1168
- const density = useDensityContext();
1169
- const { open } = useListItemContext(LIST_ITEM_NAME, __listItemScope);
1170
- const Icon3 = open ? CaretDown : CaretRight;
1171
- return /* @__PURE__ */ React21.createElement(ListPrimitiveItemOpenTrigger, {
1172
- ...props,
1173
- className: tx("list.item.openTrigger", "list__listItem__openTrigger", {
1174
- density
1175
- }, classNames),
1176
- ref: forwardedRef
1177
- }, children || /* @__PURE__ */ React21.createElement(Icon3, {
1178
- weight: "bold",
1179
- className: tx("list.item.openTriggerIcon", "list__listItem__openTrigger__icon", {})
1180
- }));
1181
- });
1182
- var ListItemRoot = /* @__PURE__ */ forwardRef14(({ classNames, children, ...props }, forwardedRef) => {
1183
- const { tx } = useThemeContext();
1184
- const density = useDensityContext();
1185
- return /* @__PURE__ */ React21.createElement(ListPrimitiveItem, {
1186
- ...props,
1187
- className: tx("list.item.root", "list__listItem", {
1188
- density,
1189
- collapsible: props.collapsible
1190
- }, classNames),
1191
- ref: forwardedRef
1192
- }, children);
1193
- });
1194
- var ListItem = {
1195
- Root: ListItemRoot,
1196
- Endcap: ListItemEndcap,
1197
- Heading: ListItemHeading,
1198
- OpenTrigger: ListItemOpenTrigger,
1199
- CollapsibleContent: ListItemCollapsibleContent,
1200
- MockOpenTrigger: MockListItemOpenTrigger,
1201
- DropIndicator: ListDropIndicator
1202
- };
1203
-
1204
- // packages/ui/react-ui/src/components/Lists/Tree.tsx
1205
- import React23, { forwardRef as forwardRef15 } from "react";
1206
-
1207
- // packages/ui/react-ui/src/components/Lists/TreeDropIndicator.tsx
1208
- import React22 from "react";
1209
- var edgeToOrientationMap2 = {
1210
- "reorder-above": "sibling",
1211
- "reorder-below": "sibling",
1212
- "make-child": "child",
1213
- reparent: "child"
1214
- };
1215
- var orientationStyles2 = {
1216
- // TODO(wittjosiah): Stop using left/right here.
1217
- sibling: "bs-[--line-thickness] left-[--horizontal-indent] right-0 bg-accentSurface before:left-[--negative-terminal-size]",
1218
- child: "is-full block-start-0 block-end-0 border-[length:--line-thickness] before:invisible"
1219
- };
1220
- var instructionStyles = {
1221
- "reorder-above": "block-start-[--line-offset] before:block-start-[--offset-terminal]",
1222
- "reorder-below": "block-end-[--line-offset] before:block-end-[--offset-terminal]",
1223
- "make-child": "border-accentSurface",
1224
- // TODO(wittjosiah): This is not occurring in the current implementation.
1225
- reparent: ""
1226
- };
1227
- var strokeSize2 = 2;
1228
- var terminalSize2 = 8;
1229
- var offsetToAlignTerminalWithLine2 = (strokeSize2 - terminalSize2) / 2;
1230
- var TreeDropIndicator = ({ instruction, gap = 0 }) => {
1231
- const lineOffset = `calc(-0.5 * (${gap}px + ${strokeSize2}px))`;
1232
- const isBlocked = instruction.type === "instruction-blocked";
1233
- const desiredInstruction = isBlocked ? instruction.desired : instruction;
1234
- const orientation = edgeToOrientationMap2[desiredInstruction.type];
1235
- if (isBlocked) {
1236
- return null;
1237
- }
1238
- return /* @__PURE__ */ React22.createElement("div", {
1239
- style: {
1240
- "--line-thickness": `${strokeSize2}px`,
1241
- "--line-offset": `${lineOffset}`,
1242
- "--terminal-size": `${terminalSize2}px`,
1243
- "--terminal-radius": `${terminalSize2 / 2}px`,
1244
- "--negative-terminal-size": `-${terminalSize2}px`,
1245
- "--offset-terminal": `${offsetToAlignTerminalWithLine2}px`,
1246
- "--horizontal-indent": `${desiredInstruction.currentLevel * desiredInstruction.indentPerLevel + 4}px`
1247
- },
1248
- className: `absolute z-10 pointer-events-none before:is-[--terminal-size] before:bs-[--terminal-size] box-border before:absolute before:border-[length:--line-thickness] before:border-solid before:border-accentSurface before:rounded-full ${orientationStyles2[orientation]} ${instructionStyles[desiredInstruction.type]}`
1249
- });
1250
- };
1251
-
1252
- // packages/ui/react-ui/src/components/Lists/Tree.tsx
1253
- var TreeRoot = /* @__PURE__ */ forwardRef15((props, forwardedRef) => {
1254
- return /* @__PURE__ */ React23.createElement(List, {
1255
- ...props,
1256
- ref: forwardedRef
1257
- });
1258
- });
1259
- var TreeBranch = /* @__PURE__ */ forwardRef15(({ __listScope, ...props }, forwardedRef) => {
1260
- const { headingId } = useListItemContext(LIST_ITEM_NAME, __listScope);
1261
- return /* @__PURE__ */ React23.createElement(List, {
1262
- ...props,
1263
- "aria-labelledby": headingId,
1264
- ref: forwardedRef
1265
- });
1266
- });
1267
- var TreeItemRoot = /* @__PURE__ */ forwardRef15((props, forwardedRef) => {
1268
- return /* @__PURE__ */ React23.createElement(ListItem.Root, {
1269
- role: "treeitem",
1270
- ...props,
1271
- ref: forwardedRef
1272
- });
1273
- });
1274
- var TreeItemHeading = ListItem.Heading;
1275
- var TreeItemOpenTrigger = ListItem.OpenTrigger;
1276
- var MockTreeItemOpenTrigger = ListItem.MockOpenTrigger;
1277
- var TreeItemBody = ListItem.CollapsibleContent;
1278
- var Tree = {
1279
- Root: TreeRoot,
1280
- Branch: TreeBranch
1281
- };
1282
- var TreeItem = {
1283
- Root: TreeItemRoot,
1284
- Heading: TreeItemHeading,
1285
- Body: TreeItemBody,
1286
- OpenTrigger: TreeItemOpenTrigger,
1287
- MockOpenTrigger: MockTreeItemOpenTrigger,
1288
- DropIndicator: TreeDropIndicator
1289
- };
1290
-
1291
- // packages/ui/react-ui/src/components/Lists/Treegrid.tsx
1292
- import { useArrowNavigationGroup, useFocusableGroup } from "@fluentui/react-tabster";
1293
- import { createContextScope } from "@radix-ui/react-context";
1294
- import { Primitive as Primitive6 } from "@radix-ui/react-primitive";
1295
- import { Slot as Slot7 } from "@radix-ui/react-slot";
1296
- import { useControllableState as useControllableState2 } from "@radix-ui/react-use-controllable-state";
1297
- import React24, { forwardRef as forwardRef16 } from "react";
1298
- var TREEGRID_ROW_NAME = "TreegridRow";
1299
- var [createTreegridRowContext, createTreegridRowScope] = createContextScope(TREEGRID_ROW_NAME, []);
1300
- var [TreegridRowProvider, useTreegridRowContext] = createTreegridRowContext(TREEGRID_ROW_NAME);
1301
- var PATH_SEPARATOR = "~";
1302
- var PARENT_OF_SEPARATOR = " ";
1303
- var TreegridRoot = /* @__PURE__ */ forwardRef16(({ asChild, classNames, children, style, gridTemplateColumns, ...props }, forwardedRef) => {
1304
- const { tx } = useThemeContext();
1305
- const Root5 = asChild ? Slot7 : Primitive6.div;
1306
- const arrowNavigationAttrs = useArrowNavigationGroup({
1307
- axis: "vertical",
1308
- tabbable: false,
1309
- circular: true
1310
- });
1311
- return /* @__PURE__ */ React24.createElement(Root5, {
1312
- role: "treegrid",
1313
- ...arrowNavigationAttrs,
1314
- ...props,
1315
- className: tx("treegrid.root", "treegrid", {}, classNames),
1316
- style: {
1317
- ...style,
1318
- gridTemplateColumns
1319
- },
1320
- ref: forwardedRef
1321
- }, children);
1322
- });
1323
- var TreegridRow = /* @__PURE__ */ forwardRef16(({ __treegridRowScope, asChild, classNames, children, id, parentOf, open: propsOpen, defaultOpen, onOpenChange: propsOnOpenChange, ...props }, forwardedRef) => {
1324
- const { tx } = useThemeContext();
1325
- const Root5 = asChild ? Slot7 : Primitive6.div;
1326
- const pathParts = id.split(PATH_SEPARATOR);
1327
- const level = pathParts.length - 1;
1328
- const [open, onOpenChange] = useControllableState2({
1329
- prop: propsOpen,
1330
- onChange: propsOnOpenChange,
1331
- defaultProp: defaultOpen
1332
- });
1333
- const focusableGroupAttrs = useFocusableGroup({
1334
- tabBehavior: "limited"
1335
- });
1336
- const arrowGroupAttrs = useArrowNavigationGroup({
1337
- axis: "horizontal",
1338
- tabbable: false,
1339
- circular: false,
1340
- memorizeCurrent: false
1341
- });
1342
- return /* @__PURE__ */ React24.createElement(TreegridRowProvider, {
1343
- open,
1344
- onOpenChange,
1345
- scope: __treegridRowScope
1346
- }, /* @__PURE__ */ React24.createElement(Root5, {
1347
- role: "row",
1348
- "aria-level": level,
1349
- className: tx("treegrid.row", "treegrid__row", {
1350
- level
1351
- }, classNames),
1352
- ...parentOf && {
1353
- "aria-expanded": open,
1354
- "aria-owns": parentOf
1355
- },
1356
- tabIndex: 0,
1357
- ...focusableGroupAttrs,
1358
- ...props,
1359
- id,
1360
- ref: forwardedRef
1361
- }, /* @__PURE__ */ React24.createElement("div", {
1362
- role: "none",
1363
- className: "contents",
1364
- ...arrowGroupAttrs
1365
- }, children)));
1366
- });
1367
- var TreegridCell = /* @__PURE__ */ forwardRef16(({ classNames, children, indent, ...props }, forwardedRef) => {
1368
- const { tx } = useThemeContext();
1369
- return /* @__PURE__ */ React24.createElement("div", {
1370
- role: "gridcell",
1371
- className: tx("treegrid.cell", "treegrid__cell", {
1372
- indent
1373
- }, classNames),
1374
- ...props,
1375
- ref: forwardedRef
1376
- }, children);
1377
- });
1378
- var Treegrid = {
1379
- Root: TreegridRoot,
1380
- Row: TreegridRow,
1381
- Cell: TreegridCell,
1382
- PARENT_OF_SEPARATOR,
1383
- PATH_SEPARATOR,
1384
- createTreegridRowScope,
1385
- useTreegridRowContext
1386
- };
1387
-
1388
- // packages/ui/react-ui/src/components/Main/Main.tsx
1389
- import { createContext as createContext10 } from "@radix-ui/react-context";
1390
- import { Root as DialogRoot2, DialogContent as DialogContent2, DialogTitle as DialogTitle2 } from "@radix-ui/react-dialog";
1391
- import { Primitive as Primitive7 } from "@radix-ui/react-primitive";
1392
- import { Slot as Slot8 } from "@radix-ui/react-slot";
1393
- import { useControllableState as useControllableState3 } from "@radix-ui/react-use-controllable-state";
1394
- import React25, { forwardRef as forwardRef17, useCallback as useCallback6, useEffect as useEffect4, useRef, useState as useState8 } from "react";
1395
- import { log } from "@dxos/log";
1396
- import { useMediaQuery, useForwardedRef } from "@dxos/react-hooks";
1397
-
1398
- // packages/ui/react-ui/src/components/Main/useSwipeToDismiss.ts
1399
- import { useCallback as useCallback5, useEffect as useEffect3, useState as useState7 } from "react";
1400
- var MotionState;
1401
- (function(MotionState2) {
1402
- MotionState2[MotionState2["IDLE"] = 0] = "IDLE";
1403
- MotionState2[MotionState2["DEBOUNCING"] = 1] = "DEBOUNCING";
1404
- MotionState2[MotionState2["FOLLOWING"] = 2] = "FOLLOWING";
1405
- })(MotionState || (MotionState = {}));
1406
- var useSwipeToDismiss = (ref, {
1407
- onDismiss,
1408
- dismissThreshold = 64,
1409
- debounceThreshold = 8,
1410
- offset = 0
1411
- /* side = 'inline-start' */
1412
- }) => {
1413
- const $root = ref.current;
1414
- const [motionState, setMotionState] = useState7(0);
1415
- const [gestureStartX, setGestureStartX] = useState7(0);
1416
- const setIdle = useCallback5(() => {
1417
- setMotionState(0);
1418
- $root?.style.removeProperty("inset-inline-start");
1419
- $root?.style.setProperty("transition-duration", "200ms");
1420
- }, [
1421
- $root
1422
- ]);
1423
- const setFollowing = useCallback5(() => {
1424
- setMotionState(2);
1425
- $root?.style.setProperty("transition-duration", "0ms");
1426
- }, [
1427
- $root
1428
- ]);
1429
- const handlePointerDown = useCallback5(({ screenX }) => {
1430
- if (motionState === 0) {
1431
- setMotionState(1);
1432
- setGestureStartX(screenX);
1433
- }
1434
- }, [
1435
- motionState
1436
- ]);
1437
- const handlePointerMove = useCallback5(({ screenX }) => {
1438
- if ($root) {
1439
- const delta = Math.min(screenX - gestureStartX, 0);
1440
- switch (motionState) {
1441
- case 2:
1442
- if (Math.abs(delta) > dismissThreshold) {
1443
- setIdle();
1444
- onDismiss?.();
1445
- } else {
1446
- $root.style.setProperty("inset-inline-start", `${offset + delta}px`);
1447
- }
1448
- break;
1449
- case 1:
1450
- if (Math.abs(delta) > debounceThreshold) {
1451
- setFollowing();
1452
- }
1453
- break;
1454
- }
1455
- }
1456
- }, [
1457
- $root,
1458
- motionState,
1459
- gestureStartX
1460
- ]);
1461
- const handlePointerUp = useCallback5(() => {
1462
- setIdle();
1463
- }, [
1464
- setIdle
1465
- ]);
1466
- useEffect3(() => {
1467
- $root?.addEventListener("pointerdown", handlePointerDown);
1468
- return () => {
1469
- $root?.removeEventListener("pointerdown", handlePointerDown);
1470
- };
1471
- }, [
1472
- $root,
1473
- handlePointerDown
1474
- ]);
1475
- useEffect3(() => {
1476
- $root && document.documentElement.addEventListener("pointermove", handlePointerMove);
1477
- return () => {
1478
- document.documentElement.removeEventListener("pointermove", handlePointerMove);
1479
- };
1480
- }, [
1481
- $root,
1482
- handlePointerMove
1483
- ]);
1484
- useEffect3(() => {
1485
- $root && document.documentElement.addEventListener("pointerup", handlePointerUp);
1486
- return () => {
1487
- document.documentElement.removeEventListener("pointerup", handlePointerUp);
1488
- };
1489
- }, [
1490
- $root,
1491
- handlePointerUp
1492
- ]);
1493
- };
1494
-
1495
- // packages/ui/react-ui/src/components/Main/Main.tsx
1496
- var __dxlog_file = "/home/runner/work/dxos/dxos/packages/ui/react-ui/src/components/Main/Main.tsx";
1497
- var MAIN_ROOT_NAME = "MainRoot";
1498
- var NAVIGATION_SIDEBAR_NAME = "NavigationSidebar";
1499
- var COMPLEMENTARY_SIDEBAR_NAME = "ComplementarySidebar";
1500
- var MAIN_NAME = "Main";
1501
- var GENERIC_CONSUMER_NAME = "GenericConsumer";
1502
- var landmarkAttr = "data-main-landmark";
1503
- var useLandmarkMover = (propsOnKeyDown, landmark) => {
1504
- const handleKeyDown = useCallback6((event) => {
1505
- const target = event.target;
1506
- if (event.target === event.currentTarget && event.key === "Tab" && target.hasAttribute(landmarkAttr)) {
1507
- event.preventDefault();
1508
- const landmarks = Array.from(document.querySelectorAll(`[${landmarkAttr}]:not([inert])`)).map((el) => el.hasAttribute(landmarkAttr) ? parseInt(el.getAttribute(landmarkAttr)) : NaN).sort();
1509
- const l = landmarks.length;
1510
- const cursor = landmarks.indexOf(parseInt(target.getAttribute(landmarkAttr)));
1511
- const nextLandmark = landmarks[(cursor + l + (event.getModifierState("Shift") ? -1 : 1)) % l];
1512
- document.querySelector(`[${landmarkAttr}="${nextLandmark}"]`)?.focus();
1513
- }
1514
- propsOnKeyDown?.(event);
1515
- }, [
1516
- propsOnKeyDown
1517
- ]);
1518
- const focusableGroupAttrs = window ? {} : {
1519
- tabBehavior: "limited",
1520
- ignoreDefaultKeydown: {
1521
- Tab: true
1522
- }
1523
- };
1524
- return {
1525
- onKeyDown: handleKeyDown,
1526
- [landmarkAttr]: landmark,
1527
- tabIndex: 0,
1528
- ...focusableGroupAttrs
1529
- };
1530
- };
1531
- var [MainProvider, useMainContext] = createContext10(MAIN_NAME, {
1532
- resizing: false,
1533
- navigationSidebarState: "closed",
1534
- setNavigationSidebarState: (nextState) => {
1535
- log.warn("Attempt to set sidebar state without initializing `MainRoot`", void 0, {
1536
- F: __dxlog_file,
1537
- L: 82,
1538
- S: void 0,
1539
- C: (f, a) => f(...a)
1540
- });
1541
- },
1542
- complementarySidebarState: "closed",
1543
- setComplementarySidebarState: (nextState) => {
1544
- log.warn("Attempt to set sidebar state without initializing `MainRoot`", void 0, {
1545
- F: __dxlog_file,
1546
- L: 87,
1547
- S: void 0,
1548
- C: (f, a) => f(...a)
1549
- });
1550
- }
1551
- });
1552
- var useSidebars = (consumerName = GENERIC_CONSUMER_NAME) => {
1553
- const { setNavigationSidebarState, navigationSidebarState, setComplementarySidebarState, complementarySidebarState } = useMainContext(consumerName);
1554
- return {
1555
- navigationSidebarState,
1556
- setNavigationSidebarState,
1557
- toggleNavigationSidebar: useCallback6(() => setNavigationSidebarState(navigationSidebarState === "expanded" ? "closed" : "expanded"), [
1558
- navigationSidebarState,
1559
- setNavigationSidebarState
1560
- ]),
1561
- openNavigationSidebar: useCallback6(() => setNavigationSidebarState("expanded"), []),
1562
- collapseNavigationSidebar: useCallback6(() => setNavigationSidebarState("collapsed"), []),
1563
- closeNavigationSidebar: useCallback6(() => setNavigationSidebarState("closed"), []),
1564
- complementarySidebarState,
1565
- setComplementarySidebarState,
1566
- toggleComplementarySidebar: useCallback6(() => setComplementarySidebarState(complementarySidebarState === "expanded" ? "closed" : "expanded"), [
1567
- complementarySidebarState,
1568
- setComplementarySidebarState
1569
- ]),
1570
- openComplementarySidebar: useCallback6(() => setComplementarySidebarState("expanded"), []),
1571
- collapseComplementarySidebar: useCallback6(() => setComplementarySidebarState("collapsed"), []),
1572
- closeComplementarySidebar: useCallback6(() => setComplementarySidebarState("closed"), [])
1573
- };
1574
- };
1575
- var resizeDebounce = 3e3;
1576
- var MainRoot = ({ navigationSidebarState: propsNavigationSidebarState, defaultNavigationSidebarState, onNavigationSidebarStateChange, complementarySidebarState: propsComplementarySidebarState, defaultComplementarySidebarState, onComplementarySidebarStateChange, children, ...props }) => {
1577
- const [isLg] = useMediaQuery("lg", {
1578
- ssr: false
1579
- });
1580
- const [navigationSidebarState = isLg ? "expanded" : "collapsed", setNavigationSidebarState] = useControllableState3({
1581
- prop: propsNavigationSidebarState,
1582
- defaultProp: defaultNavigationSidebarState,
1583
- onChange: onNavigationSidebarStateChange
1584
- });
1585
- const [complementarySidebarState = isLg ? "expanded" : "collapsed", setComplementarySidebarState] = useControllableState3({
1586
- prop: propsComplementarySidebarState,
1587
- defaultProp: defaultComplementarySidebarState,
1588
- onChange: onComplementarySidebarStateChange
1589
- });
1590
- const [resizing, setResizing] = useState8(false);
1591
- const resizeInterval = useRef(null);
1592
- const handleResize = useCallback6(() => {
1593
- setResizing(true);
1594
- if (resizeInterval.current) {
1595
- clearTimeout(resizeInterval.current);
1596
- }
1597
- resizeInterval.current = setTimeout(() => {
1598
- setResizing(false);
1599
- resizeInterval.current = null;
1600
- }, resizeDebounce);
1601
- }, []);
1602
- useEffect4(() => {
1603
- window.addEventListener("resize", handleResize);
1604
- return () => window.removeEventListener("resize", handleResize);
1605
- }, [
1606
- handleResize
1607
- ]);
1608
- return /* @__PURE__ */ React25.createElement(MainProvider, {
1609
- ...props,
1610
- navigationSidebarState,
1611
- setNavigationSidebarState,
1612
- complementarySidebarState,
1613
- setComplementarySidebarState,
1614
- resizing
1615
- }, children);
1616
- };
1617
- MainRoot.displayName = MAIN_ROOT_NAME;
1618
- var handleOpenAutoFocus = (event) => {
1619
- !document.body.hasAttribute("data-is-keyboard") && event.preventDefault();
1620
- };
1621
- var MainSidebar = /* @__PURE__ */ forwardRef17(({ classNames, children, swipeToDismiss, onOpenAutoFocus, state, resizing, onStateChange, side, label, ...props }, forwardedRef) => {
1622
- const [isLg] = useMediaQuery("lg", {
1623
- ssr: false
1624
- });
1625
- const { tx } = useThemeContext();
1626
- const { t } = useTranslation();
1627
- const ref = useForwardedRef(forwardedRef);
1628
- const noopRef = useRef(null);
1629
- useSwipeToDismiss(swipeToDismiss ? ref : noopRef, {
1630
- onDismiss: () => onStateChange?.("closed")
1631
- });
1632
- const handleKeyDown = useCallback6((event) => {
1633
- if (event.key === "Escape") {
1634
- event.target.closest("[data-tabster]")?.focus();
1635
- }
1636
- props.onKeyDown?.(event);
1637
- }, [
1638
- props.onKeyDown
1639
- ]);
1640
- const Root5 = isLg ? Primitive7.div : DialogContent2;
1641
- return /* @__PURE__ */ React25.createElement(DialogRoot2, {
1642
- open: state !== "closed",
1643
- "aria-label": toLocalizedString(label, t),
1644
- modal: false
1645
- }, !isLg && /* @__PURE__ */ React25.createElement(DialogTitle2, {
1646
- className: "sr-only"
1647
- }, toLocalizedString(label, t)), /* @__PURE__ */ React25.createElement(Root5, {
1648
- ...!isLg && {
1649
- forceMount: true,
1650
- tabIndex: -1,
1651
- onOpenAutoFocus: onOpenAutoFocus ?? handleOpenAutoFocus
1652
- },
1653
- ...props,
1654
- "data-side": side === "inline-end" ? "ie" : "is",
1655
- "data-state": state,
1656
- "data-resizing": resizing ? "true" : "false",
1657
- className: tx("main.sidebar", "main__sidebar", {}, classNames),
1658
- onKeyDown: handleKeyDown,
1659
- ...state === "closed" && {
1660
- inert: "true"
1661
- },
1662
- ref
1663
- }, children));
1664
- });
1665
- var MainNavigationSidebar = /* @__PURE__ */ forwardRef17((props, forwardedRef) => {
1666
- const { navigationSidebarState, setNavigationSidebarState, resizing } = useMainContext(NAVIGATION_SIDEBAR_NAME);
1667
- const mover = useLandmarkMover(props.onKeyDown, "0");
1668
- return /* @__PURE__ */ React25.createElement(MainSidebar, {
1669
- ...mover,
1670
- ...props,
1671
- state: navigationSidebarState,
1672
- onStateChange: setNavigationSidebarState,
1673
- resizing,
1674
- side: "inline-start",
1675
- ref: forwardedRef
1676
- });
1677
- });
1678
- MainNavigationSidebar.displayName = NAVIGATION_SIDEBAR_NAME;
1679
- var MainComplementarySidebar = /* @__PURE__ */ forwardRef17((props, forwardedRef) => {
1680
- const { complementarySidebarState, setComplementarySidebarState, resizing } = useMainContext(COMPLEMENTARY_SIDEBAR_NAME);
1681
- const mover = useLandmarkMover(props.onKeyDown, "2");
1682
- return /* @__PURE__ */ React25.createElement(MainSidebar, {
1683
- ...mover,
1684
- ...props,
1685
- state: complementarySidebarState,
1686
- onStateChange: setComplementarySidebarState,
1687
- resizing,
1688
- side: "inline-end",
1689
- ref: forwardedRef
1690
- });
1691
- });
1692
- MainNavigationSidebar.displayName = NAVIGATION_SIDEBAR_NAME;
1693
- var MainContent = /* @__PURE__ */ forwardRef17(({ asChild, classNames, bounce, handlesFocus, children, role, ...props }, forwardedRef) => {
1694
- const { navigationSidebarState, complementarySidebarState } = useMainContext(MAIN_NAME);
1695
- const { tx } = useThemeContext();
1696
- const Root5 = asChild ? Slot8 : role ? "div" : "main";
1697
- const mover = useLandmarkMover(props.onKeyDown, "1");
1698
- return /* @__PURE__ */ React25.createElement(Root5, {
1699
- role,
1700
- ...handlesFocus && {
1701
- ...mover
1702
- },
1703
- ...props,
1704
- "data-sidebar-inline-start-state": navigationSidebarState,
1705
- "data-sidebar-inline-end-state": complementarySidebarState,
1706
- className: tx("main.content", "main", {
1707
- bounce,
1708
- handlesFocus
1709
- }, classNames),
1710
- ref: forwardedRef
1711
- }, children);
1712
- });
1713
- MainContent.displayName = MAIN_NAME;
1714
- var MainOverlay = /* @__PURE__ */ forwardRef17(({ classNames, ...props }, forwardedRef) => {
1715
- const [isLg] = useMediaQuery("lg", {
1716
- ssr: false
1717
- });
1718
- const { navigationSidebarState, setNavigationSidebarState, complementarySidebarState, setComplementarySidebarState } = useMainContext(MAIN_NAME);
1719
- const { tx } = useThemeContext();
1720
- return /* @__PURE__ */ React25.createElement("div", {
1721
- onClick: () => {
1722
- setNavigationSidebarState("collapsed");
1723
- setComplementarySidebarState("collapsed");
1724
- },
1725
- ...props,
1726
- className: tx("main.overlay", "main__overlay", {
1727
- isLg,
1728
- inlineStartSidebarOpen: navigationSidebarState,
1729
- inlineEndSidebarOpen: complementarySidebarState
1730
- }, classNames),
1731
- "data-state": navigationSidebarState === "expanded" || complementarySidebarState === "expanded" ? "open" : "closed",
1732
- "aria-hidden": "true",
1733
- ref: forwardedRef
1734
- });
1735
- });
1736
- var Main = {
1737
- Root: MainRoot,
1738
- Content: MainContent,
1739
- Overlay: MainOverlay,
1740
- NavigationSidebar: MainNavigationSidebar,
1741
- ComplementarySidebar: MainComplementarySidebar
1742
- };
1743
-
1744
- // packages/ui/react-ui/src/components/Menus/ContextMenu.tsx
1745
- import * as ContextMenuPrimitive from "@radix-ui/react-context-menu";
1746
- import { Primitive as Primitive8 } from "@radix-ui/react-primitive";
1747
- import { Slot as Slot9 } from "@radix-ui/react-slot";
1748
- import React26, { forwardRef as forwardRef18 } from "react";
1749
- var ContextMenuRoot = ContextMenuPrimitive.ContextMenu;
1750
- var ContextMenuTrigger = ContextMenuPrimitive.Trigger;
1751
- var ContextMenuPortal = ContextMenuPrimitive.Portal;
1752
- var ContextMenuContent = /* @__PURE__ */ forwardRef18(({ classNames, children, collisionPadding = 8, ...props }, forwardedRef) => {
1753
- const { tx } = useThemeContext();
1754
- const elevation = useElevationContext();
1755
- const safeCollisionPadding = useSafeCollisionPadding(collisionPadding);
1756
- return /* @__PURE__ */ React26.createElement(ContextMenuPrimitive.Content, {
1757
- ...props,
1758
- collisionPadding: safeCollisionPadding,
1759
- className: tx("menu.content", "menu", {
1760
- elevation
1761
- }, classNames),
1762
- ref: forwardedRef
1763
- }, children);
1764
- });
1765
- var ContextMenuViewport = /* @__PURE__ */ forwardRef18(({ classNames, asChild, children, ...props }, forwardedRef) => {
1766
- const { tx } = useThemeContext();
1767
- const Root5 = asChild ? Slot9 : Primitive8.div;
1768
- return /* @__PURE__ */ React26.createElement(Root5, {
1769
- ...props,
1770
- className: tx("menu.viewport", "menu__viewport", {}, classNames),
1771
- ref: forwardedRef
1772
- }, children);
1773
- });
1774
- var ContextMenuArrow = /* @__PURE__ */ forwardRef18(({ classNames, ...props }, forwardedRef) => {
1775
- const { tx } = useThemeContext();
1776
- return /* @__PURE__ */ React26.createElement(ContextMenuPrimitive.Arrow, {
1777
- ...props,
1778
- className: tx("menu.arrow", "menu__arrow", {}, classNames),
1779
- ref: forwardedRef
1780
- });
1781
- });
1782
- var ContextMenuGroup = ContextMenuPrimitive.Group;
1783
- var ContextMenuItemIndicator = ContextMenuPrimitive.ItemIndicator;
1784
- var ContextMenuItem = /* @__PURE__ */ forwardRef18(({ classNames, ...props }, forwardedRef) => {
1785
- const { tx } = useThemeContext();
1786
- return /* @__PURE__ */ React26.createElement(ContextMenuPrimitive.Item, {
1787
- ...props,
1788
- className: tx("menu.item", "menu__item", {}, classNames),
1789
- ref: forwardedRef
1790
- });
1791
- });
1792
- var ContextMenuCheckboxItem = /* @__PURE__ */ forwardRef18(({ classNames, ...props }, forwardedRef) => {
1793
- const { tx } = useThemeContext();
1794
- return /* @__PURE__ */ React26.createElement(ContextMenuPrimitive.CheckboxItem, {
1795
- ...props,
1796
- className: tx("menu.item", "menu__item--checkbox", {}, classNames),
1797
- ref: forwardedRef
1798
- });
1799
- });
1800
- var ContextMenuSeparator = /* @__PURE__ */ forwardRef18(({ classNames, ...props }, forwardedRef) => {
1801
- const { tx } = useThemeContext();
1802
- return /* @__PURE__ */ React26.createElement(ContextMenuPrimitive.Separator, {
1803
- ...props,
1804
- className: tx("menu.separator", "menu__item", {}, classNames),
1805
- ref: forwardedRef
1806
- });
1807
- });
1808
- var ContextMenuGroupLabel = /* @__PURE__ */ forwardRef18(({ classNames, ...props }, forwardedRef) => {
1809
- const { tx } = useThemeContext();
1810
- return /* @__PURE__ */ React26.createElement(ContextMenuPrimitive.Label, {
1811
- ...props,
1812
- className: tx("menu.groupLabel", "menu__group__label", {}, classNames),
1813
- ref: forwardedRef
1814
- });
1815
- });
1816
- var ContextMenu2 = {
1817
- Root: ContextMenuRoot,
1818
- Trigger: ContextMenuTrigger,
1819
- Portal: ContextMenuPortal,
1820
- Content: ContextMenuContent,
1821
- Viewport: ContextMenuViewport,
1822
- Arrow: ContextMenuArrow,
1823
- Group: ContextMenuGroup,
1824
- Item: ContextMenuItem,
1825
- CheckboxItem: ContextMenuCheckboxItem,
1826
- ItemIndicator: ContextMenuItemIndicator,
1827
- Separator: ContextMenuSeparator,
1828
- GroupLabel: ContextMenuGroupLabel
1829
- };
1830
-
1831
- // packages/ui/react-ui/src/components/Menus/DropdownMenu.tsx
1832
- import { composeEventHandlers } from "@radix-ui/primitive";
1833
- import { composeRefs } from "@radix-ui/react-compose-refs";
1834
- import { createContextScope as createContextScope2 } from "@radix-ui/react-context";
1835
- import { useId as useId2 } from "@radix-ui/react-id";
1836
- import * as MenuPrimitive from "@radix-ui/react-menu";
1837
- import { createMenuScope } from "@radix-ui/react-menu";
1838
- import { Primitive as Primitive9 } from "@radix-ui/react-primitive";
1839
- import { Slot as Slot10 } from "@radix-ui/react-slot";
1840
- import { useControllableState as useControllableState4 } from "@radix-ui/react-use-controllable-state";
1841
- import React27, { useRef as useRef2, useCallback as useCallback7, forwardRef as forwardRef19, useEffect as useEffect5 } from "react";
1842
- var DROPDOWN_MENU_NAME = "DropdownMenu";
1843
- var [createDropdownMenuContext, createDropdownMenuScope] = createContextScope2(DROPDOWN_MENU_NAME, [
1844
- createMenuScope
1845
- ]);
1846
- var useMenuScope = createMenuScope();
1847
- var [DropdownMenuProvider, useDropdownMenuContext] = createDropdownMenuContext(DROPDOWN_MENU_NAME);
1848
- var DropdownMenuRoot = (props) => {
1849
- const { __scopeDropdownMenu, children, dir, open: openProp, defaultOpen, onOpenChange, modal = true } = props;
1850
- const menuScope = useMenuScope(__scopeDropdownMenu);
1851
- const triggerRef = useRef2(null);
1852
- const [open = false, setOpen] = useControllableState4({
1853
- prop: openProp,
1854
- defaultProp: defaultOpen,
1855
- onChange: onOpenChange
1856
- });
1857
- return /* @__PURE__ */ React27.createElement(DropdownMenuProvider, {
1858
- scope: __scopeDropdownMenu,
1859
- triggerId: useId2(),
1860
- triggerRef,
1861
- contentId: useId2(),
1862
- open,
1863
- onOpenChange: setOpen,
1864
- onOpenToggle: useCallback7(() => setOpen((prevOpen) => !prevOpen), [
1865
- setOpen
1866
- ]),
1867
- modal
1868
- }, /* @__PURE__ */ React27.createElement(MenuPrimitive.Root, {
1869
- ...menuScope,
1870
- open,
1871
- onOpenChange: setOpen,
1872
- dir,
1873
- modal
1874
- }, children));
1875
- };
1876
- DropdownMenuRoot.displayName = DROPDOWN_MENU_NAME;
1877
- var TRIGGER_NAME = "DropdownMenuTrigger";
1878
- var DropdownMenuTrigger = /* @__PURE__ */ forwardRef19((props, forwardedRef) => {
1879
- const { __scopeDropdownMenu, disabled = false, ...triggerProps } = props;
1880
- const context = useDropdownMenuContext(TRIGGER_NAME, __scopeDropdownMenu);
1881
- const menuScope = useMenuScope(__scopeDropdownMenu);
1882
- return /* @__PURE__ */ React27.createElement(MenuPrimitive.Anchor, {
1883
- asChild: true,
1884
- ...menuScope
1885
- }, /* @__PURE__ */ React27.createElement(Primitive9.button, {
1886
- type: "button",
1887
- id: context.triggerId,
1888
- "aria-haspopup": "menu",
1889
- "aria-expanded": context.open,
1890
- "aria-controls": context.open ? context.contentId : void 0,
1891
- "data-state": context.open ? "open" : "closed",
1892
- "data-disabled": disabled ? "" : void 0,
1893
- disabled,
1894
- ...triggerProps,
1895
- ref: composeRefs(forwardedRef, context.triggerRef),
1896
- onPointerDown: composeEventHandlers(props.onPointerDown, (event) => {
1897
- if (!disabled && event.button === 0 && event.ctrlKey === false) {
1898
- context.onOpenToggle();
1899
- if (!context.open) {
1900
- event.preventDefault();
1901
- }
1902
- }
1903
- }),
1904
- onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {
1905
- if (disabled) {
1906
- return;
1907
- }
1908
- if ([
1909
- "Enter",
1910
- " "
1911
- ].includes(event.key)) {
1912
- context.onOpenToggle();
1913
- }
1914
- if (event.key === "ArrowDown") {
1915
- context.onOpenChange(true);
1916
- }
1917
- if ([
1918
- "Enter",
1919
- " ",
1920
- "ArrowDown"
1921
- ].includes(event.key)) {
1922
- event.preventDefault();
1923
- }
1924
- })
1925
- }));
1926
- });
1927
- DropdownMenuTrigger.displayName = TRIGGER_NAME;
1928
- var VIRTUAL_TRIGGER_NAME = "DropdownMenuVirtualTrigger";
1929
- var DropdownMenuVirtualTrigger = (props) => {
1930
- const { __scopeDropdownMenu, virtualRef } = props;
1931
- const context = useDropdownMenuContext(VIRTUAL_TRIGGER_NAME, __scopeDropdownMenu);
1932
- const menuScope = useMenuScope(__scopeDropdownMenu);
1933
- useEffect5(() => {
1934
- if (virtualRef.current) {
1935
- context.triggerRef.current = virtualRef.current;
1936
- }
1937
- });
1938
- return /* @__PURE__ */ React27.createElement(MenuPrimitive.Anchor, {
1939
- ...menuScope,
1940
- virtualRef
1941
- });
1942
- };
1943
- DropdownMenuVirtualTrigger.displayName = VIRTUAL_TRIGGER_NAME;
1944
- var PORTAL_NAME = "DropdownMenuPortal";
1945
- var DropdownMenuPortal = (props) => {
1946
- const { __scopeDropdownMenu, ...portalProps } = props;
1947
- const menuScope = useMenuScope(__scopeDropdownMenu);
1948
- return /* @__PURE__ */ React27.createElement(MenuPrimitive.Portal, {
1949
- ...menuScope,
1950
- ...portalProps
1951
- });
1952
- };
1953
- DropdownMenuPortal.displayName = PORTAL_NAME;
1954
- var DropdownMenuViewport = /* @__PURE__ */ forwardRef19(({ classNames, asChild, children, ...props }, forwardedRef) => {
1955
- const { tx } = useThemeContext();
1956
- const Root5 = asChild ? Slot10 : Primitive9.div;
1957
- return /* @__PURE__ */ React27.createElement(Root5, {
1958
- ...props,
1959
- className: tx("menu.viewport", "menu__viewport", {}, classNames),
1960
- ref: forwardedRef
1961
- }, children);
1962
- });
1963
- var CONTENT_NAME = "DropdownMenuContent";
1964
- var DropdownMenuContent = /* @__PURE__ */ forwardRef19((props, forwardedRef) => {
1965
- const { __scopeDropdownMenu, classNames, collisionPadding = 8, ...contentProps } = props;
1966
- const { tx } = useThemeContext();
1967
- const context = useDropdownMenuContext(CONTENT_NAME, __scopeDropdownMenu);
1968
- const elevation = useElevationContext();
1969
- const menuScope = useMenuScope(__scopeDropdownMenu);
1970
- const hasInteractedOutsideRef = useRef2(false);
1971
- const safeCollisionPadding = useSafeCollisionPadding(collisionPadding);
1972
- return /* @__PURE__ */ React27.createElement(MenuPrimitive.Content, {
1973
- id: context.contentId,
1974
- "aria-labelledby": context.triggerId,
1975
- ...menuScope,
1976
- ...contentProps,
1977
- collisionPadding: safeCollisionPadding,
1978
- ref: forwardedRef,
1979
- onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => {
1980
- if (!hasInteractedOutsideRef.current) {
1981
- context.triggerRef.current?.focus();
1982
- }
1983
- hasInteractedOutsideRef.current = false;
1984
- event.preventDefault();
1985
- }),
1986
- onInteractOutside: composeEventHandlers(props.onInteractOutside, (event) => {
1987
- const originalEvent = event.detail.originalEvent;
1988
- const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;
1989
- const isRightClick = originalEvent.button === 2 || ctrlLeftClick;
1990
- if (!context.modal || isRightClick) {
1991
- hasInteractedOutsideRef.current = true;
1992
- }
1993
- }),
1994
- className: tx("menu.content", "menu", {
1995
- elevation
1996
- }, classNames),
1997
- style: {
1998
- ...props.style,
1999
- // re-namespace exposed content custom properties
2000
- ...{
2001
- "--radix-dropdown-menu-content-transform-origin": "var(--radix-popper-transform-origin)",
2002
- "--radix-dropdown-menu-content-available-width": "var(--radix-popper-available-width)",
2003
- "--radix-dropdown-menu-content-available-height": "var(--radix-popper-available-height)",
2004
- "--radix-dropdown-menu-trigger-width": "var(--radix-popper-anchor-width)",
2005
- "--radix-dropdown-menu-trigger-height": "var(--radix-popper-anchor-height)"
2006
- }
2007
- }
2008
- });
2009
- });
2010
- DropdownMenuContent.displayName = CONTENT_NAME;
2011
- var GROUP_NAME = "DropdownMenuGroup";
2012
- var DropdownMenuGroup = /* @__PURE__ */ forwardRef19((props, forwardedRef) => {
2013
- const { __scopeDropdownMenu, ...groupProps } = props;
2014
- const menuScope = useMenuScope(__scopeDropdownMenu);
2015
- return /* @__PURE__ */ React27.createElement(MenuPrimitive.Group, {
2016
- ...menuScope,
2017
- ...groupProps,
2018
- ref: forwardedRef
2019
- });
2020
- });
2021
- DropdownMenuGroup.displayName = GROUP_NAME;
2022
- var LABEL_NAME = "DropdownMenuLabel";
2023
- var DropdownMenuGroupLabel = /* @__PURE__ */ forwardRef19((props, forwardedRef) => {
2024
- const { __scopeDropdownMenu, classNames, ...labelProps } = props;
2025
- const menuScope = useMenuScope(__scopeDropdownMenu);
2026
- const { tx } = useThemeContext();
2027
- return /* @__PURE__ */ React27.createElement(MenuPrimitive.Label, {
2028
- ...menuScope,
2029
- ...labelProps,
2030
- className: tx("menu.groupLabel", "menu__group__label", {}, classNames),
2031
- ref: forwardedRef
2032
- });
2033
- });
2034
- DropdownMenuGroupLabel.displayName = LABEL_NAME;
2035
- var ITEM_NAME = "DropdownMenuItem";
2036
- var DropdownMenuItem = /* @__PURE__ */ forwardRef19((props, forwardedRef) => {
2037
- const { __scopeDropdownMenu, classNames, ...itemProps } = props;
2038
- const menuScope = useMenuScope(__scopeDropdownMenu);
2039
- const { tx } = useThemeContext();
2040
- return /* @__PURE__ */ React27.createElement(MenuPrimitive.Item, {
2041
- ...menuScope,
2042
- ...itemProps,
2043
- className: tx("menu.item", "menu__item", {}, classNames),
2044
- ref: forwardedRef
2045
- });
2046
- });
2047
- DropdownMenuItem.displayName = ITEM_NAME;
2048
- var CHECKBOX_ITEM_NAME = "DropdownMenuCheckboxItem";
2049
- var DropdownMenuCheckboxItem = /* @__PURE__ */ forwardRef19((props, forwardedRef) => {
2050
- const { __scopeDropdownMenu, classNames, ...checkboxItemProps } = props;
2051
- const menuScope = useMenuScope(__scopeDropdownMenu);
2052
- const { tx } = useThemeContext();
2053
- return /* @__PURE__ */ React27.createElement(MenuPrimitive.CheckboxItem, {
2054
- ...menuScope,
2055
- ...checkboxItemProps,
2056
- className: tx("menu.item", "menu__item--checkbox", {}, classNames),
2057
- ref: forwardedRef
2058
- });
2059
- });
2060
- DropdownMenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME;
2061
- var RADIO_GROUP_NAME = "DropdownMenuRadioGroup";
2062
- var DropdownMenuRadioGroup = /* @__PURE__ */ forwardRef19((props, forwardedRef) => {
2063
- const { __scopeDropdownMenu, ...radioGroupProps } = props;
2064
- const menuScope = useMenuScope(__scopeDropdownMenu);
2065
- return /* @__PURE__ */ React27.createElement(MenuPrimitive.RadioGroup, {
2066
- ...menuScope,
2067
- ...radioGroupProps,
2068
- ref: forwardedRef
2069
- });
2070
- });
2071
- DropdownMenuRadioGroup.displayName = RADIO_GROUP_NAME;
2072
- var RADIO_ITEM_NAME = "DropdownMenuRadioItem";
2073
- var DropdownMenuRadioItem = /* @__PURE__ */ forwardRef19((props, forwardedRef) => {
2074
- const { __scopeDropdownMenu, ...radioItemProps } = props;
2075
- const menuScope = useMenuScope(__scopeDropdownMenu);
2076
- return /* @__PURE__ */ React27.createElement(MenuPrimitive.RadioItem, {
2077
- ...menuScope,
2078
- ...radioItemProps,
2079
- ref: forwardedRef
2080
- });
2081
- });
2082
- DropdownMenuRadioItem.displayName = RADIO_ITEM_NAME;
2083
- var INDICATOR_NAME = "DropdownMenuItemIndicator";
2084
- var DropdownMenuItemIndicator = /* @__PURE__ */ forwardRef19((props, forwardedRef) => {
2085
- const { __scopeDropdownMenu, ...itemIndicatorProps } = props;
2086
- const menuScope = useMenuScope(__scopeDropdownMenu);
2087
- return /* @__PURE__ */ React27.createElement(MenuPrimitive.ItemIndicator, {
2088
- ...menuScope,
2089
- ...itemIndicatorProps,
2090
- ref: forwardedRef
2091
- });
2092
- });
2093
- DropdownMenuItemIndicator.displayName = INDICATOR_NAME;
2094
- var SEPARATOR_NAME = "DropdownMenuSeparator";
2095
- var DropdownMenuSeparator = /* @__PURE__ */ forwardRef19((props, forwardedRef) => {
2096
- const { __scopeDropdownMenu, classNames, ...separatorProps } = props;
2097
- const menuScope = useMenuScope(__scopeDropdownMenu);
2098
- const { tx } = useThemeContext();
2099
- return /* @__PURE__ */ React27.createElement(MenuPrimitive.Separator, {
2100
- ...menuScope,
2101
- ...separatorProps,
2102
- className: tx("menu.separator", "menu__item", {}, classNames),
2103
- ref: forwardedRef
2104
- });
2105
- });
2106
- DropdownMenuSeparator.displayName = SEPARATOR_NAME;
2107
- var ARROW_NAME = "DropdownMenuArrow";
2108
- var DropdownMenuArrow = /* @__PURE__ */ forwardRef19((props, forwardedRef) => {
2109
- const { __scopeDropdownMenu, classNames, ...arrowProps } = props;
2110
- const menuScope = useMenuScope(__scopeDropdownMenu);
2111
- const { tx } = useThemeContext();
2112
- return /* @__PURE__ */ React27.createElement(MenuPrimitive.Arrow, {
2113
- ...menuScope,
2114
- ...arrowProps,
2115
- className: tx("menu.arrow", "menu__arrow", {}, classNames),
2116
- ref: forwardedRef
2117
- });
2118
- });
2119
- DropdownMenuArrow.displayName = ARROW_NAME;
2120
- var DropdownMenuSub = (props) => {
2121
- const { __scopeDropdownMenu, children, open: openProp, onOpenChange, defaultOpen } = props;
2122
- const menuScope = useMenuScope(__scopeDropdownMenu);
2123
- const [open = false, setOpen] = useControllableState4({
2124
- prop: openProp,
2125
- defaultProp: defaultOpen,
2126
- onChange: onOpenChange
2127
- });
2128
- return /* @__PURE__ */ React27.createElement(MenuPrimitive.Sub, {
2129
- ...menuScope,
2130
- open,
2131
- onOpenChange: setOpen
2132
- }, children);
2133
- };
2134
- var SUB_TRIGGER_NAME = "DropdownMenuSubTrigger";
2135
- var DropdownMenuSubTrigger = /* @__PURE__ */ forwardRef19((props, forwardedRef) => {
2136
- const { __scopeDropdownMenu, ...subTriggerProps } = props;
2137
- const menuScope = useMenuScope(__scopeDropdownMenu);
2138
- return /* @__PURE__ */ React27.createElement(MenuPrimitive.SubTrigger, {
2139
- ...menuScope,
2140
- ...subTriggerProps,
2141
- ref: forwardedRef
2142
- });
2143
- });
2144
- DropdownMenuSubTrigger.displayName = SUB_TRIGGER_NAME;
2145
- var SUB_CONTENT_NAME = "DropdownMenuSubContent";
2146
- var DropdownMenuSubContent = /* @__PURE__ */ forwardRef19((props, forwardedRef) => {
2147
- const { __scopeDropdownMenu, ...subContentProps } = props;
2148
- const menuScope = useMenuScope(__scopeDropdownMenu);
2149
- return /* @__PURE__ */ React27.createElement(MenuPrimitive.SubContent, {
2150
- ...menuScope,
2151
- ...subContentProps,
2152
- ref: forwardedRef,
2153
- style: {
2154
- ...props.style,
2155
- // re-namespace exposed content custom properties
2156
- ...{
2157
- "--radix-dropdown-menu-content-transform-origin": "var(--radix-popper-transform-origin)",
2158
- "--radix-dropdown-menu-content-available-width": "var(--radix-popper-available-width)",
2159
- "--radix-dropdown-menu-content-available-height": "var(--radix-popper-available-height)",
2160
- "--radix-dropdown-menu-trigger-width": "var(--radix-popper-anchor-width)",
2161
- "--radix-dropdown-menu-trigger-height": "var(--radix-popper-anchor-height)"
2162
- }
2163
- }
2164
- });
2165
- });
2166
- DropdownMenuSubContent.displayName = SUB_CONTENT_NAME;
2167
- var DropdownMenu = {
2168
- Root: DropdownMenuRoot,
2169
- Trigger: DropdownMenuTrigger,
2170
- VirtualTrigger: DropdownMenuVirtualTrigger,
2171
- Portal: DropdownMenuPortal,
2172
- Content: DropdownMenuContent,
2173
- Viewport: DropdownMenuViewport,
2174
- Group: DropdownMenuGroup,
2175
- GroupLabel: DropdownMenuGroupLabel,
2176
- Item: DropdownMenuItem,
2177
- CheckboxItem: DropdownMenuCheckboxItem,
2178
- RadioGroup: DropdownMenuRadioGroup,
2179
- RadioItem: DropdownMenuRadioItem,
2180
- ItemIndicator: DropdownMenuItemIndicator,
2181
- Separator: DropdownMenuSeparator,
2182
- Arrow: DropdownMenuArrow,
2183
- Sub: DropdownMenuSub,
2184
- SubTrigger: DropdownMenuSubTrigger,
2185
- SubContent: DropdownMenuSubContent
2186
- };
2187
- var useDropdownMenuMenuScope = useMenuScope;
2188
-
2189
- // packages/ui/react-ui/src/components/Message/Message.tsx
2190
- import { createContext as createContext11 } from "@radix-ui/react-context";
2191
- import { Primitive as Primitive10 } from "@radix-ui/react-primitive";
2192
- import { Slot as Slot11 } from "@radix-ui/react-slot";
2193
- import React28, { forwardRef as forwardRef20 } from "react";
2194
- import { useId as useId3 } from "@dxos/react-hooks";
2195
- var MESSAGE_NAME = "Message";
2196
- var [MessageProvider, useMessageContext] = createContext11(MESSAGE_NAME);
2197
- var MessageRoot = /* @__PURE__ */ forwardRef20(({ asChild, valence, elevation: propsElevation, className, titleId: propsTitleId, descriptionId: propsDescriptionId, children, ...props }, forwardedRef) => {
2198
- const { tx } = useThemeContext();
2199
- const titleId = useId3("message__title", propsTitleId);
2200
- const descriptionId = useId3("message__description", propsDescriptionId);
2201
- const elevation = useElevationContext(propsElevation);
2202
- const Root5 = asChild ? Slot11 : Primitive10.div;
2203
- return /* @__PURE__ */ React28.createElement(MessageProvider, {
2204
- titleId,
2205
- descriptionId
2206
- }, /* @__PURE__ */ React28.createElement(Root5, {
2207
- ...props,
2208
- className: tx("message.root", "message", {
2209
- valence,
2210
- elevation
2211
- }, className),
2212
- "aria-labelledby": titleId,
2213
- "aria-describedby": descriptionId,
2214
- ref: forwardedRef
2215
- }, children));
2216
- });
2217
- MessageRoot.displayName = MESSAGE_NAME;
2218
- var MESSAGE_TITLE_NAME = "MessageTitle";
2219
- var MessageTitle = /* @__PURE__ */ forwardRef20(({ asChild, className, children, ...props }, forwardedRef) => {
2220
- const { tx } = useThemeContext();
2221
- const { titleId } = useMessageContext(MESSAGE_TITLE_NAME);
2222
- const Root5 = asChild ? Slot11 : Primitive10.h2;
2223
- return /* @__PURE__ */ React28.createElement(Root5, {
2224
- ...props,
2225
- className: tx("message.title", "message__title", {}, className),
2226
- id: titleId,
2227
- ref: forwardedRef
2228
- }, children);
2229
- });
2230
- MessageTitle.displayName = MESSAGE_TITLE_NAME;
2231
- var MESSAGE_BODY_NAME = "MessageBody";
2232
- var MessageBody = /* @__PURE__ */ forwardRef20(({ asChild, className, children, ...props }, forwardedRef) => {
2233
- const { tx } = useThemeContext();
2234
- const { descriptionId } = useMessageContext(MESSAGE_BODY_NAME);
2235
- const Root5 = asChild ? Slot11 : Primitive10.p;
2236
- return /* @__PURE__ */ React28.createElement(Root5, {
2237
- ...props,
2238
- className: tx("message.body", "message__body", {}, className),
2239
- id: descriptionId,
2240
- ref: forwardedRef
2241
- }, children);
2242
- });
2243
- MessageBody.displayName = MESSAGE_BODY_NAME;
2244
- var Message = {
2245
- Root: MessageRoot,
2246
- Title: MessageTitle,
2247
- Body: MessageBody
2248
- };
2249
-
2250
- // packages/ui/react-ui/src/components/Popover/Popover.tsx
2251
- import { composeEventHandlers as composeEventHandlers2 } from "@radix-ui/primitive";
2252
- import { useComposedRefs } from "@radix-ui/react-compose-refs";
2253
- import { createContextScope as createContextScope3 } from "@radix-ui/react-context";
2254
- import { DismissableLayer } from "@radix-ui/react-dismissable-layer";
2255
- import { useFocusGuards } from "@radix-ui/react-focus-guards";
2256
- import { FocusScope } from "@radix-ui/react-focus-scope";
2257
- import { useId as useId4 } from "@radix-ui/react-id";
2258
- import * as PopperPrimitive from "@radix-ui/react-popper";
2259
- import { createPopperScope } from "@radix-ui/react-popper";
2260
- import { Portal as PortalPrimitive } from "@radix-ui/react-portal";
2261
- import { Presence } from "@radix-ui/react-presence";
2262
- import { Primitive as Primitive11 } from "@radix-ui/react-primitive";
2263
- import { Slot as Slot12 } from "@radix-ui/react-slot";
2264
- import { useControllableState as useControllableState5 } from "@radix-ui/react-use-controllable-state";
2265
- import { hideOthers } from "aria-hidden";
2266
- import React29, { forwardRef as forwardRef21, useRef as useRef3, useCallback as useCallback8, useState as useState9, useEffect as useEffect6 } from "react";
2267
- import { RemoveScroll } from "react-remove-scroll";
2268
- var POPOVER_NAME = "Popover";
2269
- var [createPopoverContext, createPopoverScope] = createContextScope3(POPOVER_NAME, [
2270
- createPopperScope
2271
- ]);
2272
- var usePopperScope = createPopperScope();
2273
- var [PopoverProvider, usePopoverContext] = createPopoverContext(POPOVER_NAME);
2274
- var PopoverRoot = (props) => {
2275
- const { __scopePopover, children, open: openProp, defaultOpen, onOpenChange, modal = false } = props;
2276
- const popperScope = usePopperScope(__scopePopover);
2277
- const triggerRef = useRef3(null);
2278
- const [hasCustomAnchor, setHasCustomAnchor] = useState9(false);
2279
- const [open = false, setOpen] = useControllableState5({
2280
- prop: openProp,
2281
- defaultProp: defaultOpen,
2282
- onChange: onOpenChange
2283
- });
2284
- return /* @__PURE__ */ React29.createElement(PopperPrimitive.Root, popperScope, /* @__PURE__ */ React29.createElement(PopoverProvider, {
2285
- scope: __scopePopover,
2286
- contentId: useId4(),
2287
- triggerRef,
2288
- open,
2289
- onOpenChange: setOpen,
2290
- onOpenToggle: useCallback8(() => setOpen((prevOpen) => !prevOpen), [
2291
- setOpen
2292
- ]),
2293
- hasCustomAnchor,
2294
- onCustomAnchorAdd: useCallback8(() => setHasCustomAnchor(true), []),
2295
- onCustomAnchorRemove: useCallback8(() => setHasCustomAnchor(false), []),
2296
- modal
2297
- }, children));
2298
- };
2299
- PopoverRoot.displayName = POPOVER_NAME;
2300
- var ANCHOR_NAME = "PopoverAnchor";
2301
- var PopoverAnchor = /* @__PURE__ */ forwardRef21((props, forwardedRef) => {
2302
- const { __scopePopover, ...anchorProps } = props;
2303
- const context = usePopoverContext(ANCHOR_NAME, __scopePopover);
2304
- const popperScope = usePopperScope(__scopePopover);
2305
- const { onCustomAnchorAdd, onCustomAnchorRemove } = context;
2306
- useEffect6(() => {
2307
- onCustomAnchorAdd();
2308
- return () => onCustomAnchorRemove();
2309
- }, [
2310
- onCustomAnchorAdd,
2311
- onCustomAnchorRemove
2312
- ]);
2313
- return /* @__PURE__ */ React29.createElement(PopperPrimitive.Anchor, {
2314
- ...popperScope,
2315
- ...anchorProps,
2316
- ref: forwardedRef
2317
- });
2318
- });
2319
- PopoverAnchor.displayName = ANCHOR_NAME;
2320
- var TRIGGER_NAME2 = "PopoverTrigger";
2321
- var PopoverTrigger = /* @__PURE__ */ forwardRef21((props, forwardedRef) => {
2322
- const { __scopePopover, ...triggerProps } = props;
2323
- const context = usePopoverContext(TRIGGER_NAME2, __scopePopover);
2324
- const popperScope = usePopperScope(__scopePopover);
2325
- const composedTriggerRef = useComposedRefs(forwardedRef, context.triggerRef);
2326
- const trigger = /* @__PURE__ */ React29.createElement(Primitive11.button, {
2327
- type: "button",
2328
- "aria-haspopup": "dialog",
2329
- "aria-expanded": context.open,
2330
- "aria-controls": context.contentId,
2331
- "data-state": getState(context.open),
2332
- ...triggerProps,
2333
- ref: composedTriggerRef,
2334
- onClick: composeEventHandlers2(props.onClick, context.onOpenToggle)
2335
- });
2336
- return context.hasCustomAnchor ? trigger : /* @__PURE__ */ React29.createElement(PopperPrimitive.Anchor, {
2337
- asChild: true,
2338
- ...popperScope
2339
- }, trigger);
2340
- });
2341
- PopoverTrigger.displayName = TRIGGER_NAME2;
2342
- var VIRTUAL_TRIGGER_NAME2 = "PopoverVirtualTrigger";
2343
- var PopoverVirtualTrigger = (props) => {
2344
- const { __scopePopover, virtualRef } = props;
2345
- const context = usePopoverContext(VIRTUAL_TRIGGER_NAME2, __scopePopover);
2346
- const popperScope = usePopperScope(__scopePopover);
2347
- useEffect6(() => {
2348
- if (virtualRef.current) {
2349
- context.triggerRef.current = virtualRef.current;
2350
- }
2351
- });
2352
- return /* @__PURE__ */ React29.createElement(PopperPrimitive.Anchor, {
2353
- ...popperScope,
2354
- virtualRef
2355
- });
2356
- };
2357
- PopoverVirtualTrigger.displayName = VIRTUAL_TRIGGER_NAME2;
2358
- var PORTAL_NAME2 = "PopoverPortal";
2359
- var [PortalProvider, usePortalContext] = createPopoverContext(PORTAL_NAME2, {
2360
- forceMount: void 0
2361
- });
2362
- var PopoverPortal = (props) => {
2363
- const { __scopePopover, forceMount, children, container } = props;
2364
- const context = usePopoverContext(PORTAL_NAME2, __scopePopover);
2365
- return /* @__PURE__ */ React29.createElement(PortalProvider, {
2366
- scope: __scopePopover,
2367
- forceMount
2368
- }, /* @__PURE__ */ React29.createElement(Presence, {
2369
- present: forceMount || context.open
2370
- }, /* @__PURE__ */ React29.createElement(PortalPrimitive, {
2371
- asChild: true,
2372
- container
2373
- }, children)));
2374
- };
2375
- PopoverPortal.displayName = PORTAL_NAME2;
2376
- var CONTENT_NAME2 = "PopoverContent";
2377
- var PopoverContent = /* @__PURE__ */ forwardRef21((props, forwardedRef) => {
2378
- const portalContext = usePortalContext(CONTENT_NAME2, props.__scopePopover);
2379
- const { forceMount = portalContext.forceMount, ...contentProps } = props;
2380
- const context = usePopoverContext(CONTENT_NAME2, props.__scopePopover);
2381
- return /* @__PURE__ */ React29.createElement(Presence, {
2382
- present: forceMount || context.open
2383
- }, context.modal ? /* @__PURE__ */ React29.createElement(PopoverContentModal, {
2384
- ...contentProps,
2385
- ref: forwardedRef
2386
- }) : /* @__PURE__ */ React29.createElement(PopoverContentNonModal, {
2387
- ...contentProps,
2388
- ref: forwardedRef
2389
- }));
2390
- });
2391
- PopoverContent.displayName = CONTENT_NAME2;
2392
- var PopoverContentModal = /* @__PURE__ */ forwardRef21((props, forwardedRef) => {
2393
- const context = usePopoverContext(CONTENT_NAME2, props.__scopePopover);
2394
- const contentRef = useRef3(null);
2395
- const composedRefs = useComposedRefs(forwardedRef, contentRef);
2396
- const isRightClickOutsideRef = useRef3(false);
2397
- useEffect6(() => {
2398
- const content = contentRef.current;
2399
- if (content) {
2400
- return hideOthers(content);
2401
- }
2402
- }, []);
2403
- return /* @__PURE__ */ React29.createElement(RemoveScroll, {
2404
- as: Slot12,
2405
- allowPinchZoom: true
2406
- }, /* @__PURE__ */ React29.createElement(PopoverContentImpl, {
2407
- ...props,
2408
- ref: composedRefs,
2409
- // we make sure we're not trapping once it's been closed
2410
- // (closed !== unmounted when animating out)
2411
- trapFocus: context.open,
2412
- disableOutsidePointerEvents: true,
2413
- onCloseAutoFocus: composeEventHandlers2(props.onCloseAutoFocus, (event) => {
2414
- event.preventDefault();
2415
- if (!isRightClickOutsideRef.current) {
2416
- context.triggerRef.current?.focus();
2417
- }
2418
- }),
2419
- onPointerDownOutside: composeEventHandlers2(props.onPointerDownOutside, (event) => {
2420
- const originalEvent = event.detail.originalEvent;
2421
- const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;
2422
- const isRightClick = originalEvent.button === 2 || ctrlLeftClick;
2423
- isRightClickOutsideRef.current = isRightClick;
2424
- }, {
2425
- checkForDefaultPrevented: false
2426
- }),
2427
- // When focus is trapped, a `focusout` event may still happen.
2428
- // We make sure we don't trigger our `onDismiss` in such case.
2429
- onFocusOutside: composeEventHandlers2(props.onFocusOutside, (event) => event.preventDefault(), {
2430
- checkForDefaultPrevented: false
2431
- })
2432
- }));
2433
- });
2434
- var PopoverContentNonModal = /* @__PURE__ */ forwardRef21((props, forwardedRef) => {
2435
- const context = usePopoverContext(CONTENT_NAME2, props.__scopePopover);
2436
- const hasInteractedOutsideRef = useRef3(false);
2437
- const hasPointerDownOutsideRef = useRef3(false);
2438
- return /* @__PURE__ */ React29.createElement(PopoverContentImpl, {
2439
- ...props,
2440
- ref: forwardedRef,
2441
- trapFocus: false,
2442
- disableOutsidePointerEvents: false,
2443
- onCloseAutoFocus: (event) => {
2444
- props.onCloseAutoFocus?.(event);
2445
- if (!event.defaultPrevented) {
2446
- if (!hasInteractedOutsideRef.current) {
2447
- context.triggerRef.current?.focus();
2448
- }
2449
- event.preventDefault();
2450
- }
2451
- hasInteractedOutsideRef.current = false;
2452
- hasPointerDownOutsideRef.current = false;
2453
- },
2454
- onInteractOutside: (event) => {
2455
- props.onInteractOutside?.(event);
2456
- if (!event.defaultPrevented) {
2457
- hasInteractedOutsideRef.current = true;
2458
- if (event.detail.originalEvent.type === "pointerdown") {
2459
- hasPointerDownOutsideRef.current = true;
2460
- }
2461
- }
2462
- const target = event.target;
2463
- const targetIsTrigger = context.triggerRef.current?.contains(target);
2464
- if (targetIsTrigger) {
2465
- event.preventDefault();
2466
- }
2467
- if (event.detail.originalEvent.type === "focusin" && hasPointerDownOutsideRef.current) {
2468
- event.preventDefault();
2469
- }
2470
- }
2471
- });
2472
- });
2473
- var PopoverContentImpl = /* @__PURE__ */ forwardRef21((props, forwardedRef) => {
2474
- const { __scopePopover, trapFocus, onOpenAutoFocus, onCloseAutoFocus, disableOutsidePointerEvents, onEscapeKeyDown, onPointerDownOutside, onFocusOutside, onInteractOutside, collisionPadding = 8, classNames, ...contentProps } = props;
2475
- const context = usePopoverContext(CONTENT_NAME2, __scopePopover);
2476
- const popperScope = usePopperScope(__scopePopover);
2477
- const { tx } = useThemeContext();
2478
- const elevation = useElevationContext();
2479
- const safeCollisionPadding = useSafeCollisionPadding(collisionPadding);
2480
- useFocusGuards();
2481
- return /* @__PURE__ */ React29.createElement(FocusScope, {
2482
- asChild: true,
2483
- loop: true,
2484
- trapped: trapFocus,
2485
- onMountAutoFocus: onOpenAutoFocus,
2486
- onUnmountAutoFocus: onCloseAutoFocus
2487
- }, /* @__PURE__ */ React29.createElement(DismissableLayer, {
2488
- asChild: true,
2489
- disableOutsidePointerEvents,
2490
- onInteractOutside,
2491
- onEscapeKeyDown,
2492
- onPointerDownOutside,
2493
- onFocusOutside,
2494
- onDismiss: () => context.onOpenChange(false)
2495
- }, /* @__PURE__ */ React29.createElement(PopperPrimitive.Content, {
2496
- "data-state": getState(context.open),
2497
- role: "dialog",
2498
- id: context.contentId,
2499
- ...popperScope,
2500
- ...contentProps,
2501
- collisionPadding: safeCollisionPadding,
2502
- className: tx("popover.content", "popover", {
2503
- elevation
2504
- }, classNames),
2505
- ref: forwardedRef,
2506
- style: {
2507
- ...contentProps.style,
2508
- // re-namespace exposed content custom properties
2509
- ...{
2510
- "--radix-popover-content-transform-origin": "var(--radix-popper-transform-origin)",
2511
- "--radix-popover-content-available-width": "var(--radix-popper-available-width)",
2512
- "--radix-popover-content-available-height": "var(--radix-popper-available-height)",
2513
- "--radix-popover-trigger-width": "var(--radix-popper-anchor-width)",
2514
- "--radix-popover-trigger-height": "var(--radix-popper-anchor-height)"
2515
- }
2516
- }
2517
- })));
2518
- });
2519
- var CLOSE_NAME = "PopoverClose";
2520
- var PopoverClose = /* @__PURE__ */ forwardRef21((props, forwardedRef) => {
2521
- const { __scopePopover, ...closeProps } = props;
2522
- const context = usePopoverContext(CLOSE_NAME, __scopePopover);
2523
- return /* @__PURE__ */ React29.createElement(Primitive11.button, {
2524
- type: "button",
2525
- ...closeProps,
2526
- ref: forwardedRef,
2527
- onClick: composeEventHandlers2(props.onClick, () => context.onOpenChange(false))
2528
- });
2529
- });
2530
- PopoverClose.displayName = CLOSE_NAME;
2531
- var ARROW_NAME2 = "PopoverArrow";
2532
- var PopoverArrow = /* @__PURE__ */ forwardRef21((props, forwardedRef) => {
2533
- const { __scopePopover, classNames, ...arrowProps } = props;
2534
- const popperScope = usePopperScope(__scopePopover);
2535
- const { tx } = useThemeContext();
2536
- return /* @__PURE__ */ React29.createElement(PopperPrimitive.Arrow, {
2537
- ...popperScope,
2538
- ...arrowProps,
2539
- className: tx("popover.arrow", "popover__arrow", {}, classNames),
2540
- ref: forwardedRef
2541
- });
2542
- });
2543
- PopoverArrow.displayName = ARROW_NAME2;
2544
- var PopoverViewport = /* @__PURE__ */ forwardRef21(({ classNames, asChild, constrainInline = true, constrainBlock = true, children, ...props }, forwardedRef) => {
2545
- const { tx } = useThemeContext();
2546
- const Root5 = asChild ? Slot12 : Primitive11.div;
2547
- return /* @__PURE__ */ React29.createElement(Root5, {
2548
- ...props,
2549
- className: tx("popover.viewport", "popover__viewport", {
2550
- constrainInline,
2551
- constrainBlock
2552
- }, classNames),
2553
- ref: forwardedRef
2554
- }, children);
2555
- });
2556
- var getState = (open) => open ? "open" : "closed";
2557
- var Popover = {
2558
- Root: PopoverRoot,
2559
- Anchor: PopoverAnchor,
2560
- Trigger: PopoverTrigger,
2561
- VirtualTrigger: PopoverVirtualTrigger,
2562
- Portal: PopoverPortal,
2563
- Content: PopoverContent,
2564
- Close: PopoverClose,
2565
- Arrow: PopoverArrow,
2566
- Viewport: PopoverViewport
2567
- };
2568
-
2569
- // packages/ui/react-ui/src/components/Status/Status.tsx
2570
- import React30, { forwardRef as forwardRef22 } from "react";
2571
- var Status = /* @__PURE__ */ forwardRef22(({ classNames, children, progress = 0, indeterminate, variant, ...props }, forwardedRef) => {
2572
- const { tx } = useThemeContext();
2573
- return /* @__PURE__ */ React30.createElement("span", {
2574
- role: "status",
2575
- ...props,
2576
- className: tx("status.root", "status", {
2577
- indeterminate,
2578
- variant
2579
- }, classNames),
2580
- ref: forwardedRef
2581
- }, /* @__PURE__ */ React30.createElement("span", {
2582
- role: "none",
2583
- className: tx("status.bar", "status__bar", {
2584
- indeterminate,
2585
- variant
2586
- }, classNames),
2587
- ...!indeterminate && {
2588
- style: {
2589
- width: `${Math.round(progress * 100)}%`
2590
- }
2591
- }
2592
- }), children);
2593
- });
2594
-
2595
- // packages/ui/react-ui/src/components/ScrollArea/ScrollArea.tsx
2596
- import { Root as ScrollAreaPrimitiveRoot, Viewport as ScrollAreaPrimitiveViewport, Scrollbar as ScrollAreaPrimitiveScrollbar, Thumb as ScrollAreaPrimitiveThumb, Corner as ScrollAreaPrimitiveCorner } from "@radix-ui/react-scroll-area";
2597
- import React31, { forwardRef as forwardRef23 } from "react";
2598
- var ScrollAreaRoot = /* @__PURE__ */ forwardRef23(({ classNames, ...props }, forwardedRef) => {
2599
- const { tx } = useThemeContext();
2600
- return /* @__PURE__ */ React31.createElement(ScrollAreaPrimitiveRoot, {
2601
- ...props,
2602
- className: tx("scrollArea.root", "scroll-area", {}, classNames),
2603
- ref: forwardedRef
2604
- });
2605
- });
2606
- var ScrollAreaViewport = /* @__PURE__ */ forwardRef23(({ classNames, ...props }, forwardedRef) => {
2607
- const { tx } = useThemeContext();
2608
- return /* @__PURE__ */ React31.createElement(ScrollAreaPrimitiveViewport, {
2609
- ...props,
2610
- className: tx("scrollArea.viewport", "scroll-area", {}, classNames),
2611
- ref: forwardedRef
2612
- });
2613
- });
2614
- var ScrollAreaScrollbar = /* @__PURE__ */ forwardRef23(({ classNames, variant = "fine", ...props }, forwardedRef) => {
2615
- const { tx } = useThemeContext();
2616
- return /* @__PURE__ */ React31.createElement(ScrollAreaPrimitiveScrollbar, {
2617
- "data-variant": variant,
2618
- ...props,
2619
- className: tx("scrollArea.scrollbar", "scroll-area__scrollbar", {}, classNames),
2620
- ref: forwardedRef
2621
- });
2622
- });
2623
- var ScrollAreaThumb = /* @__PURE__ */ forwardRef23(({ classNames, ...props }, forwardedRef) => {
2624
- const { tx } = useThemeContext();
2625
- return /* @__PURE__ */ React31.createElement(ScrollAreaPrimitiveThumb, {
2626
- ...props,
2627
- className: tx("scrollArea.thumb", "scroll-area__thumb", {}, classNames),
2628
- ref: forwardedRef
2629
- });
2630
- });
2631
- var ScrollAreaCorner = /* @__PURE__ */ forwardRef23(({ classNames, ...props }, forwardedRef) => {
2632
- const { tx } = useThemeContext();
2633
- return /* @__PURE__ */ React31.createElement(ScrollAreaPrimitiveCorner, {
2634
- ...props,
2635
- className: tx("scrollArea.corner", "scroll-area__corner", {}, classNames),
2636
- ref: forwardedRef
2637
- });
2638
- });
2639
- var ScrollArea = {
2640
- Root: ScrollAreaRoot,
2641
- Viewport: ScrollAreaViewport,
2642
- Scrollbar: ScrollAreaScrollbar,
2643
- Thumb: ScrollAreaThumb,
2644
- Corner: ScrollAreaCorner
2645
- };
2646
-
2647
- // packages/ui/react-ui/src/components/Select/Select.tsx
2648
- import { CaretDown as CaretDown2, CaretUp } from "@phosphor-icons/react";
2649
- import * as SelectPrimitive from "@radix-ui/react-select";
2650
- import React32, { forwardRef as forwardRef24 } from "react";
2651
- var SelectRoot = SelectPrimitive.Root;
2652
- var SelectTrigger = SelectPrimitive.Trigger;
2653
- var SelectValue = SelectPrimitive.Value;
2654
- var SelectIcon = SelectPrimitive.Icon;
2655
- var SelectPortal = SelectPrimitive.Portal;
2656
- var SelectTriggerButton = /* @__PURE__ */ forwardRef24(({ children, placeholder, ...props }, forwardedRef) => {
2657
- const { tx } = useThemeContext();
2658
- return /* @__PURE__ */ React32.createElement(SelectPrimitive.Trigger, {
2659
- asChild: true,
2660
- ref: forwardedRef
2661
- }, /* @__PURE__ */ React32.createElement(Button, props, /* @__PURE__ */ React32.createElement(SelectPrimitive.Value, {
2662
- placeholder
2663
- }, children), /* @__PURE__ */ React32.createElement("span", {
2664
- className: "w-1 flex-1"
2665
- }), /* @__PURE__ */ React32.createElement(SelectPrimitive.Icon, {
2666
- asChild: true
2667
- }, /* @__PURE__ */ React32.createElement(CaretDown2, {
2668
- className: tx("select.triggerIcon", "select__trigger__icon", {}),
2669
- weight: "bold"
2670
- }))));
2671
- });
2672
- var SelectContent = /* @__PURE__ */ forwardRef24(({ classNames, children, collisionPadding = 8, ...props }, forwardedRef) => {
2673
- const { tx } = useThemeContext();
2674
- const elevation = useElevationContext();
2675
- const safeCollisionPadding = useSafeCollisionPadding(collisionPadding);
2676
- return /* @__PURE__ */ React32.createElement(SelectPrimitive.Content, {
2677
- ...props,
2678
- collisionPadding: safeCollisionPadding,
2679
- className: tx("select.content", "select__content", {
2680
- elevation
2681
- }, classNames),
2682
- position: "popper",
2683
- ref: forwardedRef
2684
- }, children);
2685
- });
2686
- var SelectScrollUpButton2 = /* @__PURE__ */ forwardRef24(({ classNames, children, ...props }, forwardedRef) => {
2687
- const { tx } = useThemeContext();
2688
- return /* @__PURE__ */ React32.createElement(SelectPrimitive.SelectScrollUpButton, {
2689
- ...props,
2690
- className: tx("select.scrollButton", "select__scroll-button--up", {}, classNames),
2691
- ref: forwardedRef
2692
- }, children ?? /* @__PURE__ */ React32.createElement(CaretUp, {
2693
- weight: "bold"
2694
- }));
2695
- });
2696
- var SelectScrollDownButton2 = /* @__PURE__ */ forwardRef24(({ classNames, children, ...props }, forwardedRef) => {
2697
- const { tx } = useThemeContext();
2698
- return /* @__PURE__ */ React32.createElement(SelectPrimitive.SelectScrollDownButton, {
2699
- ...props,
2700
- className: tx("select.scrollButton", "select__scroll-button--down", {}, classNames),
2701
- ref: forwardedRef
2702
- }, children ?? /* @__PURE__ */ React32.createElement(CaretDown2, {
2703
- weight: "bold"
2704
- }));
2705
- });
2706
- var SelectViewport2 = /* @__PURE__ */ forwardRef24(({ classNames, asChild, children, ...props }, forwardedRef) => {
2707
- const { tx } = useThemeContext();
2708
- return /* @__PURE__ */ React32.createElement(SelectPrimitive.SelectViewport, {
2709
- ...props,
2710
- className: tx("select.viewport", "select__viewport", {}, classNames),
2711
- ref: forwardedRef
2712
- }, children);
2713
- });
2714
- var SelectItem = /* @__PURE__ */ forwardRef24(({ classNames, ...props }, forwardedRef) => {
2715
- const { tx } = useThemeContext();
2716
- return /* @__PURE__ */ React32.createElement(SelectPrimitive.Item, {
2717
- ...props,
2718
- className: tx("select.item", "option", {}, classNames),
2719
- ref: forwardedRef
2720
- });
2721
- });
2722
- var SelectItemText = SelectPrimitive.ItemText;
2723
- var SelectItemIndicator = /* @__PURE__ */ forwardRef24(({ classNames, children, ...props }, forwardedRef) => {
2724
- const { tx } = useThemeContext();
2725
- return /* @__PURE__ */ React32.createElement(SelectPrimitive.ItemIndicator, {
2726
- ...props,
2727
- className: tx("select.itemIndicator", "option__indicator", {}, classNames),
2728
- ref: forwardedRef
2729
- }, children);
2730
- });
2731
- var SelectOption = /* @__PURE__ */ forwardRef24(({ children, classNames, ...props }, forwardedRef) => {
2732
- const { tx } = useThemeContext();
2733
- return /* @__PURE__ */ React32.createElement(SelectPrimitive.Item, {
2734
- ...props,
2735
- className: tx("select.item", "option", {}, classNames),
2736
- ref: forwardedRef
2737
- }, /* @__PURE__ */ React32.createElement(SelectPrimitive.ItemText, null, children), /* @__PURE__ */ React32.createElement("span", {
2738
- className: "grow w-1"
2739
- }), /* @__PURE__ */ React32.createElement(Icon, {
2740
- icon: "ph--check--regular"
2741
- }));
2742
- });
2743
- var SelectGroup = SelectPrimitive.Group;
2744
- var SelectLabel = SelectPrimitive.Label;
2745
- var SelectSeparator = /* @__PURE__ */ forwardRef24(({ classNames, ...props }, forwardedRef) => {
2746
- const { tx } = useThemeContext();
2747
- return /* @__PURE__ */ React32.createElement(SelectPrimitive.Separator, {
2748
- ...props,
2749
- className: tx("select.separator", "select__separator", {}, classNames),
2750
- ref: forwardedRef
2751
- });
2752
- });
2753
- var SelectArrow = /* @__PURE__ */ forwardRef24(({ classNames, ...props }, forwardedRef) => {
2754
- const { tx } = useThemeContext();
2755
- return /* @__PURE__ */ React32.createElement(SelectPrimitive.Arrow, {
2756
- ...props,
2757
- className: tx("select.arrow", "select__arrow", {}, classNames),
2758
- ref: forwardedRef
2759
- });
2760
- });
2761
- var Select = {
2762
- Root: SelectRoot,
2763
- Trigger: SelectTrigger,
2764
- TriggerButton: SelectTriggerButton,
2765
- Value: SelectValue,
2766
- Icon: SelectIcon,
2767
- Portal: SelectPortal,
2768
- Content: SelectContent,
2769
- ScrollUpButton: SelectScrollUpButton2,
2770
- ScrollDownButton: SelectScrollDownButton2,
2771
- Viewport: SelectViewport2,
2772
- Item: SelectItem,
2773
- ItemText: SelectItemText,
2774
- ItemIndicator: SelectItemIndicator,
2775
- Option: SelectOption,
2776
- Group: SelectGroup,
2777
- Label: SelectLabel,
2778
- Separator: SelectSeparator,
2779
- Arrow: SelectArrow
2780
- };
2781
-
2782
- // packages/ui/react-ui/src/components/Separator/Separator.tsx
2783
- import { Separator as SeparatorPrimitive } from "@radix-ui/react-separator";
2784
- import React33, { forwardRef as forwardRef25 } from "react";
2785
- var Separator4 = /* @__PURE__ */ forwardRef25(({ classNames, orientation = "horizontal", ...props }, forwardedRef) => {
2786
- const { tx } = useThemeContext();
2787
- return /* @__PURE__ */ React33.createElement(SeparatorPrimitive, {
2788
- orientation,
2789
- ...props,
2790
- className: tx("separator.root", "separator", {
2791
- orientation
2792
- }, classNames),
2793
- ref: forwardedRef
2794
- });
2795
- });
2796
-
2797
- // packages/ui/react-ui/src/components/Tag/Tag.tsx
2798
- import { Primitive as Primitive12 } from "@radix-ui/react-primitive";
2799
- import { Slot as Slot13 } from "@radix-ui/react-slot";
2800
- import React34, { forwardRef as forwardRef26 } from "react";
2801
- var Tag = /* @__PURE__ */ forwardRef26(({ asChild, palette = "neutral", classNames, ...props }, forwardedRef) => {
2802
- const { tx } = useThemeContext();
2803
- const Root5 = asChild ? Slot13 : Primitive12.span;
2804
- return /* @__PURE__ */ React34.createElement(Root5, {
2805
- ...props,
2806
- className: tx("tag.root", "dx-tag", {
2807
- palette
2808
- }, classNames),
2809
- "data-hue": palette,
2810
- ref: forwardedRef
2811
- });
2812
- });
2813
-
2814
- // packages/ui/react-ui/src/components/Toast/Toast.tsx
2815
- import { Primitive as Primitive13 } from "@radix-ui/react-primitive";
2816
- import { Slot as Slot14 } from "@radix-ui/react-slot";
2817
- 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";
2818
- import React35, { forwardRef as forwardRef27 } from "react";
2819
- var ToastProvider = ToastProviderPrimitive;
2820
- var ToastViewport = /* @__PURE__ */ forwardRef27(({ classNames, ...props }, forwardedRef) => {
2821
- const { tx } = useThemeContext();
2822
- return /* @__PURE__ */ React35.createElement(ToastViewportPrimitive, {
2823
- className: tx("toast.viewport", "toast-viewport", {}, classNames),
2824
- ref: forwardedRef
2825
- });
2826
- });
2827
- var ToastRoot = /* @__PURE__ */ forwardRef27(({ classNames, children, ...props }, forwardedRef) => {
2828
- const { tx } = useThemeContext();
2829
- return /* @__PURE__ */ React35.createElement(ToastRootPrimitive, {
2830
- ...props,
2831
- className: tx("toast.root", "toast", {}, classNames),
2832
- ref: forwardedRef
2833
- }, /* @__PURE__ */ React35.createElement(ElevationProvider, {
2834
- elevation: "toast"
2835
- }, children));
2836
- });
2837
- var ToastBody = /* @__PURE__ */ forwardRef27(({ asChild, classNames, ...props }, forwardedRef) => {
2838
- const { tx } = useThemeContext();
2839
- const Root5 = asChild ? Slot14 : Primitive13.div;
2840
- return /* @__PURE__ */ React35.createElement(Root5, {
2841
- ...props,
2842
- className: tx("toast.body", "toast__body", {}, classNames),
2843
- ref: forwardedRef
2844
- });
2845
- });
2846
- var ToastTitle = /* @__PURE__ */ forwardRef27(({ asChild, classNames, ...props }, forwardedRef) => {
2847
- const { tx } = useThemeContext();
2848
- const Root5 = asChild ? Slot14 : ToastTitlePrimitive;
2849
- return /* @__PURE__ */ React35.createElement(Root5, {
2850
- ...props,
2851
- className: tx("toast.title", "toast__title", {}, classNames),
2852
- ref: forwardedRef
2853
- });
2854
- });
2855
- var ToastDescription = /* @__PURE__ */ forwardRef27(({ asChild, classNames, ...props }, forwardedRef) => {
2856
- const { tx } = useThemeContext();
2857
- const Root5 = asChild ? Slot14 : ToastDescriptionPrimitive;
2858
- return /* @__PURE__ */ React35.createElement(Root5, {
2859
- ...props,
2860
- className: tx("toast.description", "toast__description", {}, classNames),
2861
- ref: forwardedRef
2862
- });
2863
- });
2864
- var ToastActions = /* @__PURE__ */ forwardRef27(({ asChild, classNames, ...props }, forwardedRef) => {
2865
- const { tx } = useThemeContext();
2866
- const Root5 = asChild ? Slot14 : Primitive13.div;
2867
- return /* @__PURE__ */ React35.createElement(Root5, {
2868
- ...props,
2869
- className: tx("toast.actions", "toast__actions", {}, classNames),
2870
- ref: forwardedRef
2871
- });
2872
- });
2873
- var ToastAction = ToastActionPrimitive;
2874
- var ToastClose = ToastClosePrimitive;
2875
- var Toast = {
2876
- Provider: ToastProvider,
2877
- Viewport: ToastViewport,
2878
- Root: ToastRoot,
2879
- Body: ToastBody,
2880
- Title: ToastTitle,
2881
- Description: ToastDescription,
2882
- Actions: ToastActions,
2883
- Action: ToastAction,
2884
- Close: ToastClose
2885
- };
2886
-
2887
- // packages/ui/react-ui/src/components/Toolbar/Toolbar.tsx
2888
- import * as ToolbarPrimitive from "@radix-ui/react-toolbar";
2889
- import React36, { forwardRef as forwardRef28 } from "react";
2890
- var ToolbarRoot = /* @__PURE__ */ forwardRef28(({ classNames, children, ...props }, forwardedRef) => {
2891
- const { tx } = useThemeContext();
2892
- return /* @__PURE__ */ React36.createElement(ToolbarPrimitive.Root, {
2893
- ...props,
2894
- className: tx("toolbar.root", "toolbar", {}, classNames),
2895
- ref: forwardedRef
2896
- }, children);
2897
- });
2898
- var ToolbarButton = /* @__PURE__ */ forwardRef28((props, forwardedRef) => {
2899
- return /* @__PURE__ */ React36.createElement(ToolbarPrimitive.Button, {
2900
- asChild: true
2901
- }, /* @__PURE__ */ React36.createElement(Button, {
2902
- ...props,
2903
- ref: forwardedRef
2904
- }));
2905
- });
2906
- var ToolbarIconButton = /* @__PURE__ */ forwardRef28((props, forwardedRef) => {
2907
- return /* @__PURE__ */ React36.createElement(ToolbarPrimitive.Button, {
2908
- asChild: true
2909
- }, /* @__PURE__ */ React36.createElement(IconButton, {
2910
- ...props,
2911
- ref: forwardedRef
2912
- }));
2913
- });
2914
- var ToolbarToggle = /* @__PURE__ */ forwardRef28((props, forwardedRef) => {
2915
- return /* @__PURE__ */ React36.createElement(ToolbarPrimitive.Button, {
2916
- asChild: true
2917
- }, /* @__PURE__ */ React36.createElement(Toggle, {
2918
- ...props,
2919
- ref: forwardedRef
2920
- }));
2921
- });
2922
- var ToolbarLink = /* @__PURE__ */ forwardRef28((props, forwardedRef) => {
2923
- return /* @__PURE__ */ React36.createElement(ToolbarPrimitive.Link, {
2924
- asChild: true
2925
- }, /* @__PURE__ */ React36.createElement(Link, {
2926
- ...props,
2927
- ref: forwardedRef
2928
- }));
2929
- });
2930
- var ToolbarToggleGroup2 = /* @__PURE__ */ forwardRef28(({ classNames, children, elevation, ...props }, forwardedRef) => {
2931
- return /* @__PURE__ */ React36.createElement(ToolbarPrimitive.ToolbarToggleGroup, {
2932
- ...props,
2933
- asChild: true
2934
- }, /* @__PURE__ */ React36.createElement(ButtonGroup, {
2935
- classNames,
2936
- children,
2937
- elevation,
2938
- ref: forwardedRef
2939
- }));
2940
- });
2941
- var ToolbarToggleGroupItem = /* @__PURE__ */ forwardRef28(({ variant, density, elevation, classNames, children, ...props }, forwardedRef) => {
2942
- return /* @__PURE__ */ React36.createElement(ToolbarPrimitive.ToolbarToggleItem, {
2943
- ...props,
2944
- asChild: true
2945
- }, /* @__PURE__ */ React36.createElement(Button, {
2946
- variant,
2947
- density,
2948
- elevation,
2949
- classNames,
2950
- children,
2951
- ref: forwardedRef
2952
- }));
2953
- });
2954
- var ToolbarToggleGroupIconItem = /* @__PURE__ */ forwardRef28(({ variant, density, elevation, classNames, icon, label, iconOnly, ...props }, forwardedRef) => {
2955
- return /* @__PURE__ */ React36.createElement(ToolbarPrimitive.ToolbarToggleItem, {
2956
- ...props,
2957
- asChild: true
2958
- }, /* @__PURE__ */ React36.createElement(IconButton, {
2959
- variant,
2960
- density,
2961
- elevation,
2962
- classNames,
2963
- icon,
2964
- label,
2965
- iconOnly,
2966
- ref: forwardedRef
2967
- }));
2968
- });
2969
- var ToolbarSeparator = /* @__PURE__ */ forwardRef28(({ variant = "line", ...props }, forwardedRef) => {
2970
- return variant === "line" ? /* @__PURE__ */ React36.createElement(ToolbarPrimitive.Separator, {
2971
- asChild: true
2972
- }, /* @__PURE__ */ React36.createElement(Separator4, {
2973
- ...props,
2974
- ref: forwardedRef
2975
- })) : /* @__PURE__ */ React36.createElement(ToolbarPrimitive.Separator, {
2976
- className: "grow",
2977
- ref: forwardedRef
2978
- });
2979
- });
2980
- var Toolbar = {
2981
- Root: ToolbarRoot,
2982
- Button: ToolbarButton,
2983
- IconButton: ToolbarIconButton,
2984
- Link: ToolbarLink,
2985
- Toggle: ToolbarToggle,
2986
- ToggleGroup: ToolbarToggleGroup2,
2987
- ToggleGroupItem: ToolbarToggleGroupItem,
2988
- ToggleGroupIconItem: ToolbarToggleGroupIconItem,
2989
- Separator: ToolbarSeparator
2990
- };
2991
76
  export {
2992
77
  AlertDialog,
2993
78
  AnchoredOverflow,
@@ -2997,7 +82,7 @@ export {
2997
82
  Button,
2998
83
  ButtonGroup,
2999
84
  Clipboard,
3000
- ContextMenu2 as ContextMenu,
85
+ ContextMenu,
3001
86
  DensityContext,
3002
87
  DensityProvider,
3003
88
  Dialog,
@@ -3017,7 +102,7 @@ export {
3017
102
  Popover,
3018
103
  ScrollArea,
3019
104
  Select,
3020
- Separator4 as Separator,
105
+ Separator,
3021
106
  Status,
3022
107
  Tag,
3023
108
  ThemeContext,
@@ -3034,6 +119,7 @@ export {
3034
119
  Treegrid,
3035
120
  createDropdownMenuScope,
3036
121
  createPopoverScope,
122
+ createTooltipScope,
3037
123
  hasIosKeyboard,
3038
124
  initialSafeArea,
3039
125
  isLabel,
@@ -3053,6 +139,7 @@ export {
3053
139
  useSafeArea,
3054
140
  useSidebars,
3055
141
  useThemeContext,
142
+ useTooltipContext,
3056
143
  useTranslation,
3057
144
  useTranslationsContext,
3058
145
  useVisualViewport