@mastra/playground-ui 30.0.0-alpha.9 → 30.0.1-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.
- package/CHANGELOG.md +216 -0
- package/dist/index.cjs.js +8 -251
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.css +1 -17
- package/dist/index.es.js +9 -249
- package/dist/index.es.js.map +1 -1
- package/dist/src/index.d.ts +0 -2
- package/package.json +7 -7
- package/dist/src/ds/components/EntityList/entity-list-cells.d.ts +0 -9
- package/dist/src/ds/components/EntityList/entity-list-no-match.d.ts +0 -5
- package/dist/src/ds/components/EntityList/entity-list-pagination.d.ts +0 -7
- package/dist/src/ds/components/EntityList/entity-list-root.d.ts +0 -7
- package/dist/src/ds/components/EntityList/entity-list-row-link.d.ts +0 -9
- package/dist/src/ds/components/EntityList/entity-list-row.d.ts +0 -8
- package/dist/src/ds/components/EntityList/entity-list-rows.d.ts +0 -6
- package/dist/src/ds/components/EntityList/entity-list-skeleton.d.ts +0 -5
- package/dist/src/ds/components/EntityList/entity-list-top-cell.d.ts +0 -20
- package/dist/src/ds/components/EntityList/entity-list-top.d.ts +0 -6
- package/dist/src/ds/components/EntityList/entity-list.d.ts +0 -24
- package/dist/src/ds/components/EntityList/index.d.ts +0 -2
- package/dist/src/ds/components/EntityListPageLayout/entity-list-page-layout-root.d.ts +0 -5
- package/dist/src/ds/components/EntityListPageLayout/entity-list-page-layout-top.d.ts +0 -5
- package/dist/src/ds/components/EntityListPageLayout/entity-list-page-layout.d.ts +0 -5
- package/dist/src/ds/components/EntityListPageLayout/index.d.ts +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,221 @@
|
|
|
1
1
|
# @mastra/playground-ui
|
|
2
2
|
|
|
3
|
+
## 30.0.1-alpha.0
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Removed the EntityList and EntityListPageLayout components — they were superseded by DataList. The 9 Studio root list pages (Agents, Datasets, Experiments, MCPs, Processors, Prompts, Scorers, Tools, Workflows) now build on DataList, matching the condensed layout shared across the rest of Studio. ([#17058](https://github.com/mastra-ai/mastra/pull/17058))
|
|
8
|
+
|
|
9
|
+
**Migration**
|
|
10
|
+
|
|
11
|
+
If you were importing EntityList or EntityListPageLayout from `@mastra/playground-ui`, switch to DataList — its API is a strict superset:
|
|
12
|
+
|
|
13
|
+
```tsx
|
|
14
|
+
// Before
|
|
15
|
+
import { EntityList, EntityListSkeleton } from '@mastra/playground-ui';
|
|
16
|
+
|
|
17
|
+
// After
|
|
18
|
+
import { DataList, DataListSkeleton } from '@mastra/playground-ui';
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
The primitive names match (`.Top`, `.TopCell`, `.TopCellSmart`, `.RowLink`, `.Cell`, `.TextCell`, `.NameCell`, `.DescriptionCell`, `.NoMatch`, `.Pagination`). DataList additionally exposes `.Row`, `.RowButton`, `.RowStatic`, `.IdCell`, `.MonoCell`, `.SelectCell`, `.NextPageLoading`, and more — useful when you need selection rows or action cells outside a RowLink.
|
|
22
|
+
|
|
23
|
+
## 30.0.0
|
|
24
|
+
|
|
25
|
+
### Minor Changes
|
|
26
|
+
|
|
27
|
+
- Added a Drawer component — a panel that slides in from any edge of the screen with swipe-to-dismiss gestures. ([#16958](https://github.com/mastra-ai/mastra/pull/16958))
|
|
28
|
+
|
|
29
|
+
The Drawer can be anchored to any of the four screen edges and supports snap points, nested stacking, controlled state, non-modal mode, swipe-to-open areas, and detached triggers.
|
|
30
|
+
|
|
31
|
+
```tsx
|
|
32
|
+
import {
|
|
33
|
+
Drawer,
|
|
34
|
+
DrawerTrigger,
|
|
35
|
+
DrawerContent,
|
|
36
|
+
DrawerHeader,
|
|
37
|
+
DrawerTitle,
|
|
38
|
+
DrawerDescription,
|
|
39
|
+
DrawerFooter,
|
|
40
|
+
DrawerClose,
|
|
41
|
+
Button,
|
|
42
|
+
} from '@mastra/playground-ui';
|
|
43
|
+
|
|
44
|
+
<Drawer side="right">
|
|
45
|
+
<DrawerTrigger asChild>
|
|
46
|
+
<Button>Open</Button>
|
|
47
|
+
</DrawerTrigger>
|
|
48
|
+
<DrawerContent>
|
|
49
|
+
<DrawerHeader>
|
|
50
|
+
<DrawerTitle>Library</DrawerTitle>
|
|
51
|
+
<DrawerDescription>A panel that slides in from the right edge.</DrawerDescription>
|
|
52
|
+
</DrawerHeader>
|
|
53
|
+
<DrawerFooter>
|
|
54
|
+
<DrawerClose asChild>
|
|
55
|
+
<Button variant="outline">Close</Button>
|
|
56
|
+
</DrawerClose>
|
|
57
|
+
</DrawerFooter>
|
|
58
|
+
</DrawerContent>
|
|
59
|
+
</Drawer>;
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
- Added a reusable `HoverCard` component (`HoverCard`, `HoverCardTrigger`, `HoverCardContent`) built on Base UI. You can now use these exported components to add hover card interactions anywhere in your UI. ([#16919](https://github.com/mastra-ai/mastra/pull/16919))
|
|
63
|
+
|
|
64
|
+
```tsx
|
|
65
|
+
import { HoverCard, HoverCardTrigger, HoverCardContent } from '@mastra/playground-ui';
|
|
66
|
+
|
|
67
|
+
<HoverCard>
|
|
68
|
+
<HoverCardTrigger>Weather Agent</HoverCardTrigger>
|
|
69
|
+
<HoverCardContent>Answers questions about current conditions and forecasts.</HoverCardContent>
|
|
70
|
+
</HoverCard>;
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Patch Changes
|
|
74
|
+
|
|
75
|
+
- Migrated the Switch component to Base UI for smoother animations and consistent behavior. No API changes — `checked`, `defaultChecked`, `onCheckedChange`, and `disabled` work exactly as before. ([#16891](https://github.com/mastra-ai/mastra/pull/16891))
|
|
76
|
+
|
|
77
|
+
- Improved the Select component by migrating it to Base UI for more reliable positioning and accessibility. The public API (`Select`, `SelectTrigger`, `SelectContent`, `SelectItem`, `SelectValue`, `SelectGroup`) is unchanged, so no consumer updates are needed. ([#16918](https://github.com/mastra-ai/mastra/pull/16918))
|
|
78
|
+
|
|
79
|
+
- Added `DataList.RowStatic`, a non-interactive row primitive. It renders a row that looks identical to other list rows but does not respond to clicks and shows no hover/focus state — use it alongside `DataList.RowButton` / `DataList.RowLink` when only some rows are clickable (e.g. error or placeholder entries in an otherwise navigable list). ([#16970](https://github.com/mastra-ai/mastra/pull/16970))
|
|
80
|
+
|
|
81
|
+
```tsx
|
|
82
|
+
{
|
|
83
|
+
rows.map(row =>
|
|
84
|
+
row.href ? (
|
|
85
|
+
<DataList.RowLink key={row.id} to={row.href} LinkComponent={Link}>
|
|
86
|
+
{row.cells}
|
|
87
|
+
</DataList.RowLink>
|
|
88
|
+
) : (
|
|
89
|
+
<DataList.RowStatic key={row.id}>{row.cells}</DataList.RowStatic>
|
|
90
|
+
),
|
|
91
|
+
);
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
- Added `DataList` primitives and props for building selection-aware, condensed list rows that match the Traces/Logs visual style. ([#16820](https://github.com/mastra-ai/mastra/pull/16820))
|
|
96
|
+
|
|
97
|
+
**New cells** on `DataList`:
|
|
98
|
+
- `IdCell` — compact mono cell that truncates long IDs to 8 chars.
|
|
99
|
+
- `MonoCell` — compact mono + truncate text cell (for input previews, JSON summaries, etc.).
|
|
100
|
+
- `DateCell` — compact date cell rendering "Today" or "MMM dd".
|
|
101
|
+
- `TimeCell` — compact mono time cell rendering `HH:mm:ss.SSS` with the millisecond portion tinted.
|
|
102
|
+
- `SelectCell` — labelled checkbox cell with a shift-key range-select handler.
|
|
103
|
+
- `TopSelectCell` — header version with `indeterminate` support for "select all".
|
|
104
|
+
- `TopCells` — non-interactive header sibling of `RowButton`, for hosting top cells beside a leading select cell.
|
|
105
|
+
|
|
106
|
+
**New props** on `DataList.RowButton` and `DataList.RowLink`:
|
|
107
|
+
- `flushLeft` — drops the default left margin when wrapped beside a leading cell.
|
|
108
|
+
- `colStart` — places the row starting at a column line (e.g. `colStart={2}` to leave column 1 for a leading cell).
|
|
109
|
+
- `featured` — applies the highlighted background to mark the active row.
|
|
110
|
+
|
|
111
|
+
**New props** on existing wrappers:
|
|
112
|
+
- `as` on `DataList.Cell` and `DataList.TopCell` — render the cell as any HTML element (e.g. `<label>` so the whole cell is clickable).
|
|
113
|
+
- `hasLeadingCell` on `DataList.Top` — drops default gap and left padding so a leading cell sits flush, mirroring how `Row` + `RowButton` compose.
|
|
114
|
+
|
|
115
|
+
**Example** — selection row with a checkbox in column 1 and an interactive button spanning the rest:
|
|
116
|
+
|
|
117
|
+
```tsx
|
|
118
|
+
<DataList.Row>
|
|
119
|
+
<DataList.SelectCell checked={isSelected} onToggle={shiftKey => toggle(id, shiftKey)} />
|
|
120
|
+
<DataList.RowButton flushLeft colStart={2} featured={isFeatured} onClick={onRowClick}>
|
|
121
|
+
<DataList.IdCell id={item.id} />
|
|
122
|
+
<DataList.MonoCell>{item.input}</DataList.MonoCell>
|
|
123
|
+
</DataList.RowButton>
|
|
124
|
+
</DataList.Row>
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
Internally the Traces and Logs list views now use the shared primitives — no behavior change for those consumers.
|
|
128
|
+
|
|
129
|
+
- Added support for trailing cells in `DataList` rows. `DataList.RowButton` and `DataList.RowLink` now accept `colEnd` and `flushRight` (mirrors of the existing `colStart`/`flushLeft`), so a row can sit beside a non-interactive trailing cell (e.g. an actions column) and stay aligned with the header. Rows wrapped in `DataList.Row` now render a full-width separator that extends through the leading and trailing cells. `DataList.MonoCell` also gained an optional `height` prop so non-compact lists can use it without forcing compact padding. ([#16888](https://github.com/mastra-ai/mastra/pull/16888))
|
|
130
|
+
|
|
131
|
+
**Usage**
|
|
132
|
+
|
|
133
|
+
```tsx
|
|
134
|
+
<DataList.Row>
|
|
135
|
+
<DataList.RowButton flushLeft flushRight colEnd={-2} onClick={onClick}>
|
|
136
|
+
{/* main row content */}
|
|
137
|
+
</DataList.RowButton>
|
|
138
|
+
<DataList.Cell>
|
|
139
|
+
{/* trailing actions, e.g. icon buttons */}
|
|
140
|
+
</DataList.Cell>
|
|
141
|
+
</DataList.Row>
|
|
142
|
+
|
|
143
|
+
<DataList.MonoCell height="default">long mono text…</DataList.MonoCell>
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
- Migrated the Label component off Radix UI. It now renders a native `<label>` element with the same props and styling — `htmlFor`, `className`, and children behave exactly as before. ([#16892](https://github.com/mastra-ai/mastra/pull/16892))
|
|
147
|
+
|
|
148
|
+
- Fixed Studio Settings page (and other default-height `PageLayout` pages) clipping their content with no scrollbar on viewports shorter than the form. Users on short laptop screens (under ~991px tall) could not reach the Save button under the Mastra Connection headers form, making it impossible to apply changes. Default-height `PageLayout` pages now grow with their content and scroll through the studio chrome wrapper; `height="full"` pages (Logs, Traces, Metrics, etc.) are unchanged. ([#16999](https://github.com/mastra-ai/mastra/pull/16999))
|
|
149
|
+
|
|
150
|
+
- Restyled scrollbars across the studio UI to match the design system — thin, themed thumb on a transparent track — replacing the default OS scrollbars that clashed with dark and light surfaces. ([#16918](https://github.com/mastra-ai/mastra/pull/16918))
|
|
151
|
+
|
|
152
|
+
- Exported ContextMenu from the package entry so it can be imported alongside other Base UI primitives. ([#17062](https://github.com/mastra-ai/mastra/pull/17062))
|
|
153
|
+
|
|
154
|
+
- Design-system additions to support theming: ([#17059](https://github.com/mastra-ai/mastra/pull/17059))
|
|
155
|
+
- `Avatar` now accepts optional `color` and `textColor` props for per-instance tinting, and falls back to the initial when the image fails to load.
|
|
156
|
+
- `Searchbar` accepts an optional `className` to let consumers tune layout without forking.
|
|
157
|
+
- `TabList` accepts a `style` prop and the active-tab indicator now reads from the `--tab-indicator-color` CSS variable, letting parents theme the indicator (e.g. per-agent accent color).
|
|
158
|
+
- `stringToColor` now accepts any `number` for the `lightness` argument and defaults to `90` instead of `75` for a lighter fallback chip.
|
|
159
|
+
- Global `body` rule enables `font-smoothing` / `-webkit-font-smoothing` for crisper UI text.
|
|
160
|
+
|
|
161
|
+
- Removed `EntryList` and its sub-components (`EntryList.Header`, `EntryList.Entries`, `EntryList.Entry`, `EntryList.EntryText`, `EntryList.Pagination`, `EntryList.NoMatch`, `EntryListSkeleton`, etc.) from the public API. All in-repo list views have migrated to `DataList`, which is the recommended replacement. ([#16910](https://github.com/mastra-ai/mastra/pull/16910))
|
|
162
|
+
|
|
163
|
+
**Migration:**
|
|
164
|
+
|
|
165
|
+
```tsx
|
|
166
|
+
// Before
|
|
167
|
+
import { EntryList, EntryListSkeleton } from '@mastra/playground-ui';
|
|
168
|
+
|
|
169
|
+
<EntryList>
|
|
170
|
+
<EntryList.Trim>
|
|
171
|
+
<EntryList.Header columns={columns} />
|
|
172
|
+
<EntryList.Entries>
|
|
173
|
+
{items.map(item => (
|
|
174
|
+
<EntryList.Entry key={item.id} columns={columns} entry={item} onClick={…}>
|
|
175
|
+
{columns.map(col => <EntryList.EntryText key={col.name}>{item[col.name]}</EntryList.EntryText>)}
|
|
176
|
+
</EntryList.Entry>
|
|
177
|
+
))}
|
|
178
|
+
</EntryList.Entries>
|
|
179
|
+
</EntryList.Trim>
|
|
180
|
+
<EntryList.Pagination …/>
|
|
181
|
+
</EntryList>
|
|
182
|
+
|
|
183
|
+
// After
|
|
184
|
+
import { DataList } from '@mastra/playground-ui';
|
|
185
|
+
|
|
186
|
+
<DataList columns={gridColumns}>
|
|
187
|
+
<DataList.Top>
|
|
188
|
+
{columns.map(col => <DataList.TopCell key={col.name}>{col.label}</DataList.TopCell>)}
|
|
189
|
+
</DataList.Top>
|
|
190
|
+
{items.map(item => (
|
|
191
|
+
<DataList.RowButton key={item.id} onClick={…}>
|
|
192
|
+
{columns.map(col => <DataList.Cell key={col.name}>{item[col.name]}</DataList.Cell>)}
|
|
193
|
+
</DataList.RowButton>
|
|
194
|
+
))}
|
|
195
|
+
<DataList.Pagination …/>
|
|
196
|
+
</DataList>
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
- Improved the Checkbox component by migrating it to Base UI. The public API is unchanged — `checked` (including the `'indeterminate'` value), `defaultChecked`, `onCheckedChange`, and `disabled` all behave as before. ([#16905](https://github.com/mastra-ai/mastra/pull/16905))
|
|
200
|
+
|
|
201
|
+
- Fixed MetricsDataTable sticky header and column backgrounds to use surface3 token, matching DashboardCard surface ([#16828](https://github.com/mastra-ai/mastra/pull/16828))
|
|
202
|
+
|
|
203
|
+
- Improved the RadioGroup component by migrating it to Base UI. The public API (`RadioGroup`, `RadioGroupItem`, `value`, `onValueChange`, `disabled`) is unchanged. Also fixes the radio indicator sizing/centering — the control now stays square and the inner dot is properly centered. ([#16904](https://github.com/mastra-ai/mastra/pull/16904))
|
|
204
|
+
|
|
205
|
+
- Updated dependencies [[`cfa2e3a`](https://github.com/mastra-ai/mastra/commit/cfa2e3a5292322f48bb28b4d257d631da7f9d3cc), [`0cbece9`](https://github.com/mastra-ai/mastra/commit/0cbece9d832cb134a74cdbf3682d390a058215a4), [`2f5f58a`](https://github.com/mastra-ai/mastra/commit/2f5f58a9a8bb13bcdc6789db221eef7c9bf1ff02), [`2f5f58a`](https://github.com/mastra-ai/mastra/commit/2f5f58a9a8bb13bcdc6789db221eef7c9bf1ff02), [`7dfe1bc`](https://github.com/mastra-ai/mastra/commit/7dfe1bcfe71d261a6fd6bbf29b1dec49d78fb98f), [`ac442a4`](https://github.com/mastra-ai/mastra/commit/ac442a42fda0354ac2bcea772bf6691cb3e9dbb3), [`b7286f4`](https://github.com/mastra-ai/mastra/commit/b7286f4308267f5fd70e6bfee10dba9472640906), [`6096445`](https://github.com/mastra-ai/mastra/commit/60964459733f0ab384584d95e19c36607ffdf7b0), [`d72dc4b`](https://github.com/mastra-ai/mastra/commit/d72dc4b12d832546c05c20255fa96fe4eb515900), [`a481027`](https://github.com/mastra-ai/mastra/commit/a481027b549ba1018414990c8f045eaee7b9f413), [`f1b9f87`](https://github.com/mastra-ai/mastra/commit/f1b9f87a00505f15d4fe39f92de287674adc2198), [`1e5c067`](https://github.com/mastra-ai/mastra/commit/1e5c067d2e20a781af670578180d1ee249806d41), [`168fa09`](https://github.com/mastra-ai/mastra/commit/168fa09d6b39114cb8c13bd06f1dccb9bc81c6cd), [`df1947a`](https://github.com/mastra-ai/mastra/commit/df1947affa40f742067542251fac7ca759492ef4), [`ee59b74`](https://github.com/mastra-ai/mastra/commit/ee59b743ce73ad11784b4d9c6fbba8568edee1c8), [`a97b1a0`](https://github.com/mastra-ai/mastra/commit/a97b1a0abaed83946c3519d1e0f680d0815b8a67), [`af2e1f8`](https://github.com/mastra-ai/mastra/commit/af2e1f8e2a2d2c4ba75167d5c93ca44395639eff), [`008baaf`](https://github.com/mastra-ai/mastra/commit/008baafd8d851f831407045aebead5a2e3342eff), [`271d891`](https://github.com/mastra-ai/mastra/commit/271d8917e4323340f9fe549f3e8de55810dbbcbe), [`801baa0`](https://github.com/mastra-ai/mastra/commit/801baa07cccdbaec1d00942a92bdc831111744a2), [`8116436`](https://github.com/mastra-ai/mastra/commit/81164363eb225d774e41ff27da6a5ea611406688), [`c35b962`](https://github.com/mastra-ai/mastra/commit/c35b9625c7e854fcfdeee226a3338a750d0ff211), [`c27c4b9`](https://github.com/mastra-ai/mastra/commit/c27c4b9f137df5414fca4e45896aceccff6b0ed5), [`08b3b59`](https://github.com/mastra-ai/mastra/commit/08b3b590dd960dee6c9a6e39272f8927d803db6e), [`b3c3b18`](https://github.com/mastra-ai/mastra/commit/b3c3b189121489a3a51a8fd8204b569be9a89fe5), [`c35b962`](https://github.com/mastra-ai/mastra/commit/c35b9625c7e854fcfdeee226a3338a750d0ff211), [`9be1545`](https://github.com/mastra-ai/mastra/commit/9be1545475eb81a716169bb1281a37853cc739e0), [`4084113`](https://github.com/mastra-ai/mastra/commit/408411370fc48a822e8b616b3b63f9409774e0e9), [`bc01b1b`](https://github.com/mastra-ai/mastra/commit/bc01b1bfafe381d90af909f8bce7eeb4eee779f2), [`70cb714`](https://github.com/mastra-ai/mastra/commit/70cb7149c8f16f478e15b58498254a53181750a4), [`91cf0e0`](https://github.com/mastra-ai/mastra/commit/91cf0e027e511b871481a8576b56b7af83b15afd), [`1120b4f`](https://github.com/mastra-ai/mastra/commit/1120b4fa928552c6ee1751efa5603d955841e766), [`7f9da22`](https://github.com/mastra-ai/mastra/commit/7f9da22efd5aa595e138a31de55a5f0f2f28b33d)]:
|
|
206
|
+
- @mastra/core@1.37.0
|
|
207
|
+
- @mastra/client-js@1.21.0
|
|
208
|
+
- @mastra/react@0.4.1
|
|
209
|
+
|
|
210
|
+
## 30.0.0-alpha.10
|
|
211
|
+
|
|
212
|
+
### Patch Changes
|
|
213
|
+
|
|
214
|
+
- Updated dependencies [[`d72dc4b`](https://github.com/mastra-ai/mastra/commit/d72dc4b12d832546c05c20255fa96fe4eb515900)]:
|
|
215
|
+
- @mastra/core@1.37.0-alpha.9
|
|
216
|
+
- @mastra/client-js@1.21.0-alpha.10
|
|
217
|
+
- @mastra/react@0.4.1-alpha.10
|
|
218
|
+
|
|
3
219
|
## 30.0.0-alpha.9
|
|
4
220
|
|
|
5
221
|
### Patch Changes
|
package/dist/index.cjs.js
CHANGED
|
@@ -12837,11 +12837,11 @@ const ItemList = Object.assign(ItemListRoot, {
|
|
|
12837
12837
|
LabelCell: ItemListLabelCell
|
|
12838
12838
|
});
|
|
12839
12839
|
|
|
12840
|
-
const widths$
|
|
12840
|
+
const widths$1 = ["75%", "50%", "65%", "90%", "60%", "80%"];
|
|
12841
12841
|
function ItemListItemsSkeleton({ columns, numberOfRows = 3 }) {
|
|
12842
12842
|
const getPseudoRandomWidth = (rowIdx, colIdx) => {
|
|
12843
|
-
const index = (rowIdx + colIdx + (columns?.length || 0) + (numberOfRows || 0)) % widths$
|
|
12844
|
-
return widths$
|
|
12843
|
+
const index = (rowIdx + colIdx + (columns?.length || 0) + (numberOfRows || 0)) % widths$1.length;
|
|
12844
|
+
return widths$1[index];
|
|
12845
12845
|
};
|
|
12846
12846
|
return /* @__PURE__ */ jsxRuntime.jsx(ItemListItems, { children: Array.from({ length: numberOfRows }).map((_, rowIdx) => /* @__PURE__ */ jsxRuntime.jsx(ItemListRow, { children: /* @__PURE__ */ jsxRuntime.jsx(ItemListRowButton, { columns, children: (columns || []).map((col, colIdx) => {
|
|
12847
12847
|
const key = `${col.name}-${colIdx}`;
|
|
@@ -13668,7 +13668,7 @@ function DataListTopCellWithTooltip({ children, tooltip, className }) {
|
|
|
13668
13668
|
/* @__PURE__ */ jsxRuntime.jsx(TooltipContent, { children: tooltip })
|
|
13669
13669
|
] });
|
|
13670
13670
|
}
|
|
13671
|
-
const breakpointClasses
|
|
13671
|
+
const breakpointClasses = {
|
|
13672
13672
|
sm: { show: "hidden sm:inline-flex", hide: "inline-flex sm:hidden" },
|
|
13673
13673
|
md: { show: "hidden md:inline-flex", hide: "inline-flex md:hidden" },
|
|
13674
13674
|
lg: { show: "hidden lg:inline-flex", hide: "inline-flex lg:hidden" },
|
|
@@ -13683,7 +13683,7 @@ function DataListTopCellSmart({
|
|
|
13683
13683
|
className
|
|
13684
13684
|
}) {
|
|
13685
13685
|
const tooltipText = tooltip ?? (typeof long === "string" ? long : void 0);
|
|
13686
|
-
const bp = breakpointClasses
|
|
13686
|
+
const bp = breakpointClasses[breakpoint];
|
|
13687
13687
|
const content = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
13688
13688
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("items-center gap-1", bp.show), children: long }),
|
|
13689
13689
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("items-center gap-1", bp.hide), children: short })
|
|
@@ -13756,14 +13756,14 @@ const DataList = Object.assign(DataListRoot, {
|
|
|
13756
13756
|
Pagination: DataListPagination
|
|
13757
13757
|
});
|
|
13758
13758
|
|
|
13759
|
-
const widths
|
|
13759
|
+
const widths = ["75%", "50%", "65%", "90%", "60%", "80%"];
|
|
13760
13760
|
function DataListSkeleton({ columns = "auto 1fr auto auto", numberOfRows = 3 }) {
|
|
13761
13761
|
const columnParts = columns.trim().split(/\s+/);
|
|
13762
13762
|
const columnCount = columnParts.length;
|
|
13763
13763
|
const skeletonColumns = columnParts.map((col) => col === "auto" ? "minmax(6rem, auto)" : col).join(" ");
|
|
13764
13764
|
const getPseudoRandomWidth = (rowIdx, colIdx) => {
|
|
13765
|
-
const index = (rowIdx + colIdx + columnCount + numberOfRows) % widths
|
|
13766
|
-
return widths
|
|
13765
|
+
const index = (rowIdx + colIdx + columnCount + numberOfRows) % widths.length;
|
|
13766
|
+
return widths[index];
|
|
13767
13767
|
};
|
|
13768
13768
|
return /* @__PURE__ */ jsxRuntime.jsx(DataListRoot, { columns: skeletonColumns, children: Array.from({ length: numberOfRows }).map((_, rowIdx) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
13769
13769
|
"div",
|
|
@@ -13889,221 +13889,6 @@ const TracesDataList = Object.assign(TracesDataListRoot, {
|
|
|
13889
13889
|
NextPageLoading: DataListNextPageLoading
|
|
13890
13890
|
});
|
|
13891
13891
|
|
|
13892
|
-
function EntityListCell({ children, className }) {
|
|
13893
|
-
return /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("relative py-4 grid items-center text-ui-md whitespace-nowrap text-neutral3", className), children });
|
|
13894
|
-
}
|
|
13895
|
-
function EntityListTextCell({ children, className }) {
|
|
13896
|
-
return /* @__PURE__ */ jsxRuntime.jsx(EntityListCell, { className, children });
|
|
13897
|
-
}
|
|
13898
|
-
function EntityListNameCell({ children, className }) {
|
|
13899
|
-
return /* @__PURE__ */ jsxRuntime.jsx(EntityListCell, { className: cn("text-left text-neutral4", className), children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate", children }) });
|
|
13900
|
-
}
|
|
13901
|
-
function EntityListDescriptionCell({ children, className }) {
|
|
13902
|
-
return /* @__PURE__ */ jsxRuntime.jsx(EntityListCell, { className: cn("text-neutral2", className), children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate", children }) });
|
|
13903
|
-
}
|
|
13904
|
-
|
|
13905
|
-
function EntityListNoMatch({ message = "Nothing matches your search", className }) {
|
|
13906
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("col-span-full flex flex-col items-center justify-center gap-2 py-12 text-neutral3", className), children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-ui-md", children: message }) });
|
|
13907
|
-
}
|
|
13908
|
-
|
|
13909
|
-
function EntityListPagination({ currentPage, hasMore, onNextPage, onPrevPage }) {
|
|
13910
|
-
const showNavigation = typeof currentPage === "number" && currentPage > 0 || hasMore;
|
|
13911
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("col-span-full flex items-center justify-center gap-8 pt-6 pb-4 text-ui-md text-neutral3"), children: [
|
|
13912
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
|
|
13913
|
-
"Page ",
|
|
13914
|
-
/* @__PURE__ */ jsxRuntime.jsx("b", { children: currentPage ? currentPage + 1 : "1" })
|
|
13915
|
-
] }),
|
|
13916
|
-
showNavigation && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
13917
|
-
"div",
|
|
13918
|
-
{
|
|
13919
|
-
className: cn(
|
|
13920
|
-
"flex gap-4",
|
|
13921
|
-
"[&>button]:flex [&>button]:items-center [&>button]:gap-2 [&>button]:text-neutral4 [&>button:hover]:text-neutral5 [&>button]:transition-colors [&>button]:border [&>button]:border-border1 [&>button]:p-1 [&>button]:px-2 [&>button]:rounded-md",
|
|
13922
|
-
"[&_svg]:w-[1em] [&_svg]:h-[1em] [&_svg]:text-neutral3"
|
|
13923
|
-
),
|
|
13924
|
-
children: [
|
|
13925
|
-
typeof currentPage === "number" && currentPage > 0 && /* @__PURE__ */ jsxRuntime.jsxs("button", { type: "button", onClick: onPrevPage, children: [
|
|
13926
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowLeftIcon, {}),
|
|
13927
|
-
"Previous"
|
|
13928
|
-
] }),
|
|
13929
|
-
hasMore && /* @__PURE__ */ jsxRuntime.jsxs("button", { type: "button", onClick: onNextPage, children: [
|
|
13930
|
-
"Next",
|
|
13931
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowRightIcon, {})
|
|
13932
|
-
] })
|
|
13933
|
-
]
|
|
13934
|
-
}
|
|
13935
|
-
)
|
|
13936
|
-
] });
|
|
13937
|
-
}
|
|
13938
|
-
|
|
13939
|
-
function EntityListRoot({ children, columns, className }) {
|
|
13940
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
13941
|
-
"div",
|
|
13942
|
-
{
|
|
13943
|
-
className: cn(
|
|
13944
|
-
"grid bg-surface2 border h-full border-border1 rounded-xl overflow-y-auto content-start",
|
|
13945
|
-
className
|
|
13946
|
-
),
|
|
13947
|
-
style: { gridTemplateColumns: columns },
|
|
13948
|
-
children
|
|
13949
|
-
}
|
|
13950
|
-
);
|
|
13951
|
-
}
|
|
13952
|
-
|
|
13953
|
-
function EntityListRow({ children, className, onClick, selected }) {
|
|
13954
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
13955
|
-
"div",
|
|
13956
|
-
{
|
|
13957
|
-
role: onClick ? "button" : void 0,
|
|
13958
|
-
tabIndex: onClick ? 0 : void 0,
|
|
13959
|
-
onClick,
|
|
13960
|
-
onKeyDown: onClick ? (e) => {
|
|
13961
|
-
if (e.currentTarget !== e.target) return;
|
|
13962
|
-
if (e.key === "Enter" || e.key === " ") {
|
|
13963
|
-
e.preventDefault();
|
|
13964
|
-
onClick();
|
|
13965
|
-
}
|
|
13966
|
-
} : void 0,
|
|
13967
|
-
className: cn(
|
|
13968
|
-
"entity-list-row grid grid-cols-subgrid gap-6 lg:gap-8 xl:gap-10 2xl:gap-12 3xl:gap-14 col-span-full cursor-pointer border-y border-b-border1 border-t-transparent px-5",
|
|
13969
|
-
"hover:bg-surface4 hover:border-transparent focus-within:bg-surface4 focus-within:border-transparent focus-within:ring-1 focus-within:ring-inset focus-within:ring-accent1",
|
|
13970
|
-
"[.entity-list-row:hover+&]:border-t-transparent [.entity-list-row:focus-within+&]:border-t-transparent",
|
|
13971
|
-
"transition-colors duration-200 rounded-lg",
|
|
13972
|
-
selected && "bg-surface4 border-transparent",
|
|
13973
|
-
className
|
|
13974
|
-
),
|
|
13975
|
-
children
|
|
13976
|
-
}
|
|
13977
|
-
);
|
|
13978
|
-
}
|
|
13979
|
-
|
|
13980
|
-
function EntityListRowLink({ children, to, className, LinkComponent: Link }) {
|
|
13981
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
13982
|
-
Link,
|
|
13983
|
-
{
|
|
13984
|
-
href: to,
|
|
13985
|
-
className: cn(
|
|
13986
|
-
"entity-list-row grid grid-cols-subgrid gap-6 lg:gap-8 xl:gap-10 2xl:gap-12 3xl:gap-14 col-span-full px-5 outline-hidden cursor-pointer border-y border-b-border1 border-t-transparent",
|
|
13987
|
-
"hover:bg-surface4 hover:border-transparent focus-within:bg-surface4 focus-within:border-transparent focus-within:ring-1 focus-within:ring-inset focus-within:ring-accent1",
|
|
13988
|
-
"[.entity-list-row:hover+&]:border-t-transparent [.entity-list-row:focus-within+&]:border-t-transparent",
|
|
13989
|
-
"transition-colors duration-200 rounded-lg",
|
|
13990
|
-
className
|
|
13991
|
-
),
|
|
13992
|
-
children
|
|
13993
|
-
}
|
|
13994
|
-
);
|
|
13995
|
-
}
|
|
13996
|
-
|
|
13997
|
-
function EntityListRows({ children, className }) {
|
|
13998
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("grid grid-cols-subgrid col-span-full overflow-y-auto p-1", className), children });
|
|
13999
|
-
}
|
|
14000
|
-
|
|
14001
|
-
function EntityListTop({ children, className }) {
|
|
14002
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
14003
|
-
"div",
|
|
14004
|
-
{
|
|
14005
|
-
className: cn(
|
|
14006
|
-
"grid grid-cols-subgrid gap-6 lg:gap-8 xl:gap-10 2xl:gap-12 3xl:gap-14 col-span-full border-b border-border1 px-4 bg-surface2 sticky top-0 z-10",
|
|
14007
|
-
className
|
|
14008
|
-
),
|
|
14009
|
-
children
|
|
14010
|
-
}
|
|
14011
|
-
);
|
|
14012
|
-
}
|
|
14013
|
-
|
|
14014
|
-
const EntityListTopCell = React.forwardRef(({ children, className }, ref) => {
|
|
14015
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
14016
|
-
"span",
|
|
14017
|
-
{
|
|
14018
|
-
ref,
|
|
14019
|
-
className: cn(
|
|
14020
|
-
"h-8 py-1 flex items-center uppercase whitespace-nowrap text-neutral2 tracking-widest text-ui-xs",
|
|
14021
|
-
className
|
|
14022
|
-
),
|
|
14023
|
-
children
|
|
14024
|
-
}
|
|
14025
|
-
);
|
|
14026
|
-
});
|
|
14027
|
-
function EntityListTopCellWithTooltip({ children, tooltip, className }) {
|
|
14028
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(Tooltip, { children: [
|
|
14029
|
-
/* @__PURE__ */ jsxRuntime.jsx(TooltipTrigger, { children: /* @__PURE__ */ jsxRuntime.jsx(EntityListTopCell, { className, children }) }),
|
|
14030
|
-
/* @__PURE__ */ jsxRuntime.jsx(TooltipContent, { children: tooltip })
|
|
14031
|
-
] });
|
|
14032
|
-
}
|
|
14033
|
-
const breakpointClasses = {
|
|
14034
|
-
sm: { show: "hidden sm:inline-flex", hide: "inline-flex sm:hidden" },
|
|
14035
|
-
md: { show: "hidden md:inline-flex", hide: "inline-flex md:hidden" },
|
|
14036
|
-
lg: { show: "hidden lg:inline-flex", hide: "inline-flex lg:hidden" },
|
|
14037
|
-
xl: { show: "hidden xl:inline-flex", hide: "inline-flex xl:hidden" },
|
|
14038
|
-
"2xl": { show: "hidden 2xl:inline-flex", hide: "inline-flex 2xl:hidden" }
|
|
14039
|
-
};
|
|
14040
|
-
function EntityListTopCellSmart({
|
|
14041
|
-
long,
|
|
14042
|
-
short,
|
|
14043
|
-
tooltip,
|
|
14044
|
-
breakpoint = "2xl",
|
|
14045
|
-
className
|
|
14046
|
-
}) {
|
|
14047
|
-
const tooltipText = tooltip ?? (typeof long === "string" ? long : void 0);
|
|
14048
|
-
const bp = breakpointClasses[breakpoint];
|
|
14049
|
-
const content = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
14050
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("items-center gap-1", bp.show), children: long }),
|
|
14051
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("items-center gap-1", bp.hide), children: short })
|
|
14052
|
-
] });
|
|
14053
|
-
if (tooltipText) {
|
|
14054
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
14055
|
-
EntityListTopCellWithTooltip,
|
|
14056
|
-
{
|
|
14057
|
-
tooltip: tooltipText,
|
|
14058
|
-
className: cn("flex [&_svg]:w-[1.3em] [&_svg]:h-[1.3em]", className),
|
|
14059
|
-
children: content
|
|
14060
|
-
}
|
|
14061
|
-
);
|
|
14062
|
-
}
|
|
14063
|
-
return /* @__PURE__ */ jsxRuntime.jsx(EntityListTopCell, { className: cn("flex [&_svg]:w-[1.3em] [&_svg]:h-[1.3em]", className), children: content });
|
|
14064
|
-
}
|
|
14065
|
-
|
|
14066
|
-
const EntityList = Object.assign(EntityListRoot, {
|
|
14067
|
-
Top: EntityListTop,
|
|
14068
|
-
TopCell: EntityListTopCell,
|
|
14069
|
-
TopCellWithTooltip: EntityListTopCellWithTooltip,
|
|
14070
|
-
TopCellSmart: EntityListTopCellSmart,
|
|
14071
|
-
Rows: EntityListRows,
|
|
14072
|
-
Row: EntityListRow,
|
|
14073
|
-
RowLink: EntityListRowLink,
|
|
14074
|
-
Cell: EntityListCell,
|
|
14075
|
-
TextCell: EntityListTextCell,
|
|
14076
|
-
NameCell: EntityListNameCell,
|
|
14077
|
-
DescriptionCell: EntityListDescriptionCell,
|
|
14078
|
-
NoMatch: EntityListNoMatch,
|
|
14079
|
-
Pagination: EntityListPagination
|
|
14080
|
-
});
|
|
14081
|
-
|
|
14082
|
-
const widths = ["75%", "50%", "65%", "90%", "60%", "80%"];
|
|
14083
|
-
function EntityListSkeleton({ columns, numberOfRows = 3 }) {
|
|
14084
|
-
const columnParts = columns.trim().split(/\s+/);
|
|
14085
|
-
const columnCount = columnParts.length;
|
|
14086
|
-
const skeletonColumns = columnParts.map((col) => col === "auto" ? "minmax(6rem, auto)" : col).join(" ");
|
|
14087
|
-
const getPseudoRandomWidth = (rowIdx, colIdx) => {
|
|
14088
|
-
const index = (rowIdx + colIdx + columnCount + numberOfRows) % widths.length;
|
|
14089
|
-
return widths[index];
|
|
14090
|
-
};
|
|
14091
|
-
return /* @__PURE__ */ jsxRuntime.jsx(EntityListRoot, { columns: skeletonColumns, children: Array.from({ length: numberOfRows }).map((_, rowIdx) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
14092
|
-
"div",
|
|
14093
|
-
{
|
|
14094
|
-
className: "entity-list-row grid grid-cols-subgrid gap-6 lg:gap-8 xl:gap-10 2xl:gap-12 3xl:gap-14 col-span-full px-5 border-y border-b-border1 border-t-transparent transition-colors duration-200 rounded-lg",
|
|
14095
|
-
children: Array.from({ length: columnCount }).map((_2, colIdx) => /* @__PURE__ */ jsxRuntime.jsx(EntityListCell, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
14096
|
-
"div",
|
|
14097
|
-
{
|
|
14098
|
-
className: "bg-surface4 rounded-md animate-pulse text-transparent h-4 select-none",
|
|
14099
|
-
style: { width: getPseudoRandomWidth(rowIdx, colIdx) }
|
|
14100
|
-
}
|
|
14101
|
-
) }, colIdx))
|
|
14102
|
-
},
|
|
14103
|
-
rowIdx
|
|
14104
|
-
)) });
|
|
14105
|
-
}
|
|
14106
|
-
|
|
14107
13892
|
const LEVEL_CONFIG = {
|
|
14108
13893
|
debug: { label: "DEBUG", color: "#71717a" },
|
|
14109
13894
|
info: { label: "INFO", color: "#60a5fa" },
|
|
@@ -14172,31 +13957,6 @@ const LogsDataList = Object.assign(DataListRoot, {
|
|
|
14172
13957
|
NextPageLoading: DataListNextPageLoading
|
|
14173
13958
|
});
|
|
14174
13959
|
|
|
14175
|
-
function EntityListPageLayoutRoot({ children, className }) {
|
|
14176
|
-
const pageHeading = usePageHeading();
|
|
14177
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
14178
|
-
"main",
|
|
14179
|
-
{
|
|
14180
|
-
className: cn(
|
|
14181
|
-
"w-full h-full overflow-hidden grid grid-rows-[auto_auto] max-w-[110rem] px-10 mx-auto gap-4 py-6 content-start",
|
|
14182
|
-
className
|
|
14183
|
-
),
|
|
14184
|
-
children: [
|
|
14185
|
-
pageHeading && /* @__PURE__ */ jsxRuntime.jsx("h1", { className: "sr-only", children: pageHeading }),
|
|
14186
|
-
children
|
|
14187
|
-
]
|
|
14188
|
-
}
|
|
14189
|
-
);
|
|
14190
|
-
}
|
|
14191
|
-
|
|
14192
|
-
function EntityListPageLayoutTop({ children, className }) {
|
|
14193
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("grid gap-4", className), children });
|
|
14194
|
-
}
|
|
14195
|
-
|
|
14196
|
-
const EntityListPageLayout = Object.assign(EntityListPageLayoutRoot, {
|
|
14197
|
-
Top: EntityListPageLayoutTop
|
|
14198
|
-
});
|
|
14199
|
-
|
|
14200
13960
|
function PageLayoutColumn({ children, className }) {
|
|
14201
13961
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("grid content-start", className), children });
|
|
14202
13962
|
}
|
|
@@ -22473,9 +22233,6 @@ exports.EntityContent = EntityContent;
|
|
|
22473
22233
|
exports.EntityDescription = EntityDescription;
|
|
22474
22234
|
exports.EntityHeader = EntityHeader;
|
|
22475
22235
|
exports.EntityIcon = EntityIcon;
|
|
22476
|
-
exports.EntityList = EntityList;
|
|
22477
|
-
exports.EntityListPageLayout = EntityListPageLayout;
|
|
22478
|
-
exports.EntityListSkeleton = EntityListSkeleton;
|
|
22479
22236
|
exports.EntityName = EntityName;
|
|
22480
22237
|
exports.Entry = Entry;
|
|
22481
22238
|
exports.EntryCell = EntryCell;
|