@mastra/playground-ui 30.0.1-alpha.0 → 30.0.2-alpha.1

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,102 @@
1
1
  # @mastra/playground-ui
2
2
 
3
+ ## 30.0.2-alpha.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Pointer drags inside the `SideDialog` body now select text reliably instead of fighting with the close-swipe gesture. The popup chrome (header, edges) still closes the drawer on drag. ([#16959](https://github.com/mastra-ai/mastra/pull/16959))
8
+
9
+ **Drawer composition**
10
+
11
+ `DrawerContent` is now the shadcn-style opinionated bundle (`DrawerPortal` + `DrawerBackdrop` + `DrawerViewport` + `DrawerPopup`, with a handle bar on top/bottom-anchored drawers and a fade-out when a nested drawer covers the parent). Most drawers can now be written as:
12
+
13
+ ```tsx
14
+ <Drawer>
15
+ <DrawerTrigger>…</DrawerTrigger>
16
+ <DrawerContent>
17
+ <DrawerHeader>…</DrawerHeader>
18
+ <DrawerBody>…</DrawerBody>
19
+ </DrawerContent>
20
+ </Drawer>
21
+ ```
22
+
23
+ The low-level primitives (`DrawerPortal`, `DrawerBackdrop`, `DrawerViewport`, `DrawerPopup`) remain exported for drawers that need a custom portal target, non-modal page behavior, or chrome outside the popup (see the `SwipeToOpen` and `NonModal` Storybook examples).
24
+
25
+ Base UI's text-selectable region (the `Drawer.Content` part — pointer drags inside it select text instead of closing the drawer) is now exported as `DrawerInteractive`. Migration:
26
+
27
+ ```tsx
28
+ // Before
29
+ import { DrawerContent } from '@mastra/playground-ui';
30
+ <DrawerContent render={<div>...</div>} />;
31
+
32
+ // After
33
+ import { DrawerInteractive } from '@mastra/playground-ui';
34
+ <DrawerInteractive render={<div>...</div>} />;
35
+ ```
36
+
37
+ - Improved `@mastra/playground-ui` stability by removing legacy runtime UI dependencies without changing `SideDialog`, `MainSidebar`, or accessibility behavior. Nested `SideDialog` levels now stack consistently, so multi-level flows behave predictably. ([#16959](https://github.com/mastra-ai/mastra/pull/16959))
38
+
39
+ - Updated dependencies [[`49f8abc`](https://github.com/mastra-ai/mastra/commit/49f8abce8258e4f2f87bd326acfbdb641264a47c)]:
40
+ - @mastra/client-js@1.21.2-alpha.1
41
+ - @mastra/core@1.37.2-alpha.1
42
+ - @mastra/react@0.4.3-alpha.1
43
+
44
+ ## 30.0.2-alpha.0
45
+
46
+ ### Patch Changes
47
+
48
+ - Updated dependencies [[`07c3de7`](https://github.com/mastra-ai/mastra/commit/07c3de7f7bc418beccaea3b5e6b7f7cdda79d492)]:
49
+ - @mastra/core@1.37.2-alpha.0
50
+ - @mastra/client-js@1.21.2-alpha.0
51
+ - @mastra/react@0.4.3-alpha.0
52
+
53
+ ## 30.0.1
54
+
55
+ ### Patch Changes
56
+
57
+ - Renamed `DataList.Row` (the non-interactive grid wrapper) to `DataList.RowWrapper` for clarity, since the name `Row` was easy to confuse with the interactive row primitives (`.RowButton`, `.RowLink`, `.RowStatic`). The corresponding exported component is now `DataListRowWrapper` (was `DataListRow`). ([#17123](https://github.com/mastra-ai/mastra/pull/17123))
58
+
59
+ **Migration**
60
+
61
+ ```tsx
62
+ // Before
63
+ <DataList.Row>
64
+ <DataList.SelectCell ... />
65
+ <DataList.RowButton ...>...</DataList.RowButton>
66
+ </DataList.Row>
67
+
68
+ // After
69
+ <DataList.RowWrapper>
70
+ <DataList.SelectCell ... />
71
+ <DataList.RowButton ...>...</DataList.RowButton>
72
+ </DataList.RowWrapper>
73
+ ```
74
+
75
+ The `.RowButton`, `.RowLink`, and `.RowStatic` primitives are unchanged.
76
+
77
+ - `ContextMenu` Positioner and popup raised from `z-50` to `z-1000` with `isolate`, so the menu sits above app chrome that uses higher stacking contexts (e.g. sticky headers with `z-500`). Previously the menu would render behind such elements when opened on triggers near them. ([#17133](https://github.com/mastra-ai/mastra/pull/17133))
78
+
79
+ - Removed the EntityList and EntityListPageLayout components — they were superseded by DataList. The 9 Studio root list pages (Agents, Datasets, Experiments, MCPs, Processors, Prompts, Scorers, Tools, Workflows) now build on DataList, matching the condensed layout shared across the rest of Studio. ([#17058](https://github.com/mastra-ai/mastra/pull/17058))
80
+
81
+ **Migration**
82
+
83
+ If you were importing EntityList or EntityListPageLayout from `@mastra/playground-ui`, switch to DataList — its API is a strict superset:
84
+
85
+ ```tsx
86
+ // Before
87
+ import { EntityList, EntityListSkeleton } from '@mastra/playground-ui';
88
+
89
+ // After
90
+ import { DataList, DataListSkeleton } from '@mastra/playground-ui';
91
+ ```
92
+
93
+ The primitive names match (`.Top`, `.TopCell`, `.TopCellSmart`, `.RowLink`, `.Cell`, `.TextCell`, `.NameCell`, `.DescriptionCell`, `.NoMatch`, `.Pagination`). DataList additionally exposes `.Row`, `.RowButton`, `.RowStatic`, `.IdCell`, `.MonoCell`, `.SelectCell`, `.NextPageLoading`, and more — useful when you need selection rows or action cells outside a RowLink.
94
+
95
+ - Updated dependencies [[`21db1a4`](https://github.com/mastra-ai/mastra/commit/21db1a4b8ac058d5a4fbe38b516cc1b81e526915)]:
96
+ - @mastra/core@1.37.1
97
+ - @mastra/client-js@1.21.1
98
+ - @mastra/react@0.4.2
99
+
3
100
  ## 30.0.1-alpha.0
4
101
 
5
102
  ### Patch Changes
package/dist/index.cjs.js CHANGED
@@ -30,7 +30,7 @@ const select = require('@base-ui/react/select');
30
30
  const tabs = require('@base-ui/react/tabs');
31
31
  const drawer = require('@base-ui/react/drawer');
32
32
  const menu = require('@base-ui/react/menu');
33
- const VisuallyHidden = require('@radix-ui/react-visually-hidden');
33
+ const reactVisuallyHidden = require('@radix-ui/react-visually-hidden');
34
34
  const previewCard = require('@base-ui/react/preview-card');
35
35
  const Markdown = require('react-markdown');
36
36
  const remarkGfm = require('remark-gfm');
@@ -43,8 +43,6 @@ const slider = require('@base-ui/react/slider');
43
43
  const _switch = require('@base-ui/react/switch');
44
44
  const dateFns = require('date-fns');
45
45
  const reactDayPicker = require('react-day-picker');
46
- const reactSlot = require('@radix-ui/react-slot');
47
- const Dialog$1 = require('@radix-ui/react-dialog');
48
46
  const dnd = require('@hello-pangea/dnd');
49
47
  const merge = require('@codemirror/merge');
50
48
  const format = require('date-fns/format');
@@ -76,8 +74,6 @@ function _interopNamespaceDefault(e) {
76
74
  }
77
75
 
78
76
  const React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
79
- const VisuallyHidden__namespace = /*#__PURE__*/_interopNamespaceDefault(VisuallyHidden);
80
- const Dialog__namespace = /*#__PURE__*/_interopNamespaceDefault(Dialog$1);
81
77
 
82
78
  function r(e){var t,f,n="";if("string"==typeof e||"number"==typeof e)n+=e;else if("object"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=" "),n+=f);}else for(f in e)e[f]&&(n&&(n+=" "),n+=f);return n}function clsx(){for(var e,t,f=0,n="",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=" "),n+=t);return n}
83
79
 
@@ -6719,7 +6715,7 @@ const itemClass$1 = cn(
6719
6715
  "[&>svg]:w-[1.1em] [&>svg]:h-[1.1em] [&>svg]:opacity-60 [&:hover>svg]:opacity-100"
6720
6716
  );
6721
6717
  const popupClass$1 = cn(
6722
- "bg-surface3 text-neutral4 z-50 min-w-44 max-h-[min(20rem,var(--available-height))] overflow-x-hidden overflow-y-auto rounded-xl border border-border1 p-1 shadow-dialog origin-[var(--transform-origin)] outline-none",
6718
+ "bg-surface3 text-neutral4 z-1000 min-w-44 max-h-[min(20rem,var(--available-height))] overflow-x-hidden overflow-y-auto rounded-xl border border-border1 p-1 shadow-dialog origin-[var(--transform-origin)] outline-none",
6723
6719
  "data-[open]:animate-in data-[closed]:animate-out data-[closed]:fade-out-0 data-[open]:fade-in-0 data-[closed]:zoom-out-95 data-[open]:zoom-in-95",
6724
6720
  "data-[side=bottom]:slide-in-from-top-1 data-[side=left]:slide-in-from-right-1 data-[side=right]:slide-in-from-left-1 data-[side=top]:slide-in-from-bottom-1"
6725
6721
  );
@@ -6732,7 +6728,7 @@ const ContextMenuContent = React__namespace.forwardRef(
6732
6728
  alignOffset,
6733
6729
  side,
6734
6730
  sideOffset,
6735
- className: "z-50 outline-none",
6731
+ className: "isolate z-1000 outline-none",
6736
6732
  children: /* @__PURE__ */ jsxRuntime.jsx(
6737
6733
  contextMenu.ContextMenu.Popup,
6738
6734
  {
@@ -6853,7 +6849,7 @@ const ContextMenuSubContent = React__namespace.forwardRef(
6853
6849
  alignOffset,
6854
6850
  side,
6855
6851
  sideOffset,
6856
- className: "z-50 outline-none",
6852
+ className: "isolate z-1000 outline-none",
6857
6853
  children: /* @__PURE__ */ jsxRuntime.jsx(
6858
6854
  contextMenu.ContextMenu.Popup,
6859
6855
  {
@@ -7247,6 +7243,7 @@ const DrawerIndent = drawer.Drawer.Indent;
7247
7243
  const DrawerIndentBackground = drawer.Drawer.IndentBackground;
7248
7244
  const DrawerSwipeArea = drawer.Drawer.SwipeArea;
7249
7245
  const createDrawerHandle = drawer.Drawer.createHandle;
7246
+ const DrawerInteractive = drawer.Drawer.Content;
7250
7247
  const DrawerBackdrop = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
7251
7248
  drawer.Drawer.Backdrop,
7252
7249
  {
@@ -7280,7 +7277,6 @@ const drawerPopupBaseClass = cn(
7280
7277
  "drawer-popup group/popup relative z-50 box-border flex flex-col overflow-y-auto overscroll-contain outline-none [touch-action:auto] will-change-transform",
7281
7278
  "border-border1 bg-surface3 text-neutral5 shadow-dialog",
7282
7279
  "data-[swiping]:select-none",
7283
- // Dim layer drawn over a parent drawer while a nested drawer covers it.
7284
7280
  "after:pointer-events-none after:absolute after:inset-0 after:bg-transparent after:transition-[background-color] after:duration-[450ms] after:content-['']",
7285
7281
  "data-[nested-drawer-open]:after:bg-black/25"
7286
7282
  );
@@ -7307,29 +7303,27 @@ const nestedFadeClass = cn(
7307
7303
  "transition-opacity duration-300 ease-[cubic-bezier(0.32,0.72,0,1)] motion-reduce:duration-0",
7308
7304
  "group-data-[nested-drawer-open]/popup:opacity-0"
7309
7305
  );
7310
- const HandleBar = () => /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mx-auto my-2 h-1 w-12 shrink-0 rounded-full bg-surface5", nestedFadeClass) });
7311
- const DrawerContent = React__namespace.forwardRef(
7312
- ({ className, children, container, hideBackdrop, hideCloseButton, hideHandle, ...props }, ref) => {
7313
- const side = useDrawerSide();
7314
- const showHandle = !hideHandle && (side === "top" || side === "bottom");
7315
- return /* @__PURE__ */ jsxRuntime.jsxs(DrawerPortal, { container: container ?? void 0, children: [
7316
- !hideBackdrop && /* @__PURE__ */ jsxRuntime.jsx(DrawerBackdrop, {}),
7317
- /* @__PURE__ */ jsxRuntime.jsx(DrawerViewport, { className: hideBackdrop ? "pointer-events-none" : void 0, children: /* @__PURE__ */ jsxRuntime.jsxs(DrawerPopup, { ref, className: cn(hideBackdrop && "pointer-events-auto", className), ...props, children: [
7318
- showHandle && side === "bottom" && /* @__PURE__ */ jsxRuntime.jsx(HandleBar, {}),
7319
- /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-slot": "drawer-content", className: cn("relative flex min-h-0 flex-1 flex-col", nestedFadeClass), children: [
7320
- children,
7321
- !hideCloseButton && /* @__PURE__ */ jsxRuntime.jsx(
7322
- drawer.Drawer.Close,
7323
- {
7324
- render: /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "ghost", size: "sm", className: "absolute top-3 right-3", "aria-label": "Close", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, {}) })
7325
- }
7326
- )
7327
- ] }),
7328
- showHandle && side === "top" && /* @__PURE__ */ jsxRuntime.jsx(HandleBar, {})
7329
- ] }) })
7330
- ] });
7306
+ const DrawerHandleBar = () => /* @__PURE__ */ jsxRuntime.jsx(
7307
+ "div",
7308
+ {
7309
+ "aria-hidden": true,
7310
+ "data-slot": "drawer-handle",
7311
+ className: cn("mx-auto my-2 h-1 w-12 shrink-0 rounded-full bg-surface5", nestedFadeClass)
7331
7312
  }
7332
7313
  );
7314
+ DrawerHandleBar.displayName = "DrawerHandleBar";
7315
+ const DrawerContent = React__namespace.forwardRef(({ className, children, ...props }, ref) => {
7316
+ const side = useDrawerSide();
7317
+ const showHandle = side === "top" || side === "bottom";
7318
+ return /* @__PURE__ */ jsxRuntime.jsxs(DrawerPortal, { children: [
7319
+ /* @__PURE__ */ jsxRuntime.jsx(DrawerBackdrop, {}),
7320
+ /* @__PURE__ */ jsxRuntime.jsx(DrawerViewport, { children: /* @__PURE__ */ jsxRuntime.jsxs(DrawerPopup, { ref, className, ...props, children: [
7321
+ showHandle && side === "bottom" && /* @__PURE__ */ jsxRuntime.jsx(DrawerHandleBar, {}),
7322
+ /* @__PURE__ */ jsxRuntime.jsx("div", { "data-slot": "drawer-content", className: cn("relative flex min-h-0 flex-1 flex-col", nestedFadeClass), children }),
7323
+ showHandle && side === "top" && /* @__PURE__ */ jsxRuntime.jsx(DrawerHandleBar, {})
7324
+ ] }) })
7325
+ ] });
7326
+ });
7333
7327
  DrawerContent.displayName = "DrawerContent";
7334
7328
  const DrawerHeader = ({ className, ...props }) => /* @__PURE__ */ jsxRuntime.jsx("div", { "data-slot": "drawer-header", className: cn("flex flex-col gap-0.5 px-4 py-3 text-left", className), ...props });
7335
7329
  DrawerHeader.displayName = "DrawerHeader";
@@ -7746,7 +7740,7 @@ function TextFieldBlock({
7746
7740
  ...props
7747
7741
  }) {
7748
7742
  return /* @__PURE__ */ jsxRuntime.jsxs(FieldBlock.Layout, { layout, labelColumnWidth, className, children: [
7749
- layout === "horizontal" ? /* @__PURE__ */ jsxRuntime.jsx(FieldBlock.Column, { children: /* @__PURE__ */ jsxRuntime.jsx(FieldBlock.Label, { name, required, size: labelSize || "bigger", children: labelIsHidden ? /* @__PURE__ */ jsxRuntime.jsx(VisuallyHidden.VisuallyHidden, { children: label }) : label }) }) : null,
7743
+ layout === "horizontal" ? /* @__PURE__ */ jsxRuntime.jsx(FieldBlock.Column, { children: /* @__PURE__ */ jsxRuntime.jsx(FieldBlock.Label, { name, required, size: labelSize || "bigger", children: labelIsHidden ? /* @__PURE__ */ jsxRuntime.jsx(reactVisuallyHidden.VisuallyHidden, { children: label }) : label }) }) : null,
7750
7744
  /* @__PURE__ */ jsxRuntime.jsxs(FieldBlock.Column, { children: [
7751
7745
  !labelIsHidden && layout === "vertical" ? /* @__PURE__ */ jsxRuntime.jsx(FieldBlock.Label, { name, required, size: labelSize || "default", children: label }) : null,
7752
7746
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -7808,7 +7802,7 @@ function SearchFieldBlock({
7808
7802
  ] });
7809
7803
  }
7810
7804
  return /* @__PURE__ */ jsxRuntime.jsxs(FieldBlock.Layout, { layout, className, children: [
7811
- layout === "horizontal" ? /* @__PURE__ */ jsxRuntime.jsx(FieldBlock.Column, { children: /* @__PURE__ */ jsxRuntime.jsx(FieldBlock.Label, { name, required, children: labelIsHidden ? /* @__PURE__ */ jsxRuntime.jsx(VisuallyHidden.VisuallyHidden, { children: label }) : label }) }) : null,
7805
+ layout === "horizontal" ? /* @__PURE__ */ jsxRuntime.jsx(FieldBlock.Column, { children: /* @__PURE__ */ jsxRuntime.jsx(FieldBlock.Label, { name, required, children: labelIsHidden ? /* @__PURE__ */ jsxRuntime.jsx(reactVisuallyHidden.VisuallyHidden, { children: label }) : label }) }) : null,
7812
7806
  /* @__PURE__ */ jsxRuntime.jsxs(FieldBlock.Column, { children: [
7813
7807
  layout === "vertical" && label && !labelIsHidden ? /* @__PURE__ */ jsxRuntime.jsx(FieldBlock.Label, { name, required, children: label }) : null,
7814
7808
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative group", children: [
@@ -7886,7 +7880,7 @@ function SelectFieldBlock({
7886
7880
  className
7887
7881
  }) {
7888
7882
  return /* @__PURE__ */ jsxRuntime.jsxs(FieldBlock.Layout, { layout, labelColumnWidth, className, children: [
7889
- layout === "horizontal" ? /* @__PURE__ */ jsxRuntime.jsx(FieldBlock.Column, { children: /* @__PURE__ */ jsxRuntime.jsx(FieldBlock.Label, { name, required, children: labelIsHidden ? /* @__PURE__ */ jsxRuntime.jsx(VisuallyHidden.VisuallyHidden, { children: label }) : label }) }) : null,
7883
+ layout === "horizontal" ? /* @__PURE__ */ jsxRuntime.jsx(FieldBlock.Column, { children: /* @__PURE__ */ jsxRuntime.jsx(FieldBlock.Label, { name, required, children: labelIsHidden ? /* @__PURE__ */ jsxRuntime.jsx(reactVisuallyHidden.VisuallyHidden, { children: label }) : label }) }) : null,
7890
7884
  /* @__PURE__ */ jsxRuntime.jsxs(FieldBlock.Column, { children: [
7891
7885
  layout === "vertical" && label && !labelIsHidden ? /* @__PURE__ */ jsxRuntime.jsx(FieldBlock.Label, { name, required, children: label }) : null,
7892
7886
  /* @__PURE__ */ jsxRuntime.jsxs(
@@ -10824,7 +10818,7 @@ const JSONSchemaForm = {
10824
10818
 
10825
10819
  function KeyValueList({ data, className, labelsAreHidden, isLoading, LinkComponent: Link }) {
10826
10820
  const LabelWrapper = ({ children }) => {
10827
- return labelsAreHidden ? /* @__PURE__ */ jsxRuntime.jsx(VisuallyHidden.VisuallyHidden, { children }) : children;
10821
+ return labelsAreHidden ? /* @__PURE__ */ jsxRuntime.jsx(reactVisuallyHidden.VisuallyHidden, { children }) : children;
10828
10822
  };
10829
10823
  if (!data || data.length === 0) {
10830
10824
  return null;
@@ -11194,7 +11188,7 @@ function MainSidebarNavHeader({
11194
11188
  ) : children
11195
11189
  }
11196
11190
  ) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
11197
- /* @__PURE__ */ jsxRuntime.jsx(VisuallyHidden.VisuallyHidden, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx("header", { ...props, children }) }),
11191
+ /* @__PURE__ */ jsxRuntime.jsx(reactVisuallyHidden.VisuallyHidden, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx("header", { ...props, children }) }),
11198
11192
  /* @__PURE__ */ jsxRuntime.jsx("div", { "aria-hidden": "true", className: "mx-3 h-px flex-1 bg-border1" })
11199
11193
  ] }) });
11200
11194
  }
@@ -11203,7 +11197,7 @@ function MainSidebarNavLabel({ children, className, state: stateProp, ...rest })
11203
11197
  const ctx = useMaybeSidebar();
11204
11198
  const state = stateProp ?? ctx?.state ?? "default";
11205
11199
  if (state === "collapsed") {
11206
- return /* @__PURE__ */ jsxRuntime.jsx(VisuallyHidden.VisuallyHidden, { children });
11200
+ return /* @__PURE__ */ jsxRuntime.jsx(reactVisuallyHidden.VisuallyHidden, { children });
11207
11201
  }
11208
11202
  return /* @__PURE__ */ jsxRuntime.jsx("span", { ...rest, className: cn("min-w-0 flex-1 truncate text-left", className), children });
11209
11203
  }
@@ -11247,7 +11241,14 @@ function MainSidebarNavLink({
11247
11241
  });
11248
11242
  let interactiveEl = null;
11249
11243
  if (asChild) {
11250
- interactiveEl = /* @__PURE__ */ jsxRuntime.jsx(reactSlot.Slot, { className: itemClassName, children });
11244
+ if (!React.isValidElement(children)) {
11245
+ throw new Error(
11246
+ "MainSidebarNavLink requires a valid React element child when `asChild` is true so it can apply `SlottedNavChildProps` and merge `itemClassName`."
11247
+ );
11248
+ }
11249
+ interactiveEl = React.cloneElement(children, {
11250
+ className: cn(itemClassName, children.props.className)
11251
+ });
11251
11252
  } else if (link) {
11252
11253
  interactiveEl = /* @__PURE__ */ jsxRuntime.jsxs(Link, { href: link.url, ...linkParams, className: itemClassName, children: [
11253
11254
  link.icon,
@@ -11426,32 +11427,32 @@ function MainSidebarRoot({ children, className }) {
11426
11427
  [setOpenMobile]
11427
11428
  );
11428
11429
  if (isMobile) {
11429
- return /* @__PURE__ */ jsxRuntime.jsx(Dialog__namespace.Root, { open: openMobile, onOpenChange: setOpenMobile, children: /* @__PURE__ */ jsxRuntime.jsxs(Dialog__namespace.Portal, { children: [
11430
+ return /* @__PURE__ */ jsxRuntime.jsx(dialog.Dialog.Root, { open: openMobile, onOpenChange: setOpenMobile, children: /* @__PURE__ */ jsxRuntime.jsxs(dialog.Dialog.Portal, { children: [
11430
11431
  /* @__PURE__ */ jsxRuntime.jsx(
11431
- Dialog__namespace.Overlay,
11432
+ dialog.Dialog.Backdrop,
11432
11433
  {
11433
11434
  className: cn(
11434
11435
  "fixed inset-0 z-40 bg-overlay backdrop-blur-sm",
11435
- "data-[state=open]:animate-in data-[state=closed]:animate-out",
11436
- "data-[state=open]:fade-in-0 data-[state=closed]:fade-out-0"
11436
+ "opacity-100 transition-opacity duration-200 ease-out motion-reduce:transition-none",
11437
+ "data-[starting-style]:opacity-0 data-[ending-style]:opacity-0 data-[ending-style]:duration-150 data-[ending-style]:ease-in"
11437
11438
  )
11438
11439
  }
11439
11440
  ),
11440
11441
  /* @__PURE__ */ jsxRuntime.jsxs(
11441
- Dialog__namespace.Content,
11442
+ dialog.Dialog.Popup,
11442
11443
  {
11443
11444
  className: cn(
11444
11445
  "fixed inset-y-0 left-0 z-50 flex h-full flex-col",
11445
11446
  "w-3/4 max-w-(--sidebar-width-mobile)",
11446
11447
  "bg-surface2 shadow-xl",
11447
- "data-[state=open]:animate-in data-[state=closed]:animate-out",
11448
- "data-[state=open]:slide-in-from-left data-[state=closed]:slide-out-to-left",
11448
+ "data-[open]:animate-in data-[closed]:animate-out",
11449
+ "data-[open]:slide-in-from-left data-[closed]:slide-out-to-left",
11449
11450
  "duration-200",
11450
11451
  className
11451
11452
  ),
11452
11453
  children: [
11453
- /* @__PURE__ */ jsxRuntime.jsx(VisuallyHidden.VisuallyHidden, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(Dialog__namespace.Title, { children: "Navigation" }) }),
11454
- /* @__PURE__ */ jsxRuntime.jsx(VisuallyHidden.VisuallyHidden, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(Dialog__namespace.Description, { children: "Primary site navigation drawer" }) }),
11454
+ /* @__PURE__ */ jsxRuntime.jsx(reactVisuallyHidden.VisuallyHidden, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(dialog.Dialog.Title, { children: "Navigation" }) }),
11455
+ /* @__PURE__ */ jsxRuntime.jsx(reactVisuallyHidden.VisuallyHidden, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(dialog.Dialog.Description, { children: "Primary site navigation drawer" }) }),
11455
11456
  /* @__PURE__ */ jsxRuntime.jsx("div", { onClick: closeOnAnchor, className: "flex flex-col h-full min-h-0 px-4 py-2 overflow-hidden", children })
11456
11457
  ]
11457
11458
  }
@@ -11911,7 +11912,12 @@ function containsInnerNewline$2(obj) {
11911
11912
  }
11912
11913
 
11913
11914
  function SideDialogContent({ children, className }) {
11914
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("p-6 pl-9 overflow-y-scroll grid gap-6 content-start pb-8", className), children });
11915
+ return /* @__PURE__ */ jsxRuntime.jsx(
11916
+ DrawerInteractive,
11917
+ {
11918
+ render: /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("p-6 pl-9 overflow-y-scroll grid gap-6 content-start pb-8", className), children })
11919
+ }
11920
+ );
11915
11921
  }
11916
11922
 
11917
11923
  function SideDialogHeader({ children, className }) {
@@ -11973,62 +11979,65 @@ function SideDialogRoot({
11973
11979
  className
11974
11980
  }) {
11975
11981
  const isConfirmation = variant === "confirmation";
11976
- return /* @__PURE__ */ jsxRuntime.jsx(Dialog__namespace.Root, { open: isOpen, onOpenChange: onClose, children: /* @__PURE__ */ jsxRuntime.jsxs(Dialog__namespace.Portal, { children: [
11977
- !isConfirmation && /* @__PURE__ */ jsxRuntime.jsx(
11978
- Dialog__namespace.Overlay,
11979
- {
11980
- className: cn(
11981
- "bg-overlay backdrop-blur-sm top-0 bottom-0 right-0 left-0 fixed z-50",
11982
- "data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:duration-200",
11983
- "data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:duration-150"
11984
- )
11985
- }
11986
- ),
11987
- /* @__PURE__ */ jsxRuntime.jsxs(
11988
- Dialog__namespace.Content,
11989
- {
11990
- className: cn(
11991
- "fixed top-0 bottom-0 right-0 border-l border-border2 z-50 bg-surface2",
11992
- "data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:slide-out-to-right-1/4 data-[state=closed]:duration-200",
11982
+ return /* @__PURE__ */ jsxRuntime.jsx(
11983
+ Drawer,
11984
+ {
11985
+ side: "right",
11986
+ open: isOpen,
11987
+ onOpenChange: (open) => {
11988
+ if (!open) onClose?.();
11989
+ },
11990
+ children: /* @__PURE__ */ jsxRuntime.jsxs(DrawerPortal, { children: [
11991
+ !isConfirmation && /* @__PURE__ */ jsxRuntime.jsx(DrawerBackdrop, { className: "backdrop-blur-sm" }),
11992
+ /* @__PURE__ */ jsxRuntime.jsx(DrawerViewport, { className: isConfirmation ? "pointer-events-none" : void 0, children: /* @__PURE__ */ jsxRuntime.jsxs(
11993
+ DrawerPopup,
11993
11994
  {
11994
- "w-[75vw] 2xl:w-[65vw] 4xl:w-[55vw]": level === 1,
11995
- "w-[70vw] 2xl:w-[59vw] 4xl:w-[48vw]": level === 2,
11996
- "w-[65vw] 2xl:w-[53vw] 4xl:w-[41vw]": level === 3,
11997
- "data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:slide-in-from-right-1/4 data-[state=open]:duration-300 shadow-dialog": !isConfirmation,
11998
- "bg-surface2/70 backdrop-blur-sm": isConfirmation
11999
- },
12000
- className
12001
- ),
12002
- children: [
12003
- /* @__PURE__ */ jsxRuntime.jsxs(VisuallyHidden__namespace.Root, { children: [
12004
- /* @__PURE__ */ jsxRuntime.jsx(Dialog__namespace.Title, { children: dialogTitle }),
12005
- /* @__PURE__ */ jsxRuntime.jsx(Dialog__namespace.Description, { children: dialogDescription })
12006
- ] }),
12007
- !isConfirmation && /* @__PURE__ */ jsxRuntime.jsx(Dialog__namespace.Close, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
12008
- "button",
12009
- {
12010
- className: cn(
12011
- "flex appearance-none items-center justify-center rounded-bl-lg h-14 w-14 absolute top-0 -left-14 bg-surface2 text-neutral3 border-l border-b border-border2",
12012
- transitions.all,
12013
- "hover:bg-surface4 hover:text-neutral5"
11995
+ className: cn(
11996
+ "max-w-none rounded-none border-y-0 border-r-0 border-l border-border2 bg-surface2 overflow-visible",
11997
+ {
11998
+ "w-[75vw] 2xl:w-[65vw] 4xl:w-[55vw]": level === 1,
11999
+ "w-[70vw] 2xl:w-[59vw] 4xl:w-[48vw]": level === 2,
12000
+ "w-[65vw] 2xl:w-[53vw] 4xl:w-[41vw]": level === 3,
12001
+ "pointer-events-auto bg-surface2/70 backdrop-blur-sm shadow-none": isConfirmation
12002
+ },
12003
+ className
12004
+ ),
12005
+ children: [
12006
+ /* @__PURE__ */ jsxRuntime.jsx(DrawerTitle, { className: "sr-only", children: dialogTitle }),
12007
+ /* @__PURE__ */ jsxRuntime.jsx(DrawerDescription, { className: "sr-only", children: dialogDescription }),
12008
+ !isConfirmation && /* @__PURE__ */ jsxRuntime.jsx(
12009
+ DrawerClose,
12010
+ {
12011
+ render: /* @__PURE__ */ jsxRuntime.jsx(
12012
+ "button",
12013
+ {
12014
+ type: "button",
12015
+ className: cn(
12016
+ "flex appearance-none items-center justify-center rounded-bl-lg h-14 w-14 absolute top-0 -left-14 bg-surface2 text-neutral3 border-l border-b border-border2",
12017
+ transitions.all,
12018
+ "hover:bg-surface4 hover:text-neutral5"
12019
+ ),
12020
+ "aria-label": "Close",
12021
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronsRightIcon, {})
12022
+ }
12023
+ )
12024
+ }
12014
12025
  ),
12015
- "aria-label": "Close",
12016
- children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronsRightIcon, {})
12017
- }
12018
- ) }),
12019
- /* @__PURE__ */ jsxRuntime.jsx(
12020
- "div",
12021
- {
12022
- className: cn("grid h-full", {
12023
- "grid-rows-[auto_1fr]": !isConfirmation
12024
- }),
12025
- children
12026
- }
12027
- )
12028
- ]
12029
- }
12030
- )
12031
- ] }) });
12026
+ /* @__PURE__ */ jsxRuntime.jsx(
12027
+ "div",
12028
+ {
12029
+ className: cn("grid h-full", {
12030
+ "grid-rows-[auto_1fr]": !isConfirmation
12031
+ }),
12032
+ children
12033
+ }
12034
+ )
12035
+ ]
12036
+ }
12037
+ ) })
12038
+ ] })
12039
+ }
12040
+ );
12032
12041
  }
12033
12042
 
12034
12043
  function SideDialogTop({ children, className }) {
@@ -13516,11 +13525,6 @@ const dataListRowStyles = [
13516
13525
  ...dataListRowOuterStyles
13517
13526
  ];
13518
13527
 
13519
- const DataListRow = React.forwardRef(({ children, className, ...rest }, ref) => {
13520
- return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: cn("grid grid-cols-subgrid gap-0 mx-1", ...dataListRowOuterStyles, className), ...rest, children });
13521
- });
13522
- DataListRow.displayName = "DataListRow";
13523
-
13524
13528
  const DataListRowButton = React.forwardRef(
13525
13529
  ({ children, className, type = "button", flushLeft, flushRight, colStart, colEnd, featured, style, ...rest }, ref) => {
13526
13530
  const hasColumnOverride = colStart !== void 0 || colEnd !== void 0;
@@ -13603,6 +13607,21 @@ const DataListRowStatic = React.forwardRef(
13603
13607
  );
13604
13608
  DataListRowStatic.displayName = "DataListRowStatic";
13605
13609
 
13610
+ const DataListRowWrapper = React.forwardRef(
13611
+ ({ children, className, ...rest }, ref) => {
13612
+ return /* @__PURE__ */ jsxRuntime.jsx(
13613
+ "div",
13614
+ {
13615
+ ref,
13616
+ className: cn("grid grid-cols-subgrid gap-0 mx-1", ...dataListRowOuterStyles, className),
13617
+ ...rest,
13618
+ children
13619
+ }
13620
+ );
13621
+ }
13622
+ );
13623
+ DataListRowWrapper.displayName = "DataListRowWrapper";
13624
+
13606
13625
  function DataListSpacer({ height }) {
13607
13626
  if (height <= 0) return null;
13608
13627
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-span-full", style: { height } });
@@ -13734,7 +13753,7 @@ const DataList = Object.assign(DataListRoot, {
13734
13753
  TopCell: DataListTopCell,
13735
13754
  TopCellWithTooltip: DataListTopCellWithTooltip,
13736
13755
  TopCellSmart: DataListTopCellSmart,
13737
- Row: DataListRow,
13756
+ RowWrapper: DataListRowWrapper,
13738
13757
  RowButton: DataListRowButton,
13739
13758
  RowLink: DataListRowLink,
13740
13759
  RowStatic: DataListRowStatic,
@@ -13943,7 +13962,7 @@ const LogsDataList = Object.assign(DataListRoot, {
13943
13962
  TopCell: DataListTopCell,
13944
13963
  TopCellWithTooltip: DataListTopCellWithTooltip,
13945
13964
  TopCellSmart: DataListTopCellSmart,
13946
- Row: DataListRow,
13965
+ RowWrapper: DataListRowWrapper,
13947
13966
  RowButton: DataListRowButton,
13948
13967
  RowLink: DataListRowLink,
13949
13968
  Spacer: DataListSpacer,
@@ -22217,6 +22236,7 @@ exports.DrawerFooter = DrawerFooter;
22217
22236
  exports.DrawerHeader = DrawerHeader;
22218
22237
  exports.DrawerIndent = DrawerIndent;
22219
22238
  exports.DrawerIndentBackground = DrawerIndentBackground;
22239
+ exports.DrawerInteractive = DrawerInteractive;
22220
22240
  exports.DrawerPopup = DrawerPopup;
22221
22241
  exports.DrawerPortal = DrawerPortal;
22222
22242
  exports.DrawerProvider = DrawerProvider;
@@ -22584,6 +22604,7 @@ exports.useAutoscroll = useAutoscroll;
22584
22604
  exports.useBranch = useBranch;
22585
22605
  exports.useCodemirrorTheme = useCodemirrorTheme$3;
22586
22606
  exports.useCopyToClipboard = useCopyToClipboard;
22607
+ exports.useDrawerSide = useDrawerSide;
22587
22608
  exports.useDrilldown = useDrilldown;
22588
22609
  exports.useEntityNames = useEntityNames;
22589
22610
  exports.useEnvironments = useEnvironments;