@mastra/playground-ui 30.0.1 → 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,55 @@
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
+
3
53
  ## 30.0.1
4
54
 
5
55
  ### 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
 
@@ -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 }) {
@@ -22227,6 +22236,7 @@ exports.DrawerFooter = DrawerFooter;
22227
22236
  exports.DrawerHeader = DrawerHeader;
22228
22237
  exports.DrawerIndent = DrawerIndent;
22229
22238
  exports.DrawerIndentBackground = DrawerIndentBackground;
22239
+ exports.DrawerInteractive = DrawerInteractive;
22230
22240
  exports.DrawerPopup = DrawerPopup;
22231
22241
  exports.DrawerPortal = DrawerPortal;
22232
22242
  exports.DrawerProvider = DrawerProvider;
@@ -22594,6 +22604,7 @@ exports.useAutoscroll = useAutoscroll;
22594
22604
  exports.useBranch = useBranch;
22595
22605
  exports.useCodemirrorTheme = useCodemirrorTheme$3;
22596
22606
  exports.useCopyToClipboard = useCopyToClipboard;
22607
+ exports.useDrawerSide = useDrawerSide;
22597
22608
  exports.useDrilldown = useDrilldown;
22598
22609
  exports.useEntityNames = useEntityNames;
22599
22610
  exports.useEnvironments = useEnvironments;