@mastra/playground-ui 29.0.0 → 30.0.0-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.
Files changed (45) hide show
  1. package/CHANGELOG.md +117 -0
  2. package/dist/index.cjs.js +288 -378
  3. package/dist/index.cjs.js.map +1 -1
  4. package/dist/index.css +110 -64
  5. package/dist/index.es.js +290 -371
  6. package/dist/index.es.js.map +1 -1
  7. package/dist/src/ds/components/Checkbox/checkbox.d.ts +18 -2
  8. package/dist/src/ds/components/DataList/ScoresDataList/scores-data-list.d.ts +6 -2
  9. package/dist/src/ds/components/DataList/TracesDataList/traces-data-list-cells.d.ts +0 -12
  10. package/dist/src/ds/components/DataList/TracesDataList/traces-data-list.d.ts +11 -6
  11. package/dist/src/ds/components/DataList/data-list-cells.d.ts +46 -3
  12. package/dist/src/ds/components/DataList/data-list-row-button.d.ts +3 -2
  13. package/dist/src/ds/components/DataList/data-list-row-link.d.ts +5 -3
  14. package/dist/src/ds/components/DataList/data-list-row.d.ts +7 -2
  15. package/dist/src/ds/components/DataList/data-list-top-cell.d.ts +24 -3
  16. package/dist/src/ds/components/DataList/data-list-top-cells.d.ts +35 -0
  17. package/dist/src/ds/components/DataList/data-list-top.d.ts +8 -1
  18. package/dist/src/ds/components/DataList/data-list.d.ts +18 -4
  19. package/dist/src/ds/components/DataList/data-list.stories.d.ts +26 -0
  20. package/dist/src/ds/components/DataList/shared.d.ts +44 -1
  21. package/dist/src/ds/components/Label/label.d.ts +1 -3
  22. package/dist/src/ds/components/LogsDataList/logs-data-list-cells.d.ts +0 -8
  23. package/dist/src/ds/components/LogsDataList/logs-data-list.d.ts +10 -5
  24. package/dist/src/ds/components/RadioGroup/radio-group.d.ts +10 -3
  25. package/dist/src/ds/components/Switch/switch.d.ts +7 -2
  26. package/dist/src/ds/components/ThemeToggle/theme-toggle.d.ts +4 -2
  27. package/dist/src/index.d.ts +0 -1
  28. package/package.json +6 -10
  29. package/dist/src/ds/components/EntryList/entry-list-entries-skeleton.d.ts +0 -6
  30. package/dist/src/ds/components/EntryList/entry-list-entries.d.ts +0 -5
  31. package/dist/src/ds/components/EntryList/entry-list-entry-col.d.ts +0 -9
  32. package/dist/src/ds/components/EntryList/entry-list-entry.d.ts +0 -10
  33. package/dist/src/ds/components/EntryList/entry-list-header.d.ts +0 -5
  34. package/dist/src/ds/components/EntryList/entry-list-message.d.ts +0 -7
  35. package/dist/src/ds/components/EntryList/entry-list-next-page-loading.d.ts +0 -8
  36. package/dist/src/ds/components/EntryList/entry-list-pagination.d.ts +0 -7
  37. package/dist/src/ds/components/EntryList/entry-list-root.d.ts +0 -5
  38. package/dist/src/ds/components/EntryList/entry-list-skeleton.d.ts +0 -2
  39. package/dist/src/ds/components/EntryList/entry-list-trim.d.ts +0 -5
  40. package/dist/src/ds/components/EntryList/entry-list.d.ts +0 -20
  41. package/dist/src/ds/components/EntryList/entry-list.stories.d.ts +0 -10
  42. package/dist/src/ds/components/EntryList/helpers.d.ts +0 -10
  43. package/dist/src/ds/components/EntryList/index.d.ts +0 -5
  44. package/dist/src/ds/components/EntryList/shared.d.ts +0 -2
  45. package/dist/src/ds/components/EntryList/types.d.ts +0 -5
@@ -1,4 +1,20 @@
1
- import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
1
+ import { Checkbox as CheckboxPrimitive } from '@base-ui/react/checkbox';
2
2
  import * as React from 'react';
3
- declare const Checkbox: React.ForwardRefExoticComponent<Omit<CheckboxPrimitive.CheckboxProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
3
+ /**
4
+ * Radix-style tri-state value for the controlled `checked` prop. Base UI splits
5
+ * this into a strict `checked` boolean plus a separate `indeterminate` boolean —
6
+ * we keep the Radix union here so existing consumers (which pass
7
+ * `checked="indeterminate"`) keep working without changes.
8
+ *
9
+ * `defaultChecked` is intentionally a plain boolean: an uncontrolled checkbox
10
+ * cannot start "indeterminate" and then be toggled out of it (the indeterminate
11
+ * state is inherently controlled), so `'indeterminate'` is not allowed there.
12
+ */
13
+ export type CheckedState = boolean | 'indeterminate';
14
+ type CheckboxProps = Omit<CheckboxPrimitive.Root.Props, 'className' | 'checked'> & {
15
+ className?: string;
16
+ checked?: CheckedState;
17
+ };
18
+ declare const Checkbox: React.ForwardRefExoticComponent<Omit<CheckboxProps, "ref"> & React.RefAttributes<HTMLSpanElement>>;
4
19
  export { Checkbox };
20
+ export type { CheckboxProps };
@@ -7,8 +7,12 @@ import { ScoresDataListDateCell, ScoresDataListTimeCell, ScoresDataListInputCell
7
7
  declare function ScoresDataListRoot(props: ComponentProps<typeof DataListRoot>): import("react/jsx-runtime").JSX.Element;
8
8
  export declare const ScoresDataList: typeof ScoresDataListRoot & {
9
9
  Top: typeof DataListTop;
10
- TopCell: import('react').ForwardRefExoticComponent<import('../data-list-top-cell').DataListTopCellProps & import('react').RefAttributes<HTMLSpanElement>>;
11
- RowButton: import('react').ForwardRefExoticComponent<Omit<import('react').DetailedHTMLProps<import('react').ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & import('react').RefAttributes<HTMLButtonElement>>;
10
+ TopCell: import('react').ForwardRefExoticComponent<{
11
+ children: import('react').ReactNode;
12
+ className?: string;
13
+ as?: import('react').ElementType;
14
+ } & Omit<Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">, "className" | "children" | "ref"> & import('react').RefAttributes<HTMLSpanElement>>;
15
+ RowButton: import('react').ForwardRefExoticComponent<Omit<import('react').DetailedHTMLProps<import('react').ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & import('../shared').DataListRowSharedProps & import('react').RefAttributes<HTMLButtonElement>>;
12
16
  NoMatch: typeof DataListNoMatch;
13
17
  NextPageLoading: typeof DataListNextPageLoading;
14
18
  DateCell: typeof ScoresDataListDateCell;
@@ -1,15 +1,3 @@
1
- export interface TracesDataListIdCellProps {
2
- traceId: string;
3
- }
4
- export declare function TracesDataListIdCell({ traceId }: TracesDataListIdCellProps): import("react/jsx-runtime").JSX.Element;
5
- export interface TracesDataListDateCellProps {
6
- timestamp: Date | string;
7
- }
8
- export declare function TracesDataListDateCell({ timestamp }: TracesDataListDateCellProps): import("react/jsx-runtime").JSX.Element;
9
- export interface TracesDataListTimeCellProps {
10
- timestamp: Date | string;
11
- }
12
- export declare function TracesDataListTimeCell({ timestamp }: TracesDataListTimeCellProps): import("react/jsx-runtime").JSX.Element;
13
1
  export interface TracesDataListNameCellProps {
14
2
  name?: string | null;
15
3
  /** `null`/missing → root span (Trace). Set → nested span (Subtrace). Drives the leading level icon. */
@@ -1,4 +1,5 @@
1
1
  import { ComponentProps } from 'react';
2
+ import { DataListDateCell, DataListIdCell, DataListTimeCell } from '../data-list-cells';
2
3
  import { DataListNextPageLoading } from '../data-list-next-page-loading';
3
4
  import { DataListNoMatch } from '../data-list-no-match';
4
5
  import { DataListRoot } from '../data-list-root';
@@ -6,20 +7,24 @@ import { DataListSpacer } from '../data-list-spacer';
6
7
  import { DataListSubHeading } from '../data-list-subheading';
7
8
  import { DataListTop } from '../data-list-top';
8
9
  import { DataListTopCellWithTooltip } from '../data-list-top-cell';
9
- import { TracesDataListIdCell, TracesDataListDateCell, TracesDataListTimeCell, TracesDataListNameCell, TracesDataListInputCell, TracesDataListEntityCell, TracesDataListStatusCell } from './traces-data-list-cells';
10
+ import { TracesDataListNameCell, TracesDataListInputCell, TracesDataListEntityCell, TracesDataListStatusCell } from './traces-data-list-cells';
10
11
  declare function TracesDataListRoot(props: ComponentProps<typeof DataListRoot>): import("react/jsx-runtime").JSX.Element;
11
12
  export declare const TracesDataList: typeof TracesDataListRoot & {
12
13
  Top: typeof DataListTop;
13
- TopCell: import('react').ForwardRefExoticComponent<import('../data-list-top-cell').DataListTopCellProps & import('react').RefAttributes<HTMLSpanElement>>;
14
+ TopCell: import('react').ForwardRefExoticComponent<{
15
+ children: import('react').ReactNode;
16
+ className?: string;
17
+ as?: import('react').ElementType;
18
+ } & Omit<Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">, "className" | "children" | "ref"> & import('react').RefAttributes<HTMLSpanElement>>;
14
19
  TopCellWithTooltip: typeof DataListTopCellWithTooltip;
15
- RowButton: import('react').ForwardRefExoticComponent<Omit<import('react').DetailedHTMLProps<import('react').ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & import('react').RefAttributes<HTMLButtonElement>>;
20
+ RowButton: import('react').ForwardRefExoticComponent<Omit<import('react').DetailedHTMLProps<import('react').ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & import('../shared').DataListRowSharedProps & import('react').RefAttributes<HTMLButtonElement>>;
16
21
  NoMatch: typeof DataListNoMatch;
17
22
  Subheader: import('react').ForwardRefExoticComponent<Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & import('react').RefAttributes<HTMLDivElement>>;
18
23
  SubHeading: typeof DataListSubHeading;
19
24
  Spacer: typeof DataListSpacer;
20
- IdCell: typeof TracesDataListIdCell;
21
- DateCell: typeof TracesDataListDateCell;
22
- TimeCell: typeof TracesDataListTimeCell;
25
+ IdCell: typeof DataListIdCell;
26
+ DateCell: typeof DataListDateCell;
27
+ TimeCell: typeof DataListTimeCell;
23
28
  NameCell: typeof TracesDataListNameCell;
24
29
  InputCell: typeof TracesDataListInputCell;
25
30
  EntityCell: typeof TracesDataListEntityCell;
@@ -1,10 +1,53 @@
1
- import { ReactNode } from 'react';
1
+ import { ComponentPropsWithoutRef, ElementType, ReactNode } from 'react';
2
2
  export type DataListCellProps = {
3
3
  children: ReactNode;
4
4
  className?: string;
5
5
  height?: 'default' | 'compact';
6
- };
7
- export declare function DataListCell({ children, className, height }: DataListCellProps): import("react/jsx-runtime").JSX.Element;
6
+ /**
7
+ * HTML element rendered for the cell. Defaults to `span`. Use `'label'` when
8
+ * the cell wraps a labelable control (e.g. a Checkbox), so the whole cell
9
+ * area acts as the click/hover target.
10
+ */
11
+ as?: ElementType;
12
+ } & Omit<ComponentPropsWithoutRef<'div'>, 'children' | 'className'>;
13
+ export declare function DataListCell({ children, className, height, as, ...rest }: DataListCellProps): import("react/jsx-runtime").JSX.Element;
8
14
  export declare function DataListTextCell({ children, className }: DataListCellProps): import("react/jsx-runtime").JSX.Element;
9
15
  export declare function DataListNameCell({ children, className }: DataListCellProps): import("react/jsx-runtime").JSX.Element;
10
16
  export declare function DataListDescriptionCell({ children, className }: DataListCellProps): import("react/jsx-runtime").JSX.Element;
17
+ export interface DataListIdCellProps {
18
+ id: string;
19
+ }
20
+ export declare function DataListIdCell({ id }: DataListIdCellProps): import("react/jsx-runtime").JSX.Element;
21
+ export interface DataListSelectCellProps {
22
+ checked: boolean;
23
+ /**
24
+ * Called when the checkbox is clicked. Receives the click event's `shiftKey`
25
+ * so callers can implement range-select. The event's propagation is stopped
26
+ * before `onToggle` runs, so the host row's `onClick` doesn't fire.
27
+ */
28
+ onToggle: (shiftKey: boolean) => void;
29
+ 'aria-label'?: string;
30
+ }
31
+ export declare function DataListSelectCell({ checked, onToggle, ...rest }: DataListSelectCellProps): import("react/jsx-runtime").JSX.Element;
32
+ export interface DataListMonoCellProps {
33
+ children: ReactNode;
34
+ /** Override classes on the inner span (e.g. swap the default `text-neutral3` tone). */
35
+ className?: string;
36
+ /** Cell vertical padding. Defaults to `compact` to match other identifier cells. */
37
+ height?: 'default' | 'compact';
38
+ }
39
+ /**
40
+ * Mono-typography cell with truncation. Shared by any column that
41
+ * shows code-like text (input previews, JSON summaries, identifiers, etc.).
42
+ */
43
+ export declare function DataListMonoCell({ children, className, height }: DataListMonoCellProps): import("react/jsx-runtime").JSX.Element;
44
+ export interface DataListDateCellProps {
45
+ timestamp: Date | string;
46
+ }
47
+ /** Compact date cell — `Today` or `MMM dd` (e.g. `May 19`). */
48
+ export declare function DataListDateCell({ timestamp }: DataListDateCellProps): import("react/jsx-runtime").JSX.Element;
49
+ export interface DataListTimeCellProps {
50
+ timestamp: Date | string;
51
+ }
52
+ /** Compact monospace time cell — `HH:mm:ss.SSS` with the millisecond portion tinted. */
53
+ export declare function DataListTimeCell({ timestamp }: DataListTimeCellProps): import("react/jsx-runtime").JSX.Element;
@@ -1,7 +1,8 @@
1
1
  import { ComponentPropsWithoutRef } from 'react';
2
- export type DataListRowButtonProps = ComponentPropsWithoutRef<'button'>;
2
+ import { DataListRowSharedProps } from './shared';
3
+ export type DataListRowButtonProps = ComponentPropsWithoutRef<'button'> & DataListRowSharedProps;
3
4
  /**
4
5
  * Forwarded ref + spread props so virtualizers (`useVirtualizer.measureElement`)
5
6
  * can attach a ref and `data-index` to each rendered row.
6
7
  */
7
- export declare const DataListRowButton: import('react').ForwardRefExoticComponent<Omit<import('react').DetailedHTMLProps<import('react').ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & import('react').RefAttributes<HTMLButtonElement>>;
8
+ export declare const DataListRowButton: import('react').ForwardRefExoticComponent<Omit<import('react').DetailedHTMLProps<import('react').ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & DataListRowSharedProps & import('react').RefAttributes<HTMLButtonElement>>;
@@ -1,9 +1,11 @@
1
- import { ReactNode } from 'react';
1
+ import { CSSProperties, ReactNode } from 'react';
2
+ import { DataListRowSharedProps } from './shared';
2
3
  import { LinkComponent } from '../../types/link-component';
3
- export type DataListRowLinkProps = {
4
+ export type DataListRowLinkProps = DataListRowSharedProps & {
4
5
  children: ReactNode;
5
6
  to: string;
6
7
  className?: string;
8
+ style?: CSSProperties;
7
9
  LinkComponent: LinkComponent;
8
10
  };
9
- export declare function DataListRowLink({ children, to, className, LinkComponent: Link }: DataListRowLinkProps): import("react/jsx-runtime").JSX.Element;
11
+ export declare function DataListRowLink({ children, to, className, style, LinkComponent: Link, flushLeft, flushRight, colStart, colEnd, featured, }: DataListRowLinkProps): import("react/jsx-runtime").JSX.Element;
@@ -1,7 +1,12 @@
1
1
  import { ComponentPropsWithoutRef } from 'react';
2
2
  export type DataListRowProps = ComponentPropsWithoutRef<'div'>;
3
3
  /**
4
- * Forwarded ref + spread props so virtualizers (`useVirtualizer.measureElement`)
5
- * can attach a ref and `data-index` to each rendered row.
4
+ * Non-interactive grid wrapper. Used to host a leading or trailing cell (e.g. a
5
+ * selection checkbox or row actions) alongside a `DataList.RowButton` so
6
+ * hover/focus/click only apply to the button portion. For standalone
7
+ * interactive rows, use `DataList.RowButton` directly without this wrapper.
8
+ *
9
+ * Carries the row-level border + `.data-list-row` marker so separators and
10
+ * sibling-aware rules behave the same in wrapped and standalone rows.
6
11
  */
7
12
  export declare const DataListRow: import('react').ForwardRefExoticComponent<Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & import('react').RefAttributes<HTMLDivElement>>;
@@ -1,9 +1,22 @@
1
- import { ReactNode } from 'react';
1
+ import { ComponentPropsWithoutRef, ElementType, ReactNode } from 'react';
2
2
  export type DataListTopCellProps = {
3
3
  children: ReactNode;
4
4
  className?: string;
5
- };
6
- export declare const DataListTopCell: import('react').ForwardRefExoticComponent<DataListTopCellProps & import('react').RefAttributes<HTMLSpanElement>>;
5
+ /**
6
+ * HTML element rendered for the top cell. Defaults to `span`. Use `'label'`
7
+ * when the cell wraps a labelable control (e.g. a select-all Checkbox).
8
+ */
9
+ as?: ElementType;
10
+ } & Omit<ComponentPropsWithoutRef<'div'>, 'children' | 'className' | 'ref'>;
11
+ export declare const DataListTopCell: import('react').ForwardRefExoticComponent<{
12
+ children: ReactNode;
13
+ className?: string;
14
+ /**
15
+ * HTML element rendered for the top cell. Defaults to `span`. Use `'label'`
16
+ * when the cell wraps a labelable control (e.g. a select-all Checkbox).
17
+ */
18
+ as?: ElementType;
19
+ } & Omit<Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">, "className" | "children" | "ref"> & import('react').RefAttributes<HTMLSpanElement>>;
7
20
  export type DataListTopCellWithTooltipProps = {
8
21
  children: ReactNode;
9
22
  tooltip: ReactNode;
@@ -18,3 +31,11 @@ export type DataListTopCellSmartProps = {
18
31
  className?: string;
19
32
  };
20
33
  export declare function DataListTopCellSmart({ long, short, tooltip, breakpoint, className, }: DataListTopCellSmartProps): import("react/jsx-runtime").JSX.Element;
34
+ export interface DataListTopSelectCellProps {
35
+ /** Pass `'indeterminate'` when some — but not all — rows are selected. */
36
+ checked: boolean | 'indeterminate';
37
+ /** Toggles the global selection. Typically clears when fully selected, otherwise selects all. */
38
+ onToggle: () => void;
39
+ 'aria-label'?: string;
40
+ }
41
+ export declare function DataListTopSelectCell({ checked, onToggle, ...rest }: DataListTopSelectCellProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,35 @@
1
+ import { ComponentPropsWithoutRef } from 'react';
2
+ export type DataListTopCellsProps = ComponentPropsWithoutRef<'div'> & {
3
+ /**
4
+ * Drop the group's default left margin. Use when this sits as the second
5
+ * child of a gap-0 `DataList.Top`, beside a `DataList.TopSelectCell` that
6
+ * owns the leading column.
7
+ */
8
+ flushLeft?: boolean;
9
+ /**
10
+ * Place the group starting at this column line, spanning through to the
11
+ * last column. Defaults to the full grid (`col-span-full`). Use when this
12
+ * sits beside a leading cell that owns column 1.
13
+ */
14
+ colStart?: number;
15
+ };
16
+ /**
17
+ * Non-interactive header equivalent of `DataList.RowButton`. Groups a set of
18
+ * `DataList.TopCell`s with the same horizontal layout (gap, mx, px) as
19
+ * `RowButton`, so columns inside a wrapped `Top` line up cell-for-cell with the
20
+ * columns inside a wrapped `Row`.
21
+ */
22
+ export declare const DataListTopCells: import('react').ForwardRefExoticComponent<Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
23
+ /**
24
+ * Drop the group's default left margin. Use when this sits as the second
25
+ * child of a gap-0 `DataList.Top`, beside a `DataList.TopSelectCell` that
26
+ * owns the leading column.
27
+ */
28
+ flushLeft?: boolean;
29
+ /**
30
+ * Place the group starting at this column line, spanning through to the
31
+ * last column. Defaults to the full grid (`col-span-full`). Use when this
32
+ * sits beside a leading cell that owns column 1.
33
+ */
34
+ colStart?: number;
35
+ } & import('react').RefAttributes<HTMLDivElement>>;
@@ -2,5 +2,12 @@ import { ReactNode } from 'react';
2
2
  export type DataListTopProps = {
3
3
  children: ReactNode;
4
4
  className?: string;
5
+ /**
6
+ * Switch to a "leading cell" layout: drops the default gap between children
7
+ * and the default left padding, so a leading cell (e.g. `TopSelectCell`)
8
+ * sits flush against the grid edge and an inner `TopCells` group owns the
9
+ * remaining column spacing. Mirrors how `Row` + `RowButton` compose.
10
+ */
11
+ hasLeadingCell?: boolean;
5
12
  };
6
- export declare function DataListTop({ children, className }: DataListTopProps): import("react/jsx-runtime").JSX.Element;
13
+ export declare function DataListTop({ children, className, hasLeadingCell }: DataListTopProps): import("react/jsx-runtime").JSX.Element;
@@ -1,4 +1,4 @@
1
- import { DataListCell, DataListTextCell, DataListNameCell, DataListDescriptionCell } from './data-list-cells';
1
+ import { DataListCell, DataListTextCell, DataListNameCell, DataListDescriptionCell, DataListIdCell, DataListSelectCell, DataListMonoCell, DataListDateCell, DataListTimeCell } from './data-list-cells';
2
2
  import { DataListNextPageLoading } from './data-list-next-page-loading';
3
3
  import { DataListNoMatch } from './data-list-no-match';
4
4
  import { DataListPagination } from './data-list-pagination';
@@ -7,19 +7,33 @@ import { DataListRowLink } from './data-list-row-link';
7
7
  import { DataListSpacer } from './data-list-spacer';
8
8
  import { DataListSubHeading } from './data-list-subheading';
9
9
  import { DataListTop } from './data-list-top';
10
- import { DataListTopCellWithTooltip, DataListTopCellSmart } from './data-list-top-cell';
10
+ import { DataListTopCellWithTooltip, DataListTopCellSmart, DataListTopSelectCell } from './data-list-top-cell';
11
11
  export declare const DataList: typeof DataListRoot & {
12
12
  Top: typeof DataListTop;
13
- TopCell: import('react').ForwardRefExoticComponent<import('./data-list-top-cell').DataListTopCellProps & import('react').RefAttributes<HTMLSpanElement>>;
13
+ TopCells: import('react').ForwardRefExoticComponent<Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
14
+ flushLeft?: boolean;
15
+ colStart?: number;
16
+ } & import('react').RefAttributes<HTMLDivElement>>;
17
+ TopCell: import('react').ForwardRefExoticComponent<{
18
+ children: import('react').ReactNode;
19
+ className?: string;
20
+ as?: import('react').ElementType;
21
+ } & Omit<Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">, "className" | "children" | "ref"> & import('react').RefAttributes<HTMLSpanElement>>;
14
22
  TopCellWithTooltip: typeof DataListTopCellWithTooltip;
15
23
  TopCellSmart: typeof DataListTopCellSmart;
16
24
  Row: import('react').ForwardRefExoticComponent<Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & import('react').RefAttributes<HTMLDivElement>>;
17
- RowButton: import('react').ForwardRefExoticComponent<Omit<import('react').DetailedHTMLProps<import('react').ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & import('react').RefAttributes<HTMLButtonElement>>;
25
+ RowButton: import('react').ForwardRefExoticComponent<Omit<import('react').DetailedHTMLProps<import('react').ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & import('./shared').DataListRowSharedProps & import('react').RefAttributes<HTMLButtonElement>>;
18
26
  RowLink: typeof DataListRowLink;
19
27
  Cell: typeof DataListCell;
20
28
  TextCell: typeof DataListTextCell;
21
29
  NameCell: typeof DataListNameCell;
22
30
  DescriptionCell: typeof DataListDescriptionCell;
31
+ IdCell: typeof DataListIdCell;
32
+ MonoCell: typeof DataListMonoCell;
33
+ DateCell: typeof DataListDateCell;
34
+ TimeCell: typeof DataListTimeCell;
35
+ SelectCell: typeof DataListSelectCell;
36
+ TopSelectCell: typeof DataListTopSelectCell;
23
37
  NoMatch: typeof DataListNoMatch;
24
38
  Subheader: import('react').ForwardRefExoticComponent<Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & import('react').RefAttributes<HTMLDivElement>>;
25
39
  SubHeading: typeof DataListSubHeading;
@@ -0,0 +1,26 @@
1
+ import { Meta, StoryObj } from '@storybook/react-vite';
2
+ declare const meta: Meta;
3
+ export default meta;
4
+ type Story = StoryObj;
5
+ /** The standard condensed look used by Traces, Logs, Scores, Dataset Items, and Skills. */
6
+ export declare const Compact: Story;
7
+ /** Taller rows — better for prose-heavy content where each row needs more breathing room. */
8
+ export declare const Default: Story;
9
+ /** Use `RowLink` when each row should navigate to a detail page (preserves middle-click + open-in-new-tab). */
10
+ export declare const WithRowLink: Story;
11
+ /** Multi-select with a leading checkbox column. Click the header checkbox to toggle all rows. */
12
+ export declare const WithSelection: Story;
13
+ /** Trailing actions column: the row click area is bounded by `colEnd={-2}` + `flushRight`, and the last cell hosts per-row controls. */
14
+ export declare const WithTrailingCell: Story;
15
+ /** Use `featured` to highlight the row whose detail panel is currently open. */
16
+ export declare const Featured: Story;
17
+ /** `DateCell` shows `Today` or `MMM dd`; `TimeCell` shows `HH:mm:ss.SSS` with monospaced glyphs. */
18
+ export declare const WithDateAndTimeCells: Story;
19
+ /** Empty / no-match state — usually shown when a search filter yields zero rows. */
20
+ export declare const Empty: Story;
21
+ /** Loading placeholder for any column layout. Pass the same `columns` string the real list uses. */
22
+ export declare const Loading: Story;
23
+ /** Page-based pagination footer — `Previous` shows when `currentPage > 0`, `Next` shows when `hasMore`. */
24
+ export declare const WithPagination: Story;
25
+ /** Group rows under labelled sections using `Subheader` (and an optional `SubHeading` for a quieter sub-label). */
26
+ export declare const WithSubheader: Story;
@@ -1 +1,44 @@
1
- export declare const dataListRowStyles: readonly ["mx-1 data-list-row grid grid-cols-subgrid gap-10 col-span-full px-5 outline-none cursor-pointer border-y border-b-border1 border-t-transparent", "hover:bg-surface4 hover:border-transparent focus-visible:bg-surface4 focus-visible:border-transparent focus-visible:ring-1 focus-visible:ring-inset focus-visible:ring-accent1", "[.data-list-row:hover+&]:border-t-transparent [.data-list-row:focus-visible+&]:border-t-transparent", "[.data-list-subheader+&]:border-t-transparent", "[&:has(+.data-list-subheader)]:border-b-transparent", "[&:not(:has(~.data-list-row))]:border-b-transparent", "transition-colors duration-200 rounded-lg"];
1
+ /**
2
+ * Row-level styling shared by anything that participates in the row sibling
3
+ * chain — applied to `DataList.RowButton` / `DataList.RowLink` when used
4
+ * standalone, and to `DataList.Row` when used as a wrapper around them.
5
+ *
6
+ * Contains the `.data-list-row` marker class (used by the sibling-aware border
7
+ * rules), the bottom/top border treatment, and rounded corners.
8
+ */
9
+ export declare const dataListRowOuterStyles: readonly ["data-list-row col-span-full border-y border-b-border1 border-t-transparent", "[.data-list-row:hover+&]:border-t-transparent [.data-list-row:focus-visible+&]:border-t-transparent", "[.data-list-subheader+&]:border-t-transparent", "[&:has(+.data-list-subheader)]:border-b-transparent", "[&:not(:has(~.data-list-row))]:border-b-transparent", "transition-colors duration-200 rounded-lg"];
10
+ export declare const dataListRowStyles: readonly ["mx-1 grid grid-cols-subgrid gap-8 px-5 outline-none cursor-pointer", "hover:bg-surface4 hover:border-transparent focus-visible:bg-surface4 focus-visible:border-transparent focus-visible:ring-1 focus-visible:ring-inset focus-visible:ring-accent1", "data-list-row col-span-full border-y border-b-border1 border-t-transparent", "[.data-list-row:hover+&]:border-t-transparent [.data-list-row:focus-visible+&]:border-t-transparent", "[.data-list-subheader+&]:border-t-transparent", "[&:has(+.data-list-subheader)]:border-b-transparent", "[&:not(:has(~.data-list-row))]:border-b-transparent", "transition-colors duration-200 rounded-lg"];
11
+ /**
12
+ * Layout/state modifiers shared by interactive row primitives
13
+ * (`DataList.RowButton`, `DataList.RowLink`).
14
+ */
15
+ export type DataListRowSharedProps = {
16
+ /**
17
+ * Drop the row's default left margin. Use when the row is wrapped in a
18
+ * `DataList.Row` that owns the leading inset (e.g. for selection rows where
19
+ * the checkbox cell sits on the left).
20
+ */
21
+ flushLeft?: boolean;
22
+ /**
23
+ * Drop the row's default right margin. Use when the row is wrapped in a
24
+ * `DataList.Row` that owns the trailing inset (e.g. for rows with a
25
+ * trailing actions cell on the right).
26
+ */
27
+ flushRight?: boolean;
28
+ /**
29
+ * Place the row starting at this column line. Defaults to column 1. Use
30
+ * when the row sits beside a leading cell that owns column 1.
31
+ */
32
+ colStart?: number;
33
+ /**
34
+ * Place the row ending at this column line (use negative values to count
35
+ * from the end, e.g. `-2`). Defaults to `-1` (the last line). Use when the
36
+ * row sits beside a trailing cell that owns the last column.
37
+ */
38
+ colEnd?: number;
39
+ /**
40
+ * Apply the highlighted background. Use to mark the row that is currently
41
+ * featured (e.g. the row whose detail is open in a side panel).
42
+ */
43
+ featured?: boolean;
44
+ };
@@ -1,5 +1,3 @@
1
- import { VariantProps } from 'class-variance-authority';
2
- import * as LabelPrimitive from '@radix-ui/react-label';
3
1
  import * as React from 'react';
4
- declare const Label: React.ForwardRefExoticComponent<Omit<LabelPrimitive.LabelProps & React.RefAttributes<HTMLLabelElement>, "ref"> & VariantProps<(props?: import('class-variance-authority/types').ClassProp | undefined) => string> & React.RefAttributes<HTMLLabelElement>>;
2
+ declare const Label: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.LabelHTMLAttributes<HTMLLabelElement>, HTMLLabelElement>, "ref"> & React.RefAttributes<HTMLLabelElement>>;
5
3
  export { Label };
@@ -3,14 +3,6 @@ export interface LogsDataListLevelCellProps {
3
3
  level: LogLevel;
4
4
  }
5
5
  export declare function LogsDataListLevelCell({ level }: LogsDataListLevelCellProps): import("react/jsx-runtime").JSX.Element;
6
- export interface LogsDataListDateCellProps {
7
- timestamp: Date | string;
8
- }
9
- export declare function LogsDataListDateCell({ timestamp }: LogsDataListDateCellProps): import("react/jsx-runtime").JSX.Element;
10
- export interface LogsDataListTimeCellProps {
11
- timestamp: Date | string;
12
- }
13
- export declare function LogsDataListTimeCell({ timestamp }: LogsDataListTimeCellProps): import("react/jsx-runtime").JSX.Element;
14
6
  export interface LogsDataListEntityCellProps {
15
7
  entityType?: string | null;
16
8
  entityName?: string | null;
@@ -1,3 +1,4 @@
1
+ import { DataListDateCell, DataListTimeCell } from '../DataList/data-list-cells';
1
2
  import { DataListNextPageLoading } from '../DataList/data-list-next-page-loading';
2
3
  import { DataListNoMatch } from '../DataList/data-list-no-match';
3
4
  import { DataListRoot } from '../DataList/data-list-root';
@@ -5,19 +6,23 @@ import { DataListRowLink } from '../DataList/data-list-row-link';
5
6
  import { DataListSpacer } from '../DataList/data-list-spacer';
6
7
  import { DataListTop } from '../DataList/data-list-top';
7
8
  import { DataListTopCellWithTooltip, DataListTopCellSmart } from '../DataList/data-list-top-cell';
8
- import { LogsDataListLevelCell, LogsDataListDateCell, LogsDataListTimeCell, LogsDataListEntityCell, LogsDataListMessageCell, LogsDataListDataCell } from './logs-data-list-cells';
9
+ import { LogsDataListLevelCell, LogsDataListEntityCell, LogsDataListMessageCell, LogsDataListDataCell } from './logs-data-list-cells';
9
10
  export declare const LogsDataList: typeof DataListRoot & {
10
11
  Top: typeof DataListTop;
11
- TopCell: import('react').ForwardRefExoticComponent<import('../DataList/data-list-top-cell').DataListTopCellProps & import('react').RefAttributes<HTMLSpanElement>>;
12
+ TopCell: import('react').ForwardRefExoticComponent<{
13
+ children: import('react').ReactNode;
14
+ className?: string;
15
+ as?: import('react').ElementType;
16
+ } & Omit<Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">, "className" | "children" | "ref"> & import('react').RefAttributes<HTMLSpanElement>>;
12
17
  TopCellWithTooltip: typeof DataListTopCellWithTooltip;
13
18
  TopCellSmart: typeof DataListTopCellSmart;
14
19
  Row: import('react').ForwardRefExoticComponent<Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & import('react').RefAttributes<HTMLDivElement>>;
15
- RowButton: import('react').ForwardRefExoticComponent<Omit<import('react').DetailedHTMLProps<import('react').ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & import('react').RefAttributes<HTMLButtonElement>>;
20
+ RowButton: import('react').ForwardRefExoticComponent<Omit<import('react').DetailedHTMLProps<import('react').ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & import('../DataList/shared').DataListRowSharedProps & import('react').RefAttributes<HTMLButtonElement>>;
16
21
  RowLink: typeof DataListRowLink;
17
22
  Spacer: typeof DataListSpacer;
18
23
  NoMatch: typeof DataListNoMatch;
19
- DateCell: typeof LogsDataListDateCell;
20
- TimeCell: typeof LogsDataListTimeCell;
24
+ DateCell: typeof DataListDateCell;
25
+ TimeCell: typeof DataListTimeCell;
21
26
  LevelCell: typeof LogsDataListLevelCell;
22
27
  EntityCell: typeof LogsDataListEntityCell;
23
28
  MessageCell: typeof LogsDataListMessageCell;
@@ -1,5 +1,12 @@
1
- import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';
1
+ import { Radio as RadioPrimitive } from '@base-ui/react/radio';
2
+ import { RadioGroup as RadioGroupPrimitive } from '@base-ui/react/radio-group';
2
3
  import * as React from 'react';
3
- declare const RadioGroup: React.ForwardRefExoticComponent<Omit<RadioGroupPrimitive.RadioGroupProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
4
- declare const RadioGroupItem: React.ForwardRefExoticComponent<Omit<RadioGroupPrimitive.RadioGroupItemProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
4
+ type RadioGroupProps = Omit<RadioGroupPrimitive.Props, 'className'> & {
5
+ className?: string;
6
+ };
7
+ declare const RadioGroup: React.ForwardRefExoticComponent<Omit<RadioGroupProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
8
+ type RadioGroupItemProps = Omit<RadioPrimitive.Root.Props, 'className'> & {
9
+ className?: string;
10
+ };
11
+ declare const RadioGroupItem: React.ForwardRefExoticComponent<Omit<RadioGroupItemProps, "ref"> & React.RefAttributes<HTMLSpanElement>>;
5
12
  export { RadioGroup, RadioGroupItem };
@@ -1,4 +1,9 @@
1
- import * as SwitchPrimitives from '@radix-ui/react-switch';
1
+ import { Switch as SwitchPrimitive } from '@base-ui/react/switch';
2
2
  import * as React from 'react';
3
- declare const Switch: React.ForwardRefExoticComponent<Omit<SwitchPrimitives.SwitchProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
3
+ type SwitchProps = Omit<SwitchPrimitive.Root.Props, 'className'> & {
4
+ className?: string;
5
+ asChild?: boolean;
6
+ };
7
+ declare const Switch: React.ForwardRefExoticComponent<Omit<SwitchProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
4
8
  export { Switch };
9
+ export type { SwitchProps };
@@ -1,11 +1,13 @@
1
+ import { RadioGroup as RadioGroupPrimitive } from '@base-ui/react/radio-group';
1
2
  import { Theme } from '../ThemeProvider/theme-context';
2
- import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';
3
3
  export interface ThemeToggleOption {
4
4
  value: Theme;
5
5
  label: string;
6
6
  icon: React.ReactNode;
7
7
  }
8
- type RadioRootProps = Omit<React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>, 'value' | 'onChange' | 'onValueChange' | 'orientation' | 'defaultValue'>;
8
+ type RadioRootProps = Omit<RadioGroupPrimitive.Props, 'value' | 'onChange' | 'onValueChange' | 'defaultValue' | 'className'> & {
9
+ className?: string;
10
+ };
9
11
  type ControlledProps = {
10
12
  value: Theme;
11
13
  onChange: (next: Theme) => void;
@@ -52,7 +52,6 @@ export * from './ds/components/MainContent';
52
52
  export * from './ds/components/MainHeader';
53
53
  export * from './ds/components/Sections';
54
54
  export * from './ds/components/DateTimePicker';
55
- export * from './ds/components/EntryList';
56
55
  export * from './ds/components/JSONSchemaForm';
57
56
  export * from './ds/components/KeyValueList';
58
57
  export * from './ds/components/MainSidebar';
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@mastra/playground-ui",
3
3
  "type": "module",
4
- "version": "29.0.0",
4
+ "version": "30.0.0-alpha.1",
5
5
  "description": "Mastra Playground components",
6
6
  "main": "dist/index.umd.js",
7
7
  "module": "dist/index.es.js",
@@ -62,17 +62,13 @@
62
62
  "@hello-pangea/dnd": "^18.0.1",
63
63
  "@lezer/highlight": "^1.2.3",
64
64
  "@radix-ui/react-alert-dialog": "^1.1.15",
65
- "@radix-ui/react-checkbox": "^1.3.3",
66
65
  "@radix-ui/react-collapsible": "^1.1.12",
67
66
  "@radix-ui/react-dialog": "^1.1.15",
68
67
  "@radix-ui/react-dropdown-menu": "^2.1.16",
69
68
  "@radix-ui/react-hover-card": "^1.1.15",
70
- "@radix-ui/react-label": "^2.1.8",
71
69
  "@radix-ui/react-popover": "^1.1.15",
72
- "@radix-ui/react-radio-group": "^1.3.8",
73
70
  "@radix-ui/react-select": "^2.2.6",
74
71
  "@radix-ui/react-slot": "^1.2.4",
75
- "@radix-ui/react-switch": "^1.2.6",
76
72
  "@radix-ui/react-tooltip": "^1.2.8",
77
73
  "@radix-ui/react-visually-hidden": "^1.2.4",
78
74
  "@tanstack/react-virtual": "^3.13.22",
@@ -98,8 +94,8 @@
98
94
  "react": ">=19.0.0",
99
95
  "react-dom": ">=19.0.0",
100
96
  "tailwindcss": "^4.0.0",
101
- "@mastra/client-js": "^1.20.0",
102
- "@mastra/react": "0.4.0"
97
+ "@mastra/client-js": "^1.21.0-alpha.1",
98
+ "@mastra/react": "0.4.1-alpha.1"
103
99
  },
104
100
  "devDependencies": {
105
101
  "@storybook/addon-a11y": "^10.3.6",
@@ -135,10 +131,10 @@
135
131
  "vite-plugin-dts": "^4.5.4",
136
132
  "vite-plugin-lib-inject-css": "^2.2.2",
137
133
  "vitest": "4.1.5",
134
+ "@mastra/core": "1.37.0-alpha.1",
138
135
  "@internal/lint": "0.0.97",
139
- "@mastra/client-js": "^1.20.0",
140
- "@mastra/core": "1.36.0",
141
- "@mastra/react": "0.4.0"
136
+ "@mastra/react": "0.4.1-alpha.1",
137
+ "@mastra/client-js": "^1.21.0-alpha.1"
142
138
  },
143
139
  "homepage": "https://mastra.ai",
144
140
  "repository": {
@@ -1,6 +0,0 @@
1
- import { ColumnType } from './types';
2
- export type EntryListEntriesSkeletonProps = {
3
- columns?: ColumnType[];
4
- numberOfRows?: number;
5
- };
6
- export declare function EntryListEntriesSkeleton({ columns, numberOfRows }: EntryListEntriesSkeletonProps): import("react/jsx-runtime").JSX.Element;
@@ -1,5 +0,0 @@
1
- import { default as React } from 'react';
2
- export type EntryListEntriesProps = {
3
- children?: React.ReactNode;
4
- };
5
- export declare function EntryListEntries({ children }: EntryListEntriesProps): import("react/jsx-runtime").JSX.Element;
@@ -1,9 +0,0 @@
1
- export type EntryListEntryTextColProps = {
2
- children: React.ReactNode;
3
- isLoading?: boolean;
4
- };
5
- export declare function EntryListEntryTextCol({ children, isLoading }: EntryListEntryTextColProps): import("react/jsx-runtime").JSX.Element;
6
- export type EntryListEntryStatusColProps = {
7
- status?: 'success' | 'failed';
8
- };
9
- export declare function EntryListEntryStatusCol({ status }: EntryListEntryStatusColProps): import("react/jsx-runtime").JSX.Element;
@@ -1,10 +0,0 @@
1
- import { ColumnType } from './types';
2
- export type EntryListEntryProps = {
3
- entry?: any;
4
- isSelected?: boolean;
5
- children?: React.ReactNode;
6
- onClick?: (itemId: string) => void;
7
- columns?: ColumnType[];
8
- isLoading?: boolean;
9
- };
10
- export declare function EntryListEntry({ entry, isSelected, onClick, children, columns }: EntryListEntryProps): import("react/jsx-runtime").JSX.Element;