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