@mastra/playground-ui 55.0.0 → 55.1.0-alpha.0

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 (64) hide show
  1. package/dist/components/DataPanel.cjs.js +1 -1
  2. package/dist/components/DataPanel.es.js +1 -1
  3. package/dist/components/MainSidebar.cjs.js +26 -737
  4. package/dist/components/MainSidebar.cjs.js.map +1 -1
  5. package/dist/components/MainSidebar.es.js +4 -714
  6. package/dist/components/MainSidebar.es.js.map +1 -1
  7. package/dist/{data-panel-tSErqolu.cjs → data-panel-Bzws5n5c.cjs} +25 -8
  8. package/dist/data-panel-Bzws5n5c.cjs.map +1 -0
  9. package/dist/{data-panel-5iuux0r_.js → data-panel-C-H4tAEw.js} +25 -8
  10. package/dist/data-panel-C-H4tAEw.js.map +1 -0
  11. package/dist/domains/traces/components/span-data-panel-view.cjs.js +3 -2
  12. package/dist/domains/traces/components/span-data-panel-view.cjs.js.map +1 -1
  13. package/dist/domains/traces/components/span-data-panel-view.es.js +3 -2
  14. package/dist/domains/traces/components/span-data-panel-view.es.js.map +1 -1
  15. package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +1 -1
  16. package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +1 -1
  17. package/dist/domains/traces/components/trace-data-panel-view.cjs.js +12 -11
  18. package/dist/domains/traces/components/trace-data-panel-view.cjs.js.map +1 -1
  19. package/dist/domains/traces/components/trace-data-panel-view.es.js +13 -12
  20. package/dist/domains/traces/components/trace-data-panel-view.es.js.map +1 -1
  21. package/dist/domains/traces/components/trace-span-timeline.cjs.js +1 -1
  22. package/dist/domains/traces/components/trace-span-timeline.cjs.js.map +1 -1
  23. package/dist/domains/traces/components/trace-span-timeline.es.js +1 -1
  24. package/dist/domains/traces/components/trace-span-timeline.es.js.map +1 -1
  25. package/dist/domains/traces/components/trace-span-tree.cjs.js +1 -1
  26. package/dist/domains/traces/components/trace-span-tree.cjs.js.map +1 -1
  27. package/dist/domains/traces/components/trace-span-tree.es.js +1 -1
  28. package/dist/domains/traces/components/trace-span-tree.es.js.map +1 -1
  29. package/dist/main-sidebar-link-active-BK4RR4Az.js +719 -0
  30. package/dist/main-sidebar-link-active-BK4RR4Az.js.map +1 -0
  31. package/dist/main-sidebar-link-active-DLGDYeTJ.cjs +736 -0
  32. package/dist/main-sidebar-link-active-DLGDYeTJ.cjs.map +1 -0
  33. package/dist/new/sidebar.cjs.js +457 -0
  34. package/dist/new/sidebar.cjs.js.map +1 -0
  35. package/dist/new/sidebar.d.ts +2 -0
  36. package/dist/new/sidebar.es.js +440 -0
  37. package/dist/new/sidebar.es.js.map +1 -0
  38. package/dist/src/ds/components/DataPanel/data-panel-close-button.d.ts +3 -1
  39. package/dist/src/ds/components/DataPanel/data-panel-content.d.ts +3 -1
  40. package/dist/src/ds/components/DataPanel/data-panel-next-prev-nav.d.ts +3 -1
  41. package/dist/src/ds/new/sidebar/index.d.ts +12 -0
  42. package/dist/src/ds/new/sidebar/sidebar-new-brand.d.ts +6 -0
  43. package/dist/src/ds/new/sidebar/sidebar-new-footer.d.ts +3 -0
  44. package/dist/src/ds/new/sidebar/sidebar-new-header.d.ts +3 -0
  45. package/dist/src/ds/new/sidebar/sidebar-new-meter.d.ts +34 -0
  46. package/dist/src/ds/new/sidebar/sidebar-new-nav-header.d.ts +11 -0
  47. package/dist/src/ds/new/sidebar/sidebar-new-nav-stack-context.d.ts +8 -0
  48. package/dist/src/ds/new/sidebar/sidebar-new-nav-stack-page-classes.d.ts +1 -0
  49. package/dist/src/ds/new/sidebar/sidebar-new-nav-stack-root-view.d.ts +3 -0
  50. package/dist/src/ds/new/sidebar/sidebar-new-nav-stack-root.d.ts +7 -0
  51. package/dist/src/ds/new/sidebar/sidebar-new-nav-stack-view.d.ts +9 -0
  52. package/dist/src/ds/new/sidebar/sidebar-new-nav-stack.d.ts +10 -0
  53. package/dist/src/ds/new/sidebar/sidebar-new-nav.d.ts +3 -0
  54. package/dist/src/ds/new/sidebar/sidebar-new-root.d.ts +5 -0
  55. package/dist/src/ds/new/sidebar/sidebar-new-section-link.d.ts +8 -0
  56. package/dist/src/ds/new/sidebar/sidebar-new-sections.d.ts +8 -0
  57. package/dist/src/ds/new/sidebar/sidebar-new-trigger.d.ts +3 -0
  58. package/dist/src/ds/new/sidebar/sidebar-new.d.ts +36 -0
  59. package/dist/src/ds/new/sidebar/sidebar-new.stories.d.ts +6 -0
  60. package/dist/style.css +118 -0
  61. package/package.json +13 -7
  62. package/theme.css +48 -0
  63. package/dist/data-panel-5iuux0r_.js.map +0 -1
  64. package/dist/data-panel-tSErqolu.cjs.map +0 -1
@@ -2,5 +2,7 @@ import { ReactNode, Ref } from 'react';
2
2
  export interface DataPanelContentProps {
3
3
  children: ReactNode;
4
4
  ref?: Ref<HTMLDivElement>;
5
+ /** Layout overrides (e.g. padding) for the scroll container. */
6
+ className?: string;
5
7
  }
6
- export declare function DataPanelContent({ children, ref }: DataPanelContentProps): import("react").JSX.Element;
8
+ export declare function DataPanelContent({ children, ref, className }: DataPanelContentProps): import("react").JSX.Element;
@@ -1,7 +1,9 @@
1
+ import { ButtonProps } from '../Button';
1
2
  export interface DataPanelNextPrevNavProps {
2
3
  onPrevious?: () => void;
3
4
  onNext?: () => void;
4
5
  previousLabel?: string;
5
6
  nextLabel?: string;
7
+ variant?: ButtonProps['variant'];
6
8
  }
7
- export declare function DataPanelNextPrevNav({ onPrevious, onNext, previousLabel, nextLabel, }: DataPanelNextPrevNavProps): import("react").JSX.Element;
9
+ export declare function DataPanelNextPrevNav({ onPrevious, onNext, previousLabel, nextLabel, variant, }: DataPanelNextPrevNavProps): import("react").JSX.Element;
@@ -0,0 +1,12 @@
1
+ export { SidebarNew } from './sidebar-new';
2
+ export { SidebarNewBrand, type SidebarNewBrandProps } from './sidebar-new-brand';
3
+ export { SidebarNewFooter, type SidebarNewFooterProps } from './sidebar-new-footer';
4
+ export { SidebarNewHeader, type SidebarNewHeaderProps } from './sidebar-new-header';
5
+ export { SidebarNewMeter, type SidebarNewMeterProps, type SidebarNewMeterTone } from './sidebar-new-meter';
6
+ export { SidebarNewNav, type SidebarNewNavProps } from './sidebar-new-nav';
7
+ export { SidebarNewNavHeader, type SidebarNewNavHeaderProps } from './sidebar-new-nav-header';
8
+ export { SidebarNewNavStack, type SidebarNewNavStackProps, type SidebarNewNavStackRootViewProps, type SidebarNewNavStackViewProps, } from './sidebar-new-nav-stack';
9
+ export { SidebarNewRoot, type SidebarNewRootProps } from './sidebar-new-root';
10
+ export { SidebarNewSections, type SidebarNewSectionsProps } from './sidebar-new-sections';
11
+ export { SidebarNewTrigger, type SidebarNewTriggerProps } from './sidebar-new-trigger';
12
+ export { getIsLinkActive, MainSidebarProvider as SidebarNewProvider, type MainSidebarProviderProps as SidebarNewProviderProps, navItemClasses, type MainSidebarNavItemSize as SidebarNewNavItemSize, type NavLink as SidebarNewLink, type NavSection as SidebarNewSection, useMainSidebar as useSidebarNew, } from '../../components/MainSidebar/main-sidebar';
@@ -0,0 +1,6 @@
1
+ import { ComponentPropsWithoutRef, ReactNode } from 'react';
2
+ export type SidebarNewBrandProps = Omit<ComponentPropsWithoutRef<'div'>, 'title'> & {
3
+ logo?: ReactNode;
4
+ title: ReactNode;
5
+ };
6
+ export declare function SidebarNewBrand({ logo, title, className, ...props }: SidebarNewBrandProps): import("react").JSX.Element;
@@ -0,0 +1,3 @@
1
+ import { ComponentPropsWithoutRef } from 'react';
2
+ export type SidebarNewFooterProps = ComponentPropsWithoutRef<'footer'>;
3
+ export declare function SidebarNewFooter({ className, children, ...props }: SidebarNewFooterProps): import("react").JSX.Element;
@@ -0,0 +1,3 @@
1
+ import { ComponentPropsWithoutRef } from 'react';
2
+ export type SidebarNewHeaderProps = ComponentPropsWithoutRef<'header'>;
3
+ export declare function SidebarNewHeader({ className, children, ...props }: SidebarNewHeaderProps): import("react").JSX.Element;
@@ -0,0 +1,34 @@
1
+ import { ComponentPropsWithoutRef, ReactNode } from 'react';
2
+ import { SidebarState } from '../../components/MainSidebar/main-sidebar-context';
3
+ import { LinkComponent } from '../../types/link-component';
4
+ export type SidebarNewMeterTone = 'neutral' | 'warning' | 'danger';
5
+ interface SidebarNewMeterBaseProps extends Omit<ComponentPropsWithoutRef<'div'>, 'children'> {
6
+ /** Short name for the measured thing, e.g. `Credits`. Hidden on a collapsed rail. */
7
+ label: ReactNode;
8
+ /** The figure itself. Rendered with tabular figures so it cannot shift width. */
9
+ value: ReactNode;
10
+ /** One line under the value. Truncates; the card height never changes. */
11
+ status?: ReactNode;
12
+ /** Drives the bloom hue. `neutral` is the only tone that carries grain. */
13
+ tone?: SidebarNewMeterTone;
14
+ /** Leading icon beside the label, shown only when the tone is not neutral. */
15
+ icon?: ReactNode;
16
+ /** Trailing control beside the label, kept outside the card link. */
17
+ action?: ReactNode;
18
+ /** Overrides the Provider-level LinkComponent. Defaults to `<a>` when neither is set. */
19
+ LinkComponent?: LinkComponent;
20
+ /** Defaults to the Provider's state; pass to override. */
21
+ state?: SidebarState;
22
+ }
23
+ type SidebarNewMeterLinkProps = {
24
+ /** Makes the whole card navigate. The link covers the card as an overlay. */
25
+ href: string;
26
+ /** Accessible name for the card link. Required whenever `href` is set. */
27
+ linkLabel: string;
28
+ } | {
29
+ href?: never;
30
+ linkLabel?: never;
31
+ };
32
+ export type SidebarNewMeterProps = SidebarNewMeterBaseProps & SidebarNewMeterLinkProps;
33
+ export declare const SidebarNewMeter: import('react').ForwardRefExoticComponent<SidebarNewMeterProps & import('react').RefAttributes<HTMLDivElement>>;
34
+ export {};
@@ -0,0 +1,11 @@
1
+ import { ComponentPropsWithoutRef } from 'react';
2
+ import { SidebarState } from '../../components/MainSidebar/main-sidebar-context';
3
+ import { LinkComponent } from '../../types/link-component';
4
+ export type SidebarNewNavHeaderProps = Omit<ComponentPropsWithoutRef<'header'>, 'children'> & {
5
+ children?: React.ReactNode;
6
+ state?: SidebarState;
7
+ href?: string;
8
+ isActive?: boolean;
9
+ LinkComponent?: LinkComponent;
10
+ };
11
+ export declare function SidebarNewNavHeader({ children, className, state: stateProp, href, isActive, LinkComponent: LinkProp, ...props }: SidebarNewNavHeaderProps): import("react").JSX.Element;
@@ -0,0 +1,8 @@
1
+ import { default as React } from 'react';
2
+ export type SidebarNewNavStackContextValue = {
3
+ activeValue: string;
4
+ rootValue: string;
5
+ closeView: (returnFocusRef?: React.RefObject<HTMLElement | null>) => void;
6
+ };
7
+ export declare const SidebarNewNavStackContext: React.Context<SidebarNewNavStackContextValue | undefined>;
8
+ export declare function useSidebarNewNavStack(): SidebarNewNavStackContextValue;
@@ -0,0 +1 @@
1
+ export declare function sidebarNewNavStackPageClasses(active: boolean, page: 'root' | 'view', className?: string): string;
@@ -0,0 +1,3 @@
1
+ import { ComponentPropsWithoutRef } from 'react';
2
+ export type SidebarNewNavStackRootViewProps = ComponentPropsWithoutRef<'div'>;
3
+ export declare function SidebarNewNavStackRootView({ children, className, ...props }: SidebarNewNavStackRootViewProps): import("react").JSX.Element;
@@ -0,0 +1,7 @@
1
+ import { default as React, ComponentPropsWithoutRef } from 'react';
2
+ export type SidebarNewNavStackProps = ComponentPropsWithoutRef<'div'> & {
3
+ value: string;
4
+ rootValue?: string;
5
+ onValueChange: (value: string) => void;
6
+ };
7
+ export declare function SidebarNewNavStackRoot({ value, rootValue, onValueChange, children, className, ...props }: SidebarNewNavStackProps): React.JSX.Element;
@@ -0,0 +1,9 @@
1
+ import { default as React, ComponentPropsWithoutRef } from 'react';
2
+ export type SidebarNewNavStackViewProps = ComponentPropsWithoutRef<'div'> & {
3
+ value: string;
4
+ title: string;
5
+ backLabel?: string;
6
+ returnFocusRef?: React.RefObject<HTMLElement | null>;
7
+ onBack?: () => void;
8
+ };
9
+ export declare function SidebarNewNavStackView({ value, title, backLabel, returnFocusRef, onBack, children, className, ...props }: SidebarNewNavStackViewProps): React.JSX.Element;
@@ -0,0 +1,10 @@
1
+ import { SidebarNewNavStackRoot } from './sidebar-new-nav-stack-root';
2
+ import { SidebarNewNavStackRootView } from './sidebar-new-nav-stack-root-view';
3
+ import { SidebarNewNavStackView } from './sidebar-new-nav-stack-view';
4
+ export type { SidebarNewNavStackProps } from './sidebar-new-nav-stack-root';
5
+ export type { SidebarNewNavStackRootViewProps } from './sidebar-new-nav-stack-root-view';
6
+ export type { SidebarNewNavStackViewProps } from './sidebar-new-nav-stack-view';
7
+ export declare const SidebarNewNavStack: typeof SidebarNewNavStackRoot & {
8
+ Root: typeof SidebarNewNavStackRootView;
9
+ View: typeof SidebarNewNavStackView;
10
+ };
@@ -0,0 +1,3 @@
1
+ import { MainSidebarNavProps } from '../../components/MainSidebar/main-sidebar-nav';
2
+ export type SidebarNewNavProps = MainSidebarNavProps;
3
+ export declare function SidebarNewNav({ children, className, ...props }: SidebarNewNavProps): import("react").JSX.Element;
@@ -0,0 +1,5 @@
1
+ import { MainSidebarRootProps } from '../../components/MainSidebar/main-sidebar-root';
2
+ export type SidebarNewRootProps = MainSidebarRootProps & {
3
+ 'aria-label'?: string;
4
+ };
5
+ export declare function SidebarNewRoot({ 'aria-label': ariaLabel, ...props }: SidebarNewRootProps): import("react").JSX.Element;
@@ -0,0 +1,8 @@
1
+ import { NavLink } from '../../components/MainSidebar/main-sidebar-nav-link';
2
+ export type SidebarNewSectionLinkProps = {
3
+ link: NavLink;
4
+ activeCandidates: NavLink[];
5
+ level?: number;
6
+ isActive?: (link: NavLink, activeCandidates: NavLink[]) => boolean;
7
+ };
8
+ export declare function SidebarNewSectionLink({ link, activeCandidates, level, isActive }: SidebarNewSectionLinkProps): import("react").JSX.Element;
@@ -0,0 +1,8 @@
1
+ import { NavLink } from '../../components/MainSidebar/main-sidebar-nav-link';
2
+ import { NavSection } from '../../components/MainSidebar/main-sidebar-nav-section';
3
+ export type SidebarNewSectionsProps = {
4
+ sections: NavSection[];
5
+ isActive?: (link: NavLink, activeCandidates: NavLink[]) => boolean;
6
+ className?: string;
7
+ };
8
+ export declare function SidebarNewSections({ sections, isActive, className }: SidebarNewSectionsProps): import("react").JSX.Element;
@@ -0,0 +1,3 @@
1
+ import { MainSidebarTriggerProps } from '../../components/MainSidebar/main-sidebar-trigger';
2
+ export type SidebarNewTriggerProps = MainSidebarTriggerProps;
3
+ export declare function SidebarNewTrigger(props: SidebarNewTriggerProps): import("react").JSX.Element | null;
@@ -0,0 +1,36 @@
1
+ import { SidebarNewBrand } from './sidebar-new-brand';
2
+ import { SidebarNewFooter } from './sidebar-new-footer';
3
+ import { SidebarNewHeader } from './sidebar-new-header';
4
+ import { SidebarNewNav } from './sidebar-new-nav';
5
+ import { SidebarNewNavHeader } from './sidebar-new-nav-header';
6
+ import { SidebarNewRoot } from './sidebar-new-root';
7
+ import { SidebarNewSections } from './sidebar-new-sections';
8
+ import { SidebarNewTrigger } from './sidebar-new-trigger';
9
+ import { MainSidebarMobileTrigger } from '../../components/MainSidebar/main-sidebar-mobile-trigger';
10
+ import { MainSidebarNavLabel } from '../../components/MainSidebar/main-sidebar-nav-label';
11
+ import { MainSidebarNavLink } from '../../components/MainSidebar/main-sidebar-nav-link';
12
+ import { MainSidebarNavList } from '../../components/MainSidebar/main-sidebar-nav-list';
13
+ import { MainSidebarNavSection } from '../../components/MainSidebar/main-sidebar-nav-section';
14
+ import { MainSidebarNavSeparator } from '../../components/MainSidebar/main-sidebar-nav-separator';
15
+ import { MainSidebarProvider } from '../../components/MainSidebar/main-sidebar-provider';
16
+ export declare const SidebarNew: typeof SidebarNewRoot & {
17
+ Brand: typeof SidebarNewBrand;
18
+ Footer: typeof SidebarNewFooter;
19
+ Header: typeof SidebarNewHeader;
20
+ Meter: import('react').ForwardRefExoticComponent<import('./sidebar-new-meter').SidebarNewMeterProps & import('react').RefAttributes<HTMLDivElement>>;
21
+ MobileTrigger: typeof MainSidebarMobileTrigger;
22
+ Nav: typeof SidebarNewNav;
23
+ NavHeader: typeof SidebarNewNavHeader;
24
+ NavLabel: typeof MainSidebarNavLabel;
25
+ NavLink: typeof MainSidebarNavLink;
26
+ NavList: typeof MainSidebarNavList;
27
+ NavSection: typeof MainSidebarNavSection;
28
+ NavSeparator: typeof MainSidebarNavSeparator;
29
+ NavStack: typeof import('./sidebar-new-nav-stack-root').SidebarNewNavStackRoot & {
30
+ Root: typeof import('./sidebar-new-nav-stack-root-view').SidebarNewNavStackRootView;
31
+ View: typeof import('./sidebar-new-nav-stack-view').SidebarNewNavStackView;
32
+ };
33
+ Provider: typeof MainSidebarProvider;
34
+ Sections: typeof SidebarNewSections;
35
+ Trigger: typeof SidebarNewTrigger;
36
+ };
@@ -0,0 +1,6 @@
1
+ import { Meta, StoryObj } from '@storybook/react-vite';
2
+ import { SidebarNew } from '.';
3
+ declare const meta: Meta<typeof SidebarNew>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof SidebarNew>;
6
+ export declare const Default: Story;
package/dist/style.css CHANGED
@@ -176,6 +176,7 @@
176
176
  --tracking-wide: .025em;
177
177
  --tracking-wider: .05em;
178
178
  --tracking-widest: .1em;
179
+ --leading-tight: 1.25;
179
180
  --leading-relaxed: 1.625;
180
181
  --radius-xs: .125rem;
181
182
  --radius-sm: 4px;
@@ -915,6 +916,10 @@
915
916
  isolation: isolate;
916
917
  }
917
918
 
919
+ .-z-10 {
920
+ z-index: calc(10 * -1);
921
+ }
922
+
918
923
  .z-0 {
919
924
  z-index: 0;
920
925
  }
@@ -983,6 +988,10 @@
983
988
  grid-column: 1 / -1;
984
989
  }
985
990
 
991
+ .col-start-1 {
992
+ grid-column-start: 1;
993
+ }
994
+
986
995
  .col-start-3 {
987
996
  grid-column-start: 3;
988
997
  }
@@ -1684,6 +1693,10 @@
1684
1693
  margin-top: auto;
1685
1694
  }
1686
1695
 
1696
+ .-mr-1\.5 {
1697
+ margin-right: calc(var(--spacing-1_5) * -1);
1698
+ }
1699
+
1687
1700
  .-mr-3 {
1688
1701
  margin-right: calc(var(--spacing-3) * -1);
1689
1702
  }
@@ -3060,6 +3073,11 @@
3060
3073
  translate: var(--tw-translate-x) var(--tw-translate-y);
3061
3074
  }
3062
3075
 
3076
+ .-translate-x-2 {
3077
+ --tw-translate-x: calc(var(--spacing-2) * -1);
3078
+ translate: var(--tw-translate-x) var(--tw-translate-y);
3079
+ }
3080
+
3063
3081
  .translate-x-0 {
3064
3082
  --tw-translate-x: var(--spacing-0);
3065
3083
  translate: var(--tw-translate-x) var(--tw-translate-y);
@@ -3070,6 +3088,11 @@
3070
3088
  translate: var(--tw-translate-x) var(--tw-translate-y);
3071
3089
  }
3072
3090
 
3091
+ .translate-x-2 {
3092
+ --tw-translate-x: var(--spacing-2);
3093
+ translate: var(--tw-translate-x) var(--tw-translate-y);
3094
+ }
3095
+
3073
3096
  .-translate-y-1\/2 {
3074
3097
  --tw-translate-y: calc(calc(1 / 2 * 100%) * -1);
3075
3098
  translate: var(--tw-translate-x) var(--tw-translate-y);
@@ -3297,6 +3320,10 @@
3297
3320
  grid-template-columns: 1fr auto 1fr;
3298
3321
  }
3299
3322
 
3323
+ .grid-cols-\[2rem_1fr_2rem\] {
3324
+ grid-template-columns: 2rem 1fr 2rem;
3325
+ }
3326
+
3300
3327
  .grid-cols-\[5rem_repeat\(4\,minmax\(0\,1fr\)\)\] {
3301
3328
  grid-template-columns: 5rem repeat(4, minmax(0, 1fr));
3302
3329
  }
@@ -3745,6 +3772,10 @@
3745
3772
  align-self: stretch;
3746
3773
  }
3747
3774
 
3775
+ .justify-self-center {
3776
+ justify-self: center;
3777
+ }
3778
+
3748
3779
  .justify-self-end {
3749
3780
  justify-self: flex-end;
3750
3781
  }
@@ -4791,6 +4822,16 @@
4791
4822
  }
4792
4823
  }
4793
4824
 
4825
+ .bg-neutral4\/40 {
4826
+ background-color: var(--color-neutral4);
4827
+ }
4828
+
4829
+ @supports (color: color-mix(in lab, red, red)) {
4830
+ .bg-neutral4\/40 {
4831
+ background-color: color-mix(in oklab, var(--color-neutral4) 40%, transparent);
4832
+ }
4833
+ }
4834
+
4794
4835
  .bg-neutral5 {
4795
4836
  background-color: var(--color-neutral5);
4796
4837
  }
@@ -5803,6 +5844,11 @@
5803
5844
  line-height: var(--leading-relaxed);
5804
5845
  }
5805
5846
 
5847
+ .leading-tight {
5848
+ --tw-leading: var(--leading-tight);
5849
+ line-height: var(--leading-tight);
5850
+ }
5851
+
5806
5852
  .leading-ui-lg {
5807
5853
  --tw-leading: var(--leading-ui-lg);
5808
5854
  line-height: var(--leading-ui-lg);
@@ -6171,6 +6217,10 @@
6171
6217
  color: var(--color-notice-success-fg);
6172
6218
  }
6173
6219
 
6220
+ .text-notice-warning {
6221
+ color: var(--color-notice-warning);
6222
+ }
6223
+
6174
6224
  .text-notice-warning-fg {
6175
6225
  color: var(--color-notice-warning-fg);
6176
6226
  }
@@ -6708,6 +6758,12 @@
6708
6758
  transition-duration: var(--tw-duration, var(--default-transition-duration));
6709
6759
  }
6710
6760
 
6761
+ .transition-\[opacity\,translate\] {
6762
+ transition-property: opacity, translate;
6763
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
6764
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
6765
+ }
6766
+
6711
6767
  .transition-\[padding\] {
6712
6768
  transition-property: padding;
6713
6769
  transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
@@ -6881,6 +6937,10 @@
6881
6937
  will-change: opacity,filter,scale;
6882
6938
  }
6883
6939
 
6940
+ .will-change-\[opacity\,translate\] {
6941
+ will-change: opacity,translate;
6942
+ }
6943
+
6884
6944
  .will-change-transform {
6885
6945
  will-change: transform;
6886
6946
  }
@@ -10309,6 +10369,18 @@
10309
10369
  height: var(--spacing-5);
10310
10370
  }
10311
10371
 
10372
+ .\[\&_\[data-orientation\=vertical\]\]\:w-1 [data-orientation="vertical"] {
10373
+ width: var(--spacing-1);
10374
+ }
10375
+
10376
+ .\[\&_\[data-orientation\=vertical\]\]\:p-0 [data-orientation="vertical"] {
10377
+ padding: var(--spacing-0);
10378
+ }
10379
+
10380
+ .\[\&_\[data-orientation\=vertical\]\[data-has-overflow-y\]\]\:opacity-100 [data-orientation="vertical"][data-has-overflow-y] {
10381
+ opacity: 1;
10382
+ }
10383
+
10312
10384
  .\[\&_\[data-slot\=command-input-wrapper\]\]\:h-11 [data-slot="command-input-wrapper"] {
10313
10385
  height: var(--spacing-11);
10314
10386
  }
@@ -11635,6 +11707,29 @@
11635
11707
  --surface4: oklch(21.78% 0 0);
11636
11708
  --surface5: oklch(24.35% 0 0 / .9);
11637
11709
  --surface6: oklch(30.92% 0 0);
11710
+ --background-1: oklch(0% 0 0);
11711
+ --background-2: oklch(15.91% 0 0);
11712
+ --background-3: oklch(19.13% 0 0);
11713
+ --gray-1: oklch(21.78% 0 0);
11714
+ --gray-2: oklch(24.35% 0 0);
11715
+ --gray-3: oklch(26.86% 0 0);
11716
+ --gray-4: oklch(30.92% 0 0);
11717
+ --gray-5: oklch(37.15% 0 0);
11718
+ --gray-6: oklch(44.95% 0 0);
11719
+ --gray-7: oklch(52.08% 0 0);
11720
+ --gray-8: oklch(65% 0 0);
11721
+ --gray-9: oklch(76.99% 0 0);
11722
+ --gray-10: oklch(98.51% 0 0);
11723
+ --gray-alpha-1: #ffffff0a;
11724
+ --gray-alpha-2: #ffffff12;
11725
+ --gray-alpha-3: #ffffff1a;
11726
+ --gray-alpha-4: #ffffff24;
11727
+ --gray-alpha-5: #ffffff2e;
11728
+ --gray-alpha-6: #ffffff4d;
11729
+ --gray-alpha-7: #ffffff73;
11730
+ --gray-alpha-8: #fff9;
11731
+ --gray-alpha-9: #ffffffbf;
11732
+ --gray-alpha-10: #ffffffe6;
11638
11733
  --accent1: oklch(72.3% .219 149.579);
11639
11734
  --accent2: oklch(63.7% .237 25.331);
11640
11735
  --accent3: oklch(62.3% .214 259.815);
@@ -11735,6 +11830,29 @@ html.light {
11735
11830
  --surface4: oklch(96.5% 0 0);
11736
11831
  --surface5: oklch(94.4% 0 0 / .94);
11737
11832
  --surface6: oklch(89.5% 0 0);
11833
+ --background-1: oklch(96.42% 0 0);
11834
+ --background-2: oklch(98.51% 0 0);
11835
+ --background-3: oklch(100% 0 0);
11836
+ --gray-1: oklch(94.31% 0 0);
11837
+ --gray-2: oklch(91.89% 0 0);
11838
+ --gray-3: oklch(89.45% 0 0);
11839
+ --gray-4: oklch(84.52% 0 0);
11840
+ --gray-5: oklch(76.04% 0 0);
11841
+ --gray-6: oklch(62.01% 0 0);
11842
+ --gray-7: oklch(54.86% 0 0);
11843
+ --gray-8: oklch(44.59% 0 0);
11844
+ --gray-9: oklch(30.92% 0 0);
11845
+ --gray-10: oklch(12.86% 0 0);
11846
+ --gray-alpha-1: #0000000a;
11847
+ --gray-alpha-2: #00000012;
11848
+ --gray-alpha-3: #0000001a;
11849
+ --gray-alpha-4: #00000024;
11850
+ --gray-alpha-5: #0000002e;
11851
+ --gray-alpha-6: #0000004d;
11852
+ --gray-alpha-7: #00000073;
11853
+ --gray-alpha-8: #0009;
11854
+ --gray-alpha-9: #000000bf;
11855
+ --gray-alpha-10: #000000e6;
11738
11856
  --accent1: oklch(62.7% .194 149.214);
11739
11857
  --accent2: oklch(57.7% .245 27.325);
11740
11858
  --accent3: oklch(54.6% .245 262.881);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@mastra/playground-ui",
3
3
  "type": "module",
4
- "version": "55.0.0",
4
+ "version": "55.1.0-alpha.0",
5
5
  "description": "Mastra Playground components",
6
6
  "sideEffects": [
7
7
  "**/*.css"
@@ -118,6 +118,12 @@
118
118
  "default": "./dist/new/settings.es.js"
119
119
  }
120
120
  },
121
+ "./new/sidebar": {
122
+ "import": {
123
+ "types": "./dist/new/sidebar.d.ts",
124
+ "default": "./dist/new/sidebar.es.js"
125
+ }
126
+ },
121
127
  "./new/layout/app-shell": {
122
128
  "import": {
123
129
  "types": "./dist/new/layout/app-shell.d.ts",
@@ -183,8 +189,8 @@
183
189
  "react": ">=19.0.0",
184
190
  "react-dom": ">=19.0.0",
185
191
  "tailwindcss": "^4.0.0",
186
- "@mastra/client-js": "^1.46.0",
187
- "@mastra/react": "1.5.0"
192
+ "@mastra/client-js": "^1.46.1-alpha.0",
193
+ "@mastra/react": "1.5.1-alpha.0"
188
194
  },
189
195
  "devDependencies": {
190
196
  "@storybook/addon-a11y": "^10.4.1",
@@ -227,10 +233,10 @@
227
233
  "vite-plugin-lib-inject-css": "^2.2.2",
228
234
  "vitest": "4.1.10",
229
235
  "@internal/lint": "0.0.133",
230
- "@mastra/client-js": "^1.46.0",
231
- "@mastra/core": "1.67.0",
232
- "@mastra/react": "1.5.0",
233
- "@mastra/memory": "1.30.0"
236
+ "@mastra/client-js": "^1.46.1-alpha.0",
237
+ "@mastra/memory": "1.30.0",
238
+ "@mastra/react": "1.5.1-alpha.0",
239
+ "@mastra/core": "1.68.0-alpha.0"
234
240
  },
235
241
  "homepage": "https://mastra.ai",
236
242
  "repository": {
package/theme.css CHANGED
@@ -15,6 +15,30 @@
15
15
  --surface5: oklch(24.35% 0 0deg / 90%);
16
16
  --surface6: oklch(30.92% 0 0deg);
17
17
 
18
+ --background-1: oklch(0 0 0);
19
+ --background-2: oklch(0.1591 0 0);
20
+ --background-3: oklch(0.1913 0 0);
21
+ --gray-1: oklch(0.2178 0 0);
22
+ --gray-2: oklch(0.2435 0 0);
23
+ --gray-3: oklch(0.2686 0 0);
24
+ --gray-4: oklch(0.3092 0 0);
25
+ --gray-5: oklch(0.3715 0 0);
26
+ --gray-6: oklch(0.4495 0 0);
27
+ --gray-7: oklch(0.5208 0 0);
28
+ --gray-8: oklch(0.65 0 0);
29
+ --gray-9: oklch(0.7699 0 0);
30
+ --gray-10: oklch(0.9851 0 0);
31
+ --gray-alpha-1: rgb(255 255 255 / 4%);
32
+ --gray-alpha-2: rgb(255 255 255 / 7%);
33
+ --gray-alpha-3: rgb(255 255 255 / 10%);
34
+ --gray-alpha-4: rgb(255 255 255 / 14%);
35
+ --gray-alpha-5: rgb(255 255 255 / 18%);
36
+ --gray-alpha-6: rgb(255 255 255 / 30%);
37
+ --gray-alpha-7: rgb(255 255 255 / 45%);
38
+ --gray-alpha-8: rgb(255 255 255 / 60%);
39
+ --gray-alpha-9: rgb(255 255 255 / 75%);
40
+ --gray-alpha-10: rgb(255 255 255 / 90%);
41
+
18
42
  --accent1: oklch(0.723 0.219 149.579);
19
43
  --accent2: oklch(0.637 0.237 25.331);
20
44
  --accent3: oklch(0.623 0.214 259.815);
@@ -132,6 +156,30 @@ html.light {
132
156
  --surface5: oklch(94.4% 0 0deg / 94%);
133
157
  --surface6: oklch(89.5% 0 0deg);
134
158
 
159
+ --background-1: oklch(0.9642 0 0);
160
+ --background-2: oklch(0.9851 0 0);
161
+ --background-3: oklch(1 0 0);
162
+ --gray-1: oklch(0.9431 0 0);
163
+ --gray-2: oklch(0.9189 0 0);
164
+ --gray-3: oklch(0.8945 0 0);
165
+ --gray-4: oklch(0.8452 0 0);
166
+ --gray-5: oklch(0.7604 0 0);
167
+ --gray-6: oklch(0.6201 0 0);
168
+ --gray-7: oklch(0.5486 0 0);
169
+ --gray-8: oklch(0.4459 0 0);
170
+ --gray-9: oklch(0.3092 0 0);
171
+ --gray-10: oklch(0.1286 0 0);
172
+ --gray-alpha-1: rgb(0 0 0 / 4%);
173
+ --gray-alpha-2: rgb(0 0 0 / 7%);
174
+ --gray-alpha-3: rgb(0 0 0 / 10%);
175
+ --gray-alpha-4: rgb(0 0 0 / 14%);
176
+ --gray-alpha-5: rgb(0 0 0 / 18%);
177
+ --gray-alpha-6: rgb(0 0 0 / 30%);
178
+ --gray-alpha-7: rgb(0 0 0 / 45%);
179
+ --gray-alpha-8: rgb(0 0 0 / 60%);
180
+ --gray-alpha-9: rgb(0 0 0 / 75%);
181
+ --gray-alpha-10: rgb(0 0 0 / 90%);
182
+
135
183
  --accent1: oklch(0.627 0.194 149.214);
136
184
  --accent2: oklch(0.577 0.245 27.325);
137
185
  --accent3: oklch(0.546 0.245 262.881);
@@ -1 +0,0 @@
1
- {"version":3,"file":"data-panel-5iuux0r_.js","sources":["../src/ds/components/DataPanel/data-panel-close-button.tsx","../src/ds/components/DataPanel/data-panel-content.tsx","../src/ds/components/DataPanel/data-panel-header.tsx","../src/ds/components/DataPanel/data-panel-heading.tsx","../src/ds/components/DataPanel/data-panel-loading-data.tsx","../src/ds/components/DataPanel/data-panel-next-prev-nav.tsx","../src/ds/components/DataPanel/data-panel-no-data.tsx","../src/ds/components/DataPanel/data-panel-root.tsx","../src/ds/components/DataPanel/data-panel.tsx"],"sourcesContent":["import { XIcon } from 'lucide-react';\nimport { Button } from '@/ds/components/Button';\n\nexport interface DataPanelCloseButtonProps {\n onClick: () => void;\n tooltip?: string;\n className?: string;\n}\n\nexport function DataPanelCloseButton({ onClick, tooltip = 'Close panel', className }: DataPanelCloseButtonProps) {\n return (\n <Button size=\"md\" onClick={onClick} aria-label=\"Close Panel\" tooltip={tooltip} className={className}>\n <XIcon />\n </Button>\n );\n}\n","import type { ReactNode, Ref } from 'react';\n\nexport interface DataPanelContentProps {\n children: ReactNode;\n ref?: Ref<HTMLDivElement>;\n}\n\nexport function DataPanelContent({ children, ref }: DataPanelContentProps) {\n return (\n <div ref={ref} className=\"min-h-0 flex-1 overflow-y-auto p-3\">\n {children}\n </div>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport interface DataPanelHeaderProps {\n className?: string;\n children: React.ReactNode;\n}\n\nexport function DataPanelHeader({ className, children }: DataPanelHeaderProps) {\n return (\n <div\n className={cn(\n // Horizontal padding (not margin) so the bottom border spans the full card width.\n 'flex min-h-10 items-center justify-between gap-2 px-3 py-2',\n // Bottom border only when something follows the header (i.e. the panel is expanded).\n // When the panel is collapsed and the header is the only child, the border auto-hides.\n 'not-last:border-b not-last:border-border1',\n className,\n )}\n >\n {children}\n </div>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport interface DataPanelHeadingProps {\n className?: string;\n children: React.ReactNode;\n}\n\nexport function DataPanelHeading({ className, children }: DataPanelHeadingProps) {\n return (\n <h3 className={cn('flex gap-2 text-ui-md text-neutral3 [&>b]:font-normal [&>b]:text-neutral2', className)}>\n {children}\n </h3>\n );\n}\n","import type { ReactNode } from 'react';\nimport { Spinner } from '@/ds/components/Spinner';\n\nexport interface DataPanelLoadingDataProps {\n children?: ReactNode;\n}\n\nexport function DataPanelLoadingData({ children }: DataPanelLoadingDataProps) {\n return (\n <div className=\"text-ui-sm text-neutral2 flex min-h-32 items-center justify-center gap-2 px-3 py-4\">\n <Spinner size=\"sm\" variant=\"pulse\" className=\"text-neutral1\" /> {children ?? 'Loading...'}\n </div>\n );\n}\n","import { ArrowDownIcon, ArrowUpIcon } from 'lucide-react';\nimport { Button } from '@/ds/components/Button';\nimport { ButtonsGroup } from '@/ds/components/ButtonsGroup';\n\nexport interface DataPanelNextPrevNavProps {\n onPrevious?: () => void;\n onNext?: () => void;\n previousLabel?: string;\n nextLabel?: string;\n}\n\nexport function DataPanelNextPrevNav({\n onPrevious,\n onNext,\n previousLabel = 'Previous',\n nextLabel = 'Next',\n}: DataPanelNextPrevNavProps) {\n return (\n <ButtonsGroup spacing=\"close\">\n <Button size=\"md\" tooltip={previousLabel} onClick={onPrevious} disabled={!onPrevious}>\n <ArrowUpIcon />\n </Button>\n <Button size=\"md\" tooltip={nextLabel} onClick={onNext} disabled={!onNext}>\n <ArrowDownIcon />\n </Button>\n </ButtonsGroup>\n );\n}\n","export interface DataPanelNoDataProps {\n children?: React.ReactNode;\n}\n\nexport function DataPanelNoData({ children }: DataPanelNoDataProps) {\n return <p className=\"text-ui-sm text-neutral2 px-3 py-4\">{children ?? 'No data found.'}</p>;\n}\n","import { cn } from '@/lib/utils';\n\nexport interface DataPanelProps {\n collapsed?: boolean;\n children: React.ReactNode;\n className?: string;\n}\n\nexport function DataPanelRoot({ collapsed, children, className }: DataPanelProps) {\n return (\n <section\n className={cn(\n 'flex flex-col overflow-hidden rounded-xl border border-border1 bg-surface2',\n collapsed ? 'h-auto' : 'max-h-full',\n className,\n )}\n >\n {children}\n </section>\n );\n}\n","import { DataPanelCloseButton } from './data-panel-close-button';\nimport { DataPanelContent } from './data-panel-content';\nimport { DataPanelHeader } from './data-panel-header';\nimport { DataPanelHeading } from './data-panel-heading';\nimport { DataPanelLoadingData } from './data-panel-loading-data';\nimport { DataPanelNextPrevNav } from './data-panel-next-prev-nav';\nimport { DataPanelNoData } from './data-panel-no-data';\nimport { DataPanelRoot } from './data-panel-root';\nimport { DataPanelSectionHeading } from './data-panel-section-heading';\nimport { DataCodeSection } from '@/ds/components/DataCodeSection';\n\nexport const DataPanel = Object.assign(DataPanelRoot, {\n Header: DataPanelHeader,\n Heading: DataPanelHeading,\n CloseButton: DataPanelCloseButton,\n NextPrevNav: DataPanelNextPrevNav,\n LoadingData: DataPanelLoadingData,\n NoData: DataPanelNoData,\n Content: DataPanelContent,\n CodeSection: DataCodeSection,\n SectionHeading: DataPanelSectionHeading,\n});\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"data-panel-tSErqolu.cjs","sources":["../src/ds/components/DataPanel/data-panel-close-button.tsx","../src/ds/components/DataPanel/data-panel-content.tsx","../src/ds/components/DataPanel/data-panel-header.tsx","../src/ds/components/DataPanel/data-panel-heading.tsx","../src/ds/components/DataPanel/data-panel-loading-data.tsx","../src/ds/components/DataPanel/data-panel-next-prev-nav.tsx","../src/ds/components/DataPanel/data-panel-no-data.tsx","../src/ds/components/DataPanel/data-panel-root.tsx","../src/ds/components/DataPanel/data-panel.tsx"],"sourcesContent":["import { XIcon } from 'lucide-react';\nimport { Button } from '@/ds/components/Button';\n\nexport interface DataPanelCloseButtonProps {\n onClick: () => void;\n tooltip?: string;\n className?: string;\n}\n\nexport function DataPanelCloseButton({ onClick, tooltip = 'Close panel', className }: DataPanelCloseButtonProps) {\n return (\n <Button size=\"md\" onClick={onClick} aria-label=\"Close Panel\" tooltip={tooltip} className={className}>\n <XIcon />\n </Button>\n );\n}\n","import type { ReactNode, Ref } from 'react';\n\nexport interface DataPanelContentProps {\n children: ReactNode;\n ref?: Ref<HTMLDivElement>;\n}\n\nexport function DataPanelContent({ children, ref }: DataPanelContentProps) {\n return (\n <div ref={ref} className=\"min-h-0 flex-1 overflow-y-auto p-3\">\n {children}\n </div>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport interface DataPanelHeaderProps {\n className?: string;\n children: React.ReactNode;\n}\n\nexport function DataPanelHeader({ className, children }: DataPanelHeaderProps) {\n return (\n <div\n className={cn(\n // Horizontal padding (not margin) so the bottom border spans the full card width.\n 'flex min-h-10 items-center justify-between gap-2 px-3 py-2',\n // Bottom border only when something follows the header (i.e. the panel is expanded).\n // When the panel is collapsed and the header is the only child, the border auto-hides.\n 'not-last:border-b not-last:border-border1',\n className,\n )}\n >\n {children}\n </div>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport interface DataPanelHeadingProps {\n className?: string;\n children: React.ReactNode;\n}\n\nexport function DataPanelHeading({ className, children }: DataPanelHeadingProps) {\n return (\n <h3 className={cn('flex gap-2 text-ui-md text-neutral3 [&>b]:font-normal [&>b]:text-neutral2', className)}>\n {children}\n </h3>\n );\n}\n","import type { ReactNode } from 'react';\nimport { Spinner } from '@/ds/components/Spinner';\n\nexport interface DataPanelLoadingDataProps {\n children?: ReactNode;\n}\n\nexport function DataPanelLoadingData({ children }: DataPanelLoadingDataProps) {\n return (\n <div className=\"text-ui-sm text-neutral2 flex min-h-32 items-center justify-center gap-2 px-3 py-4\">\n <Spinner size=\"sm\" variant=\"pulse\" className=\"text-neutral1\" /> {children ?? 'Loading...'}\n </div>\n );\n}\n","import { ArrowDownIcon, ArrowUpIcon } from 'lucide-react';\nimport { Button } from '@/ds/components/Button';\nimport { ButtonsGroup } from '@/ds/components/ButtonsGroup';\n\nexport interface DataPanelNextPrevNavProps {\n onPrevious?: () => void;\n onNext?: () => void;\n previousLabel?: string;\n nextLabel?: string;\n}\n\nexport function DataPanelNextPrevNav({\n onPrevious,\n onNext,\n previousLabel = 'Previous',\n nextLabel = 'Next',\n}: DataPanelNextPrevNavProps) {\n return (\n <ButtonsGroup spacing=\"close\">\n <Button size=\"md\" tooltip={previousLabel} onClick={onPrevious} disabled={!onPrevious}>\n <ArrowUpIcon />\n </Button>\n <Button size=\"md\" tooltip={nextLabel} onClick={onNext} disabled={!onNext}>\n <ArrowDownIcon />\n </Button>\n </ButtonsGroup>\n );\n}\n","export interface DataPanelNoDataProps {\n children?: React.ReactNode;\n}\n\nexport function DataPanelNoData({ children }: DataPanelNoDataProps) {\n return <p className=\"text-ui-sm text-neutral2 px-3 py-4\">{children ?? 'No data found.'}</p>;\n}\n","import { cn } from '@/lib/utils';\n\nexport interface DataPanelProps {\n collapsed?: boolean;\n children: React.ReactNode;\n className?: string;\n}\n\nexport function DataPanelRoot({ collapsed, children, className }: DataPanelProps) {\n return (\n <section\n className={cn(\n 'flex flex-col overflow-hidden rounded-xl border border-border1 bg-surface2',\n collapsed ? 'h-auto' : 'max-h-full',\n className,\n )}\n >\n {children}\n </section>\n );\n}\n","import { DataPanelCloseButton } from './data-panel-close-button';\nimport { DataPanelContent } from './data-panel-content';\nimport { DataPanelHeader } from './data-panel-header';\nimport { DataPanelHeading } from './data-panel-heading';\nimport { DataPanelLoadingData } from './data-panel-loading-data';\nimport { DataPanelNextPrevNav } from './data-panel-next-prev-nav';\nimport { DataPanelNoData } from './data-panel-no-data';\nimport { DataPanelRoot } from './data-panel-root';\nimport { DataPanelSectionHeading } from './data-panel-section-heading';\nimport { DataCodeSection } from '@/ds/components/DataCodeSection';\n\nexport const DataPanel = Object.assign(DataPanelRoot, {\n Header: DataPanelHeader,\n Heading: DataPanelHeading,\n CloseButton: DataPanelCloseButton,\n NextPrevNav: DataPanelNextPrevNav,\n LoadingData: DataPanelLoadingData,\n NoData: DataPanelNoData,\n Content: DataPanelContent,\n CodeSection: DataCodeSection,\n SectionHeading: DataPanelSectionHeading,\n});\n"],"names":["jsx","Button","XIcon","cn","jsxs","Spinner","ButtonsGroup","ArrowUpIcon","ArrowDownIcon","DataCodeSection","DataPanelSectionHeading"],"mappings":"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"}