@dxos/react-ui 0.8.2-main.f081794 → 0.8.2-main.fbd8ed0

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 (112) hide show
  1. package/dist/lib/browser/index.mjs +1606 -1073
  2. package/dist/lib/browser/index.mjs.map +4 -4
  3. package/dist/lib/browser/meta.json +1 -1
  4. package/dist/lib/node/index.cjs +1941 -1406
  5. package/dist/lib/node/index.cjs.map +4 -4
  6. package/dist/lib/node/meta.json +1 -1
  7. package/dist/lib/node-esm/index.mjs +1606 -1073
  8. package/dist/lib/node-esm/index.mjs.map +4 -4
  9. package/dist/lib/node-esm/meta.json +1 -1
  10. package/dist/types/src/components/Avatars/Avatar.stories.d.ts +2 -2
  11. package/dist/types/src/components/Avatars/Avatar.stories.d.ts.map +1 -1
  12. package/dist/types/src/components/Avatars/AvatarGroup.stories.d.ts +0 -1
  13. package/dist/types/src/components/Avatars/AvatarGroup.stories.d.ts.map +1 -1
  14. package/dist/types/src/components/Buttons/Button.stories.d.ts +10 -44
  15. package/dist/types/src/components/Buttons/Button.stories.d.ts.map +1 -1
  16. package/dist/types/src/components/Buttons/IconButton.d.ts +4 -5
  17. package/dist/types/src/components/Buttons/IconButton.d.ts.map +1 -1
  18. package/dist/types/src/components/Buttons/IconButton.stories.d.ts +7 -6
  19. package/dist/types/src/components/Buttons/IconButton.stories.d.ts.map +1 -1
  20. package/dist/types/src/components/Buttons/Toggle.stories.d.ts.map +1 -1
  21. package/dist/types/src/components/Buttons/ToggleGroup.stories.d.ts +1 -4
  22. package/dist/types/src/components/Buttons/ToggleGroup.stories.d.ts.map +1 -1
  23. package/dist/types/src/components/Clipboard/ClipboardProvider.d.ts.map +1 -1
  24. package/dist/types/src/components/Clipboard/CopyButton.d.ts +2 -1
  25. package/dist/types/src/components/Clipboard/CopyButton.d.ts.map +1 -1
  26. package/dist/types/src/components/Clipboard/index.d.ts +2 -2
  27. package/dist/types/src/components/DensityProvider/DensityProvider.d.ts.map +1 -1
  28. package/dist/types/src/components/Dialogs/AlertDialog.stories.d.ts +2 -2
  29. package/dist/types/src/components/Dialogs/AlertDialog.stories.d.ts.map +1 -1
  30. package/dist/types/src/components/Dialogs/Dialog.d.ts +2 -2
  31. package/dist/types/src/components/Dialogs/Dialog.d.ts.map +1 -1
  32. package/dist/types/src/components/Dialogs/Dialog.stories.d.ts +2 -2
  33. package/dist/types/src/components/Dialogs/Dialog.stories.d.ts.map +1 -1
  34. package/dist/types/src/components/ElevationProvider/ElevationProvider.d.ts.map +1 -1
  35. package/dist/types/src/components/Input/Input.d.ts +1 -1
  36. package/dist/types/src/components/Input/Input.d.ts.map +1 -1
  37. package/dist/types/src/components/Input/Input.stories.d.ts +33 -159
  38. package/dist/types/src/components/Input/Input.stories.d.ts.map +1 -1
  39. package/dist/types/src/components/Lists/ListDropIndicator.d.ts.map +1 -1
  40. package/dist/types/src/components/Lists/Tree.stories.d.ts.map +1 -1
  41. package/dist/types/src/components/Lists/TreeDropIndicator.d.ts.map +1 -1
  42. package/dist/types/src/components/Lists/Treegrid.stories.d.ts +1 -1
  43. package/dist/types/src/components/Lists/Treegrid.stories.d.ts.map +1 -1
  44. package/dist/types/src/components/Main/Main.d.ts.map +1 -1
  45. package/dist/types/src/components/Main/Main.stories.d.ts.map +1 -1
  46. package/dist/types/src/components/Main/useSwipeToDismiss.d.ts.map +1 -1
  47. package/dist/types/src/components/Message/Message.stories.d.ts +2 -2
  48. package/dist/types/src/components/Message/Message.stories.d.ts.map +1 -1
  49. package/dist/types/src/components/Popover/Popover.d.ts +15 -6
  50. package/dist/types/src/components/Popover/Popover.d.ts.map +1 -1
  51. package/dist/types/src/components/Popover/Popover.stories.d.ts +5 -1
  52. package/dist/types/src/components/Popover/Popover.stories.d.ts.map +1 -1
  53. package/dist/types/src/components/ScrollArea/ScrollArea.d.ts.map +1 -1
  54. package/dist/types/src/components/ScrollArea/ScrollArea.stories.d.ts.map +1 -1
  55. package/dist/types/src/components/Status/Status.stories.d.ts.map +1 -1
  56. package/dist/types/src/components/ThemeProvider/ThemeProvider.d.ts.map +1 -1
  57. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts +1 -1
  58. package/dist/types/src/components/ThemeProvider/TranslationsProvider.d.ts.map +1 -1
  59. package/dist/types/src/components/Toast/Toast.stories.d.ts +2 -2
  60. package/dist/types/src/components/Toast/Toast.stories.d.ts.map +1 -1
  61. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts.map +1 -1
  62. package/dist/types/src/components/Tooltip/Tooltip.d.ts +94 -20
  63. package/dist/types/src/components/Tooltip/Tooltip.d.ts.map +1 -1
  64. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts +41 -17
  65. package/dist/types/src/components/Tooltip/Tooltip.stories.d.ts.map +1 -1
  66. package/dist/types/src/components/index.d.ts +1 -1
  67. package/dist/types/src/components/index.d.ts.map +1 -1
  68. package/dist/types/src/hooks/useDensityContext.d.ts.map +1 -1
  69. package/dist/types/src/hooks/useElevationContext.d.ts.map +1 -1
  70. package/dist/types/src/hooks/useIconHref.d.ts.map +1 -1
  71. package/dist/types/src/hooks/useSafeCollisionPadding.d.ts.map +1 -1
  72. package/dist/types/src/hooks/useVisualViewport.d.ts.map +1 -1
  73. package/dist/types/src/playground/Controls.stories.d.ts +1 -1
  74. package/dist/types/src/playground/Controls.stories.d.ts.map +1 -1
  75. package/dist/types/src/playground/Custom.stories.d.ts +8 -0
  76. package/dist/types/src/playground/Custom.stories.d.ts.map +1 -0
  77. package/dist/types/src/testing/decorators/withVariants.d.ts.map +1 -1
  78. package/dist/types/tsconfig.tsbuildinfo +1 -1
  79. package/package.json +14 -13
  80. package/src/components/Avatars/Avatar.stories.tsx +27 -27
  81. package/src/components/Avatars/Avatar.tsx +1 -1
  82. package/src/components/Avatars/AvatarGroup.stories.tsx +4 -5
  83. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +2 -2
  84. package/src/components/Buttons/Button.stories.tsx +19 -14
  85. package/src/components/Buttons/IconButton.stories.tsx +9 -10
  86. package/src/components/Buttons/IconButton.tsx +8 -33
  87. package/src/components/Buttons/Toggle.stories.tsx +2 -2
  88. package/src/components/Buttons/ToggleGroup.stories.tsx +3 -7
  89. package/src/components/Clipboard/CopyButton.tsx +22 -24
  90. package/src/components/Dialogs/AlertDialog.stories.tsx +4 -11
  91. package/src/components/Dialogs/Dialog.stories.tsx +3 -3
  92. package/src/components/Dialogs/Dialog.tsx +7 -4
  93. package/src/components/Input/Input.stories.tsx +67 -56
  94. package/src/components/Input/Input.tsx +1 -0
  95. package/src/components/Lists/Tree.stories.tsx +2 -2
  96. package/src/components/Lists/Treegrid.stories.tsx +12 -12
  97. package/src/components/Main/Main.stories.tsx +2 -2
  98. package/src/components/Menus/ContextMenu.stories.tsx +2 -2
  99. package/src/components/Menus/DropdownMenu.stories.tsx +2 -2
  100. package/src/components/Message/Message.stories.tsx +3 -3
  101. package/src/components/Popover/Popover.stories.tsx +2 -2
  102. package/src/components/Popover/Popover.tsx +8 -4
  103. package/src/components/ScrollArea/ScrollArea.stories.tsx +2 -2
  104. package/src/components/ScrollArea/ScrollArea.tsx +3 -0
  105. package/src/components/Toast/Toast.stories.tsx +15 -10
  106. package/src/components/Toolbar/Toolbar.stories.tsx +2 -2
  107. package/src/components/Tooltip/Tooltip.stories.tsx +43 -18
  108. package/src/components/Tooltip/Tooltip.tsx +748 -58
  109. package/src/components/index.ts +1 -1
  110. package/src/playground/Controls.stories.tsx +2 -2
  111. package/src/playground/Custom.stories.tsx +137 -0
  112. package/src/playground/Typography.stories.tsx +2 -2
@@ -74,6 +74,7 @@ __export(node_exports, {
74
74
  Treegrid: () => Treegrid,
75
75
  createDropdownMenuScope: () => createDropdownMenuScope,
76
76
  createPopoverScope: () => createPopoverScope,
77
+ createTooltipScope: () => createTooltipScope,
77
78
  hasIosKeyboard: () => hasIosKeyboard,
78
79
  initialSafeArea: () => initialSafeArea,
79
80
  isLabel: () => isLabel,
@@ -93,6 +94,7 @@ __export(node_exports, {
93
94
  useSafeArea: () => useSafeArea,
94
95
  useSidebars: () => useSidebars,
95
96
  useThemeContext: () => useThemeContext,
97
+ useTooltipContext: () => useTooltipContext,
96
98
  useTranslation: () => useTranslation,
97
99
  useTranslationsContext: () => useTranslationsContext,
98
100
  useVisualViewport: () => useVisualViewport
@@ -139,86 +141,98 @@ var import_react_slot5 = require("@radix-ui/react-slot");
139
141
  var import_react14 = __toESM(require("react"));
140
142
  var import_react15 = __toESM(require("react"));
141
143
  var import_react16 = __toESM(require("react"));
142
- var import_react_tooltip = require("@radix-ui/react-tooltip");
144
+ var import_primitive = require("@radix-ui/primitive");
145
+ var import_react_compose_refs = require("@radix-ui/react-compose-refs");
146
+ var import_react_context3 = require("@radix-ui/react-context");
147
+ var import_react_dismissable_layer = require("@radix-ui/react-dismissable-layer");
148
+ var import_react_id = require("@radix-ui/react-id");
149
+ var PopperPrimitive = __toESM(require("@radix-ui/react-popper"));
150
+ var import_react_popper = require("@radix-ui/react-popper");
151
+ var import_react_portal = require("@radix-ui/react-portal");
152
+ var import_react_presence = require("@radix-ui/react-presence");
153
+ var import_react_primitive6 = require("@radix-ui/react-primitive");
154
+ var import_react_slot6 = require("@radix-ui/react-slot");
155
+ var import_react_use_controllable_state = require("@radix-ui/react-use-controllable-state");
156
+ var VisuallyHiddenPrimitive = __toESM(require("@radix-ui/react-visually-hidden"));
143
157
  var import_react17 = __toESM(require("react"));
144
- var import_react18 = require("react");
145
158
  var import_react_toggle = require("@radix-ui/react-toggle");
146
- var import_react19 = __toESM(require("react"));
159
+ var import_react18 = __toESM(require("react"));
147
160
  var import_react_toggle_group = require("@radix-ui/react-toggle-group");
161
+ var import_react19 = __toESM(require("react"));
148
162
  var import_react20 = __toESM(require("react"));
149
163
  var import_react21 = __toESM(require("react"));
150
- var import_react22 = __toESM(require("react"));
151
164
  var import_react_ui_theme2 = require("@dxos/react-ui-theme");
152
165
  var import_keyborg = require("keyborg");
166
+ var import_react22 = __toESM(require("react"));
153
167
  var import_react23 = __toESM(require("react"));
154
168
  var import_react24 = __toESM(require("react"));
155
- var import_react25 = __toESM(require("react"));
156
- var import_react_context3 = require("@radix-ui/react-context");
169
+ var import_react_context4 = require("@radix-ui/react-context");
157
170
  var import_react_dialog = require("@radix-ui/react-dialog");
158
- var import_react26 = __toESM(require("react"));
171
+ var import_react25 = __toESM(require("react"));
159
172
  var import_react_alert_dialog = require("@radix-ui/react-alert-dialog");
160
- var import_react_context4 = require("@radix-ui/react-context");
161
- var import_react27 = __toESM(require("react"));
162
- var ContextMenuPrimitive = __toESM(require("@radix-ui/react-context-menu"));
163
- var import_react_primitive6 = require("@radix-ui/react-primitive");
164
- var import_react_slot6 = require("@radix-ui/react-slot");
165
- var import_react28 = __toESM(require("react"));
166
- var import_primitive = require("@radix-ui/primitive");
167
- var import_react_compose_refs = require("@radix-ui/react-compose-refs");
168
173
  var import_react_context5 = require("@radix-ui/react-context");
169
- var import_react_id = require("@radix-ui/react-id");
170
- var MenuPrimitive = __toESM(require("@radix-ui/react-menu"));
171
- var import_react_menu = require("@radix-ui/react-menu");
172
- var import_react_primitive7 = require("@radix-ui/react-primitive");
173
- var import_react_slot7 = require("@radix-ui/react-slot");
174
- var import_react_use_controllable_state = require("@radix-ui/react-use-controllable-state");
175
- var import_react29 = __toESM(require("react"));
174
+ var import_react26 = __toESM(require("react"));
176
175
  var import_react_checkbox = require("@radix-ui/react-checkbox");
177
176
  var import_react_use_controllable_state2 = require("@radix-ui/react-use-controllable-state");
178
- var import_react30 = __toESM(require("react"));
177
+ var import_react27 = __toESM(require("react"));
179
178
  var import_react_input = require("@dxos/react-input");
180
179
  var import_react_ui_theme3 = require("@dxos/react-ui-theme");
181
- var import_react31 = require("@phosphor-icons/react");
182
- var import_react_slot8 = require("@radix-ui/react-slot");
183
- var import_react32 = __toESM(require("react"));
180
+ var import_react28 = require("@phosphor-icons/react");
181
+ var import_react_slot7 = require("@radix-ui/react-slot");
182
+ var import_react29 = __toESM(require("react"));
184
183
  var import_react_list = require("@dxos/react-list");
185
- var import_react33 = __toESM(require("react"));
186
- var import_react34 = __toESM(require("react"));
187
- var import_react35 = __toESM(require("react"));
184
+ var import_react30 = __toESM(require("react"));
185
+ var import_react31 = __toESM(require("react"));
186
+ var import_react32 = __toESM(require("react"));
188
187
  var import_react_tabster = require("@fluentui/react-tabster");
189
188
  var import_react_context6 = require("@radix-ui/react-context");
190
- var import_react_primitive8 = require("@radix-ui/react-primitive");
191
- var import_react_slot9 = require("@radix-ui/react-slot");
189
+ var import_react_primitive7 = require("@radix-ui/react-primitive");
190
+ var import_react_slot8 = require("@radix-ui/react-slot");
192
191
  var import_react_use_controllable_state3 = require("@radix-ui/react-use-controllable-state");
193
- var import_react36 = __toESM(require("react"));
192
+ var import_react33 = __toESM(require("react"));
194
193
  var import_react_context7 = require("@radix-ui/react-context");
195
194
  var import_react_dialog2 = require("@radix-ui/react-dialog");
196
- var import_react_primitive9 = require("@radix-ui/react-primitive");
197
- var import_react_slot10 = require("@radix-ui/react-slot");
195
+ var import_react_primitive8 = require("@radix-ui/react-primitive");
196
+ var import_react_slot9 = require("@radix-ui/react-slot");
198
197
  var import_react_use_controllable_state4 = require("@radix-ui/react-use-controllable-state");
199
- var import_react37 = __toESM(require("react"));
198
+ var import_react34 = __toESM(require("react"));
200
199
  var import_log = require("@dxos/log");
201
200
  var import_react_hooks4 = require("@dxos/react-hooks");
202
- var import_react38 = require("react");
201
+ var import_react35 = require("react");
202
+ var ContextMenuPrimitive = __toESM(require("@radix-ui/react-context-menu"));
203
+ var import_react_primitive9 = require("@radix-ui/react-primitive");
204
+ var import_react_slot10 = require("@radix-ui/react-slot");
205
+ var import_react36 = __toESM(require("react"));
206
+ var import_react37 = require("react");
207
+ var import_primitive2 = require("@radix-ui/primitive");
208
+ var import_react_compose_refs2 = require("@radix-ui/react-compose-refs");
203
209
  var import_react_context8 = require("@radix-ui/react-context");
210
+ var import_react_id2 = require("@radix-ui/react-id");
211
+ var MenuPrimitive = __toESM(require("@radix-ui/react-menu"));
212
+ var import_react_menu = require("@radix-ui/react-menu");
204
213
  var import_react_primitive10 = require("@radix-ui/react-primitive");
205
214
  var import_react_slot11 = require("@radix-ui/react-slot");
215
+ var import_react_use_controllable_state5 = require("@radix-ui/react-use-controllable-state");
216
+ var import_react38 = __toESM(require("react"));
217
+ var import_react_context9 = require("@radix-ui/react-context");
218
+ var import_react_primitive11 = require("@radix-ui/react-primitive");
219
+ var import_react_slot12 = require("@radix-ui/react-slot");
206
220
  var import_react39 = __toESM(require("react"));
207
221
  var import_react_hooks5 = require("@dxos/react-hooks");
208
- var import_primitive2 = require("@radix-ui/primitive");
209
- var import_react_compose_refs2 = require("@radix-ui/react-compose-refs");
210
- var import_react_context9 = require("@radix-ui/react-context");
211
- var import_react_dismissable_layer = require("@radix-ui/react-dismissable-layer");
222
+ var import_primitive3 = require("@radix-ui/primitive");
223
+ var import_react_compose_refs3 = require("@radix-ui/react-compose-refs");
224
+ var import_react_context10 = require("@radix-ui/react-context");
225
+ var import_react_dismissable_layer2 = require("@radix-ui/react-dismissable-layer");
212
226
  var import_react_focus_guards = require("@radix-ui/react-focus-guards");
213
227
  var import_react_focus_scope = require("@radix-ui/react-focus-scope");
214
- var import_react_id2 = require("@radix-ui/react-id");
215
- var PopperPrimitive = __toESM(require("@radix-ui/react-popper"));
216
- var import_react_popper = require("@radix-ui/react-popper");
217
- var import_react_portal = require("@radix-ui/react-portal");
218
- var import_react_presence = require("@radix-ui/react-presence");
219
- var import_react_primitive11 = require("@radix-ui/react-primitive");
220
- var import_react_slot12 = require("@radix-ui/react-slot");
221
- var import_react_use_controllable_state5 = require("@radix-ui/react-use-controllable-state");
228
+ var import_react_id3 = require("@radix-ui/react-id");
229
+ var PopperPrimitive2 = __toESM(require("@radix-ui/react-popper"));
230
+ var import_react_popper2 = require("@radix-ui/react-popper");
231
+ var import_react_portal2 = require("@radix-ui/react-portal");
232
+ var import_react_presence2 = require("@radix-ui/react-presence");
233
+ var import_react_primitive12 = require("@radix-ui/react-primitive");
234
+ var import_react_slot13 = require("@radix-ui/react-slot");
235
+ var import_react_use_controllable_state6 = require("@radix-ui/react-use-controllable-state");
222
236
  var import_aria_hidden = require("aria-hidden");
223
237
  var import_react40 = __toESM(require("react"));
224
238
  var import_react_remove_scroll = require("react-remove-scroll");
@@ -230,11 +244,11 @@ var SelectPrimitive = __toESM(require("@radix-ui/react-select"));
230
244
  var import_react44 = __toESM(require("react"));
231
245
  var import_react_separator = require("@radix-ui/react-separator");
232
246
  var import_react45 = __toESM(require("react"));
233
- var import_react_primitive12 = require("@radix-ui/react-primitive");
234
- var import_react_slot13 = require("@radix-ui/react-slot");
235
- var import_react46 = __toESM(require("react"));
236
247
  var import_react_primitive13 = require("@radix-ui/react-primitive");
237
248
  var import_react_slot14 = require("@radix-ui/react-slot");
249
+ var import_react46 = __toESM(require("react"));
250
+ var import_react_primitive14 = require("@radix-ui/react-primitive");
251
+ var import_react_slot15 = require("@radix-ui/react-slot");
238
252
  var import_react_toast = require("@radix-ui/react-toast");
239
253
  var import_react47 = __toESM(require("react"));
240
254
  var ToolbarPrimitive = __toESM(require("@radix-ui/react-toolbar"));
@@ -349,8 +363,8 @@ var useVisualViewport = (deps) => {
349
363
  };
350
364
  var AnchoredOverflowRoot = /* @__PURE__ */ (0, import_react.forwardRef)(({ asChild, classNames, children, ...props }, forwardedRef) => {
351
365
  const { tx } = useThemeContext();
352
- const Root5 = asChild ? import_react_slot.Slot : import_react_primitive.Primitive.div;
353
- return /* @__PURE__ */ import_react.default.createElement(Root5, {
366
+ const Root7 = asChild ? import_react_slot.Slot : import_react_primitive.Primitive.div;
367
+ return /* @__PURE__ */ import_react.default.createElement(Root7, {
354
368
  role: "none",
355
369
  ...props,
356
370
  className: tx("anchoredOverflow.root", "overflow-anchored", {}, classNames),
@@ -359,8 +373,8 @@ var AnchoredOverflowRoot = /* @__PURE__ */ (0, import_react.forwardRef)(({ asChi
359
373
  });
360
374
  var AnchoredOverflowAnchor = /* @__PURE__ */ (0, import_react.forwardRef)(({ asChild, classNames, children, ...props }, forwardedRef) => {
361
375
  const { tx } = useThemeContext();
362
- const Root5 = asChild ? import_react_slot.Slot : import_react_primitive.Primitive.div;
363
- return /* @__PURE__ */ import_react.default.createElement(Root5, {
376
+ const Root7 = asChild ? import_react_slot.Slot : import_react_primitive.Primitive.div;
377
+ return /* @__PURE__ */ import_react.default.createElement(Root7, {
364
378
  role: "none",
365
379
  ...props,
366
380
  className: tx("anchoredOverflow.anchor", "overflow-anchor", {}, classNames),
@@ -392,17 +406,17 @@ var AvatarContent = /* @__PURE__ */ (0, import_react10.forwardRef)(({ icon, clas
392
406
  return /* @__PURE__ */ import_react10.default.createElement(DxAvatar, {
393
407
  ...props,
394
408
  icon: href,
395
- labelId,
409
+ "aria-labelledby": labelId,
396
410
  "aria-describedby": descriptionId,
397
411
  rootClassName: (0, import_react_ui_theme.mx)(classNames),
398
412
  ref: forwardedRef
399
413
  });
400
414
  });
401
415
  var AvatarLabel = /* @__PURE__ */ (0, import_react10.forwardRef)(({ asChild, srOnly, classNames, ...props }, forwardedRef) => {
402
- const Root5 = asChild ? import_react_slot2.Slot : import_react_primitive2.Primitive.span;
416
+ const Root7 = asChild ? import_react_slot2.Slot : import_react_primitive2.Primitive.span;
403
417
  const { tx } = useThemeContext();
404
418
  const { labelId } = useAvatarContext("AvatarLabel");
405
- return /* @__PURE__ */ import_react10.default.createElement(Root5, {
419
+ return /* @__PURE__ */ import_react10.default.createElement(Root7, {
406
420
  ...props,
407
421
  id: labelId,
408
422
  ref: forwardedRef,
@@ -412,10 +426,10 @@ var AvatarLabel = /* @__PURE__ */ (0, import_react10.forwardRef)(({ asChild, srO
412
426
  });
413
427
  });
414
428
  var AvatarDescription = /* @__PURE__ */ (0, import_react10.forwardRef)(({ asChild, srOnly, classNames, ...props }, forwardedRef) => {
415
- const Root5 = asChild ? import_react_slot2.Slot : import_react_primitive2.Primitive.span;
429
+ const Root7 = asChild ? import_react_slot2.Slot : import_react_primitive2.Primitive.span;
416
430
  const { tx } = useThemeContext();
417
431
  const { descriptionId } = useAvatarContext("AvatarDescription");
418
- return /* @__PURE__ */ import_react10.default.createElement(Root5, {
432
+ return /* @__PURE__ */ import_react10.default.createElement(Root7, {
419
433
  ...props,
420
434
  id: descriptionId,
421
435
  ref: forwardedRef,
@@ -432,8 +446,8 @@ var Avatar = {
432
446
  };
433
447
  var Link = /* @__PURE__ */ (0, import_react13.forwardRef)(({ asChild, variant, classNames, ...props }, forwardedRef) => {
434
448
  const { tx } = useThemeContext();
435
- const Root5 = asChild ? import_react_slot4.Slot : import_react_primitive4.Primitive.a;
436
- return /* @__PURE__ */ import_react13.default.createElement(Root5, {
449
+ const Root7 = asChild ? import_react_slot4.Slot : import_react_primitive4.Primitive.a;
450
+ return /* @__PURE__ */ import_react13.default.createElement(Root7, {
437
451
  ...props,
438
452
  className: tx("link.root", "link", {
439
453
  variant
@@ -443,8 +457,8 @@ var Link = /* @__PURE__ */ (0, import_react13.forwardRef)(({ asChild, variant, c
443
457
  });
444
458
  var BreadcrumbRoot = /* @__PURE__ */ (0, import_react12.forwardRef)(({ asChild, classNames, ...props }, forwardedRef) => {
445
459
  const { tx } = useThemeContext();
446
- const Root5 = asChild ? import_react_slot3.Slot : import_react_primitive3.Primitive.div;
447
- return /* @__PURE__ */ import_react12.default.createElement(Root5, {
460
+ const Root7 = asChild ? import_react_slot3.Slot : import_react_primitive3.Primitive.div;
461
+ return /* @__PURE__ */ import_react12.default.createElement(Root7, {
448
462
  role: "navigation",
449
463
  ...props,
450
464
  className: tx("breadcrumb.root", "breadcrumb", {}, classNames),
@@ -453,8 +467,8 @@ var BreadcrumbRoot = /* @__PURE__ */ (0, import_react12.forwardRef)(({ asChild,
453
467
  });
454
468
  var BreadcrumbList = /* @__PURE__ */ (0, import_react12.forwardRef)(({ asChild, classNames, ...props }, forwardedRef) => {
455
469
  const { tx } = useThemeContext();
456
- const Root5 = asChild ? import_react_slot3.Slot : import_react_primitive3.Primitive.ol;
457
- return /* @__PURE__ */ import_react12.default.createElement(Root5, {
470
+ const Root7 = asChild ? import_react_slot3.Slot : import_react_primitive3.Primitive.ol;
471
+ return /* @__PURE__ */ import_react12.default.createElement(Root7, {
458
472
  role: "list",
459
473
  ...props,
460
474
  className: tx("breadcrumb.list", "breadcrumb__list", {}, classNames),
@@ -463,8 +477,8 @@ var BreadcrumbList = /* @__PURE__ */ (0, import_react12.forwardRef)(({ asChild,
463
477
  });
464
478
  var BreadcrumbListItem = /* @__PURE__ */ (0, import_react12.forwardRef)(({ asChild, classNames, ...props }, forwardedRef) => {
465
479
  const { tx } = useThemeContext();
466
- const Root5 = asChild ? import_react_slot3.Slot : import_react_primitive3.Primitive.li;
467
- return /* @__PURE__ */ import_react12.default.createElement(Root5, {
480
+ const Root7 = asChild ? import_react_slot3.Slot : import_react_primitive3.Primitive.li;
481
+ return /* @__PURE__ */ import_react12.default.createElement(Root7, {
468
482
  role: "listitem",
469
483
  ...props,
470
484
  className: tx("breadcrumb.listItem", "breadcrumb__list__item", {}, classNames),
@@ -472,16 +486,16 @@ var BreadcrumbListItem = /* @__PURE__ */ (0, import_react12.forwardRef)(({ asChi
472
486
  });
473
487
  });
474
488
  var BreadcrumbLink = /* @__PURE__ */ (0, import_react12.forwardRef)(({ asChild, ...props }, forwardedRef) => {
475
- const Root5 = asChild ? import_react_slot3.Slot : Link;
476
- return /* @__PURE__ */ import_react12.default.createElement(Root5, {
489
+ const Root7 = asChild ? import_react_slot3.Slot : Link;
490
+ return /* @__PURE__ */ import_react12.default.createElement(Root7, {
477
491
  ...props,
478
492
  ref: forwardedRef
479
493
  });
480
494
  });
481
495
  var BreadcrumbCurrent = /* @__PURE__ */ (0, import_react12.forwardRef)(({ asChild, classNames, ...props }, forwardedRef) => {
482
496
  const { tx } = useThemeContext();
483
- const Root5 = asChild ? import_react_slot3.Slot : "h1";
484
- return /* @__PURE__ */ import_react12.default.createElement(Root5, {
497
+ const Root7 = asChild ? import_react_slot3.Slot : "h1";
498
+ return /* @__PURE__ */ import_react12.default.createElement(Root7, {
485
499
  ...props,
486
500
  "aria-current": "page",
487
501
  className: tx("breadcrumb.current", "breadcrumb__item__heading--current", {}, classNames),
@@ -517,8 +531,8 @@ var Button = /* @__PURE__ */ (0, import_react14.memo)(/* @__PURE__ */ (0, import
517
531
  const { tx } = useThemeContext();
518
532
  const elevation = useElevationContext(propsElevation);
519
533
  const density = useDensityContext(propsDensity);
520
- const Root5 = asChild ? import_react_slot5.Slot : import_react_primitive5.Primitive.button;
521
- return /* @__PURE__ */ import_react14.default.createElement(Root5, {
534
+ const Root7 = asChild ? import_react_slot5.Slot : import_react_primitive5.Primitive.button;
535
+ return /* @__PURE__ */ import_react14.default.createElement(Root7, {
522
536
  ref,
523
537
  ...props,
524
538
  "data-variant": variant,
@@ -540,8 +554,8 @@ Button.displayName = BUTTON_NAME;
540
554
  var ButtonGroup = /* @__PURE__ */ (0, import_react14.forwardRef)(({ children, elevation: propsElevation, classNames, asChild, ...props }, forwardedRef) => {
541
555
  const { tx } = useThemeContext();
542
556
  const elevation = useElevationContext(propsElevation);
543
- const Root5 = asChild ? import_react_slot5.Slot : import_react_primitive5.Primitive.div;
544
- return /* @__PURE__ */ import_react14.default.createElement(Root5, {
557
+ const Root7 = asChild ? import_react_slot5.Slot : import_react_primitive5.Primitive.div;
558
+ return /* @__PURE__ */ import_react14.default.createElement(Root7, {
545
559
  role: "none",
546
560
  ...props,
547
561
  className: tx("button.group", "button-group", {
@@ -566,161 +580,674 @@ var Icon = /* @__PURE__ */ (0, import_react16.memo)(/* @__PURE__ */ (0, import_r
566
580
  href
567
581
  }));
568
582
  }));
569
- var propIsNumber = (prop) => Number.isFinite(prop);
570
- var propsIsRecord = (prop) => !!(prop && typeof prop === "object");
571
- var safePadding = (propsPadding, safePadding2, side) => {
572
- return (propIsNumber(safePadding2[side]) ? safePadding2[side] : 0) + (propIsNumber(propsPadding) ? propsPadding : propsIsRecord(propsPadding) ? propsPadding[side] ?? 0 : 0);
573
- };
574
- var useSafeCollisionPadding = (collisionPadding) => {
575
- const { safeAreaPadding } = useThemeContext();
576
- return (0, import_react18.useMemo)(() => ({
577
- top: safePadding(collisionPadding, safeAreaPadding, "top"),
578
- right: safePadding(collisionPadding, safeAreaPadding, "right"),
579
- bottom: safePadding(collisionPadding, safeAreaPadding, "bottom"),
580
- left: safePadding(collisionPadding, safeAreaPadding, "left")
581
- }), [
582
- collisionPadding,
583
- safeAreaPadding
583
+ var [createTooltipContext, createTooltipScope] = (0, import_react_context3.createContextScope)("Tooltip", [
584
+ import_react_popper.createPopperScope
585
+ ]);
586
+ var usePopperScope = (0, import_react_popper.createPopperScope)();
587
+ var DEFAULT_DELAY_DURATION = 700;
588
+ var TOOLTIP_OPEN = "tooltip.open";
589
+ var TOOLTIP_NAME = "Tooltip";
590
+ var [TooltipContextProvider, useTooltipContext] = createTooltipContext(TOOLTIP_NAME);
591
+ var TooltipProvider = (props) => {
592
+ const { __scopeTooltip, children, open: openProp, defaultOpen = false, onOpenChange, disableHoverableContent = false, delayDuration = DEFAULT_DELAY_DURATION, skipDelayDuration = 300 } = props;
593
+ const isOpenDelayedRef = (0, import_react17.useRef)(true);
594
+ const isPointerInTransitRef = (0, import_react17.useRef)(false);
595
+ const skipDelayTimerRef = (0, import_react17.useRef)(0);
596
+ (0, import_react17.useEffect)(() => {
597
+ const skipDelayTimer = skipDelayTimerRef.current;
598
+ return () => window.clearTimeout(skipDelayTimer);
599
+ }, []);
600
+ const popperScope = usePopperScope(__scopeTooltip);
601
+ const [trigger, setTrigger] = (0, import_react17.useState)(null);
602
+ const [content, setContent] = (0, import_react17.useState)("");
603
+ const [side, setSide] = (0, import_react17.useState)(void 0);
604
+ const triggerRef = (0, import_react17.useRef)(trigger);
605
+ const handleTriggerChange = (0, import_react17.useCallback)((nextTrigger) => {
606
+ setTrigger(nextTrigger);
607
+ triggerRef.current = nextTrigger;
608
+ setContent(nextTrigger?.getAttribute("data-tooltip-content") ?? "");
609
+ setSide(nextTrigger?.getAttribute("data-tooltip-side") ?? void 0);
610
+ }, []);
611
+ const contentId = (0, import_react_id.useId)();
612
+ const openTimerRef = (0, import_react17.useRef)(0);
613
+ const wasOpenDelayedRef = (0, import_react17.useRef)(false);
614
+ const handleOpenChange = (0, import_react17.useCallback)((open2) => {
615
+ if (open2) {
616
+ window.clearTimeout(skipDelayTimerRef.current);
617
+ isOpenDelayedRef.current = false;
618
+ document.dispatchEvent(new CustomEvent(TOOLTIP_OPEN));
619
+ } else {
620
+ window.clearTimeout(skipDelayTimerRef.current);
621
+ skipDelayTimerRef.current = window.setTimeout(() => isOpenDelayedRef.current = true, skipDelayDuration);
622
+ }
623
+ onOpenChange?.(open2);
624
+ }, [
625
+ skipDelayDuration,
626
+ onOpenChange
584
627
  ]);
585
- };
586
- var TooltipProvider = import_react_tooltip.Provider;
587
- var TooltipRoot = import_react_tooltip.Root;
588
- var TooltipPortal = import_react_tooltip.TooltipPortal;
589
- var TooltipTrigger = import_react_tooltip.TooltipTrigger;
590
- var TooltipArrow = /* @__PURE__ */ (0, import_react17.forwardRef)(({ classNames, ...props }, forwardedRef) => {
591
- const { tx } = useThemeContext();
592
- return /* @__PURE__ */ import_react17.default.createElement(import_react_tooltip.TooltipArrow, {
593
- ...props,
594
- className: tx("tooltip.arrow", "tooltip__arrow", {}, classNames),
595
- ref: forwardedRef
628
+ const [open = false, setOpen] = (0, import_react_use_controllable_state.useControllableState)({
629
+ prop: openProp,
630
+ defaultProp: defaultOpen,
631
+ onChange: handleOpenChange
596
632
  });
597
- });
598
- var TooltipContent = /* @__PURE__ */ (0, import_react17.forwardRef)(({ classNames, collisionPadding = 8, ...props }, forwardedRef) => {
633
+ const stateAttribute = (0, import_react17.useMemo)(() => {
634
+ return open ? wasOpenDelayedRef.current ? "delayed-open" : "instant-open" : "closed";
635
+ }, [
636
+ open
637
+ ]);
638
+ const handleOpen = (0, import_react17.useCallback)(() => {
639
+ window.clearTimeout(openTimerRef.current);
640
+ openTimerRef.current = 0;
641
+ wasOpenDelayedRef.current = false;
642
+ setOpen(true);
643
+ }, [
644
+ setOpen
645
+ ]);
646
+ const handleClose = (0, import_react17.useCallback)(() => {
647
+ window.clearTimeout(openTimerRef.current);
648
+ openTimerRef.current = 0;
649
+ setOpen(false);
650
+ }, [
651
+ setOpen
652
+ ]);
653
+ const handleDelayedOpen = (0, import_react17.useCallback)(() => {
654
+ window.clearTimeout(openTimerRef.current);
655
+ openTimerRef.current = window.setTimeout(() => {
656
+ wasOpenDelayedRef.current = true;
657
+ setOpen(true);
658
+ openTimerRef.current = 0;
659
+ }, delayDuration);
660
+ }, [
661
+ delayDuration,
662
+ setOpen
663
+ ]);
664
+ (0, import_react17.useEffect)(() => {
665
+ return () => {
666
+ if (openTimerRef.current) {
667
+ window.clearTimeout(openTimerRef.current);
668
+ openTimerRef.current = 0;
669
+ }
670
+ };
671
+ }, []);
599
672
  const { tx } = useThemeContext();
600
673
  const elevation = useElevationContext();
601
- const safeCollisionPadding = useSafeCollisionPadding(collisionPadding);
602
- return /* @__PURE__ */ import_react17.default.createElement(import_react_tooltip.TooltipContent, {
603
- sideOffset: 4,
604
- ...props,
605
- collisionPadding: safeCollisionPadding,
674
+ return /* @__PURE__ */ import_react17.default.createElement(PopperPrimitive.Root, popperScope, /* @__PURE__ */ import_react17.default.createElement(TooltipContextProvider, {
675
+ scope: __scopeTooltip,
676
+ contentId,
677
+ open,
678
+ stateAttribute,
679
+ trigger,
680
+ onTriggerChange: handleTriggerChange,
681
+ onTriggerEnter: (0, import_react17.useCallback)(() => {
682
+ if (isOpenDelayedRef.current) {
683
+ handleDelayedOpen();
684
+ } else {
685
+ handleOpen();
686
+ }
687
+ }, [
688
+ isOpenDelayedRef,
689
+ handleDelayedOpen,
690
+ handleOpen
691
+ ]),
692
+ onTriggerLeave: (0, import_react17.useCallback)(() => {
693
+ if (disableHoverableContent) {
694
+ handleClose();
695
+ } else {
696
+ window.clearTimeout(openTimerRef.current);
697
+ openTimerRef.current = 0;
698
+ }
699
+ }, [
700
+ handleClose,
701
+ disableHoverableContent
702
+ ]),
703
+ onOpen: handleOpen,
704
+ onClose: handleClose,
705
+ disableHoverableContent,
706
+ isPointerInTransitRef,
707
+ onPointerInTransitChange: (0, import_react17.useCallback)((inTransit) => {
708
+ isPointerInTransitRef.current = inTransit;
709
+ }, [])
710
+ }, /* @__PURE__ */ import_react17.default.createElement(TooltipContent, {
711
+ side,
606
712
  className: tx("tooltip.content", "tooltip", {
607
713
  elevation
608
- }, classNames),
609
- ref: forwardedRef
714
+ })
715
+ }, content, /* @__PURE__ */ import_react17.default.createElement(TooltipArrow, {
716
+ className: tx("tooltip.arrow", "tooltip__arrow")
717
+ })), /* @__PURE__ */ import_react17.default.createElement(TooltipVirtualTrigger, {
718
+ virtualRef: triggerRef
719
+ }), children));
720
+ };
721
+ TooltipProvider.displayName = TOOLTIP_NAME;
722
+ var TooltipVirtualTrigger = ({ virtualRef, __scopeTooltip }) => {
723
+ const popperScope = usePopperScope(__scopeTooltip);
724
+ return /* @__PURE__ */ import_react17.default.createElement(PopperPrimitive.Anchor, {
725
+ asChild: true,
726
+ ...popperScope,
727
+ virtualRef
610
728
  });
611
- });
612
- var Tooltip = {
613
- Provider: TooltipProvider,
614
- Root: TooltipRoot,
615
- Portal: TooltipPortal,
616
- Trigger: TooltipTrigger,
617
- Arrow: TooltipArrow,
618
- Content: TooltipContent
619
- };
620
- var IconOnlyButton = /* @__PURE__ */ (0, import_react15.forwardRef)(({ noTooltip, tooltipPortal = true, tooltipZIndex: zIndex, tooltipSide, suppressNextTooltip, ...props }, forwardedRef) => {
621
- const [triggerTooltipOpen, setTriggerTooltipOpen] = (0, import_react15.useState)(false);
622
- if (noTooltip) {
623
- return /* @__PURE__ */ import_react15.default.createElement(LabelledIconButton, {
624
- ...props,
625
- ref: forwardedRef
626
- });
627
- }
628
- const content = /* @__PURE__ */ import_react15.default.createElement(Tooltip.Content, {
629
- ...zIndex && {
630
- style: {
631
- zIndex
729
+ };
730
+ var TRIGGER_NAME = "TooltipTrigger";
731
+ var TooltipTrigger = /* @__PURE__ */ (0, import_react17.forwardRef)((props, forwardedRef) => {
732
+ const {
733
+ __scopeTooltip,
734
+ onInteract,
735
+ // TODO(thure): Pass `delayDuration` into the context.
736
+ delayDuration: _delayDuration,
737
+ suppressNextTooltip,
738
+ side,
739
+ content,
740
+ ...triggerProps
741
+ } = props;
742
+ const context = useTooltipContext(TRIGGER_NAME, __scopeTooltip);
743
+ const ref = (0, import_react17.useRef)(null);
744
+ const composedRefs = (0, import_react_compose_refs.useComposedRefs)(forwardedRef, ref);
745
+ const isPointerDownRef = (0, import_react17.useRef)(false);
746
+ const hasPointerMoveOpenedRef = (0, import_react17.useRef)(false);
747
+ const handlePointerUp = (0, import_react17.useCallback)(() => isPointerDownRef.current = false, []);
748
+ (0, import_react17.useEffect)(() => {
749
+ return () => document.removeEventListener("pointerup", handlePointerUp);
750
+ }, [
751
+ handlePointerUp
752
+ ]);
753
+ return /* @__PURE__ */ import_react17.default.createElement(import_react_primitive6.Primitive.button, {
754
+ // We purposefully avoid adding `type=button` here because tooltip triggers are also
755
+ // commonly anchors and the anchor `type` attribute signifies MIME type.
756
+ "aria-describedby": context.open ? context.contentId : void 0,
757
+ "data-state": context.stateAttribute,
758
+ "data-tooltip-content": content,
759
+ "data-tooltip-side": side,
760
+ ...triggerProps,
761
+ ref: composedRefs,
762
+ onPointerMove: (0, import_primitive.composeEventHandlers)(props.onPointerMove, (event) => {
763
+ if (event.pointerType === "touch") {
764
+ return;
632
765
  }
633
- },
634
- side: tooltipSide
635
- }, props.label, /* @__PURE__ */ import_react15.default.createElement(Tooltip.Arrow, null));
636
- return /* @__PURE__ */ import_react15.default.createElement(Tooltip.Root, {
637
- open: triggerTooltipOpen,
638
- onOpenChange: (nextOpen) => {
639
- if (suppressNextTooltip?.current) {
640
- setTriggerTooltipOpen(false);
641
- suppressNextTooltip.current = false;
642
- } else {
643
- setTriggerTooltipOpen(nextOpen);
766
+ if (!hasPointerMoveOpenedRef.current && !context.isPointerInTransitRef.current) {
767
+ onInteract?.(event);
768
+ if (event.defaultPrevented) {
769
+ return;
770
+ }
771
+ context.onTriggerChange(ref.current);
772
+ context.onTriggerEnter();
773
+ hasPointerMoveOpenedRef.current = true;
644
774
  }
645
- }
646
- }, /* @__PURE__ */ import_react15.default.createElement(Tooltip.Trigger, {
647
- asChild: true
648
- }, /* @__PURE__ */ import_react15.default.createElement(LabelledIconButton, {
649
- ...props,
650
- ref: forwardedRef
651
- })), tooltipPortal ? /* @__PURE__ */ import_react15.default.createElement(Tooltip.Portal, null, content) : content);
775
+ }),
776
+ onPointerLeave: (0, import_primitive.composeEventHandlers)(props.onPointerLeave, () => {
777
+ context.onTriggerLeave();
778
+ hasPointerMoveOpenedRef.current = false;
779
+ }),
780
+ onPointerDown: (0, import_primitive.composeEventHandlers)(props.onPointerDown, () => {
781
+ if (context.open) {
782
+ context.onClose();
783
+ }
784
+ isPointerDownRef.current = true;
785
+ document.addEventListener("pointerup", handlePointerUp, {
786
+ once: true
787
+ });
788
+ }),
789
+ onFocus: (0, import_primitive.composeEventHandlers)(props.onFocus, (event) => {
790
+ if (!isPointerDownRef.current) {
791
+ onInteract?.(event);
792
+ if (event.defaultPrevented) {
793
+ return;
794
+ }
795
+ if (suppressNextTooltip?.current) {
796
+ suppressNextTooltip.current = false;
797
+ } else {
798
+ context.onTriggerChange(ref.current);
799
+ context.onOpen();
800
+ }
801
+ }
802
+ }),
803
+ onBlur: (0, import_primitive.composeEventHandlers)(props.onBlur, context.onClose),
804
+ onClick: (0, import_primitive.composeEventHandlers)(props.onClick, context.onClose)
805
+ });
652
806
  });
653
- var LabelledIconButton = /* @__PURE__ */ (0, import_react15.forwardRef)(({ icon, size, iconOnly, label, classNames, iconClassNames, caretDown, suppressNextTooltip, ...props }, forwardedRef) => {
654
- const { tx } = useThemeContext();
655
- return /* @__PURE__ */ import_react15.default.createElement(Button, {
656
- ...props,
657
- classNames: tx("iconButton.root", "iconButton", {}, classNames),
658
- ref: forwardedRef
659
- }, /* @__PURE__ */ import_react15.default.createElement(Icon, {
660
- icon,
661
- size,
662
- classNames: iconClassNames
663
- }), /* @__PURE__ */ import_react15.default.createElement("span", {
664
- className: iconOnly ? "sr-only" : void 0
665
- }, label), caretDown && /* @__PURE__ */ import_react15.default.createElement(Icon, {
666
- size: 3,
667
- icon: "ph--caret-down--bold"
668
- }));
807
+ TooltipTrigger.displayName = TRIGGER_NAME;
808
+ var PORTAL_NAME = "TooltipPortal";
809
+ var [PortalProvider, usePortalContext] = createTooltipContext(PORTAL_NAME, {
810
+ forceMount: void 0
669
811
  });
670
- var IconButton = /* @__PURE__ */ (0, import_react15.forwardRef)((props, forwardedRef) => props.iconOnly ? /* @__PURE__ */ import_react15.default.createElement(IconOnlyButton, {
671
- ...props,
672
- ref: forwardedRef
673
- }) : /* @__PURE__ */ import_react15.default.createElement(LabelledIconButton, {
674
- ...props,
675
- ref: forwardedRef
676
- }));
677
- var Toggle = /* @__PURE__ */ (0, import_react19.forwardRef)(({ defaultPressed, pressed, onPressedChange, ...props }, forwardedRef) => {
678
- return /* @__PURE__ */ import_react19.default.createElement(import_react_toggle.Toggle, {
679
- defaultPressed,
680
- pressed,
681
- onPressedChange,
682
- asChild: true
683
- }, /* @__PURE__ */ import_react19.default.createElement(Button, {
684
- ...props,
812
+ var TooltipPortal = (props) => {
813
+ const { __scopeTooltip, forceMount, children, container } = props;
814
+ const context = useTooltipContext(PORTAL_NAME, __scopeTooltip);
815
+ return /* @__PURE__ */ import_react17.default.createElement(PortalProvider, {
816
+ scope: __scopeTooltip,
817
+ forceMount
818
+ }, /* @__PURE__ */ import_react17.default.createElement(import_react_presence.Presence, {
819
+ present: forceMount || context.open
820
+ }, /* @__PURE__ */ import_react17.default.createElement(import_react_portal.Portal, {
821
+ asChild: true,
822
+ container
823
+ }, children)));
824
+ };
825
+ TooltipPortal.displayName = PORTAL_NAME;
826
+ var CONTENT_NAME = "TooltipContent";
827
+ var TooltipContent = /* @__PURE__ */ (0, import_react17.forwardRef)((props, forwardedRef) => {
828
+ const portalContext = usePortalContext(CONTENT_NAME, props.__scopeTooltip);
829
+ const { forceMount = portalContext.forceMount, side = "top", ...contentProps } = props;
830
+ const context = useTooltipContext(CONTENT_NAME, props.__scopeTooltip);
831
+ return /* @__PURE__ */ import_react17.default.createElement(import_react_presence.Presence, {
832
+ present: forceMount || context.open
833
+ }, context.disableHoverableContent ? /* @__PURE__ */ import_react17.default.createElement(TooltipContentImpl, {
834
+ side,
835
+ ...contentProps,
685
836
  ref: forwardedRef
686
- }));
687
- });
688
- var ToggleGroup = /* @__PURE__ */ (0, import_react20.forwardRef)(({ classNames, children, ...props }, forwardedRef) => {
689
- return /* @__PURE__ */ import_react20.default.createElement(import_react_toggle_group.ToggleGroup, {
690
- ...props,
691
- asChild: true
692
- }, /* @__PURE__ */ import_react20.default.createElement(ButtonGroup, {
693
- classNames,
694
- children,
837
+ }) : /* @__PURE__ */ import_react17.default.createElement(TooltipContentHoverable, {
838
+ side,
839
+ ...contentProps,
695
840
  ref: forwardedRef
696
841
  }));
697
842
  });
698
- var ToggleGroupItem = /* @__PURE__ */ (0, import_react20.forwardRef)(({ variant, elevation, density, classNames, children, ...props }, forwardedRef) => {
699
- return /* @__PURE__ */ import_react20.default.createElement(import_react_toggle_group.ToggleGroupItem, {
843
+ var TooltipContentHoverable = /* @__PURE__ */ (0, import_react17.forwardRef)((props, forwardedRef) => {
844
+ const context = useTooltipContext(CONTENT_NAME, props.__scopeTooltip);
845
+ const ref = (0, import_react17.useRef)(null);
846
+ const composedRefs = (0, import_react_compose_refs.useComposedRefs)(forwardedRef, ref);
847
+ const [pointerGraceArea, setPointerGraceArea] = (0, import_react17.useState)(null);
848
+ const { trigger, onClose } = context;
849
+ const content = ref.current;
850
+ const { onPointerInTransitChange } = context;
851
+ const handleRemoveGraceArea = (0, import_react17.useCallback)(() => {
852
+ setPointerGraceArea(null);
853
+ onPointerInTransitChange(false);
854
+ }, [
855
+ onPointerInTransitChange
856
+ ]);
857
+ const handleCreateGraceArea = (0, import_react17.useCallback)((event, hoverTarget) => {
858
+ const currentTarget = event.currentTarget;
859
+ const exitPoint = {
860
+ x: event.clientX,
861
+ y: event.clientY
862
+ };
863
+ const exitSide = getExitSideFromRect(exitPoint, currentTarget.getBoundingClientRect());
864
+ const paddedExitPoints = getPaddedExitPoints(exitPoint, exitSide);
865
+ const hoverTargetPoints = getPointsFromRect(hoverTarget.getBoundingClientRect());
866
+ const graceArea = getHull([
867
+ ...paddedExitPoints,
868
+ ...hoverTargetPoints
869
+ ]);
870
+ setPointerGraceArea(graceArea);
871
+ onPointerInTransitChange(true);
872
+ }, [
873
+ onPointerInTransitChange
874
+ ]);
875
+ (0, import_react17.useEffect)(() => {
876
+ return () => handleRemoveGraceArea();
877
+ }, [
878
+ handleRemoveGraceArea
879
+ ]);
880
+ (0, import_react17.useEffect)(() => {
881
+ if (trigger && content) {
882
+ const handleTriggerLeave = (event) => handleCreateGraceArea(event, content);
883
+ const handleContentLeave = (event) => handleCreateGraceArea(event, trigger);
884
+ trigger.addEventListener("pointerleave", handleTriggerLeave);
885
+ content.addEventListener("pointerleave", handleContentLeave);
886
+ return () => {
887
+ trigger.removeEventListener("pointerleave", handleTriggerLeave);
888
+ content.removeEventListener("pointerleave", handleContentLeave);
889
+ };
890
+ }
891
+ }, [
892
+ trigger,
893
+ content,
894
+ handleCreateGraceArea,
895
+ handleRemoveGraceArea
896
+ ]);
897
+ (0, import_react17.useEffect)(() => {
898
+ if (pointerGraceArea) {
899
+ const handleTrackPointerGrace = (event) => {
900
+ const target = event.target;
901
+ const pointerPosition = {
902
+ x: event.clientX,
903
+ y: event.clientY
904
+ };
905
+ const hasEnteredTarget = trigger?.contains(target) || content?.contains(target);
906
+ const isPointerOutsideGraceArea = !isPointInPolygon(pointerPosition, pointerGraceArea);
907
+ if (hasEnteredTarget) {
908
+ handleRemoveGraceArea();
909
+ } else if (isPointerOutsideGraceArea) {
910
+ handleRemoveGraceArea();
911
+ onClose();
912
+ }
913
+ };
914
+ document.addEventListener("pointermove", handleTrackPointerGrace);
915
+ return () => document.removeEventListener("pointermove", handleTrackPointerGrace);
916
+ }
917
+ }, [
918
+ trigger,
919
+ content,
920
+ pointerGraceArea,
921
+ onClose,
922
+ handleRemoveGraceArea
923
+ ]);
924
+ return /* @__PURE__ */ import_react17.default.createElement(TooltipContentImpl, {
700
925
  ...props,
701
- asChild: true
702
- }, /* @__PURE__ */ import_react20.default.createElement(Button, {
703
- variant,
704
- elevation,
705
- density,
706
- classNames,
707
- children,
708
- ref: forwardedRef
709
- }));
926
+ ref: composedRefs
927
+ });
710
928
  });
711
- var ClipboardContext = /* @__PURE__ */ (0, import_react21.createContext)({
712
- textValue: "",
713
- setTextValue: async (_) => {
714
- }
929
+ var [VisuallyHiddenContentContextProvider, useVisuallyHiddenContentContext] = createTooltipContext(TOOLTIP_NAME, {
930
+ isInside: false
715
931
  });
716
- var useClipboard = () => (0, import_react21.useContext)(ClipboardContext);
717
- var ClipboardProvider = ({ children }) => {
718
- const [textValue, setInternalTextValue] = (0, import_react21.useState)("");
719
- const setTextValue = (0, import_react21.useCallback)(async (nextValue) => {
720
- await navigator.clipboard.writeText(nextValue);
721
- return setInternalTextValue(nextValue);
932
+ var TooltipContentImpl = /* @__PURE__ */ (0, import_react17.forwardRef)((props, forwardedRef) => {
933
+ const { __scopeTooltip, children, "aria-label": ariaLabel, onEscapeKeyDown, onPointerDownOutside, ...contentProps } = props;
934
+ const context = useTooltipContext(CONTENT_NAME, __scopeTooltip);
935
+ const popperScope = usePopperScope(__scopeTooltip);
936
+ const { onClose } = context;
937
+ (0, import_react17.useEffect)(() => {
938
+ document.addEventListener(TOOLTIP_OPEN, onClose);
939
+ return () => document.removeEventListener(TOOLTIP_OPEN, onClose);
940
+ }, [
941
+ onClose
942
+ ]);
943
+ (0, import_react17.useEffect)(() => {
944
+ if (context.trigger) {
945
+ const handleScroll = (event) => {
946
+ const target = event.target;
947
+ if (target?.contains(context.trigger)) {
948
+ onClose();
949
+ }
950
+ };
951
+ window.addEventListener("scroll", handleScroll, {
952
+ capture: true
953
+ });
954
+ return () => window.removeEventListener("scroll", handleScroll, {
955
+ capture: true
956
+ });
957
+ }
958
+ }, [
959
+ context.trigger,
960
+ onClose
961
+ ]);
962
+ return /* @__PURE__ */ import_react17.default.createElement(import_react_dismissable_layer.DismissableLayer, {
963
+ asChild: true,
964
+ disableOutsidePointerEvents: false,
965
+ onEscapeKeyDown,
966
+ onPointerDownOutside,
967
+ onFocusOutside: (event) => event.preventDefault(),
968
+ onDismiss: onClose
969
+ }, /* @__PURE__ */ import_react17.default.createElement(PopperPrimitive.Content, {
970
+ "data-state": context.stateAttribute,
971
+ ...popperScope,
972
+ ...contentProps,
973
+ ref: forwardedRef,
974
+ style: {
975
+ ...contentProps.style,
976
+ // re-namespace exposed content custom properties
977
+ ...{
978
+ "--radix-tooltip-content-transform-origin": "var(--radix-popper-transform-origin)",
979
+ "--radix-tooltip-content-available-width": "var(--radix-popper-available-width)",
980
+ "--radix-tooltip-content-available-height": "var(--radix-popper-available-height)",
981
+ "--radix-tooltip-trigger-width": "var(--radix-popper-anchor-width)",
982
+ "--radix-tooltip-trigger-height": "var(--radix-popper-anchor-height)"
983
+ }
984
+ }
985
+ }, /* @__PURE__ */ import_react17.default.createElement(import_react_slot6.Slottable, null, children), /* @__PURE__ */ import_react17.default.createElement(VisuallyHiddenContentContextProvider, {
986
+ scope: __scopeTooltip,
987
+ isInside: true
988
+ }, /* @__PURE__ */ import_react17.default.createElement(VisuallyHiddenPrimitive.Root, {
989
+ id: context.contentId,
990
+ role: "tooltip"
991
+ }, ariaLabel || children))));
992
+ });
993
+ TooltipContent.displayName = CONTENT_NAME;
994
+ var ARROW_NAME = "TooltipArrow";
995
+ var TooltipArrow = /* @__PURE__ */ (0, import_react17.forwardRef)((props, forwardedRef) => {
996
+ const { __scopeTooltip, ...arrowProps } = props;
997
+ const popperScope = usePopperScope(__scopeTooltip);
998
+ const visuallyHiddenContentContext = useVisuallyHiddenContentContext(ARROW_NAME, __scopeTooltip);
999
+ return visuallyHiddenContentContext.isInside ? null : /* @__PURE__ */ import_react17.default.createElement(PopperPrimitive.Arrow, {
1000
+ ...popperScope,
1001
+ ...arrowProps,
1002
+ ref: forwardedRef
1003
+ });
1004
+ });
1005
+ TooltipArrow.displayName = ARROW_NAME;
1006
+ var getExitSideFromRect = (point, rect) => {
1007
+ const top = Math.abs(rect.top - point.y);
1008
+ const bottom = Math.abs(rect.bottom - point.y);
1009
+ const right = Math.abs(rect.right - point.x);
1010
+ const left = Math.abs(rect.left - point.x);
1011
+ switch (Math.min(top, bottom, right, left)) {
1012
+ case left:
1013
+ return "left";
1014
+ case right:
1015
+ return "right";
1016
+ case top:
1017
+ return "top";
1018
+ case bottom:
1019
+ return "bottom";
1020
+ default:
1021
+ throw new Error("unreachable");
1022
+ }
1023
+ };
1024
+ var getPaddedExitPoints = (exitPoint, exitSide, padding = 5) => {
1025
+ const paddedExitPoints = [];
1026
+ switch (exitSide) {
1027
+ case "top":
1028
+ paddedExitPoints.push({
1029
+ x: exitPoint.x - padding,
1030
+ y: exitPoint.y + padding
1031
+ }, {
1032
+ x: exitPoint.x + padding,
1033
+ y: exitPoint.y + padding
1034
+ });
1035
+ break;
1036
+ case "bottom":
1037
+ paddedExitPoints.push({
1038
+ x: exitPoint.x - padding,
1039
+ y: exitPoint.y - padding
1040
+ }, {
1041
+ x: exitPoint.x + padding,
1042
+ y: exitPoint.y - padding
1043
+ });
1044
+ break;
1045
+ case "left":
1046
+ paddedExitPoints.push({
1047
+ x: exitPoint.x + padding,
1048
+ y: exitPoint.y - padding
1049
+ }, {
1050
+ x: exitPoint.x + padding,
1051
+ y: exitPoint.y + padding
1052
+ });
1053
+ break;
1054
+ case "right":
1055
+ paddedExitPoints.push({
1056
+ x: exitPoint.x - padding,
1057
+ y: exitPoint.y - padding
1058
+ }, {
1059
+ x: exitPoint.x - padding,
1060
+ y: exitPoint.y + padding
1061
+ });
1062
+ break;
1063
+ }
1064
+ return paddedExitPoints;
1065
+ };
1066
+ var getPointsFromRect = (rect) => {
1067
+ const { top, right, bottom, left } = rect;
1068
+ return [
1069
+ {
1070
+ x: left,
1071
+ y: top
1072
+ },
1073
+ {
1074
+ x: right,
1075
+ y: top
1076
+ },
1077
+ {
1078
+ x: right,
1079
+ y: bottom
1080
+ },
1081
+ {
1082
+ x: left,
1083
+ y: bottom
1084
+ }
1085
+ ];
1086
+ };
1087
+ var isPointInPolygon = (point, polygon) => {
1088
+ const { x, y } = point;
1089
+ let inside = false;
1090
+ for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {
1091
+ const xi = polygon[i].x;
1092
+ const yi = polygon[i].y;
1093
+ const xj = polygon[j].x;
1094
+ const yj = polygon[j].y;
1095
+ const intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;
1096
+ if (intersect) {
1097
+ inside = !inside;
1098
+ }
1099
+ }
1100
+ return inside;
1101
+ };
1102
+ var getHull = (points) => {
1103
+ const newPoints = points.slice();
1104
+ newPoints.sort((a, b) => {
1105
+ if (a.x < b.x) {
1106
+ return -1;
1107
+ } else if (a.x > b.x) {
1108
+ return 1;
1109
+ } else if (a.y < b.y) {
1110
+ return -1;
1111
+ } else if (a.y > b.y) {
1112
+ return 1;
1113
+ } else {
1114
+ return 0;
1115
+ }
1116
+ });
1117
+ return getHullPresorted(newPoints);
1118
+ };
1119
+ var getHullPresorted = (points) => {
1120
+ if (points.length <= 1) {
1121
+ return points.slice();
1122
+ }
1123
+ const upperHull = [];
1124
+ for (let i = 0; i < points.length; i++) {
1125
+ const p = points[i];
1126
+ while (upperHull.length >= 2) {
1127
+ const q = upperHull[upperHull.length - 1];
1128
+ const r = upperHull[upperHull.length - 2];
1129
+ if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) {
1130
+ upperHull.pop();
1131
+ } else {
1132
+ break;
1133
+ }
1134
+ }
1135
+ upperHull.push(p);
1136
+ }
1137
+ upperHull.pop();
1138
+ const lowerHull = [];
1139
+ for (let i = points.length - 1; i >= 0; i--) {
1140
+ const p = points[i];
1141
+ while (lowerHull.length >= 2) {
1142
+ const q = lowerHull[lowerHull.length - 1];
1143
+ const r = lowerHull[lowerHull.length - 2];
1144
+ if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) {
1145
+ lowerHull.pop();
1146
+ } else {
1147
+ break;
1148
+ }
1149
+ }
1150
+ lowerHull.push(p);
1151
+ }
1152
+ lowerHull.pop();
1153
+ if (upperHull.length === 1 && lowerHull.length === 1 && upperHull[0].x === lowerHull[0].x && upperHull[0].y === lowerHull[0].y) {
1154
+ return upperHull;
1155
+ } else {
1156
+ return upperHull.concat(lowerHull);
1157
+ }
1158
+ };
1159
+ var Tooltip = {
1160
+ Provider: TooltipProvider,
1161
+ Trigger: TooltipTrigger
1162
+ };
1163
+ var IconOnlyButton = /* @__PURE__ */ (0, import_react15.forwardRef)(({ noTooltip, tooltipPortal = true, tooltipSide, suppressNextTooltip, ...props }, forwardedRef) => {
1164
+ if (noTooltip) {
1165
+ return /* @__PURE__ */ import_react15.default.createElement(LabelledIconButton, {
1166
+ ...props,
1167
+ ref: forwardedRef
1168
+ });
1169
+ }
1170
+ return /* @__PURE__ */ import_react15.default.createElement(Tooltip.Trigger, {
1171
+ asChild: true,
1172
+ content: props.label,
1173
+ side: tooltipSide,
1174
+ suppressNextTooltip
1175
+ }, /* @__PURE__ */ import_react15.default.createElement(LabelledIconButton, {
1176
+ ...props,
1177
+ ref: forwardedRef
1178
+ }));
1179
+ });
1180
+ var LabelledIconButton = /* @__PURE__ */ (0, import_react15.forwardRef)(({ icon, size, iconOnly, label, classNames, iconClassNames, caretDown, suppressNextTooltip, ...props }, forwardedRef) => {
1181
+ const { tx } = useThemeContext();
1182
+ return /* @__PURE__ */ import_react15.default.createElement(Button, {
1183
+ ...props,
1184
+ classNames: tx("iconButton.root", "iconButton", {}, classNames),
1185
+ ref: forwardedRef
1186
+ }, /* @__PURE__ */ import_react15.default.createElement(Icon, {
1187
+ icon,
1188
+ size,
1189
+ classNames: iconClassNames
1190
+ }), /* @__PURE__ */ import_react15.default.createElement("span", {
1191
+ className: iconOnly ? "sr-only" : void 0
1192
+ }, label), caretDown && /* @__PURE__ */ import_react15.default.createElement(Icon, {
1193
+ size: 3,
1194
+ icon: "ph--caret-down--bold"
1195
+ }));
1196
+ });
1197
+ var IconButton = /* @__PURE__ */ (0, import_react15.forwardRef)((props, forwardedRef) => props.iconOnly ? /* @__PURE__ */ import_react15.default.createElement(IconOnlyButton, {
1198
+ ...props,
1199
+ ref: forwardedRef
1200
+ }) : /* @__PURE__ */ import_react15.default.createElement(LabelledIconButton, {
1201
+ ...props,
1202
+ ref: forwardedRef
1203
+ }));
1204
+ var Toggle = /* @__PURE__ */ (0, import_react18.forwardRef)(({ defaultPressed, pressed, onPressedChange, ...props }, forwardedRef) => {
1205
+ return /* @__PURE__ */ import_react18.default.createElement(import_react_toggle.Toggle, {
1206
+ defaultPressed,
1207
+ pressed,
1208
+ onPressedChange,
1209
+ asChild: true
1210
+ }, /* @__PURE__ */ import_react18.default.createElement(Button, {
1211
+ ...props,
1212
+ ref: forwardedRef
1213
+ }));
1214
+ });
1215
+ var ToggleGroup = /* @__PURE__ */ (0, import_react19.forwardRef)(({ classNames, children, ...props }, forwardedRef) => {
1216
+ return /* @__PURE__ */ import_react19.default.createElement(import_react_toggle_group.ToggleGroup, {
1217
+ ...props,
1218
+ asChild: true
1219
+ }, /* @__PURE__ */ import_react19.default.createElement(ButtonGroup, {
1220
+ classNames,
1221
+ children,
1222
+ ref: forwardedRef
1223
+ }));
1224
+ });
1225
+ var ToggleGroupItem = /* @__PURE__ */ (0, import_react19.forwardRef)(({ variant, elevation, density, classNames, children, ...props }, forwardedRef) => {
1226
+ return /* @__PURE__ */ import_react19.default.createElement(import_react_toggle_group.ToggleGroupItem, {
1227
+ ...props,
1228
+ asChild: true
1229
+ }, /* @__PURE__ */ import_react19.default.createElement(Button, {
1230
+ variant,
1231
+ elevation,
1232
+ density,
1233
+ classNames,
1234
+ children,
1235
+ ref: forwardedRef
1236
+ }));
1237
+ });
1238
+ var ClipboardContext = /* @__PURE__ */ (0, import_react20.createContext)({
1239
+ textValue: "",
1240
+ setTextValue: async (_) => {
1241
+ }
1242
+ });
1243
+ var useClipboard = () => (0, import_react20.useContext)(ClipboardContext);
1244
+ var ClipboardProvider = ({ children }) => {
1245
+ const [textValue, setInternalTextValue] = (0, import_react20.useState)("");
1246
+ const setTextValue = (0, import_react20.useCallback)(async (nextValue) => {
1247
+ await navigator.clipboard.writeText(nextValue);
1248
+ return setInternalTextValue(nextValue);
722
1249
  }, []);
723
- return /* @__PURE__ */ import_react21.default.createElement(ClipboardContext.Provider, {
1250
+ return /* @__PURE__ */ import_react20.default.createElement(ClipboardContext.Provider, {
724
1251
  value: {
725
1252
  textValue,
726
1253
  setTextValue
@@ -730,25 +1257,25 @@ var ClipboardProvider = ({ children }) => {
730
1257
  var hasIosKeyboard = () => {
731
1258
  return !!navigator.userAgent.match(/iP(ad|od|hone).+Safari/);
732
1259
  };
733
- var DensityContext = /* @__PURE__ */ (0, import_react24.createContext)({
1260
+ var DensityContext = /* @__PURE__ */ (0, import_react23.createContext)({
734
1261
  density: "fine"
735
1262
  });
736
- var DensityProvider = ({ density, children }) => /* @__PURE__ */ import_react24.default.createElement(DensityContext.Provider, {
1263
+ var DensityProvider = ({ density, children }) => /* @__PURE__ */ import_react23.default.createElement(DensityContext.Provider, {
737
1264
  value: {
738
1265
  density
739
1266
  }
740
1267
  }, children);
741
- var ElevationContext = /* @__PURE__ */ (0, import_react25.createContext)({
1268
+ var ElevationContext = /* @__PURE__ */ (0, import_react24.createContext)({
742
1269
  elevation: "base"
743
1270
  });
744
- var ElevationProvider = ({ elevation, children }) => /* @__PURE__ */ import_react25.default.createElement(ElevationContext.Provider, {
1271
+ var ElevationProvider = ({ elevation, children }) => /* @__PURE__ */ import_react24.default.createElement(ElevationContext.Provider, {
745
1272
  value: {
746
1273
  elevation
747
1274
  }
748
1275
  }, children);
749
- var ThemeContext = /* @__PURE__ */ (0, import_react23.createContext)(void 0);
1276
+ var ThemeContext = /* @__PURE__ */ (0, import_react22.createContext)(void 0);
750
1277
  var ThemeProvider = ({ children, fallback = null, resourceExtensions, appNs, tx = (_path, defaultClassName, _styleProps, ..._options) => defaultClassName, themeMode = "dark", rootDensity = "fine", ...rest }) => {
751
- (0, import_react23.useEffect)(() => {
1278
+ (0, import_react22.useEffect)(() => {
752
1279
  if (document.defaultView) {
753
1280
  const kb = (0, import_keyborg.createKeyborg)(document.defaultView);
754
1281
  kb.subscribe(handleInputModalityChange);
@@ -756,7 +1283,7 @@ var ThemeProvider = ({ children, fallback = null, resourceExtensions, appNs, tx
756
1283
  }
757
1284
  }, []);
758
1285
  const safeAreaPadding = useSafeArea();
759
- const contextValue = (0, import_react23.useMemo)(() => ({
1286
+ const contextValue = (0, import_react22.useMemo)(() => ({
760
1287
  tx,
761
1288
  themeMode,
762
1289
  hasIosKeyboard: hasIosKeyboard(),
@@ -768,15 +1295,15 @@ var ThemeProvider = ({ children, fallback = null, resourceExtensions, appNs, tx
768
1295
  safeAreaPadding,
769
1296
  rest
770
1297
  ]);
771
- return /* @__PURE__ */ import_react23.default.createElement(ThemeContext.Provider, {
1298
+ return /* @__PURE__ */ import_react22.default.createElement(ThemeContext.Provider, {
772
1299
  value: contextValue
773
- }, /* @__PURE__ */ import_react23.default.createElement(TranslationsProvider, {
1300
+ }, /* @__PURE__ */ import_react22.default.createElement(TranslationsProvider, {
774
1301
  fallback,
775
1302
  resourceExtensions,
776
1303
  appNs
777
- }, /* @__PURE__ */ import_react23.default.createElement(ElevationProvider, {
1304
+ }, /* @__PURE__ */ import_react22.default.createElement(ElevationProvider, {
778
1305
  elevation: "base"
779
- }, /* @__PURE__ */ import_react23.default.createElement(DensityProvider, {
1306
+ }, /* @__PURE__ */ import_react22.default.createElement(DensityProvider, {
780
1307
  density: rootDensity
781
1308
  }, children))));
782
1309
  };
@@ -792,7 +1319,7 @@ var CopyButton = ({ value, classNames, iconProps, ...props }) => {
792
1319
  const { t } = useTranslation("os");
793
1320
  const { textValue, setTextValue } = useClipboard();
794
1321
  const isCopied = textValue === value;
795
- return /* @__PURE__ */ import_react22.default.createElement(Button, {
1322
+ return /* @__PURE__ */ import_react21.default.createElement(Button, {
796
1323
  ...props,
797
1324
  classNames: [
798
1325
  "inline-flex flex-col justify-center",
@@ -800,70 +1327,59 @@ var CopyButton = ({ value, classNames, iconProps, ...props }) => {
800
1327
  ],
801
1328
  onClick: () => setTextValue(value),
802
1329
  "data-testid": "copy-invitation"
803
- }, /* @__PURE__ */ import_react22.default.createElement("div", {
1330
+ }, /* @__PURE__ */ import_react21.default.createElement("div", {
804
1331
  role: "none",
805
1332
  className: (0, import_react_ui_theme2.mx)("flex gap-1 items-center", isCopied && inactiveLabelStyles)
806
- }, /* @__PURE__ */ import_react22.default.createElement("span", {
1333
+ }, /* @__PURE__ */ import_react21.default.createElement("span", {
807
1334
  className: "pli-1"
808
- }, t("copy label")), /* @__PURE__ */ import_react22.default.createElement(Icon, {
1335
+ }, t("copy label")), /* @__PURE__ */ import_react21.default.createElement(Icon, {
809
1336
  icon: "ph--copy--regular",
810
1337
  size: 5,
811
1338
  ...iconProps
812
- })), /* @__PURE__ */ import_react22.default.createElement("div", {
1339
+ })), /* @__PURE__ */ import_react21.default.createElement("div", {
813
1340
  role: "none",
814
1341
  className: (0, import_react_ui_theme2.mx)("flex gap-1 items-center", !isCopied && inactiveLabelStyles)
815
- }, /* @__PURE__ */ import_react22.default.createElement("span", {
1342
+ }, /* @__PURE__ */ import_react21.default.createElement("span", {
816
1343
  className: "pli-1"
817
- }, t("copy success label")), /* @__PURE__ */ import_react22.default.createElement(Icon, {
1344
+ }, t("copy success label")), /* @__PURE__ */ import_react21.default.createElement(Icon, {
818
1345
  icon: "ph--check--regular",
819
1346
  size: 5,
820
1347
  ...iconProps
821
1348
  })));
822
1349
  };
823
- var CopyButtonIconOnly = ({ value, classNames, iconProps, variant, ...props }) => {
1350
+ var CopyButtonIconOnly = ({ __scopeTooltip, value, classNames, iconProps, variant, ...props }) => {
824
1351
  const { t } = useTranslation("os");
825
1352
  const { textValue, setTextValue } = useClipboard();
826
1353
  const isCopied = textValue === value;
827
1354
  const label = isCopied ? t("copy success label") : props.label ?? t("copy label");
828
- const [open, setOpen] = (0, import_react22.useState)(false);
829
- return /* @__PURE__ */ import_react22.default.createElement(Tooltip.Root, {
830
- delayDuration: 1500,
831
- open,
832
- onOpenChange: setOpen
833
- }, /* @__PURE__ */ import_react22.default.createElement(Tooltip.Portal, null, /* @__PURE__ */ import_react22.default.createElement(Tooltip.Content, {
834
- side: "bottom",
835
- sideOffset: 12
836
- }, /* @__PURE__ */ import_react22.default.createElement("span", null, label), /* @__PURE__ */ import_react22.default.createElement(Tooltip.Arrow, null))), /* @__PURE__ */ import_react22.default.createElement(Tooltip.Trigger, {
837
- "aria-label": label,
838
- ...props,
839
- onClick: () => setTextValue(value).then(() => setOpen(true)),
840
- "data-testid": "copy-invitation",
841
- asChild: true
842
- }, /* @__PURE__ */ import_react22.default.createElement(Button, {
1355
+ const { onOpen } = useTooltipContext("CopyButton", __scopeTooltip);
1356
+ return /* @__PURE__ */ import_react21.default.createElement(IconButton, {
1357
+ iconOnly: true,
1358
+ label,
1359
+ icon: "ph--copy--regular",
1360
+ size: 5,
843
1361
  variant,
844
1362
  classNames: [
845
1363
  "inline-flex flex-col justify-center",
846
1364
  classNames
847
- ]
848
- }, /* @__PURE__ */ import_react22.default.createElement(Icon, {
849
- icon: "ph--copy--regular",
850
- size: 5,
851
- ...iconProps
852
- }))));
1365
+ ],
1366
+ onClick: () => setTextValue(value).then(onOpen),
1367
+ "data-testid": "copy-invitation"
1368
+ });
853
1369
  };
854
1370
  var Clipboard = {
855
1371
  Button: CopyButton,
856
1372
  IconButton: CopyButtonIconOnly,
857
1373
  Provider: ClipboardProvider
858
1374
  };
859
- var DialogRoot = (props) => /* @__PURE__ */ import_react26.default.createElement(ElevationProvider, {
1375
+ var DialogRoot = (props) => /* @__PURE__ */ import_react25.default.createElement(ElevationProvider, {
860
1376
  elevation: "dialog"
861
- }, /* @__PURE__ */ import_react26.default.createElement(import_react_dialog.Root, props));
1377
+ }, /* @__PURE__ */ import_react25.default.createElement(import_react_dialog.Root, props));
862
1378
  var DialogTrigger = import_react_dialog.DialogTrigger;
863
1379
  var DialogPortal = import_react_dialog.DialogPortal;
864
- var DialogTitle = /* @__PURE__ */ (0, import_react26.forwardRef)(({ classNames, srOnly, ...props }, forwardedRef) => {
1380
+ var DialogTitle = /* @__PURE__ */ (0, import_react25.forwardRef)(({ classNames, srOnly, ...props }, forwardedRef) => {
865
1381
  const { tx } = useThemeContext();
866
- return /* @__PURE__ */ import_react26.default.createElement(import_react_dialog.DialogTitle, {
1382
+ return /* @__PURE__ */ import_react25.default.createElement(import_react_dialog.DialogTitle, {
867
1383
  ...props,
868
1384
  className: tx("dialog.title", "dialog__title", {
869
1385
  srOnly
@@ -871,9 +1387,9 @@ var DialogTitle = /* @__PURE__ */ (0, import_react26.forwardRef)(({ classNames,
871
1387
  ref: forwardedRef
872
1388
  });
873
1389
  });
874
- var DialogDescription = /* @__PURE__ */ (0, import_react26.forwardRef)(({ classNames, srOnly, ...props }, forwardedRef) => {
1390
+ var DialogDescription = /* @__PURE__ */ (0, import_react25.forwardRef)(({ classNames, srOnly, ...props }, forwardedRef) => {
875
1391
  const { tx } = useThemeContext();
876
- return /* @__PURE__ */ import_react26.default.createElement(import_react_dialog.DialogDescription, {
1392
+ return /* @__PURE__ */ import_react25.default.createElement(import_react_dialog.DialogDescription, {
877
1393
  ...props,
878
1394
  className: tx("dialog.description", "dialog__description", {
879
1395
  srOnly
@@ -884,25 +1400,25 @@ var DialogDescription = /* @__PURE__ */ (0, import_react26.forwardRef)(({ classN
884
1400
  var DialogClose = import_react_dialog.DialogClose;
885
1401
  var DIALOG_OVERLAY_NAME = "DialogOverlay";
886
1402
  var DIALOG_CONTENT_NAME = "DialogContent";
887
- var [OverlayLayoutProvider, useOverlayLayoutContext] = (0, import_react_context3.createContext)(DIALOG_OVERLAY_NAME, {
888
- inOverlayLayout: false
889
- });
890
- var DialogOverlay = /* @__PURE__ */ (0, import_react26.forwardRef)(({ classNames, children, blockAlign, ...props }, forwardedRef) => {
1403
+ var [OverlayLayoutProvider, useOverlayLayoutContext] = (0, import_react_context4.createContext)(DIALOG_OVERLAY_NAME, {});
1404
+ var DialogOverlay = /* @__PURE__ */ (0, import_react25.forwardRef)(({ classNames, children, blockAlign, ...props }, forwardedRef) => {
891
1405
  const { tx } = useThemeContext();
892
- return /* @__PURE__ */ import_react26.default.createElement(import_react_dialog.DialogOverlay, {
1406
+ return /* @__PURE__ */ import_react25.default.createElement(import_react_dialog.DialogOverlay, {
893
1407
  ...props,
894
1408
  className: tx("dialog.overlay", "dialog__overlay", {}, classNames),
895
1409
  ref: forwardedRef,
896
1410
  "data-block-align": blockAlign
897
- }, /* @__PURE__ */ import_react26.default.createElement(OverlayLayoutProvider, {
1411
+ }, /* @__PURE__ */ import_react25.default.createElement(OverlayLayoutProvider, {
898
1412
  inOverlayLayout: true
899
1413
  }, children));
900
1414
  });
901
1415
  DialogOverlay.displayName = DIALOG_OVERLAY_NAME;
902
- var DialogContent = /* @__PURE__ */ (0, import_react26.forwardRef)(({ classNames, children, inOverlayLayout: propsInOverlayLayout, ...props }, forwardedRef) => {
1416
+ var DialogContent = /* @__PURE__ */ (0, import_react25.forwardRef)(({ classNames, children, inOverlayLayout: propsInOverlayLayout, ...props }, forwardedRef) => {
903
1417
  const { tx } = useThemeContext();
904
1418
  const { inOverlayLayout } = useOverlayLayoutContext(DIALOG_CONTENT_NAME);
905
- return /* @__PURE__ */ import_react26.default.createElement(import_react_dialog.DialogContent, {
1419
+ return /* @__PURE__ */ import_react25.default.createElement(import_react_dialog.DialogContent, {
1420
+ // NOTE: Radix warning unless set to undefined.
1421
+ // https://www.radix-ui.com/primitives/docs/components/dialog#description
906
1422
  "aria-describedby": void 0,
907
1423
  ...props,
908
1424
  className: tx("dialog.content", "dialog", {
@@ -922,16 +1438,16 @@ var Dialog = {
922
1438
  Description: DialogDescription,
923
1439
  Close: DialogClose
924
1440
  };
925
- var AlertDialogRoot = (props) => /* @__PURE__ */ import_react27.default.createElement(ElevationProvider, {
1441
+ var AlertDialogRoot = (props) => /* @__PURE__ */ import_react26.default.createElement(ElevationProvider, {
926
1442
  elevation: "dialog"
927
- }, /* @__PURE__ */ import_react27.default.createElement(import_react_alert_dialog.Root, props));
1443
+ }, /* @__PURE__ */ import_react26.default.createElement(import_react_alert_dialog.Root, props));
928
1444
  var AlertDialogTrigger = import_react_alert_dialog.AlertDialogTrigger;
929
1445
  var AlertDialogPortal = import_react_alert_dialog.AlertDialogPortal;
930
1446
  var AlertDialogCancel = import_react_alert_dialog.AlertDialogCancel;
931
1447
  var AlertDialogAction = import_react_alert_dialog.AlertDialogAction;
932
- var AlertDialogTitle = /* @__PURE__ */ (0, import_react27.forwardRef)(({ classNames, srOnly, ...props }, forwardedRef) => {
1448
+ var AlertDialogTitle = /* @__PURE__ */ (0, import_react26.forwardRef)(({ classNames, srOnly, ...props }, forwardedRef) => {
933
1449
  const { tx } = useThemeContext();
934
- return /* @__PURE__ */ import_react27.default.createElement(import_react_alert_dialog.AlertDialogTitle, {
1450
+ return /* @__PURE__ */ import_react26.default.createElement(import_react_alert_dialog.AlertDialogTitle, {
935
1451
  ...props,
936
1452
  className: tx("dialog.title", "dialog--alert__title", {
937
1453
  srOnly
@@ -939,9 +1455,9 @@ var AlertDialogTitle = /* @__PURE__ */ (0, import_react27.forwardRef)(({ classNa
939
1455
  ref: forwardedRef
940
1456
  });
941
1457
  });
942
- var AlertDialogDescription = /* @__PURE__ */ (0, import_react27.forwardRef)(({ classNames, srOnly, ...props }, forwardedRef) => {
1458
+ var AlertDialogDescription = /* @__PURE__ */ (0, import_react26.forwardRef)(({ classNames, srOnly, ...props }, forwardedRef) => {
943
1459
  const { tx } = useThemeContext();
944
- return /* @__PURE__ */ import_react27.default.createElement(import_react_alert_dialog.AlertDialogDescription, {
1460
+ return /* @__PURE__ */ import_react26.default.createElement(import_react_alert_dialog.AlertDialogDescription, {
945
1461
  ...props,
946
1462
  className: tx("dialog.description", "dialog--alert__description", {
947
1463
  srOnly
@@ -951,25 +1467,25 @@ var AlertDialogDescription = /* @__PURE__ */ (0, import_react27.forwardRef)(({ c
951
1467
  });
952
1468
  var ALERT_DIALOG_OVERLAY_NAME = "AlertDialogOverlay";
953
1469
  var ALERT_DIALOG_CONTENT_NAME = "AlertDialogContent";
954
- var [OverlayLayoutProvider2, useOverlayLayoutContext2] = (0, import_react_context4.createContext)(ALERT_DIALOG_OVERLAY_NAME, {
1470
+ var [OverlayLayoutProvider2, useOverlayLayoutContext2] = (0, import_react_context5.createContext)(ALERT_DIALOG_OVERLAY_NAME, {
955
1471
  inOverlayLayout: false
956
1472
  });
957
- var AlertDialogOverlay = /* @__PURE__ */ (0, import_react27.forwardRef)(({ classNames, children, blockAlign, ...props }, forwardedRef) => {
1473
+ var AlertDialogOverlay = /* @__PURE__ */ (0, import_react26.forwardRef)(({ classNames, children, blockAlign, ...props }, forwardedRef) => {
958
1474
  const { tx } = useThemeContext();
959
- return /* @__PURE__ */ import_react27.default.createElement(import_react_alert_dialog.AlertDialogOverlay, {
1475
+ return /* @__PURE__ */ import_react26.default.createElement(import_react_alert_dialog.AlertDialogOverlay, {
960
1476
  ...props,
961
1477
  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"),
962
1478
  ref: forwardedRef,
963
1479
  "data-block-align": blockAlign
964
- }, /* @__PURE__ */ import_react27.default.createElement(OverlayLayoutProvider2, {
1480
+ }, /* @__PURE__ */ import_react26.default.createElement(OverlayLayoutProvider2, {
965
1481
  inOverlayLayout: true
966
1482
  }, children));
967
1483
  });
968
1484
  AlertDialogOverlay.displayName = ALERT_DIALOG_OVERLAY_NAME;
969
- var AlertDialogContent = /* @__PURE__ */ (0, import_react27.forwardRef)(({ classNames, children, ...props }, forwardedRef) => {
1485
+ var AlertDialogContent = /* @__PURE__ */ (0, import_react26.forwardRef)(({ classNames, children, ...props }, forwardedRef) => {
970
1486
  const { tx } = useThemeContext();
971
1487
  const { inOverlayLayout } = useOverlayLayoutContext2(ALERT_DIALOG_CONTENT_NAME);
972
- return /* @__PURE__ */ import_react27.default.createElement(import_react_alert_dialog.AlertDialogContent, {
1488
+ return /* @__PURE__ */ import_react26.default.createElement(import_react_alert_dialog.AlertDialogContent, {
973
1489
  ...props,
974
1490
  className: tx("dialog.content", "dialog--alert", {
975
1491
  inOverlayLayout
@@ -989,1256 +1505,1273 @@ var AlertDialog = {
989
1505
  Cancel: AlertDialogCancel,
990
1506
  Action: AlertDialogAction
991
1507
  };
992
- var ContextMenuRoot = ContextMenuPrimitive.ContextMenu;
993
- var ContextMenuTrigger = ContextMenuPrimitive.Trigger;
994
- var ContextMenuPortal = ContextMenuPrimitive.Portal;
995
- var ContextMenuContent = /* @__PURE__ */ (0, import_react28.forwardRef)(({ classNames, children, collisionPadding = 8, ...props }, forwardedRef) => {
1508
+ var Label = /* @__PURE__ */ (0, import_react27.forwardRef)(({ srOnly, classNames, children, ...props }, forwardedRef) => {
996
1509
  const { tx } = useThemeContext();
997
- const elevation = useElevationContext();
998
- const safeCollisionPadding = useSafeCollisionPadding(collisionPadding);
999
- return /* @__PURE__ */ import_react28.default.createElement(ContextMenuPrimitive.Content, {
1510
+ return /* @__PURE__ */ import_react27.default.createElement(import_react_input.Label, {
1000
1511
  ...props,
1001
- collisionPadding: safeCollisionPadding,
1002
- className: tx("menu.content", "menu", {
1003
- elevation
1512
+ className: tx("input.label", "input__label", {
1513
+ srOnly
1004
1514
  }, classNames),
1005
1515
  ref: forwardedRef
1006
1516
  }, children);
1007
1517
  });
1008
- var ContextMenuViewport = /* @__PURE__ */ (0, import_react28.forwardRef)(({ classNames, asChild, children, ...props }, forwardedRef) => {
1518
+ var Description = /* @__PURE__ */ (0, import_react27.forwardRef)(({ srOnly, classNames, children, ...props }, forwardedRef) => {
1009
1519
  const { tx } = useThemeContext();
1010
- const Root5 = asChild ? import_react_slot6.Slot : import_react_primitive6.Primitive.div;
1011
- return /* @__PURE__ */ import_react28.default.createElement(Root5, {
1520
+ return /* @__PURE__ */ import_react27.default.createElement(import_react_input.Description, {
1012
1521
  ...props,
1013
- className: tx("menu.viewport", "menu__viewport", {}, classNames),
1522
+ className: tx("input.description", "input__description", {
1523
+ srOnly
1524
+ }, classNames),
1014
1525
  ref: forwardedRef
1015
1526
  }, children);
1016
1527
  });
1017
- var ContextMenuArrow = /* @__PURE__ */ (0, import_react28.forwardRef)(({ classNames, ...props }, forwardedRef) => {
1528
+ var Validation = /* @__PURE__ */ (0, import_react27.forwardRef)(({ __inputScope, srOnly, classNames, children, ...props }, forwardedRef) => {
1018
1529
  const { tx } = useThemeContext();
1019
- return /* @__PURE__ */ import_react28.default.createElement(ContextMenuPrimitive.Arrow, {
1530
+ const { validationValence } = (0, import_react_input.useInputContext)(import_react_input.INPUT_NAME, __inputScope);
1531
+ return /* @__PURE__ */ import_react27.default.createElement(import_react_input.Validation, {
1020
1532
  ...props,
1021
- className: tx("menu.arrow", "menu__arrow", {}, classNames),
1533
+ className: tx("input.validation", `input__validation-message input__validation-message--${validationValence}`, {
1534
+ srOnly,
1535
+ validationValence
1536
+ }, classNames),
1022
1537
  ref: forwardedRef
1023
- });
1538
+ }, children);
1024
1539
  });
1025
- var ContextMenuGroup = ContextMenuPrimitive.Group;
1026
- var ContextMenuItemIndicator = ContextMenuPrimitive.ItemIndicator;
1027
- var ContextMenuItem = /* @__PURE__ */ (0, import_react28.forwardRef)(({ classNames, ...props }, forwardedRef) => {
1540
+ var DescriptionAndValidation = /* @__PURE__ */ (0, import_react27.forwardRef)(({ srOnly, classNames, children, ...props }, forwardedRef) => {
1028
1541
  const { tx } = useThemeContext();
1029
- return /* @__PURE__ */ import_react28.default.createElement(ContextMenuPrimitive.Item, {
1542
+ return /* @__PURE__ */ import_react27.default.createElement(import_react_input.DescriptionAndValidation, {
1030
1543
  ...props,
1031
- className: tx("menu.item", "menu__item", {}, classNames),
1544
+ className: tx("input.descriptionAndValidation", "input__description-and-validation", {
1545
+ srOnly
1546
+ }, classNames),
1032
1547
  ref: forwardedRef
1033
- });
1548
+ }, children);
1034
1549
  });
1035
- var ContextMenuCheckboxItem = /* @__PURE__ */ (0, import_react28.forwardRef)(({ classNames, ...props }, forwardedRef) => {
1550
+ var PinInput = /* @__PURE__ */ (0, import_react27.forwardRef)(({ density: propsDensity, elevation: propsElevation, segmentClassName: propsSegmentClassName, inputClassName, variant, ...props }, forwardedRef) => {
1551
+ const { hasIosKeyboard: hasIosKeyboard2 } = useThemeContext();
1036
1552
  const { tx } = useThemeContext();
1037
- return /* @__PURE__ */ import_react28.default.createElement(ContextMenuPrimitive.CheckboxItem, {
1553
+ const density = useDensityContext(propsDensity);
1554
+ const elevation = useElevationContext(propsElevation);
1555
+ const segmentClassName = (0, import_react27.useCallback)(({ focused, validationValence }) => tx("input.input", "input--pin-segment", {
1556
+ variant: "static",
1557
+ focused,
1558
+ disabled: props.disabled,
1559
+ density,
1560
+ elevation,
1561
+ validationValence
1562
+ }, propsSegmentClassName), [
1563
+ tx,
1564
+ props.disabled,
1565
+ elevation,
1566
+ propsElevation,
1567
+ density
1568
+ ]);
1569
+ return /* @__PURE__ */ import_react27.default.createElement(import_react_input.PinInput, {
1038
1570
  ...props,
1039
- className: tx("menu.item", "menu__item--checkbox", {}, classNames),
1571
+ segmentClassName,
1572
+ ...props.autoFocus && !hasIosKeyboard2 && {
1573
+ autoFocus: true
1574
+ },
1575
+ inputClassName: tx("input.inputWithSegments", "input input--pin", {
1576
+ disabled: props.disabled
1577
+ }, inputClassName),
1040
1578
  ref: forwardedRef
1041
1579
  });
1042
1580
  });
1043
- var ContextMenuSeparator = /* @__PURE__ */ (0, import_react28.forwardRef)(({ classNames, ...props }, forwardedRef) => {
1044
- const { tx } = useThemeContext();
1045
- return /* @__PURE__ */ import_react28.default.createElement(ContextMenuPrimitive.Separator, {
1581
+ var TextInput = /* @__PURE__ */ (0, import_react27.forwardRef)(({ __inputScope, classNames, density: propsDensity, elevation: propsElevation, variant, ...props }, forwardedRef) => {
1582
+ const { hasIosKeyboard: hasIosKeyboard2 } = useThemeContext();
1583
+ const themeContextValue = useThemeContext();
1584
+ const density = useDensityContext(propsDensity);
1585
+ const elevation = useElevationContext(propsElevation);
1586
+ const { validationValence } = (0, import_react_input.useInputContext)(import_react_input.INPUT_NAME, __inputScope);
1587
+ const { tx } = themeContextValue;
1588
+ return /* @__PURE__ */ import_react27.default.createElement(import_react_input.TextInput, {
1046
1589
  ...props,
1047
- className: tx("menu.separator", "menu__item", {}, classNames),
1590
+ className: tx("input.input", "input", {
1591
+ variant,
1592
+ disabled: props.disabled,
1593
+ density,
1594
+ elevation,
1595
+ validationValence
1596
+ }, classNames),
1597
+ ...props.autoFocus && !hasIosKeyboard2 && {
1598
+ autoFocus: true
1599
+ },
1048
1600
  ref: forwardedRef
1049
1601
  });
1050
1602
  });
1051
- var ContextMenuGroupLabel = /* @__PURE__ */ (0, import_react28.forwardRef)(({ classNames, ...props }, forwardedRef) => {
1603
+ var TextArea = /* @__PURE__ */ (0, import_react27.forwardRef)(({ __inputScope, classNames, density: propsDensity, elevation: propsElevation, variant, ...props }, forwardedRef) => {
1604
+ const { hasIosKeyboard: hasIosKeyboard2 } = useThemeContext();
1052
1605
  const { tx } = useThemeContext();
1053
- return /* @__PURE__ */ import_react28.default.createElement(ContextMenuPrimitive.Label, {
1606
+ const density = useDensityContext(propsDensity);
1607
+ const elevation = useElevationContext(propsElevation);
1608
+ const { validationValence } = (0, import_react_input.useInputContext)(import_react_input.INPUT_NAME, __inputScope);
1609
+ return /* @__PURE__ */ import_react27.default.createElement(import_react_input.TextArea, {
1054
1610
  ...props,
1055
- className: tx("menu.groupLabel", "menu__group__label", {}, classNames),
1611
+ className: tx("input.input", "input--text-area", {
1612
+ variant,
1613
+ disabled: props.disabled,
1614
+ density,
1615
+ elevation,
1616
+ validationValence
1617
+ }, classNames),
1618
+ ...props.autoFocus && !hasIosKeyboard2 && {
1619
+ autoFocus: true
1620
+ },
1056
1621
  ref: forwardedRef
1057
1622
  });
1058
1623
  });
1059
- var ContextMenu2 = {
1060
- Root: ContextMenuRoot,
1061
- Trigger: ContextMenuTrigger,
1062
- Portal: ContextMenuPortal,
1063
- Content: ContextMenuContent,
1064
- Viewport: ContextMenuViewport,
1065
- Arrow: ContextMenuArrow,
1066
- Group: ContextMenuGroup,
1067
- Item: ContextMenuItem,
1068
- CheckboxItem: ContextMenuCheckboxItem,
1069
- ItemIndicator: ContextMenuItemIndicator,
1070
- Separator: ContextMenuSeparator,
1071
- GroupLabel: ContextMenuGroupLabel
1072
- };
1073
- var DROPDOWN_MENU_NAME = "DropdownMenu";
1074
- var [createDropdownMenuContext, createDropdownMenuScope] = (0, import_react_context5.createContextScope)(DROPDOWN_MENU_NAME, [
1075
- import_react_menu.createMenuScope
1076
- ]);
1077
- var useMenuScope = (0, import_react_menu.createMenuScope)();
1078
- var [DropdownMenuProvider, useDropdownMenuContext] = createDropdownMenuContext(DROPDOWN_MENU_NAME);
1079
- var DropdownMenuRoot = (props) => {
1080
- const { __scopeDropdownMenu, children, dir, open: openProp, defaultOpen, onOpenChange, modal = true } = props;
1081
- const menuScope = useMenuScope(__scopeDropdownMenu);
1082
- const triggerRef = (0, import_react29.useRef)(null);
1083
- const [open = false, setOpen] = (0, import_react_use_controllable_state.useControllableState)({
1084
- prop: openProp,
1085
- defaultProp: defaultOpen,
1086
- onChange: onOpenChange
1624
+ var Checkbox = /* @__PURE__ */ (0, import_react27.forwardRef)(({ __inputScope, checked: propsChecked, defaultChecked: propsDefaultChecked, onCheckedChange: propsOnCheckedChange, size, weight = "bold", classNames, ...props }, forwardedRef) => {
1625
+ const [checked, onCheckedChange] = (0, import_react_use_controllable_state2.useControllableState)({
1626
+ prop: propsChecked,
1627
+ defaultProp: propsDefaultChecked,
1628
+ onChange: propsOnCheckedChange
1087
1629
  });
1088
- return /* @__PURE__ */ import_react29.default.createElement(DropdownMenuProvider, {
1089
- scope: __scopeDropdownMenu,
1090
- triggerId: (0, import_react_id.useId)(),
1091
- triggerRef,
1092
- contentId: (0, import_react_id.useId)(),
1093
- open,
1094
- onOpenChange: setOpen,
1095
- onOpenToggle: (0, import_react29.useCallback)(() => setOpen((prevOpen) => !prevOpen), [
1096
- setOpen
1097
- ]),
1098
- modal
1099
- }, /* @__PURE__ */ import_react29.default.createElement(MenuPrimitive.Root, {
1100
- ...menuScope,
1101
- open,
1102
- onOpenChange: setOpen,
1103
- dir,
1104
- modal
1105
- }, children));
1106
- };
1107
- DropdownMenuRoot.displayName = DROPDOWN_MENU_NAME;
1108
- var TRIGGER_NAME = "DropdownMenuTrigger";
1109
- var DropdownMenuTrigger = /* @__PURE__ */ (0, import_react29.forwardRef)((props, forwardedRef) => {
1110
- const { __scopeDropdownMenu, disabled = false, ...triggerProps } = props;
1111
- const context = useDropdownMenuContext(TRIGGER_NAME, __scopeDropdownMenu);
1112
- const menuScope = useMenuScope(__scopeDropdownMenu);
1113
- return /* @__PURE__ */ import_react29.default.createElement(MenuPrimitive.Anchor, {
1114
- asChild: true,
1115
- ...menuScope
1116
- }, /* @__PURE__ */ import_react29.default.createElement(import_react_primitive7.Primitive.button, {
1117
- type: "button",
1118
- id: context.triggerId,
1119
- "aria-haspopup": "menu",
1120
- "aria-expanded": context.open,
1121
- "aria-controls": context.open ? context.contentId : void 0,
1122
- "data-state": context.open ? "open" : "closed",
1123
- "data-disabled": disabled ? "" : void 0,
1124
- disabled,
1125
- ...triggerProps,
1126
- ref: (0, import_react_compose_refs.composeRefs)(forwardedRef, context.triggerRef),
1127
- onPointerDown: (0, import_primitive.composeEventHandlers)(props.onPointerDown, (event) => {
1128
- if (!disabled && event.button === 0 && event.ctrlKey === false) {
1129
- context.onOpenToggle();
1130
- if (!context.open) {
1131
- event.preventDefault();
1132
- }
1133
- }
1134
- }),
1135
- onKeyDown: (0, import_primitive.composeEventHandlers)(props.onKeyDown, (event) => {
1136
- if (disabled) {
1137
- return;
1138
- }
1139
- if ([
1140
- "Enter",
1141
- " "
1142
- ].includes(event.key)) {
1143
- context.onOpenToggle();
1144
- }
1145
- if (event.key === "ArrowDown") {
1146
- context.onOpenChange(true);
1147
- }
1148
- if ([
1149
- "Enter",
1150
- " ",
1151
- "ArrowDown"
1152
- ].includes(event.key)) {
1153
- event.preventDefault();
1154
- }
1630
+ const { id, validationValence, descriptionId, errorMessageId } = (0, import_react_input.useInputContext)(import_react_input.INPUT_NAME, __inputScope);
1631
+ const { tx } = useThemeContext();
1632
+ return /* @__PURE__ */ import_react27.default.createElement(import_react_checkbox.Root, {
1633
+ ...props,
1634
+ checked,
1635
+ onCheckedChange,
1636
+ id,
1637
+ "aria-describedby": descriptionId,
1638
+ ...validationValence === "error" && {
1639
+ "aria-invalid": "true",
1640
+ "aria-errormessage": errorMessageId
1641
+ },
1642
+ className: tx("input.checkbox", "input--checkbox", {
1643
+ size
1644
+ }, "shrink-0", classNames),
1645
+ ref: forwardedRef
1646
+ }, /* @__PURE__ */ import_react27.default.createElement(Icon, {
1647
+ icon: checked === "indeterminate" ? "ph--minus--regular" : "ph--check--regular",
1648
+ classNames: tx("input.checkboxIndicator", "input--checkbox__indicator", {
1649
+ size,
1650
+ checked
1155
1651
  })
1156
1652
  }));
1157
1653
  });
1158
- DropdownMenuTrigger.displayName = TRIGGER_NAME;
1159
- var VIRTUAL_TRIGGER_NAME = "DropdownMenuVirtualTrigger";
1160
- var DropdownMenuVirtualTrigger = (props) => {
1161
- const { __scopeDropdownMenu, virtualRef } = props;
1162
- const context = useDropdownMenuContext(VIRTUAL_TRIGGER_NAME, __scopeDropdownMenu);
1163
- const menuScope = useMenuScope(__scopeDropdownMenu);
1164
- (0, import_react29.useEffect)(() => {
1165
- if (virtualRef.current) {
1166
- context.triggerRef.current = virtualRef.current;
1167
- }
1654
+ var Switch = /* @__PURE__ */ (0, import_react27.forwardRef)(({ __inputScope, checked: propsChecked, defaultChecked: propsDefaultChecked, onCheckedChange: propsOnCheckedChange, classNames, ...props }, forwardedRef) => {
1655
+ const [checked, onCheckedChange] = (0, import_react_use_controllable_state2.useControllableState)({
1656
+ prop: propsChecked,
1657
+ defaultProp: propsDefaultChecked ?? false,
1658
+ onChange: propsOnCheckedChange
1168
1659
  });
1169
- return /* @__PURE__ */ import_react29.default.createElement(MenuPrimitive.Anchor, {
1170
- ...menuScope,
1171
- virtualRef
1660
+ const { id, validationValence, descriptionId, errorMessageId } = (0, import_react_input.useInputContext)(import_react_input.INPUT_NAME, __inputScope);
1661
+ return /* @__PURE__ */ import_react27.default.createElement("input", {
1662
+ type: "checkbox",
1663
+ className: (0, import_react_ui_theme3.mx)("dx-checkbox--switch dx-focus-ring", classNames),
1664
+ checked,
1665
+ onChange: (event) => {
1666
+ onCheckedChange(event.target.checked);
1667
+ },
1668
+ id,
1669
+ "aria-describedby": descriptionId,
1670
+ ...props,
1671
+ ...validationValence === "error" && {
1672
+ "aria-invalid": "true",
1673
+ "aria-errormessage": errorMessageId
1674
+ },
1675
+ ref: forwardedRef
1172
1676
  });
1677
+ });
1678
+ var Input = {
1679
+ Root: import_react_input.InputRoot,
1680
+ PinInput,
1681
+ TextInput,
1682
+ TextArea,
1683
+ Checkbox,
1684
+ Switch,
1685
+ Label,
1686
+ Description,
1687
+ Validation,
1688
+ DescriptionAndValidation
1173
1689
  };
1174
- DropdownMenuVirtualTrigger.displayName = VIRTUAL_TRIGGER_NAME;
1175
- var PORTAL_NAME = "DropdownMenuPortal";
1176
- var DropdownMenuPortal = (props) => {
1177
- const { __scopeDropdownMenu, ...portalProps } = props;
1178
- const menuScope = useMenuScope(__scopeDropdownMenu);
1179
- return /* @__PURE__ */ import_react29.default.createElement(MenuPrimitive.Portal, {
1180
- ...menuScope,
1181
- ...portalProps
1690
+ var edgeToOrientationMap = {
1691
+ top: "horizontal",
1692
+ bottom: "horizontal",
1693
+ left: "vertical",
1694
+ right: "vertical"
1695
+ };
1696
+ var orientationStyles = {
1697
+ horizontal: "h-[--line-thickness] left-[calc(var(--line-inset)+var(--terminal-radius))] right-[--line-inset] before:left-[--terminal-inset]",
1698
+ vertical: "w-[--line-thickness] top-[calc(var(--line-inset)+var(--terminal-radius))] bottom-[--line-inset] before:top-[--terminal-inset]"
1699
+ };
1700
+ var edgeStyles = {
1701
+ top: "top-[--line-offset] before:top-[--offset-terminal]",
1702
+ right: "right-[--line-offset] before:right-[--offset-terminal]",
1703
+ bottom: "bottom-[--line-offset] before:bottom-[--offset-terminal]",
1704
+ left: "left-[--line-offset] before:left-[--offset-terminal]"
1705
+ };
1706
+ var strokeSize = 2;
1707
+ var terminalSize = 8;
1708
+ var offsetToAlignTerminalWithLine = (strokeSize - terminalSize) / 2;
1709
+ var ListDropIndicator = ({ edge, gap = 0, lineInset = 0, terminalInset = lineInset - terminalSize }) => {
1710
+ const orientation = edgeToOrientationMap[edge];
1711
+ return /* @__PURE__ */ import_react30.default.createElement("div", {
1712
+ role: "none",
1713
+ style: {
1714
+ "--line-thickness": `${strokeSize}px`,
1715
+ "--line-offset": `calc(-0.5 * (${gap}px + ${strokeSize}px))`,
1716
+ "--line-inset": `${lineInset}px`,
1717
+ "--terminal-size": `${terminalSize}px`,
1718
+ "--terminal-radius": `${terminalSize / 2}px`,
1719
+ "--terminal-inset": `${terminalInset}px`,
1720
+ "--offset-terminal": `${offsetToAlignTerminalWithLine}px`
1721
+ },
1722
+ 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]}`
1182
1723
  });
1183
1724
  };
1184
- DropdownMenuPortal.displayName = PORTAL_NAME;
1185
- var DropdownMenuViewport = /* @__PURE__ */ (0, import_react29.forwardRef)(({ classNames, asChild, children, ...props }, forwardedRef) => {
1725
+ var List = /* @__PURE__ */ (0, import_react29.forwardRef)(({ classNames, children, ...props }, forwardedRef) => {
1186
1726
  const { tx } = useThemeContext();
1187
- const Root5 = asChild ? import_react_slot7.Slot : import_react_primitive7.Primitive.div;
1188
- return /* @__PURE__ */ import_react29.default.createElement(Root5, {
1727
+ const density = useDensityContext(props.density);
1728
+ return /* @__PURE__ */ import_react29.default.createElement(DensityProvider, {
1729
+ density
1730
+ }, /* @__PURE__ */ import_react29.default.createElement(import_react_list.List, {
1189
1731
  ...props,
1190
- className: tx("menu.viewport", "menu__viewport", {}, classNames),
1732
+ className: tx("list.root", "list", {}, classNames),
1191
1733
  ref: forwardedRef
1192
- }, children);
1734
+ }, children));
1193
1735
  });
1194
- var CONTENT_NAME = "DropdownMenuContent";
1195
- var DropdownMenuContent = /* @__PURE__ */ (0, import_react29.forwardRef)((props, forwardedRef) => {
1196
- const { __scopeDropdownMenu, classNames, collisionPadding = 8, ...contentProps } = props;
1736
+ var ListItemEndcap = /* @__PURE__ */ (0, import_react29.forwardRef)(({ children, classNames, asChild, ...props }, forwardedRef) => {
1737
+ const Root7 = asChild ? import_react_slot7.Slot : "div";
1738
+ const density = useDensityContext();
1197
1739
  const { tx } = useThemeContext();
1198
- const context = useDropdownMenuContext(CONTENT_NAME, __scopeDropdownMenu);
1199
- const elevation = useElevationContext();
1200
- const menuScope = useMenuScope(__scopeDropdownMenu);
1201
- const hasInteractedOutsideRef = (0, import_react29.useRef)(false);
1202
- const safeCollisionPadding = useSafeCollisionPadding(collisionPadding);
1203
- return /* @__PURE__ */ import_react29.default.createElement(MenuPrimitive.Content, {
1204
- id: context.contentId,
1205
- "aria-labelledby": context.triggerId,
1206
- ...menuScope,
1207
- ...contentProps,
1208
- collisionPadding: safeCollisionPadding,
1209
- ref: forwardedRef,
1210
- onCloseAutoFocus: (0, import_primitive.composeEventHandlers)(props.onCloseAutoFocus, (event) => {
1211
- if (!hasInteractedOutsideRef.current) {
1212
- context.triggerRef.current?.focus();
1213
- }
1214
- hasInteractedOutsideRef.current = false;
1215
- event.preventDefault();
1216
- }),
1217
- onInteractOutside: (0, import_primitive.composeEventHandlers)(props.onInteractOutside, (event) => {
1218
- const originalEvent = event.detail.originalEvent;
1219
- const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;
1220
- const isRightClick = originalEvent.button === 2 || ctrlLeftClick;
1221
- if (!context.modal || isRightClick) {
1222
- hasInteractedOutsideRef.current = true;
1223
- }
1224
- }),
1225
- className: tx("menu.content", "menu", {
1226
- elevation
1740
+ return /* @__PURE__ */ import_react29.default.createElement(Root7, {
1741
+ ...!asChild && {
1742
+ role: "none"
1743
+ },
1744
+ ...props,
1745
+ className: tx("list.item.endcap", "list__listItem__endcap", {
1746
+ density
1227
1747
  }, classNames),
1228
- style: {
1229
- ...props.style,
1230
- // re-namespace exposed content custom properties
1231
- ...{
1232
- "--radix-dropdown-menu-content-transform-origin": "var(--radix-popper-transform-origin)",
1233
- "--radix-dropdown-menu-content-available-width": "var(--radix-popper-available-width)",
1234
- "--radix-dropdown-menu-content-available-height": "var(--radix-popper-available-height)",
1235
- "--radix-dropdown-menu-trigger-width": "var(--radix-popper-anchor-width)",
1236
- "--radix-dropdown-menu-trigger-height": "var(--radix-popper-anchor-height)"
1237
- }
1238
- }
1239
- });
1240
- });
1241
- DropdownMenuContent.displayName = CONTENT_NAME;
1242
- var GROUP_NAME = "DropdownMenuGroup";
1243
- var DropdownMenuGroup = /* @__PURE__ */ (0, import_react29.forwardRef)((props, forwardedRef) => {
1244
- const { __scopeDropdownMenu, ...groupProps } = props;
1245
- const menuScope = useMenuScope(__scopeDropdownMenu);
1246
- return /* @__PURE__ */ import_react29.default.createElement(MenuPrimitive.Group, {
1247
- ...menuScope,
1248
- ...groupProps,
1249
1748
  ref: forwardedRef
1250
- });
1749
+ }, children);
1251
1750
  });
1252
- DropdownMenuGroup.displayName = GROUP_NAME;
1253
- var LABEL_NAME = "DropdownMenuLabel";
1254
- var DropdownMenuGroupLabel = /* @__PURE__ */ (0, import_react29.forwardRef)((props, forwardedRef) => {
1255
- const { __scopeDropdownMenu, classNames, ...labelProps } = props;
1256
- const menuScope = useMenuScope(__scopeDropdownMenu);
1751
+ var MockListItemOpenTrigger = ({ classNames, ...props }) => {
1752
+ const density = useDensityContext();
1257
1753
  const { tx } = useThemeContext();
1258
- return /* @__PURE__ */ import_react29.default.createElement(MenuPrimitive.Label, {
1259
- ...menuScope,
1260
- ...labelProps,
1261
- className: tx("menu.groupLabel", "menu__group__label", {}, classNames),
1262
- ref: forwardedRef
1754
+ return /* @__PURE__ */ import_react29.default.createElement("div", {
1755
+ role: "none",
1756
+ ...props,
1757
+ className: tx("list.item.openTrigger", "list__listItem__openTrigger--mock", {
1758
+ density
1759
+ }, classNames)
1263
1760
  });
1264
- });
1265
- DropdownMenuGroupLabel.displayName = LABEL_NAME;
1266
- var ITEM_NAME = "DropdownMenuItem";
1267
- var DropdownMenuItem = /* @__PURE__ */ (0, import_react29.forwardRef)((props, forwardedRef) => {
1268
- const { __scopeDropdownMenu, classNames, ...itemProps } = props;
1269
- const menuScope = useMenuScope(__scopeDropdownMenu);
1761
+ };
1762
+ var ListItemHeading = /* @__PURE__ */ (0, import_react29.forwardRef)(({ children, classNames, ...props }, forwardedRef) => {
1270
1763
  const { tx } = useThemeContext();
1271
- return /* @__PURE__ */ import_react29.default.createElement(MenuPrimitive.Item, {
1272
- ...menuScope,
1273
- ...itemProps,
1274
- className: tx("menu.item", "menu__item", {}, classNames),
1764
+ const density = useDensityContext();
1765
+ return /* @__PURE__ */ import_react29.default.createElement(import_react_list.ListItemHeading, {
1766
+ ...props,
1767
+ className: tx("list.item.heading", "list__listItem__heading", {
1768
+ density
1769
+ }, classNames),
1275
1770
  ref: forwardedRef
1276
- });
1771
+ }, children);
1277
1772
  });
1278
- DropdownMenuItem.displayName = ITEM_NAME;
1279
- var CHECKBOX_ITEM_NAME = "DropdownMenuCheckboxItem";
1280
- var DropdownMenuCheckboxItem = /* @__PURE__ */ (0, import_react29.forwardRef)((props, forwardedRef) => {
1281
- const { __scopeDropdownMenu, classNames, ...checkboxItemProps } = props;
1282
- const menuScope = useMenuScope(__scopeDropdownMenu);
1773
+ var ListItemOpenTrigger = /* @__PURE__ */ (0, import_react29.forwardRef)(({ __listItemScope, classNames, children, ...props }, forwardedRef) => {
1283
1774
  const { tx } = useThemeContext();
1284
- return /* @__PURE__ */ import_react29.default.createElement(MenuPrimitive.CheckboxItem, {
1285
- ...menuScope,
1286
- ...checkboxItemProps,
1287
- className: tx("menu.item", "menu__item--checkbox", {}, classNames),
1288
- ref: forwardedRef
1289
- });
1290
- });
1291
- DropdownMenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME;
1292
- var RADIO_GROUP_NAME = "DropdownMenuRadioGroup";
1293
- var DropdownMenuRadioGroup = /* @__PURE__ */ (0, import_react29.forwardRef)((props, forwardedRef) => {
1294
- const { __scopeDropdownMenu, ...radioGroupProps } = props;
1295
- const menuScope = useMenuScope(__scopeDropdownMenu);
1296
- return /* @__PURE__ */ import_react29.default.createElement(MenuPrimitive.RadioGroup, {
1297
- ...menuScope,
1298
- ...radioGroupProps,
1775
+ const density = useDensityContext();
1776
+ const { open } = (0, import_react_list.useListItemContext)(import_react_list.LIST_ITEM_NAME, __listItemScope);
1777
+ const Icon3 = open ? import_react28.CaretDown : import_react28.CaretRight;
1778
+ return /* @__PURE__ */ import_react29.default.createElement(import_react_list.ListItemOpenTrigger, {
1779
+ ...props,
1780
+ className: tx("list.item.openTrigger", "list__listItem__openTrigger", {
1781
+ density
1782
+ }, classNames),
1299
1783
  ref: forwardedRef
1300
- });
1784
+ }, children || /* @__PURE__ */ import_react29.default.createElement(Icon3, {
1785
+ weight: "bold",
1786
+ className: tx("list.item.openTriggerIcon", "list__listItem__openTrigger__icon", {})
1787
+ }));
1301
1788
  });
1302
- DropdownMenuRadioGroup.displayName = RADIO_GROUP_NAME;
1303
- var RADIO_ITEM_NAME = "DropdownMenuRadioItem";
1304
- var DropdownMenuRadioItem = /* @__PURE__ */ (0, import_react29.forwardRef)((props, forwardedRef) => {
1305
- const { __scopeDropdownMenu, ...radioItemProps } = props;
1306
- const menuScope = useMenuScope(__scopeDropdownMenu);
1307
- return /* @__PURE__ */ import_react29.default.createElement(MenuPrimitive.RadioItem, {
1308
- ...menuScope,
1309
- ...radioItemProps,
1789
+ var ListItemRoot = /* @__PURE__ */ (0, import_react29.forwardRef)(({ classNames, children, ...props }, forwardedRef) => {
1790
+ const { tx } = useThemeContext();
1791
+ const density = useDensityContext();
1792
+ return /* @__PURE__ */ import_react29.default.createElement(import_react_list.ListItem, {
1793
+ ...props,
1794
+ className: tx("list.item.root", "list__listItem", {
1795
+ density,
1796
+ collapsible: props.collapsible
1797
+ }, classNames),
1310
1798
  ref: forwardedRef
1311
- });
1799
+ }, children);
1312
1800
  });
1313
- DropdownMenuRadioItem.displayName = RADIO_ITEM_NAME;
1314
- var INDICATOR_NAME = "DropdownMenuItemIndicator";
1315
- var DropdownMenuItemIndicator = /* @__PURE__ */ (0, import_react29.forwardRef)((props, forwardedRef) => {
1316
- const { __scopeDropdownMenu, ...itemIndicatorProps } = props;
1317
- const menuScope = useMenuScope(__scopeDropdownMenu);
1318
- return /* @__PURE__ */ import_react29.default.createElement(MenuPrimitive.ItemIndicator, {
1319
- ...menuScope,
1320
- ...itemIndicatorProps,
1321
- ref: forwardedRef
1801
+ var ListItem = {
1802
+ Root: ListItemRoot,
1803
+ Endcap: ListItemEndcap,
1804
+ Heading: ListItemHeading,
1805
+ OpenTrigger: ListItemOpenTrigger,
1806
+ CollapsibleContent: import_react_list.ListItemCollapsibleContent,
1807
+ MockOpenTrigger: MockListItemOpenTrigger,
1808
+ DropIndicator: ListDropIndicator
1809
+ };
1810
+ var edgeToOrientationMap2 = {
1811
+ "reorder-above": "sibling",
1812
+ "reorder-below": "sibling",
1813
+ "make-child": "child",
1814
+ reparent: "child"
1815
+ };
1816
+ var orientationStyles2 = {
1817
+ // TODO(wittjosiah): Stop using left/right here.
1818
+ sibling: "bs-[--line-thickness] left-[--horizontal-indent] right-0 bg-accentSurface before:left-[--negative-terminal-size]",
1819
+ child: "is-full block-start-0 block-end-0 border-[length:--line-thickness] before:invisible"
1820
+ };
1821
+ var instructionStyles = {
1822
+ "reorder-above": "block-start-[--line-offset] before:block-start-[--offset-terminal]",
1823
+ "reorder-below": "block-end-[--line-offset] before:block-end-[--offset-terminal]",
1824
+ "make-child": "border-accentSurface",
1825
+ // TODO(wittjosiah): This is not occurring in the current implementation.
1826
+ reparent: ""
1827
+ };
1828
+ var strokeSize2 = 2;
1829
+ var terminalSize2 = 8;
1830
+ var offsetToAlignTerminalWithLine2 = (strokeSize2 - terminalSize2) / 2;
1831
+ var TreeDropIndicator = ({ instruction, gap = 0 }) => {
1832
+ const lineOffset = `calc(-0.5 * (${gap}px + ${strokeSize2}px))`;
1833
+ const isBlocked = instruction.type === "instruction-blocked";
1834
+ const desiredInstruction = isBlocked ? instruction.desired : instruction;
1835
+ const orientation = edgeToOrientationMap2[desiredInstruction.type];
1836
+ if (isBlocked) {
1837
+ return null;
1838
+ }
1839
+ return /* @__PURE__ */ import_react32.default.createElement("div", {
1840
+ style: {
1841
+ "--line-thickness": `${strokeSize2}px`,
1842
+ "--line-offset": `${lineOffset}`,
1843
+ "--terminal-size": `${terminalSize2}px`,
1844
+ "--terminal-radius": `${terminalSize2 / 2}px`,
1845
+ "--negative-terminal-size": `-${terminalSize2}px`,
1846
+ "--offset-terminal": `${offsetToAlignTerminalWithLine2}px`,
1847
+ "--horizontal-indent": `${desiredInstruction.currentLevel * desiredInstruction.indentPerLevel + 4}px`
1848
+ },
1849
+ 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]}`
1322
1850
  });
1323
- });
1324
- DropdownMenuItemIndicator.displayName = INDICATOR_NAME;
1325
- var SEPARATOR_NAME = "DropdownMenuSeparator";
1326
- var DropdownMenuSeparator = /* @__PURE__ */ (0, import_react29.forwardRef)((props, forwardedRef) => {
1327
- const { __scopeDropdownMenu, classNames, ...separatorProps } = props;
1328
- const menuScope = useMenuScope(__scopeDropdownMenu);
1329
- const { tx } = useThemeContext();
1330
- return /* @__PURE__ */ import_react29.default.createElement(MenuPrimitive.Separator, {
1331
- ...menuScope,
1332
- ...separatorProps,
1333
- className: tx("menu.separator", "menu__item", {}, classNames),
1851
+ };
1852
+ var TreeRoot = /* @__PURE__ */ (0, import_react31.forwardRef)((props, forwardedRef) => {
1853
+ return /* @__PURE__ */ import_react31.default.createElement(List, {
1854
+ ...props,
1334
1855
  ref: forwardedRef
1335
1856
  });
1336
1857
  });
1337
- DropdownMenuSeparator.displayName = SEPARATOR_NAME;
1338
- var ARROW_NAME = "DropdownMenuArrow";
1339
- var DropdownMenuArrow = /* @__PURE__ */ (0, import_react29.forwardRef)((props, forwardedRef) => {
1340
- const { __scopeDropdownMenu, classNames, ...arrowProps } = props;
1341
- const menuScope = useMenuScope(__scopeDropdownMenu);
1342
- const { tx } = useThemeContext();
1343
- return /* @__PURE__ */ import_react29.default.createElement(MenuPrimitive.Arrow, {
1344
- ...menuScope,
1345
- ...arrowProps,
1346
- className: tx("menu.arrow", "menu__arrow", {}, classNames),
1858
+ var TreeBranch = /* @__PURE__ */ (0, import_react31.forwardRef)(({ __listScope, ...props }, forwardedRef) => {
1859
+ const { headingId } = (0, import_react_list.useListItemContext)(import_react_list.LIST_ITEM_NAME, __listScope);
1860
+ return /* @__PURE__ */ import_react31.default.createElement(List, {
1861
+ ...props,
1862
+ "aria-labelledby": headingId,
1347
1863
  ref: forwardedRef
1348
1864
  });
1349
1865
  });
1350
- DropdownMenuArrow.displayName = ARROW_NAME;
1351
- var DropdownMenuSub = (props) => {
1352
- const { __scopeDropdownMenu, children, open: openProp, onOpenChange, defaultOpen } = props;
1353
- const menuScope = useMenuScope(__scopeDropdownMenu);
1354
- const [open = false, setOpen] = (0, import_react_use_controllable_state.useControllableState)({
1355
- prop: openProp,
1356
- defaultProp: defaultOpen,
1357
- onChange: onOpenChange
1358
- });
1359
- return /* @__PURE__ */ import_react29.default.createElement(MenuPrimitive.Sub, {
1360
- ...menuScope,
1361
- open,
1362
- onOpenChange: setOpen
1363
- }, children);
1364
- };
1365
- var SUB_TRIGGER_NAME = "DropdownMenuSubTrigger";
1366
- var DropdownMenuSubTrigger = /* @__PURE__ */ (0, import_react29.forwardRef)((props, forwardedRef) => {
1367
- const { __scopeDropdownMenu, ...subTriggerProps } = props;
1368
- const menuScope = useMenuScope(__scopeDropdownMenu);
1369
- return /* @__PURE__ */ import_react29.default.createElement(MenuPrimitive.SubTrigger, {
1370
- ...menuScope,
1371
- ...subTriggerProps,
1866
+ var TreeItemRoot = /* @__PURE__ */ (0, import_react31.forwardRef)((props, forwardedRef) => {
1867
+ return /* @__PURE__ */ import_react31.default.createElement(ListItem.Root, {
1868
+ role: "treeitem",
1869
+ ...props,
1372
1870
  ref: forwardedRef
1373
1871
  });
1374
1872
  });
1375
- DropdownMenuSubTrigger.displayName = SUB_TRIGGER_NAME;
1376
- var SUB_CONTENT_NAME = "DropdownMenuSubContent";
1377
- var DropdownMenuSubContent = /* @__PURE__ */ (0, import_react29.forwardRef)((props, forwardedRef) => {
1378
- const { __scopeDropdownMenu, ...subContentProps } = props;
1379
- const menuScope = useMenuScope(__scopeDropdownMenu);
1380
- return /* @__PURE__ */ import_react29.default.createElement(MenuPrimitive.SubContent, {
1381
- ...menuScope,
1382
- ...subContentProps,
1383
- ref: forwardedRef,
1384
- style: {
1385
- ...props.style,
1386
- // re-namespace exposed content custom properties
1387
- ...{
1388
- "--radix-dropdown-menu-content-transform-origin": "var(--radix-popper-transform-origin)",
1389
- "--radix-dropdown-menu-content-available-width": "var(--radix-popper-available-width)",
1390
- "--radix-dropdown-menu-content-available-height": "var(--radix-popper-available-height)",
1391
- "--radix-dropdown-menu-trigger-width": "var(--radix-popper-anchor-width)",
1392
- "--radix-dropdown-menu-trigger-height": "var(--radix-popper-anchor-height)"
1393
- }
1394
- }
1395
- });
1396
- });
1397
- DropdownMenuSubContent.displayName = SUB_CONTENT_NAME;
1398
- var DropdownMenu = {
1399
- Root: DropdownMenuRoot,
1400
- Trigger: DropdownMenuTrigger,
1401
- VirtualTrigger: DropdownMenuVirtualTrigger,
1402
- Portal: DropdownMenuPortal,
1403
- Content: DropdownMenuContent,
1404
- Viewport: DropdownMenuViewport,
1405
- Group: DropdownMenuGroup,
1406
- GroupLabel: DropdownMenuGroupLabel,
1407
- Item: DropdownMenuItem,
1408
- CheckboxItem: DropdownMenuCheckboxItem,
1409
- RadioGroup: DropdownMenuRadioGroup,
1410
- RadioItem: DropdownMenuRadioItem,
1411
- ItemIndicator: DropdownMenuItemIndicator,
1412
- Separator: DropdownMenuSeparator,
1413
- Arrow: DropdownMenuArrow,
1414
- Sub: DropdownMenuSub,
1415
- SubTrigger: DropdownMenuSubTrigger,
1416
- SubContent: DropdownMenuSubContent
1873
+ var TreeItemHeading = ListItem.Heading;
1874
+ var TreeItemOpenTrigger = ListItem.OpenTrigger;
1875
+ var MockTreeItemOpenTrigger = ListItem.MockOpenTrigger;
1876
+ var TreeItemBody = ListItem.CollapsibleContent;
1877
+ var Tree = {
1878
+ Root: TreeRoot,
1879
+ Branch: TreeBranch
1417
1880
  };
1418
- var useDropdownMenuMenuScope = useMenuScope;
1419
- var Label3 = /* @__PURE__ */ (0, import_react30.forwardRef)(({ srOnly, classNames, children, ...props }, forwardedRef) => {
1881
+ var TreeItem = {
1882
+ Root: TreeItemRoot,
1883
+ Heading: TreeItemHeading,
1884
+ Body: TreeItemBody,
1885
+ OpenTrigger: TreeItemOpenTrigger,
1886
+ MockOpenTrigger: MockTreeItemOpenTrigger,
1887
+ DropIndicator: TreeDropIndicator
1888
+ };
1889
+ var TREEGRID_ROW_NAME = "TreegridRow";
1890
+ var [createTreegridRowContext, createTreegridRowScope] = (0, import_react_context6.createContextScope)(TREEGRID_ROW_NAME, []);
1891
+ var [TreegridRowProvider, useTreegridRowContext] = createTreegridRowContext(TREEGRID_ROW_NAME);
1892
+ var PATH_SEPARATOR = "~";
1893
+ var PARENT_OF_SEPARATOR = " ";
1894
+ var TreegridRoot = /* @__PURE__ */ (0, import_react33.forwardRef)(({ asChild, classNames, children, style, gridTemplateColumns, ...props }, forwardedRef) => {
1420
1895
  const { tx } = useThemeContext();
1421
- return /* @__PURE__ */ import_react30.default.createElement(import_react_input.Label, {
1896
+ const Root7 = asChild ? import_react_slot8.Slot : import_react_primitive7.Primitive.div;
1897
+ const arrowNavigationAttrs = (0, import_react_tabster.useArrowNavigationGroup)({
1898
+ axis: "vertical",
1899
+ tabbable: false,
1900
+ circular: true
1901
+ });
1902
+ return /* @__PURE__ */ import_react33.default.createElement(Root7, {
1903
+ role: "treegrid",
1904
+ ...arrowNavigationAttrs,
1422
1905
  ...props,
1423
- className: tx("input.label", "input__label", {
1424
- srOnly
1425
- }, classNames),
1906
+ className: tx("treegrid.root", "treegrid", {}, classNames),
1907
+ style: {
1908
+ ...style,
1909
+ gridTemplateColumns
1910
+ },
1426
1911
  ref: forwardedRef
1427
1912
  }, children);
1428
1913
  });
1429
- var Description = /* @__PURE__ */ (0, import_react30.forwardRef)(({ srOnly, classNames, children, ...props }, forwardedRef) => {
1914
+ var TreegridRow = /* @__PURE__ */ (0, import_react33.forwardRef)(({ __treegridRowScope, asChild, classNames, children, id, parentOf, open: propsOpen, defaultOpen, onOpenChange: propsOnOpenChange, ...props }, forwardedRef) => {
1430
1915
  const { tx } = useThemeContext();
1431
- return /* @__PURE__ */ import_react30.default.createElement(import_react_input.Description, {
1432
- ...props,
1433
- className: tx("input.description", "input__description", {
1434
- srOnly
1916
+ const Root7 = asChild ? import_react_slot8.Slot : import_react_primitive7.Primitive.div;
1917
+ const pathParts = id.split(PATH_SEPARATOR);
1918
+ const level = pathParts.length - 1;
1919
+ const [open, onOpenChange] = (0, import_react_use_controllable_state3.useControllableState)({
1920
+ prop: propsOpen,
1921
+ onChange: propsOnOpenChange,
1922
+ defaultProp: defaultOpen
1923
+ });
1924
+ const focusableGroupAttrs = (0, import_react_tabster.useFocusableGroup)({
1925
+ tabBehavior: "limited"
1926
+ });
1927
+ const arrowGroupAttrs = (0, import_react_tabster.useArrowNavigationGroup)({
1928
+ axis: "horizontal",
1929
+ tabbable: false,
1930
+ circular: false,
1931
+ memorizeCurrent: false
1932
+ });
1933
+ return /* @__PURE__ */ import_react33.default.createElement(TreegridRowProvider, {
1934
+ open,
1935
+ onOpenChange,
1936
+ scope: __treegridRowScope
1937
+ }, /* @__PURE__ */ import_react33.default.createElement(Root7, {
1938
+ role: "row",
1939
+ "aria-level": level,
1940
+ className: tx("treegrid.row", "treegrid__row", {
1941
+ level
1435
1942
  }, classNames),
1943
+ ...parentOf && {
1944
+ "aria-expanded": open,
1945
+ "aria-owns": parentOf
1946
+ },
1947
+ tabIndex: 0,
1948
+ ...focusableGroupAttrs,
1949
+ ...props,
1950
+ id,
1436
1951
  ref: forwardedRef
1437
- }, children);
1952
+ }, /* @__PURE__ */ import_react33.default.createElement("div", {
1953
+ role: "none",
1954
+ className: "contents",
1955
+ ...arrowGroupAttrs
1956
+ }, children)));
1438
1957
  });
1439
- var Validation = /* @__PURE__ */ (0, import_react30.forwardRef)(({ __inputScope, srOnly, classNames, children, ...props }, forwardedRef) => {
1958
+ var TreegridCell = /* @__PURE__ */ (0, import_react33.forwardRef)(({ classNames, children, indent, ...props }, forwardedRef) => {
1440
1959
  const { tx } = useThemeContext();
1441
- const { validationValence } = (0, import_react_input.useInputContext)(import_react_input.INPUT_NAME, __inputScope);
1442
- return /* @__PURE__ */ import_react30.default.createElement(import_react_input.Validation, {
1443
- ...props,
1444
- className: tx("input.validation", `input__validation-message input__validation-message--${validationValence}`, {
1445
- srOnly,
1446
- validationValence
1960
+ return /* @__PURE__ */ import_react33.default.createElement("div", {
1961
+ role: "gridcell",
1962
+ className: tx("treegrid.cell", "treegrid__cell", {
1963
+ indent
1447
1964
  }, classNames),
1965
+ ...props,
1448
1966
  ref: forwardedRef
1449
1967
  }, children);
1450
1968
  });
1451
- var DescriptionAndValidation = /* @__PURE__ */ (0, import_react30.forwardRef)(({ srOnly, classNames, children, ...props }, forwardedRef) => {
1452
- const { tx } = useThemeContext();
1453
- return /* @__PURE__ */ import_react30.default.createElement(import_react_input.DescriptionAndValidation, {
1454
- ...props,
1455
- className: tx("input.descriptionAndValidation", "input__description-and-validation", {
1456
- srOnly
1457
- }, classNames),
1458
- ref: forwardedRef
1459
- }, children);
1969
+ var Treegrid = {
1970
+ Root: TreegridRoot,
1971
+ Row: TreegridRow,
1972
+ Cell: TreegridCell,
1973
+ PARENT_OF_SEPARATOR,
1974
+ PATH_SEPARATOR,
1975
+ createTreegridRowScope,
1976
+ useTreegridRowContext
1977
+ };
1978
+ var MotionState;
1979
+ (function(MotionState2) {
1980
+ MotionState2[MotionState2["IDLE"] = 0] = "IDLE";
1981
+ MotionState2[MotionState2["DEBOUNCING"] = 1] = "DEBOUNCING";
1982
+ MotionState2[MotionState2["FOLLOWING"] = 2] = "FOLLOWING";
1983
+ })(MotionState || (MotionState = {}));
1984
+ var useSwipeToDismiss = (ref, {
1985
+ onDismiss,
1986
+ dismissThreshold = 64,
1987
+ debounceThreshold = 8,
1988
+ offset = 0
1989
+ /* side = 'inline-start' */
1990
+ }) => {
1991
+ const $root = ref.current;
1992
+ const [motionState, setMotionState] = (0, import_react35.useState)(0);
1993
+ const [gestureStartX, setGestureStartX] = (0, import_react35.useState)(0);
1994
+ const setIdle = (0, import_react35.useCallback)(() => {
1995
+ setMotionState(0);
1996
+ $root?.style.removeProperty("inset-inline-start");
1997
+ $root?.style.setProperty("transition-duration", "200ms");
1998
+ }, [
1999
+ $root
2000
+ ]);
2001
+ const setFollowing = (0, import_react35.useCallback)(() => {
2002
+ setMotionState(2);
2003
+ $root?.style.setProperty("transition-duration", "0ms");
2004
+ }, [
2005
+ $root
2006
+ ]);
2007
+ const handlePointerDown = (0, import_react35.useCallback)(({ screenX }) => {
2008
+ if (motionState === 0) {
2009
+ setMotionState(1);
2010
+ setGestureStartX(screenX);
2011
+ }
2012
+ }, [
2013
+ motionState
2014
+ ]);
2015
+ const handlePointerMove = (0, import_react35.useCallback)(({ screenX }) => {
2016
+ if ($root) {
2017
+ const delta = Math.min(screenX - gestureStartX, 0);
2018
+ switch (motionState) {
2019
+ case 2:
2020
+ if (Math.abs(delta) > dismissThreshold) {
2021
+ setIdle();
2022
+ onDismiss?.();
2023
+ } else {
2024
+ $root.style.setProperty("inset-inline-start", `${offset + delta}px`);
2025
+ }
2026
+ break;
2027
+ case 1:
2028
+ if (Math.abs(delta) > debounceThreshold) {
2029
+ setFollowing();
2030
+ }
2031
+ break;
2032
+ }
2033
+ }
2034
+ }, [
2035
+ $root,
2036
+ motionState,
2037
+ gestureStartX
2038
+ ]);
2039
+ const handlePointerUp = (0, import_react35.useCallback)(() => {
2040
+ setIdle();
2041
+ }, [
2042
+ setIdle
2043
+ ]);
2044
+ (0, import_react35.useEffect)(() => {
2045
+ $root?.addEventListener("pointerdown", handlePointerDown);
2046
+ return () => {
2047
+ $root?.removeEventListener("pointerdown", handlePointerDown);
2048
+ };
2049
+ }, [
2050
+ $root,
2051
+ handlePointerDown
2052
+ ]);
2053
+ (0, import_react35.useEffect)(() => {
2054
+ $root && document.documentElement.addEventListener("pointermove", handlePointerMove);
2055
+ return () => {
2056
+ document.documentElement.removeEventListener("pointermove", handlePointerMove);
2057
+ };
2058
+ }, [
2059
+ $root,
2060
+ handlePointerMove
2061
+ ]);
2062
+ (0, import_react35.useEffect)(() => {
2063
+ $root && document.documentElement.addEventListener("pointerup", handlePointerUp);
2064
+ return () => {
2065
+ document.documentElement.removeEventListener("pointerup", handlePointerUp);
2066
+ };
2067
+ }, [
2068
+ $root,
2069
+ handlePointerUp
2070
+ ]);
2071
+ };
2072
+ var __dxlog_file = "/home/runner/work/dxos/dxos/packages/ui/react-ui/src/components/Main/Main.tsx";
2073
+ var MAIN_ROOT_NAME = "MainRoot";
2074
+ var NAVIGATION_SIDEBAR_NAME = "NavigationSidebar";
2075
+ var COMPLEMENTARY_SIDEBAR_NAME = "ComplementarySidebar";
2076
+ var MAIN_NAME = "Main";
2077
+ var GENERIC_CONSUMER_NAME = "GenericConsumer";
2078
+ var landmarkAttr = "data-main-landmark";
2079
+ var useLandmarkMover = (propsOnKeyDown, landmark) => {
2080
+ const handleKeyDown = (0, import_react34.useCallback)((event) => {
2081
+ const target = event.target;
2082
+ if (event.target === event.currentTarget && event.key === "Tab" && target.hasAttribute(landmarkAttr)) {
2083
+ event.preventDefault();
2084
+ const landmarks = Array.from(document.querySelectorAll(`[${landmarkAttr}]:not([inert])`)).map((el) => el.hasAttribute(landmarkAttr) ? parseInt(el.getAttribute(landmarkAttr)) : NaN).sort();
2085
+ const l = landmarks.length;
2086
+ const cursor = landmarks.indexOf(parseInt(target.getAttribute(landmarkAttr)));
2087
+ const nextLandmark = landmarks[(cursor + l + (event.getModifierState("Shift") ? -1 : 1)) % l];
2088
+ document.querySelector(`[${landmarkAttr}="${nextLandmark}"]`)?.focus();
2089
+ }
2090
+ propsOnKeyDown?.(event);
2091
+ }, [
2092
+ propsOnKeyDown
2093
+ ]);
2094
+ const focusableGroupAttrs = window ? {} : {
2095
+ tabBehavior: "limited",
2096
+ ignoreDefaultKeydown: {
2097
+ Tab: true
2098
+ }
2099
+ };
2100
+ return {
2101
+ onKeyDown: handleKeyDown,
2102
+ [landmarkAttr]: landmark,
2103
+ tabIndex: 0,
2104
+ ...focusableGroupAttrs
2105
+ };
2106
+ };
2107
+ var [MainProvider, useMainContext] = (0, import_react_context7.createContext)(MAIN_NAME, {
2108
+ resizing: false,
2109
+ navigationSidebarState: "closed",
2110
+ setNavigationSidebarState: (nextState) => {
2111
+ import_log.log.warn("Attempt to set sidebar state without initializing `MainRoot`", void 0, {
2112
+ F: __dxlog_file,
2113
+ L: 82,
2114
+ S: void 0,
2115
+ C: (f, a) => f(...a)
2116
+ });
2117
+ },
2118
+ complementarySidebarState: "closed",
2119
+ setComplementarySidebarState: (nextState) => {
2120
+ import_log.log.warn("Attempt to set sidebar state without initializing `MainRoot`", void 0, {
2121
+ F: __dxlog_file,
2122
+ L: 87,
2123
+ S: void 0,
2124
+ C: (f, a) => f(...a)
2125
+ });
2126
+ }
1460
2127
  });
1461
- var PinInput = /* @__PURE__ */ (0, import_react30.forwardRef)(({ density: propsDensity, elevation: propsElevation, segmentClassName: propsSegmentClassName, inputClassName, variant, ...props }, forwardedRef) => {
1462
- const { hasIosKeyboard: hasIosKeyboard2 } = useThemeContext();
2128
+ var useSidebars = (consumerName = GENERIC_CONSUMER_NAME) => {
2129
+ const { setNavigationSidebarState, navigationSidebarState, setComplementarySidebarState, complementarySidebarState } = useMainContext(consumerName);
2130
+ return {
2131
+ navigationSidebarState,
2132
+ setNavigationSidebarState,
2133
+ toggleNavigationSidebar: (0, import_react34.useCallback)(() => setNavigationSidebarState(navigationSidebarState === "expanded" ? "closed" : "expanded"), [
2134
+ navigationSidebarState,
2135
+ setNavigationSidebarState
2136
+ ]),
2137
+ openNavigationSidebar: (0, import_react34.useCallback)(() => setNavigationSidebarState("expanded"), []),
2138
+ collapseNavigationSidebar: (0, import_react34.useCallback)(() => setNavigationSidebarState("collapsed"), []),
2139
+ closeNavigationSidebar: (0, import_react34.useCallback)(() => setNavigationSidebarState("closed"), []),
2140
+ complementarySidebarState,
2141
+ setComplementarySidebarState,
2142
+ toggleComplementarySidebar: (0, import_react34.useCallback)(() => setComplementarySidebarState(complementarySidebarState === "expanded" ? "closed" : "expanded"), [
2143
+ complementarySidebarState,
2144
+ setComplementarySidebarState
2145
+ ]),
2146
+ openComplementarySidebar: (0, import_react34.useCallback)(() => setComplementarySidebarState("expanded"), []),
2147
+ collapseComplementarySidebar: (0, import_react34.useCallback)(() => setComplementarySidebarState("collapsed"), []),
2148
+ closeComplementarySidebar: (0, import_react34.useCallback)(() => setComplementarySidebarState("closed"), [])
2149
+ };
2150
+ };
2151
+ var resizeDebounce = 3e3;
2152
+ var MainRoot = ({ navigationSidebarState: propsNavigationSidebarState, defaultNavigationSidebarState, onNavigationSidebarStateChange, complementarySidebarState: propsComplementarySidebarState, defaultComplementarySidebarState, onComplementarySidebarStateChange, children, ...props }) => {
2153
+ const [isLg] = (0, import_react_hooks4.useMediaQuery)("lg", {
2154
+ ssr: false
2155
+ });
2156
+ const [navigationSidebarState = isLg ? "expanded" : "collapsed", setNavigationSidebarState] = (0, import_react_use_controllable_state4.useControllableState)({
2157
+ prop: propsNavigationSidebarState,
2158
+ defaultProp: defaultNavigationSidebarState,
2159
+ onChange: onNavigationSidebarStateChange
2160
+ });
2161
+ const [complementarySidebarState = isLg ? "expanded" : "collapsed", setComplementarySidebarState] = (0, import_react_use_controllable_state4.useControllableState)({
2162
+ prop: propsComplementarySidebarState,
2163
+ defaultProp: defaultComplementarySidebarState,
2164
+ onChange: onComplementarySidebarStateChange
2165
+ });
2166
+ const [resizing, setResizing] = (0, import_react34.useState)(false);
2167
+ const resizeInterval = (0, import_react34.useRef)(null);
2168
+ const handleResize = (0, import_react34.useCallback)(() => {
2169
+ setResizing(true);
2170
+ if (resizeInterval.current) {
2171
+ clearTimeout(resizeInterval.current);
2172
+ }
2173
+ resizeInterval.current = setTimeout(() => {
2174
+ setResizing(false);
2175
+ resizeInterval.current = null;
2176
+ }, resizeDebounce);
2177
+ }, []);
2178
+ (0, import_react34.useEffect)(() => {
2179
+ window.addEventListener("resize", handleResize);
2180
+ return () => window.removeEventListener("resize", handleResize);
2181
+ }, [
2182
+ handleResize
2183
+ ]);
2184
+ return /* @__PURE__ */ import_react34.default.createElement(MainProvider, {
2185
+ ...props,
2186
+ navigationSidebarState,
2187
+ setNavigationSidebarState,
2188
+ complementarySidebarState,
2189
+ setComplementarySidebarState,
2190
+ resizing
2191
+ }, children);
2192
+ };
2193
+ MainRoot.displayName = MAIN_ROOT_NAME;
2194
+ var handleOpenAutoFocus = (event) => {
2195
+ !document.body.hasAttribute("data-is-keyboard") && event.preventDefault();
2196
+ };
2197
+ var MainSidebar = /* @__PURE__ */ (0, import_react34.forwardRef)(({ classNames, children, swipeToDismiss, onOpenAutoFocus, state, resizing, onStateChange, side, label, ...props }, forwardedRef) => {
2198
+ const [isLg] = (0, import_react_hooks4.useMediaQuery)("lg", {
2199
+ ssr: false
2200
+ });
1463
2201
  const { tx } = useThemeContext();
1464
- const density = useDensityContext(propsDensity);
1465
- const elevation = useElevationContext(propsElevation);
1466
- const segmentClassName = (0, import_react30.useCallback)(({ focused, validationValence }) => tx("input.input", "input--pin-segment", {
1467
- variant: "static",
1468
- focused,
1469
- disabled: props.disabled,
1470
- density,
1471
- elevation,
1472
- validationValence
1473
- }, propsSegmentClassName), [
1474
- tx,
1475
- props.disabled,
1476
- elevation,
1477
- propsElevation,
1478
- density
2202
+ const { t } = useTranslation();
2203
+ const ref = (0, import_react_hooks4.useForwardedRef)(forwardedRef);
2204
+ const noopRef = (0, import_react34.useRef)(null);
2205
+ useSwipeToDismiss(swipeToDismiss ? ref : noopRef, {
2206
+ onDismiss: () => onStateChange?.("closed")
2207
+ });
2208
+ const handleKeyDown = (0, import_react34.useCallback)((event) => {
2209
+ if (event.key === "Escape") {
2210
+ event.target.closest("[data-tabster]")?.focus();
2211
+ }
2212
+ props.onKeyDown?.(event);
2213
+ }, [
2214
+ props.onKeyDown
1479
2215
  ]);
1480
- return /* @__PURE__ */ import_react30.default.createElement(import_react_input.PinInput, {
2216
+ const Root7 = isLg ? import_react_primitive8.Primitive.div : import_react_dialog2.DialogContent;
2217
+ return /* @__PURE__ */ import_react34.default.createElement(import_react_dialog2.Root, {
2218
+ open: state !== "closed",
2219
+ "aria-label": toLocalizedString(label, t),
2220
+ modal: false
2221
+ }, !isLg && /* @__PURE__ */ import_react34.default.createElement(import_react_dialog2.DialogTitle, {
2222
+ className: "sr-only"
2223
+ }, toLocalizedString(label, t)), /* @__PURE__ */ import_react34.default.createElement(Root7, {
2224
+ ...!isLg && {
2225
+ forceMount: true,
2226
+ tabIndex: -1,
2227
+ onOpenAutoFocus: onOpenAutoFocus ?? handleOpenAutoFocus
2228
+ },
1481
2229
  ...props,
1482
- segmentClassName,
1483
- ...props.autoFocus && !hasIosKeyboard2 && {
1484
- autoFocus: true
2230
+ "data-side": side === "inline-end" ? "ie" : "is",
2231
+ "data-state": state,
2232
+ "data-resizing": resizing ? "true" : "false",
2233
+ className: tx("main.sidebar", "main__sidebar", {}, classNames),
2234
+ onKeyDown: handleKeyDown,
2235
+ ...state === "closed" && {
2236
+ inert: "true"
1485
2237
  },
1486
- inputClassName: tx("input.inputWithSegments", "input input--pin", {
1487
- disabled: props.disabled
1488
- }, inputClassName),
1489
- ref: forwardedRef
1490
- });
2238
+ ref
2239
+ }, children));
1491
2240
  });
1492
- var TextInput = /* @__PURE__ */ (0, import_react30.forwardRef)(({ __inputScope, classNames, density: propsDensity, elevation: propsElevation, variant, ...props }, forwardedRef) => {
1493
- const { hasIosKeyboard: hasIosKeyboard2 } = useThemeContext();
1494
- const themeContextValue = useThemeContext();
1495
- const density = useDensityContext(propsDensity);
1496
- const elevation = useElevationContext(propsElevation);
1497
- const { validationValence } = (0, import_react_input.useInputContext)(import_react_input.INPUT_NAME, __inputScope);
1498
- const { tx } = themeContextValue;
1499
- return /* @__PURE__ */ import_react30.default.createElement(import_react_input.TextInput, {
2241
+ var MainNavigationSidebar = /* @__PURE__ */ (0, import_react34.forwardRef)((props, forwardedRef) => {
2242
+ const { navigationSidebarState, setNavigationSidebarState, resizing } = useMainContext(NAVIGATION_SIDEBAR_NAME);
2243
+ const mover = useLandmarkMover(props.onKeyDown, "0");
2244
+ return /* @__PURE__ */ import_react34.default.createElement(MainSidebar, {
2245
+ ...mover,
1500
2246
  ...props,
1501
- className: tx("input.input", "input", {
1502
- variant,
1503
- disabled: props.disabled,
1504
- density,
1505
- elevation,
1506
- validationValence
1507
- }, classNames),
1508
- ...props.autoFocus && !hasIosKeyboard2 && {
1509
- autoFocus: true
1510
- },
2247
+ state: navigationSidebarState,
2248
+ onStateChange: setNavigationSidebarState,
2249
+ resizing,
2250
+ side: "inline-start",
1511
2251
  ref: forwardedRef
1512
2252
  });
1513
2253
  });
1514
- var TextArea = /* @__PURE__ */ (0, import_react30.forwardRef)(({ __inputScope, classNames, density: propsDensity, elevation: propsElevation, variant, ...props }, forwardedRef) => {
1515
- const { hasIosKeyboard: hasIosKeyboard2 } = useThemeContext();
1516
- const { tx } = useThemeContext();
1517
- const density = useDensityContext(propsDensity);
1518
- const elevation = useElevationContext(propsElevation);
1519
- const { validationValence } = (0, import_react_input.useInputContext)(import_react_input.INPUT_NAME, __inputScope);
1520
- return /* @__PURE__ */ import_react30.default.createElement(import_react_input.TextArea, {
2254
+ MainNavigationSidebar.displayName = NAVIGATION_SIDEBAR_NAME;
2255
+ var MainComplementarySidebar = /* @__PURE__ */ (0, import_react34.forwardRef)((props, forwardedRef) => {
2256
+ const { complementarySidebarState, setComplementarySidebarState, resizing } = useMainContext(COMPLEMENTARY_SIDEBAR_NAME);
2257
+ const mover = useLandmarkMover(props.onKeyDown, "2");
2258
+ return /* @__PURE__ */ import_react34.default.createElement(MainSidebar, {
2259
+ ...mover,
1521
2260
  ...props,
1522
- className: tx("input.input", "input--text-area", {
1523
- variant,
1524
- disabled: props.disabled,
1525
- density,
1526
- elevation,
1527
- validationValence
1528
- }, classNames),
1529
- ...props.autoFocus && !hasIosKeyboard2 && {
1530
- autoFocus: true
1531
- },
2261
+ state: complementarySidebarState,
2262
+ onStateChange: setComplementarySidebarState,
2263
+ resizing,
2264
+ side: "inline-end",
1532
2265
  ref: forwardedRef
1533
2266
  });
1534
2267
  });
1535
- var Checkbox = /* @__PURE__ */ (0, import_react30.forwardRef)(({ __inputScope, checked: propsChecked, defaultChecked: propsDefaultChecked, onCheckedChange: propsOnCheckedChange, size, weight = "bold", classNames, ...props }, forwardedRef) => {
1536
- const [checked, onCheckedChange] = (0, import_react_use_controllable_state2.useControllableState)({
1537
- prop: propsChecked,
1538
- defaultProp: propsDefaultChecked,
1539
- onChange: propsOnCheckedChange
1540
- });
1541
- const { id, validationValence, descriptionId, errorMessageId } = (0, import_react_input.useInputContext)(import_react_input.INPUT_NAME, __inputScope);
2268
+ MainNavigationSidebar.displayName = NAVIGATION_SIDEBAR_NAME;
2269
+ var MainContent = /* @__PURE__ */ (0, import_react34.forwardRef)(({ asChild, classNames, bounce, handlesFocus, children, role, ...props }, forwardedRef) => {
2270
+ const { navigationSidebarState, complementarySidebarState } = useMainContext(MAIN_NAME);
1542
2271
  const { tx } = useThemeContext();
1543
- return /* @__PURE__ */ import_react30.default.createElement(import_react_checkbox.Root, {
1544
- ...props,
1545
- checked,
1546
- onCheckedChange,
1547
- id,
1548
- "aria-describedby": descriptionId,
1549
- ...validationValence === "error" && {
1550
- "aria-invalid": "true",
1551
- "aria-errormessage": errorMessageId
2272
+ const Root7 = asChild ? import_react_slot9.Slot : role ? "div" : "main";
2273
+ const mover = useLandmarkMover(props.onKeyDown, "1");
2274
+ return /* @__PURE__ */ import_react34.default.createElement(Root7, {
2275
+ role,
2276
+ ...handlesFocus && {
2277
+ ...mover
1552
2278
  },
1553
- className: tx("input.checkbox", "input--checkbox", {
1554
- size
1555
- }, "shrink-0", classNames),
2279
+ ...props,
2280
+ "data-sidebar-inline-start-state": navigationSidebarState,
2281
+ "data-sidebar-inline-end-state": complementarySidebarState,
2282
+ className: tx("main.content", "main", {
2283
+ bounce,
2284
+ handlesFocus
2285
+ }, classNames),
1556
2286
  ref: forwardedRef
1557
- }, /* @__PURE__ */ import_react30.default.createElement(Icon, {
1558
- icon: checked === "indeterminate" ? "ph--minus--regular" : "ph--check--regular",
1559
- classNames: tx("input.checkboxIndicator", "input--checkbox__indicator", {
1560
- size,
1561
- checked
1562
- })
1563
- }));
2287
+ }, children);
1564
2288
  });
1565
- var Switch = /* @__PURE__ */ (0, import_react30.forwardRef)(({ __inputScope, checked: propsChecked, defaultChecked: propsDefaultChecked, onCheckedChange: propsOnCheckedChange, classNames, ...props }, forwardedRef) => {
1566
- const [checked, onCheckedChange] = (0, import_react_use_controllable_state2.useControllableState)({
1567
- prop: propsChecked,
1568
- defaultProp: propsDefaultChecked ?? false,
1569
- onChange: propsOnCheckedChange
2289
+ MainContent.displayName = MAIN_NAME;
2290
+ var MainOverlay = /* @__PURE__ */ (0, import_react34.forwardRef)(({ classNames, ...props }, forwardedRef) => {
2291
+ const [isLg] = (0, import_react_hooks4.useMediaQuery)("lg", {
2292
+ ssr: false
1570
2293
  });
1571
- const { id, validationValence, descriptionId, errorMessageId } = (0, import_react_input.useInputContext)(import_react_input.INPUT_NAME, __inputScope);
1572
- return /* @__PURE__ */ import_react30.default.createElement("input", {
1573
- type: "checkbox",
1574
- className: (0, import_react_ui_theme3.mx)("dx-checkbox--switch dx-focus-ring", classNames),
1575
- checked,
1576
- onChange: (event) => {
1577
- onCheckedChange(event.target.checked);
2294
+ const { navigationSidebarState, setNavigationSidebarState, complementarySidebarState, setComplementarySidebarState } = useMainContext(MAIN_NAME);
2295
+ const { tx } = useThemeContext();
2296
+ return /* @__PURE__ */ import_react34.default.createElement("div", {
2297
+ onClick: () => {
2298
+ setNavigationSidebarState("collapsed");
2299
+ setComplementarySidebarState("collapsed");
1578
2300
  },
1579
- id,
1580
- "aria-describedby": descriptionId,
1581
2301
  ...props,
1582
- ...validationValence === "error" && {
1583
- "aria-invalid": "true",
1584
- "aria-errormessage": errorMessageId
1585
- },
2302
+ className: tx("main.overlay", "main__overlay", {
2303
+ isLg,
2304
+ inlineStartSidebarOpen: navigationSidebarState,
2305
+ inlineEndSidebarOpen: complementarySidebarState
2306
+ }, classNames),
2307
+ "data-state": navigationSidebarState === "expanded" || complementarySidebarState === "expanded" ? "open" : "closed",
2308
+ "aria-hidden": "true",
1586
2309
  ref: forwardedRef
1587
2310
  });
1588
2311
  });
1589
- var Input = {
1590
- Root: import_react_input.InputRoot,
1591
- PinInput,
1592
- TextInput,
1593
- TextArea,
1594
- Checkbox,
1595
- Switch,
1596
- Label: Label3,
1597
- Description,
1598
- Validation,
1599
- DescriptionAndValidation
1600
- };
1601
- var edgeToOrientationMap = {
1602
- top: "horizontal",
1603
- bottom: "horizontal",
1604
- left: "vertical",
1605
- right: "vertical"
1606
- };
1607
- var orientationStyles = {
1608
- horizontal: "h-[--line-thickness] left-[calc(var(--line-inset)+var(--terminal-radius))] right-[--line-inset] before:left-[--terminal-inset]",
1609
- vertical: "w-[--line-thickness] top-[calc(var(--line-inset)+var(--terminal-radius))] bottom-[--line-inset] before:top-[--terminal-inset]"
1610
- };
1611
- var edgeStyles = {
1612
- top: "top-[--line-offset] before:top-[--offset-terminal]",
1613
- right: "right-[--line-offset] before:right-[--offset-terminal]",
1614
- bottom: "bottom-[--line-offset] before:bottom-[--offset-terminal]",
1615
- left: "left-[--line-offset] before:left-[--offset-terminal]"
2312
+ var Main = {
2313
+ Root: MainRoot,
2314
+ Content: MainContent,
2315
+ Overlay: MainOverlay,
2316
+ NavigationSidebar: MainNavigationSidebar,
2317
+ ComplementarySidebar: MainComplementarySidebar
1616
2318
  };
1617
- var strokeSize = 2;
1618
- var terminalSize = 8;
1619
- var offsetToAlignTerminalWithLine = (strokeSize - terminalSize) / 2;
1620
- var ListDropIndicator = ({ edge, gap = 0, lineInset = 0, terminalInset = lineInset - terminalSize }) => {
1621
- const orientation = edgeToOrientationMap[edge];
1622
- return /* @__PURE__ */ import_react33.default.createElement("div", {
1623
- role: "none",
1624
- style: {
1625
- "--line-thickness": `${strokeSize}px`,
1626
- "--line-offset": `calc(-0.5 * (${gap}px + ${strokeSize}px))`,
1627
- "--line-inset": `${lineInset}px`,
1628
- "--terminal-size": `${terminalSize}px`,
1629
- "--terminal-radius": `${terminalSize / 2}px`,
1630
- "--terminal-inset": `${terminalInset}px`,
1631
- "--offset-terminal": `${offsetToAlignTerminalWithLine}px`
1632
- },
1633
- 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]}`
1634
- });
2319
+ var propIsNumber = (prop) => Number.isFinite(prop);
2320
+ var propsIsRecord = (prop) => !!(prop && typeof prop === "object");
2321
+ var safePadding = (propsPadding, safePadding2, side) => {
2322
+ return (propIsNumber(safePadding2[side]) ? safePadding2[side] : 0) + (propIsNumber(propsPadding) ? propsPadding : propsIsRecord(propsPadding) ? propsPadding[side] ?? 0 : 0);
1635
2323
  };
1636
- var List = /* @__PURE__ */ (0, import_react32.forwardRef)(({ classNames, children, ...props }, forwardedRef) => {
1637
- const { tx } = useThemeContext();
1638
- const density = useDensityContext(props.density);
1639
- return /* @__PURE__ */ import_react32.default.createElement(DensityProvider, {
1640
- density
1641
- }, /* @__PURE__ */ import_react32.default.createElement(import_react_list.List, {
1642
- ...props,
1643
- className: tx("list.root", "list", {}, classNames),
1644
- ref: forwardedRef
1645
- }, children));
1646
- });
1647
- var ListItemEndcap = /* @__PURE__ */ (0, import_react32.forwardRef)(({ children, classNames, asChild, ...props }, forwardedRef) => {
1648
- const Root5 = asChild ? import_react_slot8.Slot : "div";
1649
- const density = useDensityContext();
2324
+ var useSafeCollisionPadding = (collisionPadding) => {
2325
+ const { safeAreaPadding } = useThemeContext();
2326
+ return (0, import_react37.useMemo)(() => ({
2327
+ top: safePadding(collisionPadding, safeAreaPadding, "top"),
2328
+ right: safePadding(collisionPadding, safeAreaPadding, "right"),
2329
+ bottom: safePadding(collisionPadding, safeAreaPadding, "bottom"),
2330
+ left: safePadding(collisionPadding, safeAreaPadding, "left")
2331
+ }), [
2332
+ collisionPadding,
2333
+ safeAreaPadding
2334
+ ]);
2335
+ };
2336
+ var ContextMenuRoot = ContextMenuPrimitive.ContextMenu;
2337
+ var ContextMenuTrigger = ContextMenuPrimitive.Trigger;
2338
+ var ContextMenuPortal = ContextMenuPrimitive.Portal;
2339
+ var ContextMenuContent = /* @__PURE__ */ (0, import_react36.forwardRef)(({ classNames, children, collisionPadding = 8, ...props }, forwardedRef) => {
1650
2340
  const { tx } = useThemeContext();
1651
- return /* @__PURE__ */ import_react32.default.createElement(Root5, {
1652
- ...!asChild && {
1653
- role: "none"
1654
- },
2341
+ const elevation = useElevationContext();
2342
+ const safeCollisionPadding = useSafeCollisionPadding(collisionPadding);
2343
+ return /* @__PURE__ */ import_react36.default.createElement(ContextMenuPrimitive.Content, {
1655
2344
  ...props,
1656
- className: tx("list.item.endcap", "list__listItem__endcap", {
1657
- density
2345
+ collisionPadding: safeCollisionPadding,
2346
+ className: tx("menu.content", "menu", {
2347
+ elevation
1658
2348
  }, classNames),
1659
2349
  ref: forwardedRef
1660
2350
  }, children);
1661
2351
  });
1662
- var MockListItemOpenTrigger = ({ classNames, ...props }) => {
1663
- const density = useDensityContext();
1664
- const { tx } = useThemeContext();
1665
- return /* @__PURE__ */ import_react32.default.createElement("div", {
1666
- role: "none",
1667
- ...props,
1668
- className: tx("list.item.openTrigger", "list__listItem__openTrigger--mock", {
1669
- density
1670
- }, classNames)
1671
- });
1672
- };
1673
- var ListItemHeading = /* @__PURE__ */ (0, import_react32.forwardRef)(({ children, classNames, ...props }, forwardedRef) => {
2352
+ var ContextMenuViewport = /* @__PURE__ */ (0, import_react36.forwardRef)(({ classNames, asChild, children, ...props }, forwardedRef) => {
1674
2353
  const { tx } = useThemeContext();
1675
- const density = useDensityContext();
1676
- return /* @__PURE__ */ import_react32.default.createElement(import_react_list.ListItemHeading, {
2354
+ const Root7 = asChild ? import_react_slot10.Slot : import_react_primitive9.Primitive.div;
2355
+ return /* @__PURE__ */ import_react36.default.createElement(Root7, {
1677
2356
  ...props,
1678
- className: tx("list.item.heading", "list__listItem__heading", {
1679
- density
1680
- }, classNames),
2357
+ className: tx("menu.viewport", "menu__viewport", {}, classNames),
1681
2358
  ref: forwardedRef
1682
2359
  }, children);
1683
2360
  });
1684
- var ListItemOpenTrigger = /* @__PURE__ */ (0, import_react32.forwardRef)(({ __listItemScope, classNames, children, ...props }, forwardedRef) => {
2361
+ var ContextMenuArrow = /* @__PURE__ */ (0, import_react36.forwardRef)(({ classNames, ...props }, forwardedRef) => {
1685
2362
  const { tx } = useThemeContext();
1686
- const density = useDensityContext();
1687
- const { open } = (0, import_react_list.useListItemContext)(import_react_list.LIST_ITEM_NAME, __listItemScope);
1688
- const Icon3 = open ? import_react31.CaretDown : import_react31.CaretRight;
1689
- return /* @__PURE__ */ import_react32.default.createElement(import_react_list.ListItemOpenTrigger, {
2363
+ return /* @__PURE__ */ import_react36.default.createElement(ContextMenuPrimitive.Arrow, {
1690
2364
  ...props,
1691
- className: tx("list.item.openTrigger", "list__listItem__openTrigger", {
1692
- density
1693
- }, classNames),
2365
+ className: tx("menu.arrow", "menu__arrow", {}, classNames),
1694
2366
  ref: forwardedRef
1695
- }, children || /* @__PURE__ */ import_react32.default.createElement(Icon3, {
1696
- weight: "bold",
1697
- className: tx("list.item.openTriggerIcon", "list__listItem__openTrigger__icon", {})
1698
- }));
2367
+ });
1699
2368
  });
1700
- var ListItemRoot = /* @__PURE__ */ (0, import_react32.forwardRef)(({ classNames, children, ...props }, forwardedRef) => {
2369
+ var ContextMenuGroup = ContextMenuPrimitive.Group;
2370
+ var ContextMenuItemIndicator = ContextMenuPrimitive.ItemIndicator;
2371
+ var ContextMenuItem = /* @__PURE__ */ (0, import_react36.forwardRef)(({ classNames, ...props }, forwardedRef) => {
1701
2372
  const { tx } = useThemeContext();
1702
- const density = useDensityContext();
1703
- return /* @__PURE__ */ import_react32.default.createElement(import_react_list.ListItem, {
2373
+ return /* @__PURE__ */ import_react36.default.createElement(ContextMenuPrimitive.Item, {
1704
2374
  ...props,
1705
- className: tx("list.item.root", "list__listItem", {
1706
- density,
1707
- collapsible: props.collapsible
1708
- }, classNames),
2375
+ className: tx("menu.item", "menu__item", {}, classNames),
1709
2376
  ref: forwardedRef
1710
- }, children);
1711
- });
1712
- var ListItem = {
1713
- Root: ListItemRoot,
1714
- Endcap: ListItemEndcap,
1715
- Heading: ListItemHeading,
1716
- OpenTrigger: ListItemOpenTrigger,
1717
- CollapsibleContent: import_react_list.ListItemCollapsibleContent,
1718
- MockOpenTrigger: MockListItemOpenTrigger,
1719
- DropIndicator: ListDropIndicator
1720
- };
1721
- var edgeToOrientationMap2 = {
1722
- "reorder-above": "sibling",
1723
- "reorder-below": "sibling",
1724
- "make-child": "child",
1725
- reparent: "child"
1726
- };
1727
- var orientationStyles2 = {
1728
- // TODO(wittjosiah): Stop using left/right here.
1729
- sibling: "bs-[--line-thickness] left-[--horizontal-indent] right-0 bg-accentSurface before:left-[--negative-terminal-size]",
1730
- child: "is-full block-start-0 block-end-0 border-[length:--line-thickness] before:invisible"
1731
- };
1732
- var instructionStyles = {
1733
- "reorder-above": "block-start-[--line-offset] before:block-start-[--offset-terminal]",
1734
- "reorder-below": "block-end-[--line-offset] before:block-end-[--offset-terminal]",
1735
- "make-child": "border-accentSurface",
1736
- // TODO(wittjosiah): This is not occurring in the current implementation.
1737
- reparent: ""
1738
- };
1739
- var strokeSize2 = 2;
1740
- var terminalSize2 = 8;
1741
- var offsetToAlignTerminalWithLine2 = (strokeSize2 - terminalSize2) / 2;
1742
- var TreeDropIndicator = ({ instruction, gap = 0 }) => {
1743
- const lineOffset = `calc(-0.5 * (${gap}px + ${strokeSize2}px))`;
1744
- const isBlocked = instruction.type === "instruction-blocked";
1745
- const desiredInstruction = isBlocked ? instruction.desired : instruction;
1746
- const orientation = edgeToOrientationMap2[desiredInstruction.type];
1747
- if (isBlocked) {
1748
- return null;
1749
- }
1750
- return /* @__PURE__ */ import_react35.default.createElement("div", {
1751
- style: {
1752
- "--line-thickness": `${strokeSize2}px`,
1753
- "--line-offset": `${lineOffset}`,
1754
- "--terminal-size": `${terminalSize2}px`,
1755
- "--terminal-radius": `${terminalSize2 / 2}px`,
1756
- "--negative-terminal-size": `-${terminalSize2}px`,
1757
- "--offset-terminal": `${offsetToAlignTerminalWithLine2}px`,
1758
- "--horizontal-indent": `${desiredInstruction.currentLevel * desiredInstruction.indentPerLevel + 4}px`
1759
- },
1760
- 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]}`
1761
2377
  });
1762
- };
1763
- var TreeRoot = /* @__PURE__ */ (0, import_react34.forwardRef)((props, forwardedRef) => {
1764
- return /* @__PURE__ */ import_react34.default.createElement(List, {
2378
+ });
2379
+ var ContextMenuCheckboxItem = /* @__PURE__ */ (0, import_react36.forwardRef)(({ classNames, ...props }, forwardedRef) => {
2380
+ const { tx } = useThemeContext();
2381
+ return /* @__PURE__ */ import_react36.default.createElement(ContextMenuPrimitive.CheckboxItem, {
1765
2382
  ...props,
2383
+ className: tx("menu.item", "menu__item--checkbox", {}, classNames),
1766
2384
  ref: forwardedRef
1767
2385
  });
1768
2386
  });
1769
- var TreeBranch = /* @__PURE__ */ (0, import_react34.forwardRef)(({ __listScope, ...props }, forwardedRef) => {
1770
- const { headingId } = (0, import_react_list.useListItemContext)(import_react_list.LIST_ITEM_NAME, __listScope);
1771
- return /* @__PURE__ */ import_react34.default.createElement(List, {
2387
+ var ContextMenuSeparator = /* @__PURE__ */ (0, import_react36.forwardRef)(({ classNames, ...props }, forwardedRef) => {
2388
+ const { tx } = useThemeContext();
2389
+ return /* @__PURE__ */ import_react36.default.createElement(ContextMenuPrimitive.Separator, {
1772
2390
  ...props,
1773
- "aria-labelledby": headingId,
2391
+ className: tx("menu.separator", "menu__item", {}, classNames),
1774
2392
  ref: forwardedRef
1775
2393
  });
1776
2394
  });
1777
- var TreeItemRoot = /* @__PURE__ */ (0, import_react34.forwardRef)((props, forwardedRef) => {
1778
- return /* @__PURE__ */ import_react34.default.createElement(ListItem.Root, {
1779
- role: "treeitem",
2395
+ var ContextMenuGroupLabel = /* @__PURE__ */ (0, import_react36.forwardRef)(({ classNames, ...props }, forwardedRef) => {
2396
+ const { tx } = useThemeContext();
2397
+ return /* @__PURE__ */ import_react36.default.createElement(ContextMenuPrimitive.Label, {
1780
2398
  ...props,
2399
+ className: tx("menu.groupLabel", "menu__group__label", {}, classNames),
1781
2400
  ref: forwardedRef
1782
2401
  });
1783
2402
  });
1784
- var TreeItemHeading = ListItem.Heading;
1785
- var TreeItemOpenTrigger = ListItem.OpenTrigger;
1786
- var MockTreeItemOpenTrigger = ListItem.MockOpenTrigger;
1787
- var TreeItemBody = ListItem.CollapsibleContent;
1788
- var Tree = {
1789
- Root: TreeRoot,
1790
- Branch: TreeBranch
1791
- };
1792
- var TreeItem = {
1793
- Root: TreeItemRoot,
1794
- Heading: TreeItemHeading,
1795
- Body: TreeItemBody,
1796
- OpenTrigger: TreeItemOpenTrigger,
1797
- MockOpenTrigger: MockTreeItemOpenTrigger,
1798
- DropIndicator: TreeDropIndicator
2403
+ var ContextMenu2 = {
2404
+ Root: ContextMenuRoot,
2405
+ Trigger: ContextMenuTrigger,
2406
+ Portal: ContextMenuPortal,
2407
+ Content: ContextMenuContent,
2408
+ Viewport: ContextMenuViewport,
2409
+ Arrow: ContextMenuArrow,
2410
+ Group: ContextMenuGroup,
2411
+ Item: ContextMenuItem,
2412
+ CheckboxItem: ContextMenuCheckboxItem,
2413
+ ItemIndicator: ContextMenuItemIndicator,
2414
+ Separator: ContextMenuSeparator,
2415
+ GroupLabel: ContextMenuGroupLabel
1799
2416
  };
1800
- var TREEGRID_ROW_NAME = "TreegridRow";
1801
- var [createTreegridRowContext, createTreegridRowScope] = (0, import_react_context6.createContextScope)(TREEGRID_ROW_NAME, []);
1802
- var [TreegridRowProvider, useTreegridRowContext] = createTreegridRowContext(TREEGRID_ROW_NAME);
1803
- var PATH_SEPARATOR = "~";
1804
- var PARENT_OF_SEPARATOR = " ";
1805
- var TreegridRoot = /* @__PURE__ */ (0, import_react36.forwardRef)(({ asChild, classNames, children, style, gridTemplateColumns, ...props }, forwardedRef) => {
1806
- const { tx } = useThemeContext();
1807
- const Root5 = asChild ? import_react_slot9.Slot : import_react_primitive8.Primitive.div;
1808
- const arrowNavigationAttrs = (0, import_react_tabster.useArrowNavigationGroup)({
1809
- axis: "vertical",
1810
- tabbable: false,
1811
- circular: true
2417
+ var DROPDOWN_MENU_NAME = "DropdownMenu";
2418
+ var [createDropdownMenuContext, createDropdownMenuScope] = (0, import_react_context8.createContextScope)(DROPDOWN_MENU_NAME, [
2419
+ import_react_menu.createMenuScope
2420
+ ]);
2421
+ var useMenuScope = (0, import_react_menu.createMenuScope)();
2422
+ var [DropdownMenuProvider, useDropdownMenuContext] = createDropdownMenuContext(DROPDOWN_MENU_NAME);
2423
+ var DropdownMenuRoot = (props) => {
2424
+ const { __scopeDropdownMenu, children, dir, open: openProp, defaultOpen, onOpenChange, modal = true } = props;
2425
+ const menuScope = useMenuScope(__scopeDropdownMenu);
2426
+ const triggerRef = (0, import_react38.useRef)(null);
2427
+ const [open = false, setOpen] = (0, import_react_use_controllable_state5.useControllableState)({
2428
+ prop: openProp,
2429
+ defaultProp: defaultOpen,
2430
+ onChange: onOpenChange
1812
2431
  });
1813
- return /* @__PURE__ */ import_react36.default.createElement(Root5, {
1814
- role: "treegrid",
1815
- ...arrowNavigationAttrs,
1816
- ...props,
1817
- className: tx("treegrid.root", "treegrid", {}, classNames),
1818
- style: {
1819
- ...style,
1820
- gridTemplateColumns
1821
- },
1822
- ref: forwardedRef
1823
- }, children);
2432
+ return /* @__PURE__ */ import_react38.default.createElement(DropdownMenuProvider, {
2433
+ scope: __scopeDropdownMenu,
2434
+ triggerId: (0, import_react_id2.useId)(),
2435
+ triggerRef,
2436
+ contentId: (0, import_react_id2.useId)(),
2437
+ open,
2438
+ onOpenChange: setOpen,
2439
+ onOpenToggle: (0, import_react38.useCallback)(() => setOpen((prevOpen) => !prevOpen), [
2440
+ setOpen
2441
+ ]),
2442
+ modal
2443
+ }, /* @__PURE__ */ import_react38.default.createElement(MenuPrimitive.Root, {
2444
+ ...menuScope,
2445
+ open,
2446
+ onOpenChange: setOpen,
2447
+ dir,
2448
+ modal
2449
+ }, children));
2450
+ };
2451
+ DropdownMenuRoot.displayName = DROPDOWN_MENU_NAME;
2452
+ var TRIGGER_NAME2 = "DropdownMenuTrigger";
2453
+ var DropdownMenuTrigger = /* @__PURE__ */ (0, import_react38.forwardRef)((props, forwardedRef) => {
2454
+ const { __scopeDropdownMenu, disabled = false, ...triggerProps } = props;
2455
+ const context = useDropdownMenuContext(TRIGGER_NAME2, __scopeDropdownMenu);
2456
+ const menuScope = useMenuScope(__scopeDropdownMenu);
2457
+ return /* @__PURE__ */ import_react38.default.createElement(MenuPrimitive.Anchor, {
2458
+ asChild: true,
2459
+ ...menuScope
2460
+ }, /* @__PURE__ */ import_react38.default.createElement(import_react_primitive10.Primitive.button, {
2461
+ type: "button",
2462
+ id: context.triggerId,
2463
+ "aria-haspopup": "menu",
2464
+ "aria-expanded": context.open,
2465
+ "aria-controls": context.open ? context.contentId : void 0,
2466
+ "data-state": context.open ? "open" : "closed",
2467
+ "data-disabled": disabled ? "" : void 0,
2468
+ disabled,
2469
+ ...triggerProps,
2470
+ ref: (0, import_react_compose_refs2.composeRefs)(forwardedRef, context.triggerRef),
2471
+ onPointerDown: (0, import_primitive2.composeEventHandlers)(props.onPointerDown, (event) => {
2472
+ if (!disabled && event.button === 0 && event.ctrlKey === false) {
2473
+ context.onOpenToggle();
2474
+ if (!context.open) {
2475
+ event.preventDefault();
2476
+ }
2477
+ }
2478
+ }),
2479
+ onKeyDown: (0, import_primitive2.composeEventHandlers)(props.onKeyDown, (event) => {
2480
+ if (disabled) {
2481
+ return;
2482
+ }
2483
+ if ([
2484
+ "Enter",
2485
+ " "
2486
+ ].includes(event.key)) {
2487
+ context.onOpenToggle();
2488
+ }
2489
+ if (event.key === "ArrowDown") {
2490
+ context.onOpenChange(true);
2491
+ }
2492
+ if ([
2493
+ "Enter",
2494
+ " ",
2495
+ "ArrowDown"
2496
+ ].includes(event.key)) {
2497
+ event.preventDefault();
2498
+ }
2499
+ })
2500
+ }));
1824
2501
  });
1825
- var TreegridRow = /* @__PURE__ */ (0, import_react36.forwardRef)(({ __treegridRowScope, asChild, classNames, children, id, parentOf, open: propsOpen, defaultOpen, onOpenChange: propsOnOpenChange, ...props }, forwardedRef) => {
1826
- const { tx } = useThemeContext();
1827
- const Root5 = asChild ? import_react_slot9.Slot : import_react_primitive8.Primitive.div;
1828
- const pathParts = id.split(PATH_SEPARATOR);
1829
- const level = pathParts.length - 1;
1830
- const [open, onOpenChange] = (0, import_react_use_controllable_state3.useControllableState)({
1831
- prop: propsOpen,
1832
- onChange: propsOnOpenChange,
1833
- defaultProp: defaultOpen
2502
+ DropdownMenuTrigger.displayName = TRIGGER_NAME2;
2503
+ var VIRTUAL_TRIGGER_NAME = "DropdownMenuVirtualTrigger";
2504
+ var DropdownMenuVirtualTrigger = (props) => {
2505
+ const { __scopeDropdownMenu, virtualRef } = props;
2506
+ const context = useDropdownMenuContext(VIRTUAL_TRIGGER_NAME, __scopeDropdownMenu);
2507
+ const menuScope = useMenuScope(__scopeDropdownMenu);
2508
+ (0, import_react38.useEffect)(() => {
2509
+ if (virtualRef.current) {
2510
+ context.triggerRef.current = virtualRef.current;
2511
+ }
1834
2512
  });
1835
- const focusableGroupAttrs = (0, import_react_tabster.useFocusableGroup)({
1836
- tabBehavior: "limited"
2513
+ return /* @__PURE__ */ import_react38.default.createElement(MenuPrimitive.Anchor, {
2514
+ ...menuScope,
2515
+ virtualRef
1837
2516
  });
1838
- const arrowGroupAttrs = (0, import_react_tabster.useArrowNavigationGroup)({
1839
- axis: "horizontal",
1840
- tabbable: false,
1841
- circular: false,
1842
- memorizeCurrent: false
2517
+ };
2518
+ DropdownMenuVirtualTrigger.displayName = VIRTUAL_TRIGGER_NAME;
2519
+ var PORTAL_NAME2 = "DropdownMenuPortal";
2520
+ var DropdownMenuPortal = (props) => {
2521
+ const { __scopeDropdownMenu, ...portalProps } = props;
2522
+ const menuScope = useMenuScope(__scopeDropdownMenu);
2523
+ return /* @__PURE__ */ import_react38.default.createElement(MenuPrimitive.Portal, {
2524
+ ...menuScope,
2525
+ ...portalProps
1843
2526
  });
1844
- return /* @__PURE__ */ import_react36.default.createElement(TreegridRowProvider, {
1845
- open,
1846
- onOpenChange,
1847
- scope: __treegridRowScope
1848
- }, /* @__PURE__ */ import_react36.default.createElement(Root5, {
1849
- role: "row",
1850
- "aria-level": level,
1851
- className: tx("treegrid.row", "treegrid__row", {
1852
- level
1853
- }, classNames),
1854
- ...parentOf && {
1855
- "aria-expanded": open,
1856
- "aria-owns": parentOf
1857
- },
1858
- tabIndex: 0,
1859
- ...focusableGroupAttrs,
1860
- ...props,
1861
- id,
1862
- ref: forwardedRef
1863
- }, /* @__PURE__ */ import_react36.default.createElement("div", {
1864
- role: "none",
1865
- className: "contents",
1866
- ...arrowGroupAttrs
1867
- }, children)));
1868
- });
1869
- var TreegridCell = /* @__PURE__ */ (0, import_react36.forwardRef)(({ classNames, children, indent, ...props }, forwardedRef) => {
2527
+ };
2528
+ DropdownMenuPortal.displayName = PORTAL_NAME2;
2529
+ var DropdownMenuViewport = /* @__PURE__ */ (0, import_react38.forwardRef)(({ classNames, asChild, children, ...props }, forwardedRef) => {
1870
2530
  const { tx } = useThemeContext();
1871
- return /* @__PURE__ */ import_react36.default.createElement("div", {
1872
- role: "gridcell",
1873
- className: tx("treegrid.cell", "treegrid__cell", {
1874
- indent
1875
- }, classNames),
2531
+ const Root7 = asChild ? import_react_slot11.Slot : import_react_primitive10.Primitive.div;
2532
+ return /* @__PURE__ */ import_react38.default.createElement(Root7, {
1876
2533
  ...props,
2534
+ className: tx("menu.viewport", "menu__viewport", {}, classNames),
1877
2535
  ref: forwardedRef
1878
2536
  }, children);
1879
2537
  });
1880
- var Treegrid = {
1881
- Root: TreegridRoot,
1882
- Row: TreegridRow,
1883
- Cell: TreegridCell,
1884
- PARENT_OF_SEPARATOR,
1885
- PATH_SEPARATOR,
1886
- createTreegridRowScope,
1887
- useTreegridRowContext
1888
- };
1889
- var MotionState;
1890
- (function(MotionState2) {
1891
- MotionState2[MotionState2["IDLE"] = 0] = "IDLE";
1892
- MotionState2[MotionState2["DEBOUNCING"] = 1] = "DEBOUNCING";
1893
- MotionState2[MotionState2["FOLLOWING"] = 2] = "FOLLOWING";
1894
- })(MotionState || (MotionState = {}));
1895
- var useSwipeToDismiss = (ref, {
1896
- onDismiss,
1897
- dismissThreshold = 64,
1898
- debounceThreshold = 8,
1899
- offset = 0
1900
- /* side = 'inline-start' */
1901
- }) => {
1902
- const $root = ref.current;
1903
- const [motionState, setMotionState] = (0, import_react38.useState)(0);
1904
- const [gestureStartX, setGestureStartX] = (0, import_react38.useState)(0);
1905
- const setIdle = (0, import_react38.useCallback)(() => {
1906
- setMotionState(0);
1907
- $root?.style.removeProperty("inset-inline-start");
1908
- $root?.style.setProperty("transition-duration", "200ms");
1909
- }, [
1910
- $root
1911
- ]);
1912
- const setFollowing = (0, import_react38.useCallback)(() => {
1913
- setMotionState(2);
1914
- $root?.style.setProperty("transition-duration", "0ms");
1915
- }, [
1916
- $root
1917
- ]);
1918
- const handlePointerDown = (0, import_react38.useCallback)(({ screenX }) => {
1919
- if (motionState === 0) {
1920
- setMotionState(1);
1921
- setGestureStartX(screenX);
1922
- }
1923
- }, [
1924
- motionState
1925
- ]);
1926
- const handlePointerMove = (0, import_react38.useCallback)(({ screenX }) => {
1927
- if ($root) {
1928
- const delta = Math.min(screenX - gestureStartX, 0);
1929
- switch (motionState) {
1930
- case 2:
1931
- if (Math.abs(delta) > dismissThreshold) {
1932
- setIdle();
1933
- onDismiss?.();
1934
- } else {
1935
- $root.style.setProperty("inset-inline-start", `${offset + delta}px`);
1936
- }
1937
- break;
1938
- case 1:
1939
- if (Math.abs(delta) > debounceThreshold) {
1940
- setFollowing();
1941
- }
1942
- break;
2538
+ var CONTENT_NAME2 = "DropdownMenuContent";
2539
+ var DropdownMenuContent = /* @__PURE__ */ (0, import_react38.forwardRef)((props, forwardedRef) => {
2540
+ const { __scopeDropdownMenu, classNames, collisionPadding = 8, ...contentProps } = props;
2541
+ const { tx } = useThemeContext();
2542
+ const context = useDropdownMenuContext(CONTENT_NAME2, __scopeDropdownMenu);
2543
+ const elevation = useElevationContext();
2544
+ const menuScope = useMenuScope(__scopeDropdownMenu);
2545
+ const hasInteractedOutsideRef = (0, import_react38.useRef)(false);
2546
+ const safeCollisionPadding = useSafeCollisionPadding(collisionPadding);
2547
+ return /* @__PURE__ */ import_react38.default.createElement(MenuPrimitive.Content, {
2548
+ id: context.contentId,
2549
+ "aria-labelledby": context.triggerId,
2550
+ ...menuScope,
2551
+ ...contentProps,
2552
+ collisionPadding: safeCollisionPadding,
2553
+ ref: forwardedRef,
2554
+ onCloseAutoFocus: (0, import_primitive2.composeEventHandlers)(props.onCloseAutoFocus, (event) => {
2555
+ if (!hasInteractedOutsideRef.current) {
2556
+ context.triggerRef.current?.focus();
1943
2557
  }
1944
- }
1945
- }, [
1946
- $root,
1947
- motionState,
1948
- gestureStartX
1949
- ]);
1950
- const handlePointerUp = (0, import_react38.useCallback)(() => {
1951
- setIdle();
1952
- }, [
1953
- setIdle
1954
- ]);
1955
- (0, import_react38.useEffect)(() => {
1956
- $root?.addEventListener("pointerdown", handlePointerDown);
1957
- return () => {
1958
- $root?.removeEventListener("pointerdown", handlePointerDown);
1959
- };
1960
- }, [
1961
- $root,
1962
- handlePointerDown
1963
- ]);
1964
- (0, import_react38.useEffect)(() => {
1965
- $root && document.documentElement.addEventListener("pointermove", handlePointerMove);
1966
- return () => {
1967
- document.documentElement.removeEventListener("pointermove", handlePointerMove);
1968
- };
1969
- }, [
1970
- $root,
1971
- handlePointerMove
1972
- ]);
1973
- (0, import_react38.useEffect)(() => {
1974
- $root && document.documentElement.addEventListener("pointerup", handlePointerUp);
1975
- return () => {
1976
- document.documentElement.removeEventListener("pointerup", handlePointerUp);
1977
- };
1978
- }, [
1979
- $root,
1980
- handlePointerUp
1981
- ]);
1982
- };
1983
- var __dxlog_file = "/home/runner/work/dxos/dxos/packages/ui/react-ui/src/components/Main/Main.tsx";
1984
- var MAIN_ROOT_NAME = "MainRoot";
1985
- var NAVIGATION_SIDEBAR_NAME = "NavigationSidebar";
1986
- var COMPLEMENTARY_SIDEBAR_NAME = "ComplementarySidebar";
1987
- var MAIN_NAME = "Main";
1988
- var GENERIC_CONSUMER_NAME = "GenericConsumer";
1989
- var landmarkAttr = "data-main-landmark";
1990
- var useLandmarkMover = (propsOnKeyDown, landmark) => {
1991
- const handleKeyDown = (0, import_react37.useCallback)((event) => {
1992
- const target = event.target;
1993
- if (event.target === event.currentTarget && event.key === "Tab" && target.hasAttribute(landmarkAttr)) {
2558
+ hasInteractedOutsideRef.current = false;
1994
2559
  event.preventDefault();
1995
- const landmarks = Array.from(document.querySelectorAll(`[${landmarkAttr}]:not([inert])`)).map((el) => el.hasAttribute(landmarkAttr) ? parseInt(el.getAttribute(landmarkAttr)) : NaN).sort();
1996
- const l = landmarks.length;
1997
- const cursor = landmarks.indexOf(parseInt(target.getAttribute(landmarkAttr)));
1998
- const nextLandmark = landmarks[(cursor + l + (event.getModifierState("Shift") ? -1 : 1)) % l];
1999
- document.querySelector(`[${landmarkAttr}="${nextLandmark}"]`)?.focus();
2000
- }
2001
- propsOnKeyDown?.(event);
2002
- }, [
2003
- propsOnKeyDown
2004
- ]);
2005
- const focusableGroupAttrs = window ? {} : {
2006
- tabBehavior: "limited",
2007
- ignoreDefaultKeydown: {
2008
- Tab: true
2560
+ }),
2561
+ onInteractOutside: (0, import_primitive2.composeEventHandlers)(props.onInteractOutside, (event) => {
2562
+ const originalEvent = event.detail.originalEvent;
2563
+ const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;
2564
+ const isRightClick = originalEvent.button === 2 || ctrlLeftClick;
2565
+ if (!context.modal || isRightClick) {
2566
+ hasInteractedOutsideRef.current = true;
2567
+ }
2568
+ }),
2569
+ className: tx("menu.content", "menu", {
2570
+ elevation
2571
+ }, classNames),
2572
+ style: {
2573
+ ...props.style,
2574
+ // re-namespace exposed content custom properties
2575
+ ...{
2576
+ "--radix-dropdown-menu-content-transform-origin": "var(--radix-popper-transform-origin)",
2577
+ "--radix-dropdown-menu-content-available-width": "var(--radix-popper-available-width)",
2578
+ "--radix-dropdown-menu-content-available-height": "var(--radix-popper-available-height)",
2579
+ "--radix-dropdown-menu-trigger-width": "var(--radix-popper-anchor-width)",
2580
+ "--radix-dropdown-menu-trigger-height": "var(--radix-popper-anchor-height)"
2581
+ }
2009
2582
  }
2010
- };
2011
- return {
2012
- onKeyDown: handleKeyDown,
2013
- [landmarkAttr]: landmark,
2014
- tabIndex: 0,
2015
- ...focusableGroupAttrs
2016
- };
2017
- };
2018
- var [MainProvider, useMainContext] = (0, import_react_context7.createContext)(MAIN_NAME, {
2019
- resizing: false,
2020
- navigationSidebarState: "closed",
2021
- setNavigationSidebarState: (nextState) => {
2022
- import_log.log.warn("Attempt to set sidebar state without initializing `MainRoot`", void 0, {
2023
- F: __dxlog_file,
2024
- L: 82,
2025
- S: void 0,
2026
- C: (f, a) => f(...a)
2027
- });
2028
- },
2029
- complementarySidebarState: "closed",
2030
- setComplementarySidebarState: (nextState) => {
2031
- import_log.log.warn("Attempt to set sidebar state without initializing `MainRoot`", void 0, {
2032
- F: __dxlog_file,
2033
- L: 87,
2034
- S: void 0,
2035
- C: (f, a) => f(...a)
2036
- });
2037
- }
2038
- });
2039
- var useSidebars = (consumerName = GENERIC_CONSUMER_NAME) => {
2040
- const { setNavigationSidebarState, navigationSidebarState, setComplementarySidebarState, complementarySidebarState } = useMainContext(consumerName);
2041
- return {
2042
- navigationSidebarState,
2043
- setNavigationSidebarState,
2044
- toggleNavigationSidebar: (0, import_react37.useCallback)(() => setNavigationSidebarState(navigationSidebarState === "expanded" ? "closed" : "expanded"), [
2045
- navigationSidebarState,
2046
- setNavigationSidebarState
2047
- ]),
2048
- openNavigationSidebar: (0, import_react37.useCallback)(() => setNavigationSidebarState("expanded"), []),
2049
- collapseNavigationSidebar: (0, import_react37.useCallback)(() => setNavigationSidebarState("collapsed"), []),
2050
- closeNavigationSidebar: (0, import_react37.useCallback)(() => setNavigationSidebarState("closed"), []),
2051
- complementarySidebarState,
2052
- setComplementarySidebarState,
2053
- toggleComplementarySidebar: (0, import_react37.useCallback)(() => setComplementarySidebarState(complementarySidebarState === "expanded" ? "closed" : "expanded"), [
2054
- complementarySidebarState,
2055
- setComplementarySidebarState
2056
- ]),
2057
- openComplementarySidebar: (0, import_react37.useCallback)(() => setComplementarySidebarState("expanded"), []),
2058
- collapseComplementarySidebar: (0, import_react37.useCallback)(() => setComplementarySidebarState("collapsed"), []),
2059
- closeComplementarySidebar: (0, import_react37.useCallback)(() => setComplementarySidebarState("closed"), [])
2060
- };
2061
- };
2062
- var resizeDebounce = 3e3;
2063
- var MainRoot = ({ navigationSidebarState: propsNavigationSidebarState, defaultNavigationSidebarState, onNavigationSidebarStateChange, complementarySidebarState: propsComplementarySidebarState, defaultComplementarySidebarState, onComplementarySidebarStateChange, children, ...props }) => {
2064
- const [isLg] = (0, import_react_hooks4.useMediaQuery)("lg", {
2065
- ssr: false
2066
2583
  });
2067
- const [navigationSidebarState = isLg ? "expanded" : "collapsed", setNavigationSidebarState] = (0, import_react_use_controllable_state4.useControllableState)({
2068
- prop: propsNavigationSidebarState,
2069
- defaultProp: defaultNavigationSidebarState,
2070
- onChange: onNavigationSidebarStateChange
2584
+ });
2585
+ DropdownMenuContent.displayName = CONTENT_NAME2;
2586
+ var GROUP_NAME = "DropdownMenuGroup";
2587
+ var DropdownMenuGroup = /* @__PURE__ */ (0, import_react38.forwardRef)((props, forwardedRef) => {
2588
+ const { __scopeDropdownMenu, ...groupProps } = props;
2589
+ const menuScope = useMenuScope(__scopeDropdownMenu);
2590
+ return /* @__PURE__ */ import_react38.default.createElement(MenuPrimitive.Group, {
2591
+ ...menuScope,
2592
+ ...groupProps,
2593
+ ref: forwardedRef
2071
2594
  });
2072
- const [complementarySidebarState = isLg ? "expanded" : "collapsed", setComplementarySidebarState] = (0, import_react_use_controllable_state4.useControllableState)({
2073
- prop: propsComplementarySidebarState,
2074
- defaultProp: defaultComplementarySidebarState,
2075
- onChange: onComplementarySidebarStateChange
2595
+ });
2596
+ DropdownMenuGroup.displayName = GROUP_NAME;
2597
+ var LABEL_NAME = "DropdownMenuLabel";
2598
+ var DropdownMenuGroupLabel = /* @__PURE__ */ (0, import_react38.forwardRef)((props, forwardedRef) => {
2599
+ const { __scopeDropdownMenu, classNames, ...labelProps } = props;
2600
+ const menuScope = useMenuScope(__scopeDropdownMenu);
2601
+ const { tx } = useThemeContext();
2602
+ return /* @__PURE__ */ import_react38.default.createElement(MenuPrimitive.Label, {
2603
+ ...menuScope,
2604
+ ...labelProps,
2605
+ className: tx("menu.groupLabel", "menu__group__label", {}, classNames),
2606
+ ref: forwardedRef
2076
2607
  });
2077
- const [resizing, setResizing] = (0, import_react37.useState)(false);
2078
- const resizeInterval = (0, import_react37.useRef)(null);
2079
- const handleResize = (0, import_react37.useCallback)(() => {
2080
- setResizing(true);
2081
- if (resizeInterval.current) {
2082
- clearTimeout(resizeInterval.current);
2083
- }
2084
- resizeInterval.current = setTimeout(() => {
2085
- setResizing(false);
2086
- resizeInterval.current = null;
2087
- }, resizeDebounce);
2088
- }, []);
2089
- (0, import_react37.useEffect)(() => {
2090
- window.addEventListener("resize", handleResize);
2091
- return () => window.removeEventListener("resize", handleResize);
2092
- }, [
2093
- handleResize
2094
- ]);
2095
- return /* @__PURE__ */ import_react37.default.createElement(MainProvider, {
2096
- ...props,
2097
- navigationSidebarState,
2098
- setNavigationSidebarState,
2099
- complementarySidebarState,
2100
- setComplementarySidebarState,
2101
- resizing
2102
- }, children);
2103
- };
2104
- MainRoot.displayName = MAIN_ROOT_NAME;
2105
- var handleOpenAutoFocus = (event) => {
2106
- !document.body.hasAttribute("data-is-keyboard") && event.preventDefault();
2107
- };
2108
- var MainSidebar = /* @__PURE__ */ (0, import_react37.forwardRef)(({ classNames, children, swipeToDismiss, onOpenAutoFocus, state, resizing, onStateChange, side, label, ...props }, forwardedRef) => {
2109
- const [isLg] = (0, import_react_hooks4.useMediaQuery)("lg", {
2110
- ssr: false
2608
+ });
2609
+ DropdownMenuGroupLabel.displayName = LABEL_NAME;
2610
+ var ITEM_NAME = "DropdownMenuItem";
2611
+ var DropdownMenuItem = /* @__PURE__ */ (0, import_react38.forwardRef)((props, forwardedRef) => {
2612
+ const { __scopeDropdownMenu, classNames, ...itemProps } = props;
2613
+ const menuScope = useMenuScope(__scopeDropdownMenu);
2614
+ const { tx } = useThemeContext();
2615
+ return /* @__PURE__ */ import_react38.default.createElement(MenuPrimitive.Item, {
2616
+ ...menuScope,
2617
+ ...itemProps,
2618
+ className: tx("menu.item", "menu__item", {}, classNames),
2619
+ ref: forwardedRef
2111
2620
  });
2621
+ });
2622
+ DropdownMenuItem.displayName = ITEM_NAME;
2623
+ var CHECKBOX_ITEM_NAME = "DropdownMenuCheckboxItem";
2624
+ var DropdownMenuCheckboxItem = /* @__PURE__ */ (0, import_react38.forwardRef)((props, forwardedRef) => {
2625
+ const { __scopeDropdownMenu, classNames, ...checkboxItemProps } = props;
2626
+ const menuScope = useMenuScope(__scopeDropdownMenu);
2112
2627
  const { tx } = useThemeContext();
2113
- const { t } = useTranslation();
2114
- const ref = (0, import_react_hooks4.useForwardedRef)(forwardedRef);
2115
- const noopRef = (0, import_react37.useRef)(null);
2116
- useSwipeToDismiss(swipeToDismiss ? ref : noopRef, {
2117
- onDismiss: () => onStateChange?.("closed")
2628
+ return /* @__PURE__ */ import_react38.default.createElement(MenuPrimitive.CheckboxItem, {
2629
+ ...menuScope,
2630
+ ...checkboxItemProps,
2631
+ className: tx("menu.item", "menu__item--checkbox", {}, classNames),
2632
+ ref: forwardedRef
2118
2633
  });
2119
- const handleKeyDown = (0, import_react37.useCallback)((event) => {
2120
- if (event.key === "Escape") {
2121
- event.target.closest("[data-tabster]")?.focus();
2122
- }
2123
- props.onKeyDown?.(event);
2124
- }, [
2125
- props.onKeyDown
2126
- ]);
2127
- const Root5 = isLg ? import_react_primitive9.Primitive.div : import_react_dialog2.DialogContent;
2128
- return /* @__PURE__ */ import_react37.default.createElement(import_react_dialog2.Root, {
2129
- open: state !== "closed",
2130
- "aria-label": toLocalizedString(label, t),
2131
- modal: false
2132
- }, !isLg && /* @__PURE__ */ import_react37.default.createElement(import_react_dialog2.DialogTitle, {
2133
- className: "sr-only"
2134
- }, toLocalizedString(label, t)), /* @__PURE__ */ import_react37.default.createElement(Root5, {
2135
- ...!isLg && {
2136
- forceMount: true,
2137
- tabIndex: -1,
2138
- onOpenAutoFocus: onOpenAutoFocus ?? handleOpenAutoFocus
2139
- },
2140
- ...props,
2141
- "data-side": side === "inline-end" ? "ie" : "is",
2142
- "data-state": state,
2143
- "data-resizing": resizing ? "true" : "false",
2144
- className: tx("main.sidebar", "main__sidebar", {}, classNames),
2145
- onKeyDown: handleKeyDown,
2146
- ...state === "closed" && {
2147
- inert: "true"
2148
- },
2149
- ref
2150
- }, children));
2151
2634
  });
2152
- var MainNavigationSidebar = /* @__PURE__ */ (0, import_react37.forwardRef)((props, forwardedRef) => {
2153
- const { navigationSidebarState, setNavigationSidebarState, resizing } = useMainContext(NAVIGATION_SIDEBAR_NAME);
2154
- const mover = useLandmarkMover(props.onKeyDown, "0");
2155
- return /* @__PURE__ */ import_react37.default.createElement(MainSidebar, {
2156
- ...mover,
2157
- ...props,
2158
- state: navigationSidebarState,
2159
- onStateChange: setNavigationSidebarState,
2160
- resizing,
2161
- side: "inline-start",
2635
+ DropdownMenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME;
2636
+ var RADIO_GROUP_NAME = "DropdownMenuRadioGroup";
2637
+ var DropdownMenuRadioGroup = /* @__PURE__ */ (0, import_react38.forwardRef)((props, forwardedRef) => {
2638
+ const { __scopeDropdownMenu, ...radioGroupProps } = props;
2639
+ const menuScope = useMenuScope(__scopeDropdownMenu);
2640
+ return /* @__PURE__ */ import_react38.default.createElement(MenuPrimitive.RadioGroup, {
2641
+ ...menuScope,
2642
+ ...radioGroupProps,
2162
2643
  ref: forwardedRef
2163
2644
  });
2164
2645
  });
2165
- MainNavigationSidebar.displayName = NAVIGATION_SIDEBAR_NAME;
2166
- var MainComplementarySidebar = /* @__PURE__ */ (0, import_react37.forwardRef)((props, forwardedRef) => {
2167
- const { complementarySidebarState, setComplementarySidebarState, resizing } = useMainContext(COMPLEMENTARY_SIDEBAR_NAME);
2168
- const mover = useLandmarkMover(props.onKeyDown, "2");
2169
- return /* @__PURE__ */ import_react37.default.createElement(MainSidebar, {
2170
- ...mover,
2171
- ...props,
2172
- state: complementarySidebarState,
2173
- onStateChange: setComplementarySidebarState,
2174
- resizing,
2175
- side: "inline-end",
2646
+ DropdownMenuRadioGroup.displayName = RADIO_GROUP_NAME;
2647
+ var RADIO_ITEM_NAME = "DropdownMenuRadioItem";
2648
+ var DropdownMenuRadioItem = /* @__PURE__ */ (0, import_react38.forwardRef)((props, forwardedRef) => {
2649
+ const { __scopeDropdownMenu, ...radioItemProps } = props;
2650
+ const menuScope = useMenuScope(__scopeDropdownMenu);
2651
+ return /* @__PURE__ */ import_react38.default.createElement(MenuPrimitive.RadioItem, {
2652
+ ...menuScope,
2653
+ ...radioItemProps,
2176
2654
  ref: forwardedRef
2177
2655
  });
2178
2656
  });
2179
- MainNavigationSidebar.displayName = NAVIGATION_SIDEBAR_NAME;
2180
- var MainContent = /* @__PURE__ */ (0, import_react37.forwardRef)(({ asChild, classNames, bounce, handlesFocus, children, role, ...props }, forwardedRef) => {
2181
- const { navigationSidebarState, complementarySidebarState } = useMainContext(MAIN_NAME);
2182
- const { tx } = useThemeContext();
2183
- const Root5 = asChild ? import_react_slot10.Slot : role ? "div" : "main";
2184
- const mover = useLandmarkMover(props.onKeyDown, "1");
2185
- return /* @__PURE__ */ import_react37.default.createElement(Root5, {
2186
- role,
2187
- ...handlesFocus && {
2188
- ...mover
2189
- },
2190
- ...props,
2191
- "data-sidebar-inline-start-state": navigationSidebarState,
2192
- "data-sidebar-inline-end-state": complementarySidebarState,
2193
- className: tx("main.content", "main", {
2194
- bounce,
2195
- handlesFocus
2196
- }, classNames),
2657
+ DropdownMenuRadioItem.displayName = RADIO_ITEM_NAME;
2658
+ var INDICATOR_NAME = "DropdownMenuItemIndicator";
2659
+ var DropdownMenuItemIndicator = /* @__PURE__ */ (0, import_react38.forwardRef)((props, forwardedRef) => {
2660
+ const { __scopeDropdownMenu, ...itemIndicatorProps } = props;
2661
+ const menuScope = useMenuScope(__scopeDropdownMenu);
2662
+ return /* @__PURE__ */ import_react38.default.createElement(MenuPrimitive.ItemIndicator, {
2663
+ ...menuScope,
2664
+ ...itemIndicatorProps,
2197
2665
  ref: forwardedRef
2198
- }, children);
2666
+ });
2199
2667
  });
2200
- MainContent.displayName = MAIN_NAME;
2201
- var MainOverlay = /* @__PURE__ */ (0, import_react37.forwardRef)(({ classNames, ...props }, forwardedRef) => {
2202
- const [isLg] = (0, import_react_hooks4.useMediaQuery)("lg", {
2203
- ssr: false
2668
+ DropdownMenuItemIndicator.displayName = INDICATOR_NAME;
2669
+ var SEPARATOR_NAME = "DropdownMenuSeparator";
2670
+ var DropdownMenuSeparator = /* @__PURE__ */ (0, import_react38.forwardRef)((props, forwardedRef) => {
2671
+ const { __scopeDropdownMenu, classNames, ...separatorProps } = props;
2672
+ const menuScope = useMenuScope(__scopeDropdownMenu);
2673
+ const { tx } = useThemeContext();
2674
+ return /* @__PURE__ */ import_react38.default.createElement(MenuPrimitive.Separator, {
2675
+ ...menuScope,
2676
+ ...separatorProps,
2677
+ className: tx("menu.separator", "menu__item", {}, classNames),
2678
+ ref: forwardedRef
2204
2679
  });
2205
- const { navigationSidebarState, setNavigationSidebarState, complementarySidebarState, setComplementarySidebarState } = useMainContext(MAIN_NAME);
2680
+ });
2681
+ DropdownMenuSeparator.displayName = SEPARATOR_NAME;
2682
+ var ARROW_NAME2 = "DropdownMenuArrow";
2683
+ var DropdownMenuArrow = /* @__PURE__ */ (0, import_react38.forwardRef)((props, forwardedRef) => {
2684
+ const { __scopeDropdownMenu, classNames, ...arrowProps } = props;
2685
+ const menuScope = useMenuScope(__scopeDropdownMenu);
2206
2686
  const { tx } = useThemeContext();
2207
- return /* @__PURE__ */ import_react37.default.createElement("div", {
2208
- onClick: () => {
2209
- setNavigationSidebarState("collapsed");
2210
- setComplementarySidebarState("collapsed");
2211
- },
2212
- ...props,
2213
- className: tx("main.overlay", "main__overlay", {
2214
- isLg,
2215
- inlineStartSidebarOpen: navigationSidebarState,
2216
- inlineEndSidebarOpen: complementarySidebarState
2217
- }, classNames),
2218
- "data-state": navigationSidebarState === "expanded" || complementarySidebarState === "expanded" ? "open" : "closed",
2219
- "aria-hidden": "true",
2687
+ return /* @__PURE__ */ import_react38.default.createElement(MenuPrimitive.Arrow, {
2688
+ ...menuScope,
2689
+ ...arrowProps,
2690
+ className: tx("menu.arrow", "menu__arrow", {}, classNames),
2220
2691
  ref: forwardedRef
2221
2692
  });
2222
2693
  });
2223
- var Main = {
2224
- Root: MainRoot,
2225
- Content: MainContent,
2226
- Overlay: MainOverlay,
2227
- NavigationSidebar: MainNavigationSidebar,
2228
- ComplementarySidebar: MainComplementarySidebar
2694
+ DropdownMenuArrow.displayName = ARROW_NAME2;
2695
+ var DropdownMenuSub = (props) => {
2696
+ const { __scopeDropdownMenu, children, open: openProp, onOpenChange, defaultOpen } = props;
2697
+ const menuScope = useMenuScope(__scopeDropdownMenu);
2698
+ const [open = false, setOpen] = (0, import_react_use_controllable_state5.useControllableState)({
2699
+ prop: openProp,
2700
+ defaultProp: defaultOpen,
2701
+ onChange: onOpenChange
2702
+ });
2703
+ return /* @__PURE__ */ import_react38.default.createElement(MenuPrimitive.Sub, {
2704
+ ...menuScope,
2705
+ open,
2706
+ onOpenChange: setOpen
2707
+ }, children);
2708
+ };
2709
+ var SUB_TRIGGER_NAME = "DropdownMenuSubTrigger";
2710
+ var DropdownMenuSubTrigger = /* @__PURE__ */ (0, import_react38.forwardRef)((props, forwardedRef) => {
2711
+ const { __scopeDropdownMenu, ...subTriggerProps } = props;
2712
+ const menuScope = useMenuScope(__scopeDropdownMenu);
2713
+ return /* @__PURE__ */ import_react38.default.createElement(MenuPrimitive.SubTrigger, {
2714
+ ...menuScope,
2715
+ ...subTriggerProps,
2716
+ ref: forwardedRef
2717
+ });
2718
+ });
2719
+ DropdownMenuSubTrigger.displayName = SUB_TRIGGER_NAME;
2720
+ var SUB_CONTENT_NAME = "DropdownMenuSubContent";
2721
+ var DropdownMenuSubContent = /* @__PURE__ */ (0, import_react38.forwardRef)((props, forwardedRef) => {
2722
+ const { __scopeDropdownMenu, ...subContentProps } = props;
2723
+ const menuScope = useMenuScope(__scopeDropdownMenu);
2724
+ return /* @__PURE__ */ import_react38.default.createElement(MenuPrimitive.SubContent, {
2725
+ ...menuScope,
2726
+ ...subContentProps,
2727
+ ref: forwardedRef,
2728
+ style: {
2729
+ ...props.style,
2730
+ // re-namespace exposed content custom properties
2731
+ ...{
2732
+ "--radix-dropdown-menu-content-transform-origin": "var(--radix-popper-transform-origin)",
2733
+ "--radix-dropdown-menu-content-available-width": "var(--radix-popper-available-width)",
2734
+ "--radix-dropdown-menu-content-available-height": "var(--radix-popper-available-height)",
2735
+ "--radix-dropdown-menu-trigger-width": "var(--radix-popper-anchor-width)",
2736
+ "--radix-dropdown-menu-trigger-height": "var(--radix-popper-anchor-height)"
2737
+ }
2738
+ }
2739
+ });
2740
+ });
2741
+ DropdownMenuSubContent.displayName = SUB_CONTENT_NAME;
2742
+ var DropdownMenu = {
2743
+ Root: DropdownMenuRoot,
2744
+ Trigger: DropdownMenuTrigger,
2745
+ VirtualTrigger: DropdownMenuVirtualTrigger,
2746
+ Portal: DropdownMenuPortal,
2747
+ Content: DropdownMenuContent,
2748
+ Viewport: DropdownMenuViewport,
2749
+ Group: DropdownMenuGroup,
2750
+ GroupLabel: DropdownMenuGroupLabel,
2751
+ Item: DropdownMenuItem,
2752
+ CheckboxItem: DropdownMenuCheckboxItem,
2753
+ RadioGroup: DropdownMenuRadioGroup,
2754
+ RadioItem: DropdownMenuRadioItem,
2755
+ ItemIndicator: DropdownMenuItemIndicator,
2756
+ Separator: DropdownMenuSeparator,
2757
+ Arrow: DropdownMenuArrow,
2758
+ Sub: DropdownMenuSub,
2759
+ SubTrigger: DropdownMenuSubTrigger,
2760
+ SubContent: DropdownMenuSubContent
2229
2761
  };
2762
+ var useDropdownMenuMenuScope = useMenuScope;
2230
2763
  var MESSAGE_NAME = "Message";
2231
- var [MessageProvider, useMessageContext] = (0, import_react_context8.createContext)(MESSAGE_NAME);
2764
+ var [MessageProvider, useMessageContext] = (0, import_react_context9.createContext)(MESSAGE_NAME);
2232
2765
  var MessageRoot = /* @__PURE__ */ (0, import_react39.forwardRef)(({ asChild, valence, elevation: propsElevation, className, titleId: propsTitleId, descriptionId: propsDescriptionId, children, ...props }, forwardedRef) => {
2233
2766
  const { tx } = useThemeContext();
2234
2767
  const titleId = (0, import_react_hooks5.useId)("message__title", propsTitleId);
2235
2768
  const descriptionId = (0, import_react_hooks5.useId)("message__description", propsDescriptionId);
2236
2769
  const elevation = useElevationContext(propsElevation);
2237
- const Root5 = asChild ? import_react_slot11.Slot : import_react_primitive10.Primitive.div;
2770
+ const Root7 = asChild ? import_react_slot12.Slot : import_react_primitive11.Primitive.div;
2238
2771
  return /* @__PURE__ */ import_react39.default.createElement(MessageProvider, {
2239
2772
  titleId,
2240
2773
  descriptionId
2241
- }, /* @__PURE__ */ import_react39.default.createElement(Root5, {
2774
+ }, /* @__PURE__ */ import_react39.default.createElement(Root7, {
2242
2775
  ...props,
2243
2776
  className: tx("message.root", "message", {
2244
2777
  valence,
@@ -2254,8 +2787,8 @@ var MESSAGE_TITLE_NAME = "MessageTitle";
2254
2787
  var MessageTitle = /* @__PURE__ */ (0, import_react39.forwardRef)(({ asChild, className, children, ...props }, forwardedRef) => {
2255
2788
  const { tx } = useThemeContext();
2256
2789
  const { titleId } = useMessageContext(MESSAGE_TITLE_NAME);
2257
- const Root5 = asChild ? import_react_slot11.Slot : import_react_primitive10.Primitive.h2;
2258
- return /* @__PURE__ */ import_react39.default.createElement(Root5, {
2790
+ const Root7 = asChild ? import_react_slot12.Slot : import_react_primitive11.Primitive.h2;
2791
+ return /* @__PURE__ */ import_react39.default.createElement(Root7, {
2259
2792
  ...props,
2260
2793
  className: tx("message.title", "message__title", {}, className),
2261
2794
  id: titleId,
@@ -2267,8 +2800,8 @@ var MESSAGE_BODY_NAME = "MessageBody";
2267
2800
  var MessageBody = /* @__PURE__ */ (0, import_react39.forwardRef)(({ asChild, className, children, ...props }, forwardedRef) => {
2268
2801
  const { tx } = useThemeContext();
2269
2802
  const { descriptionId } = useMessageContext(MESSAGE_BODY_NAME);
2270
- const Root5 = asChild ? import_react_slot11.Slot : import_react_primitive10.Primitive.p;
2271
- return /* @__PURE__ */ import_react39.default.createElement(Root5, {
2803
+ const Root7 = asChild ? import_react_slot12.Slot : import_react_primitive11.Primitive.p;
2804
+ return /* @__PURE__ */ import_react39.default.createElement(Root7, {
2272
2805
  ...props,
2273
2806
  className: tx("message.body", "message__body", {}, className),
2274
2807
  id: descriptionId,
@@ -2282,24 +2815,24 @@ var Message = {
2282
2815
  Body: MessageBody
2283
2816
  };
2284
2817
  var POPOVER_NAME = "Popover";
2285
- var [createPopoverContext, createPopoverScope] = (0, import_react_context9.createContextScope)(POPOVER_NAME, [
2286
- import_react_popper.createPopperScope
2818
+ var [createPopoverContext, createPopoverScope] = (0, import_react_context10.createContextScope)(POPOVER_NAME, [
2819
+ import_react_popper2.createPopperScope
2287
2820
  ]);
2288
- var usePopperScope = (0, import_react_popper.createPopperScope)();
2821
+ var usePopperScope2 = (0, import_react_popper2.createPopperScope)();
2289
2822
  var [PopoverProvider, usePopoverContext] = createPopoverContext(POPOVER_NAME);
2290
2823
  var PopoverRoot = (props) => {
2291
2824
  const { __scopePopover, children, open: openProp, defaultOpen, onOpenChange, modal = false } = props;
2292
- const popperScope = usePopperScope(__scopePopover);
2825
+ const popperScope = usePopperScope2(__scopePopover);
2293
2826
  const triggerRef = (0, import_react40.useRef)(null);
2294
2827
  const [hasCustomAnchor, setHasCustomAnchor] = (0, import_react40.useState)(false);
2295
- const [open = false, setOpen] = (0, import_react_use_controllable_state5.useControllableState)({
2828
+ const [open = false, setOpen] = (0, import_react_use_controllable_state6.useControllableState)({
2296
2829
  prop: openProp,
2297
2830
  defaultProp: defaultOpen,
2298
2831
  onChange: onOpenChange
2299
2832
  });
2300
- return /* @__PURE__ */ import_react40.default.createElement(PopperPrimitive.Root, popperScope, /* @__PURE__ */ import_react40.default.createElement(PopoverProvider, {
2833
+ return /* @__PURE__ */ import_react40.default.createElement(PopperPrimitive2.Root, popperScope, /* @__PURE__ */ import_react40.default.createElement(PopoverProvider, {
2301
2834
  scope: __scopePopover,
2302
- contentId: (0, import_react_id2.useId)(),
2835
+ contentId: (0, import_react_id3.useId)(),
2303
2836
  triggerRef,
2304
2837
  open,
2305
2838
  onOpenChange: setOpen,
@@ -2317,7 +2850,7 @@ var ANCHOR_NAME = "PopoverAnchor";
2317
2850
  var PopoverAnchor = /* @__PURE__ */ (0, import_react40.forwardRef)((props, forwardedRef) => {
2318
2851
  const { __scopePopover, ...anchorProps } = props;
2319
2852
  const context = usePopoverContext(ANCHOR_NAME, __scopePopover);
2320
- const popperScope = usePopperScope(__scopePopover);
2853
+ const popperScope = usePopperScope2(__scopePopover);
2321
2854
  const { onCustomAnchorAdd, onCustomAnchorRemove } = context;
2322
2855
  (0, import_react40.useEffect)(() => {
2323
2856
  onCustomAnchorAdd();
@@ -2326,20 +2859,20 @@ var PopoverAnchor = /* @__PURE__ */ (0, import_react40.forwardRef)((props, forwa
2326
2859
  onCustomAnchorAdd,
2327
2860
  onCustomAnchorRemove
2328
2861
  ]);
2329
- return /* @__PURE__ */ import_react40.default.createElement(PopperPrimitive.Anchor, {
2862
+ return /* @__PURE__ */ import_react40.default.createElement(PopperPrimitive2.Anchor, {
2330
2863
  ...popperScope,
2331
2864
  ...anchorProps,
2332
2865
  ref: forwardedRef
2333
2866
  });
2334
2867
  });
2335
2868
  PopoverAnchor.displayName = ANCHOR_NAME;
2336
- var TRIGGER_NAME2 = "PopoverTrigger";
2869
+ var TRIGGER_NAME3 = "PopoverTrigger";
2337
2870
  var PopoverTrigger = /* @__PURE__ */ (0, import_react40.forwardRef)((props, forwardedRef) => {
2338
2871
  const { __scopePopover, ...triggerProps } = props;
2339
- const context = usePopoverContext(TRIGGER_NAME2, __scopePopover);
2340
- const popperScope = usePopperScope(__scopePopover);
2341
- const composedTriggerRef = (0, import_react_compose_refs2.useComposedRefs)(forwardedRef, context.triggerRef);
2342
- const trigger = /* @__PURE__ */ import_react40.default.createElement(import_react_primitive11.Primitive.button, {
2872
+ const context = usePopoverContext(TRIGGER_NAME3, __scopePopover);
2873
+ const popperScope = usePopperScope2(__scopePopover);
2874
+ const composedTriggerRef = (0, import_react_compose_refs3.useComposedRefs)(forwardedRef, context.triggerRef);
2875
+ const trigger = /* @__PURE__ */ import_react40.default.createElement(import_react_primitive12.Primitive.button, {
2343
2876
  type: "button",
2344
2877
  "aria-haspopup": "dialog",
2345
2878
  "aria-expanded": context.open,
@@ -2347,54 +2880,54 @@ var PopoverTrigger = /* @__PURE__ */ (0, import_react40.forwardRef)((props, forw
2347
2880
  "data-state": getState(context.open),
2348
2881
  ...triggerProps,
2349
2882
  ref: composedTriggerRef,
2350
- onClick: (0, import_primitive2.composeEventHandlers)(props.onClick, context.onOpenToggle)
2883
+ onClick: (0, import_primitive3.composeEventHandlers)(props.onClick, context.onOpenToggle)
2351
2884
  });
2352
- return context.hasCustomAnchor ? trigger : /* @__PURE__ */ import_react40.default.createElement(PopperPrimitive.Anchor, {
2885
+ return context.hasCustomAnchor ? trigger : /* @__PURE__ */ import_react40.default.createElement(PopperPrimitive2.Anchor, {
2353
2886
  asChild: true,
2354
2887
  ...popperScope
2355
2888
  }, trigger);
2356
2889
  });
2357
- PopoverTrigger.displayName = TRIGGER_NAME2;
2890
+ PopoverTrigger.displayName = TRIGGER_NAME3;
2358
2891
  var VIRTUAL_TRIGGER_NAME2 = "PopoverVirtualTrigger";
2359
2892
  var PopoverVirtualTrigger = (props) => {
2360
2893
  const { __scopePopover, virtualRef } = props;
2361
2894
  const context = usePopoverContext(VIRTUAL_TRIGGER_NAME2, __scopePopover);
2362
- const popperScope = usePopperScope(__scopePopover);
2895
+ const popperScope = usePopperScope2(__scopePopover);
2363
2896
  (0, import_react40.useEffect)(() => {
2364
2897
  if (virtualRef.current) {
2365
2898
  context.triggerRef.current = virtualRef.current;
2366
2899
  }
2367
2900
  });
2368
- return /* @__PURE__ */ import_react40.default.createElement(PopperPrimitive.Anchor, {
2901
+ return /* @__PURE__ */ import_react40.default.createElement(PopperPrimitive2.Anchor, {
2369
2902
  ...popperScope,
2370
2903
  virtualRef
2371
2904
  });
2372
2905
  };
2373
2906
  PopoverVirtualTrigger.displayName = VIRTUAL_TRIGGER_NAME2;
2374
- var PORTAL_NAME2 = "PopoverPortal";
2375
- var [PortalProvider, usePortalContext] = createPopoverContext(PORTAL_NAME2, {
2907
+ var PORTAL_NAME3 = "PopoverPortal";
2908
+ var [PortalProvider2, usePortalContext2] = createPopoverContext(PORTAL_NAME3, {
2376
2909
  forceMount: void 0
2377
2910
  });
2378
2911
  var PopoverPortal = (props) => {
2379
2912
  const { __scopePopover, forceMount, children, container } = props;
2380
- const context = usePopoverContext(PORTAL_NAME2, __scopePopover);
2381
- return /* @__PURE__ */ import_react40.default.createElement(PortalProvider, {
2913
+ const context = usePopoverContext(PORTAL_NAME3, __scopePopover);
2914
+ return /* @__PURE__ */ import_react40.default.createElement(PortalProvider2, {
2382
2915
  scope: __scopePopover,
2383
2916
  forceMount
2384
- }, /* @__PURE__ */ import_react40.default.createElement(import_react_presence.Presence, {
2917
+ }, /* @__PURE__ */ import_react40.default.createElement(import_react_presence2.Presence, {
2385
2918
  present: forceMount || context.open
2386
- }, /* @__PURE__ */ import_react40.default.createElement(import_react_portal.Portal, {
2919
+ }, /* @__PURE__ */ import_react40.default.createElement(import_react_portal2.Portal, {
2387
2920
  asChild: true,
2388
2921
  container
2389
2922
  }, children)));
2390
2923
  };
2391
- PopoverPortal.displayName = PORTAL_NAME2;
2392
- var CONTENT_NAME2 = "PopoverContent";
2924
+ PopoverPortal.displayName = PORTAL_NAME3;
2925
+ var CONTENT_NAME3 = "PopoverContent";
2393
2926
  var PopoverContent = /* @__PURE__ */ (0, import_react40.forwardRef)((props, forwardedRef) => {
2394
- const portalContext = usePortalContext(CONTENT_NAME2, props.__scopePopover);
2927
+ const portalContext = usePortalContext2(CONTENT_NAME3, props.__scopePopover);
2395
2928
  const { forceMount = portalContext.forceMount, ...contentProps } = props;
2396
- const context = usePopoverContext(CONTENT_NAME2, props.__scopePopover);
2397
- return /* @__PURE__ */ import_react40.default.createElement(import_react_presence.Presence, {
2929
+ const context = usePopoverContext(CONTENT_NAME3, props.__scopePopover);
2930
+ return /* @__PURE__ */ import_react40.default.createElement(import_react_presence2.Presence, {
2398
2931
  present: forceMount || context.open
2399
2932
  }, context.modal ? /* @__PURE__ */ import_react40.default.createElement(PopoverContentModal, {
2400
2933
  ...contentProps,
@@ -2404,11 +2937,11 @@ var PopoverContent = /* @__PURE__ */ (0, import_react40.forwardRef)((props, forw
2404
2937
  ref: forwardedRef
2405
2938
  }));
2406
2939
  });
2407
- PopoverContent.displayName = CONTENT_NAME2;
2940
+ PopoverContent.displayName = CONTENT_NAME3;
2408
2941
  var PopoverContentModal = /* @__PURE__ */ (0, import_react40.forwardRef)((props, forwardedRef) => {
2409
- const context = usePopoverContext(CONTENT_NAME2, props.__scopePopover);
2942
+ const context = usePopoverContext(CONTENT_NAME3, props.__scopePopover);
2410
2943
  const contentRef = (0, import_react40.useRef)(null);
2411
- const composedRefs = (0, import_react_compose_refs2.useComposedRefs)(forwardedRef, contentRef);
2944
+ const composedRefs = (0, import_react_compose_refs3.useComposedRefs)(forwardedRef, contentRef);
2412
2945
  const isRightClickOutsideRef = (0, import_react40.useRef)(false);
2413
2946
  (0, import_react40.useEffect)(() => {
2414
2947
  const content = contentRef.current;
@@ -2417,7 +2950,7 @@ var PopoverContentModal = /* @__PURE__ */ (0, import_react40.forwardRef)((props,
2417
2950
  }
2418
2951
  }, []);
2419
2952
  return /* @__PURE__ */ import_react40.default.createElement(import_react_remove_scroll.RemoveScroll, {
2420
- as: import_react_slot12.Slot,
2953
+ as: import_react_slot13.Slot,
2421
2954
  allowPinchZoom: true
2422
2955
  }, /* @__PURE__ */ import_react40.default.createElement(PopoverContentImpl, {
2423
2956
  ...props,
@@ -2426,13 +2959,13 @@ var PopoverContentModal = /* @__PURE__ */ (0, import_react40.forwardRef)((props,
2426
2959
  // (closed !== unmounted when animating out)
2427
2960
  trapFocus: context.open,
2428
2961
  disableOutsidePointerEvents: true,
2429
- onCloseAutoFocus: (0, import_primitive2.composeEventHandlers)(props.onCloseAutoFocus, (event) => {
2962
+ onCloseAutoFocus: (0, import_primitive3.composeEventHandlers)(props.onCloseAutoFocus, (event) => {
2430
2963
  event.preventDefault();
2431
2964
  if (!isRightClickOutsideRef.current) {
2432
2965
  context.triggerRef.current?.focus();
2433
2966
  }
2434
2967
  }),
2435
- onPointerDownOutside: (0, import_primitive2.composeEventHandlers)(props.onPointerDownOutside, (event) => {
2968
+ onPointerDownOutside: (0, import_primitive3.composeEventHandlers)(props.onPointerDownOutside, (event) => {
2436
2969
  const originalEvent = event.detail.originalEvent;
2437
2970
  const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;
2438
2971
  const isRightClick = originalEvent.button === 2 || ctrlLeftClick;
@@ -2442,13 +2975,13 @@ var PopoverContentModal = /* @__PURE__ */ (0, import_react40.forwardRef)((props,
2442
2975
  }),
2443
2976
  // When focus is trapped, a `focusout` event may still happen.
2444
2977
  // We make sure we don't trigger our `onDismiss` in such case.
2445
- onFocusOutside: (0, import_primitive2.composeEventHandlers)(props.onFocusOutside, (event) => event.preventDefault(), {
2978
+ onFocusOutside: (0, import_primitive3.composeEventHandlers)(props.onFocusOutside, (event) => event.preventDefault(), {
2446
2979
  checkForDefaultPrevented: false
2447
2980
  })
2448
2981
  }));
2449
2982
  });
2450
2983
  var PopoverContentNonModal = /* @__PURE__ */ (0, import_react40.forwardRef)((props, forwardedRef) => {
2451
- const context = usePopoverContext(CONTENT_NAME2, props.__scopePopover);
2984
+ const context = usePopoverContext(CONTENT_NAME3, props.__scopePopover);
2452
2985
  const hasInteractedOutsideRef = (0, import_react40.useRef)(false);
2453
2986
  const hasPointerDownOutsideRef = (0, import_react40.useRef)(false);
2454
2987
  return /* @__PURE__ */ import_react40.default.createElement(PopoverContentImpl, {
@@ -2488,8 +3021,8 @@ var PopoverContentNonModal = /* @__PURE__ */ (0, import_react40.forwardRef)((pro
2488
3021
  });
2489
3022
  var PopoverContentImpl = /* @__PURE__ */ (0, import_react40.forwardRef)((props, forwardedRef) => {
2490
3023
  const { __scopePopover, trapFocus, onOpenAutoFocus, onCloseAutoFocus, disableOutsidePointerEvents, onEscapeKeyDown, onPointerDownOutside, onFocusOutside, onInteractOutside, collisionPadding = 8, classNames, ...contentProps } = props;
2491
- const context = usePopoverContext(CONTENT_NAME2, __scopePopover);
2492
- const popperScope = usePopperScope(__scopePopover);
3024
+ const context = usePopoverContext(CONTENT_NAME3, __scopePopover);
3025
+ const popperScope = usePopperScope2(__scopePopover);
2493
3026
  const { tx } = useThemeContext();
2494
3027
  const elevation = useElevationContext();
2495
3028
  const safeCollisionPadding = useSafeCollisionPadding(collisionPadding);
@@ -2500,7 +3033,7 @@ var PopoverContentImpl = /* @__PURE__ */ (0, import_react40.forwardRef)((props,
2500
3033
  trapped: trapFocus,
2501
3034
  onMountAutoFocus: onOpenAutoFocus,
2502
3035
  onUnmountAutoFocus: onCloseAutoFocus
2503
- }, /* @__PURE__ */ import_react40.default.createElement(import_react_dismissable_layer.DismissableLayer, {
3036
+ }, /* @__PURE__ */ import_react40.default.createElement(import_react_dismissable_layer2.DismissableLayer, {
2504
3037
  asChild: true,
2505
3038
  disableOutsidePointerEvents,
2506
3039
  onInteractOutside,
@@ -2508,7 +3041,7 @@ var PopoverContentImpl = /* @__PURE__ */ (0, import_react40.forwardRef)((props,
2508
3041
  onPointerDownOutside,
2509
3042
  onFocusOutside,
2510
3043
  onDismiss: () => context.onOpenChange(false)
2511
- }, /* @__PURE__ */ import_react40.default.createElement(PopperPrimitive.Content, {
3044
+ }, /* @__PURE__ */ import_react40.default.createElement(PopperPrimitive2.Content, {
2512
3045
  "data-state": getState(context.open),
2513
3046
  role: "dialog",
2514
3047
  id: context.contentId,
@@ -2536,31 +3069,31 @@ var CLOSE_NAME = "PopoverClose";
2536
3069
  var PopoverClose = /* @__PURE__ */ (0, import_react40.forwardRef)((props, forwardedRef) => {
2537
3070
  const { __scopePopover, ...closeProps } = props;
2538
3071
  const context = usePopoverContext(CLOSE_NAME, __scopePopover);
2539
- return /* @__PURE__ */ import_react40.default.createElement(import_react_primitive11.Primitive.button, {
3072
+ return /* @__PURE__ */ import_react40.default.createElement(import_react_primitive12.Primitive.button, {
2540
3073
  type: "button",
2541
3074
  ...closeProps,
2542
3075
  ref: forwardedRef,
2543
- onClick: (0, import_primitive2.composeEventHandlers)(props.onClick, () => context.onOpenChange(false))
3076
+ onClick: (0, import_primitive3.composeEventHandlers)(props.onClick, () => context.onOpenChange(false))
2544
3077
  });
2545
3078
  });
2546
3079
  PopoverClose.displayName = CLOSE_NAME;
2547
- var ARROW_NAME2 = "PopoverArrow";
3080
+ var ARROW_NAME3 = "PopoverArrow";
2548
3081
  var PopoverArrow = /* @__PURE__ */ (0, import_react40.forwardRef)((props, forwardedRef) => {
2549
3082
  const { __scopePopover, classNames, ...arrowProps } = props;
2550
- const popperScope = usePopperScope(__scopePopover);
3083
+ const popperScope = usePopperScope2(__scopePopover);
2551
3084
  const { tx } = useThemeContext();
2552
- return /* @__PURE__ */ import_react40.default.createElement(PopperPrimitive.Arrow, {
3085
+ return /* @__PURE__ */ import_react40.default.createElement(PopperPrimitive2.Arrow, {
2553
3086
  ...popperScope,
2554
3087
  ...arrowProps,
2555
3088
  className: tx("popover.arrow", "popover__arrow", {}, classNames),
2556
3089
  ref: forwardedRef
2557
3090
  });
2558
3091
  });
2559
- PopoverArrow.displayName = ARROW_NAME2;
3092
+ PopoverArrow.displayName = ARROW_NAME3;
2560
3093
  var PopoverViewport = /* @__PURE__ */ (0, import_react40.forwardRef)(({ classNames, asChild, constrainInline = true, constrainBlock = true, children, ...props }, forwardedRef) => {
2561
3094
  const { tx } = useThemeContext();
2562
- const Root5 = asChild ? import_react_slot12.Slot : import_react_primitive11.Primitive.div;
2563
- return /* @__PURE__ */ import_react40.default.createElement(Root5, {
3095
+ const Root7 = asChild ? import_react_slot13.Slot : import_react_primitive12.Primitive.div;
3096
+ return /* @__PURE__ */ import_react40.default.createElement(Root7, {
2564
3097
  ...props,
2565
3098
  className: tx("popover.viewport", "popover__viewport", {
2566
3099
  constrainInline,
@@ -2795,8 +3328,8 @@ var Separator4 = /* @__PURE__ */ (0, import_react45.forwardRef)(({ classNames, o
2795
3328
  });
2796
3329
  var Tag = /* @__PURE__ */ (0, import_react46.forwardRef)(({ asChild, palette = "neutral", classNames, ...props }, forwardedRef) => {
2797
3330
  const { tx } = useThemeContext();
2798
- const Root5 = asChild ? import_react_slot13.Slot : import_react_primitive12.Primitive.span;
2799
- return /* @__PURE__ */ import_react46.default.createElement(Root5, {
3331
+ const Root7 = asChild ? import_react_slot14.Slot : import_react_primitive13.Primitive.span;
3332
+ return /* @__PURE__ */ import_react46.default.createElement(Root7, {
2800
3333
  ...props,
2801
3334
  className: tx("tag.root", "dx-tag", {
2802
3335
  palette
@@ -2825,8 +3358,8 @@ var ToastRoot = /* @__PURE__ */ (0, import_react47.forwardRef)(({ classNames, ch
2825
3358
  });
2826
3359
  var ToastBody = /* @__PURE__ */ (0, import_react47.forwardRef)(({ asChild, classNames, ...props }, forwardedRef) => {
2827
3360
  const { tx } = useThemeContext();
2828
- const Root5 = asChild ? import_react_slot14.Slot : import_react_primitive13.Primitive.div;
2829
- return /* @__PURE__ */ import_react47.default.createElement(Root5, {
3361
+ const Root7 = asChild ? import_react_slot15.Slot : import_react_primitive14.Primitive.div;
3362
+ return /* @__PURE__ */ import_react47.default.createElement(Root7, {
2830
3363
  ...props,
2831
3364
  className: tx("toast.body", "toast__body", {}, classNames),
2832
3365
  ref: forwardedRef
@@ -2834,8 +3367,8 @@ var ToastBody = /* @__PURE__ */ (0, import_react47.forwardRef)(({ asChild, class
2834
3367
  });
2835
3368
  var ToastTitle = /* @__PURE__ */ (0, import_react47.forwardRef)(({ asChild, classNames, ...props }, forwardedRef) => {
2836
3369
  const { tx } = useThemeContext();
2837
- const Root5 = asChild ? import_react_slot14.Slot : import_react_toast.ToastTitle;
2838
- return /* @__PURE__ */ import_react47.default.createElement(Root5, {
3370
+ const Root7 = asChild ? import_react_slot15.Slot : import_react_toast.ToastTitle;
3371
+ return /* @__PURE__ */ import_react47.default.createElement(Root7, {
2839
3372
  ...props,
2840
3373
  className: tx("toast.title", "toast__title", {}, classNames),
2841
3374
  ref: forwardedRef
@@ -2843,8 +3376,8 @@ var ToastTitle = /* @__PURE__ */ (0, import_react47.forwardRef)(({ asChild, clas
2843
3376
  });
2844
3377
  var ToastDescription = /* @__PURE__ */ (0, import_react47.forwardRef)(({ asChild, classNames, ...props }, forwardedRef) => {
2845
3378
  const { tx } = useThemeContext();
2846
- const Root5 = asChild ? import_react_slot14.Slot : import_react_toast.ToastDescription;
2847
- return /* @__PURE__ */ import_react47.default.createElement(Root5, {
3379
+ const Root7 = asChild ? import_react_slot15.Slot : import_react_toast.ToastDescription;
3380
+ return /* @__PURE__ */ import_react47.default.createElement(Root7, {
2848
3381
  ...props,
2849
3382
  className: tx("toast.description", "toast__description", {}, classNames),
2850
3383
  ref: forwardedRef
@@ -2852,8 +3385,8 @@ var ToastDescription = /* @__PURE__ */ (0, import_react47.forwardRef)(({ asChild
2852
3385
  });
2853
3386
  var ToastActions = /* @__PURE__ */ (0, import_react47.forwardRef)(({ asChild, classNames, ...props }, forwardedRef) => {
2854
3387
  const { tx } = useThemeContext();
2855
- const Root5 = asChild ? import_react_slot14.Slot : import_react_primitive13.Primitive.div;
2856
- return /* @__PURE__ */ import_react47.default.createElement(Root5, {
3388
+ const Root7 = asChild ? import_react_slot15.Slot : import_react_primitive14.Primitive.div;
3389
+ return /* @__PURE__ */ import_react47.default.createElement(Root7, {
2857
3390
  ...props,
2858
3391
  className: tx("toast.actions", "toast__actions", {}, classNames),
2859
3392
  ref: forwardedRef
@@ -3020,6 +3553,7 @@ var Toolbar = {
3020
3553
  Treegrid,
3021
3554
  createDropdownMenuScope,
3022
3555
  createPopoverScope,
3556
+ createTooltipScope,
3023
3557
  hasIosKeyboard,
3024
3558
  initialSafeArea,
3025
3559
  isLabel,
@@ -3039,6 +3573,7 @@ var Toolbar = {
3039
3573
  useSafeArea,
3040
3574
  useSidebars,
3041
3575
  useThemeContext,
3576
+ useTooltipContext,
3042
3577
  useTranslation,
3043
3578
  useTranslationsContext,
3044
3579
  useVisualViewport,