@dxos/react-ui 0.8.1 → 0.8.2-main.10c050d

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