@dudousxd/nestjs-telescope-ui 1.20.0 → 1.21.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 +67 -0
- package/dist/react/components/batch-timeline.js +2 -2
- package/dist/react/components/batch-timeline.js.map +1 -1
- package/dist/react/components/cache-badge.d.ts +11 -4
- package/dist/react/components/cache-badge.d.ts.map +1 -1
- package/dist/react/components/cache-badge.js +22 -24
- package/dist/react/components/cache-badge.js.map +1 -1
- package/dist/react/components/charts/chart-card.d.ts.map +1 -1
- package/dist/react/components/charts/chart-card.js +2 -2
- package/dist/react/components/charts/chart-card.js.map +1 -1
- package/dist/react/components/charts/chart-theme.d.ts +28 -18
- package/dist/react/components/charts/chart-theme.d.ts.map +1 -1
- package/dist/react/components/charts/chart-theme.js +22 -12
- package/dist/react/components/charts/chart-theme.js.map +1 -1
- package/dist/react/components/charts/gauge-card.d.ts.map +1 -1
- package/dist/react/components/charts/gauge-card.js +2 -2
- package/dist/react/components/charts/gauge-card.js.map +1 -1
- package/dist/react/components/entries-table.d.ts.map +1 -1
- package/dist/react/components/entries-table.js +4 -3
- package/dist/react/components/entries-table.js.map +1 -1
- package/dist/react/components/entry-detail.js +26 -26
- package/dist/react/components/entry-detail.js.map +1 -1
- package/dist/react/components/entry-insights.d.ts.map +1 -1
- package/dist/react/components/entry-insights.js +16 -16
- package/dist/react/components/entry-insights.js.map +1 -1
- package/dist/react/components/export-json-toolbar.js +2 -2
- package/dist/react/components/export-json-toolbar.js.map +1 -1
- package/dist/react/components/extensions/panel-renderer.d.ts.map +1 -1
- package/dist/react/components/extensions/panel-renderer.js +7 -7
- package/dist/react/components/extensions/panel-renderer.js.map +1 -1
- package/dist/react/components/extensions/stat-card.d.ts.map +1 -1
- package/dist/react/components/extensions/stat-card.js +7 -7
- package/dist/react/components/extensions/stat-card.js.map +1 -1
- package/dist/react/components/flamegraph-view.d.ts.map +1 -1
- package/dist/react/components/flamegraph-view.js +5 -5
- package/dist/react/components/flamegraph-view.js.map +1 -1
- package/dist/react/components/inertia-badge.d.ts +8 -1
- package/dist/react/components/inertia-badge.d.ts.map +1 -1
- package/dist/react/components/inertia-badge.js +20 -18
- package/dist/react/components/inertia-badge.js.map +1 -1
- package/dist/react/components/inertia-body.d.ts.map +1 -1
- package/dist/react/components/inertia-body.js +8 -8
- package/dist/react/components/inertia-body.js.map +1 -1
- package/dist/react/components/pulse-panel.d.ts.map +1 -1
- package/dist/react/components/pulse-panel.js +6 -6
- package/dist/react/components/pulse-panel.js.map +1 -1
- package/dist/react/components/queues/EnqueueJobForm.d.ts.map +1 -1
- package/dist/react/components/queues/EnqueueJobForm.js +2 -1
- package/dist/react/components/queues/EnqueueJobForm.js.map +1 -1
- package/dist/react/components/queues/JobActions.d.ts.map +1 -1
- package/dist/react/components/queues/JobActions.js +11 -9
- package/dist/react/components/queues/JobActions.js.map +1 -1
- package/dist/react/components/queues/JobDetailDrawer.d.ts.map +1 -1
- package/dist/react/components/queues/JobDetailDrawer.js +8 -13
- package/dist/react/components/queues/JobDetailDrawer.js.map +1 -1
- package/dist/react/components/queues/JobTable.d.ts.map +1 -1
- package/dist/react/components/queues/JobTable.js +0 -0
- package/dist/react/components/queues/JobTable.js.map +1 -1
- package/dist/react/components/queues/QueueList.d.ts.map +1 -1
- package/dist/react/components/queues/QueueList.js +6 -6
- package/dist/react/components/queues/QueueList.js.map +1 -1
- package/dist/react/components/queues/QueueStateTabs.d.ts.map +1 -1
- package/dist/react/components/queues/QueueStateTabs.js +9 -7
- package/dist/react/components/queues/QueueStateTabs.js.map +1 -1
- package/dist/react/components/queues/queue-format.d.ts +5 -1
- package/dist/react/components/queues/queue-format.d.ts.map +1 -1
- package/dist/react/components/queues/queue-format.js +11 -7
- package/dist/react/components/queues/queue-format.js.map +1 -1
- package/dist/react/components/queues-panel.js +1 -1
- package/dist/react/components/queues-panel.js.map +1 -1
- package/dist/react/components/request-timeline.d.ts.map +1 -1
- package/dist/react/components/request-timeline.js +2 -2
- package/dist/react/components/request-timeline.js.map +1 -1
- package/dist/react/components/retention-indicator.d.ts.map +1 -1
- package/dist/react/components/retention-indicator.js +1 -1
- package/dist/react/components/retention-indicator.js.map +1 -1
- package/dist/react/components/sparkline.d.ts.map +1 -1
- package/dist/react/components/sparkline.js +1 -1
- package/dist/react/components/sparkline.js.map +1 -1
- package/dist/react/components/tag-autocomplete.d.ts.map +1 -1
- package/dist/react/components/tag-autocomplete.js +5 -4
- package/dist/react/components/tag-autocomplete.js.map +1 -1
- package/dist/react/components/waterfall-view.js +3 -3
- package/dist/react/components/waterfall-view.js.map +1 -1
- package/dist/react/components/window-select.d.ts.map +1 -1
- package/dist/react/components/window-select.js +6 -2
- package/dist/react/components/window-select.js.map +1 -1
- package/dist/react/ui/badge.d.ts +16 -0
- package/dist/react/ui/badge.d.ts.map +1 -0
- package/dist/react/ui/badge.js +28 -0
- package/dist/react/ui/badge.js.map +1 -0
- package/dist/react/ui/button.d.ts +17 -0
- package/dist/react/ui/button.d.ts.map +1 -0
- package/dist/react/ui/button.js +35 -0
- package/dist/react/ui/button.js.map +1 -0
- package/dist/react/ui/cn.d.ts +8 -0
- package/dist/react/ui/cn.d.ts.map +1 -0
- package/dist/react/ui/cn.js +11 -0
- package/dist/react/ui/cn.js.map +1 -0
- package/dist/react/ui/dialog.d.ts +26 -0
- package/dist/react/ui/dialog.d.ts.map +1 -0
- package/dist/react/ui/dialog.js +40 -0
- package/dist/react/ui/dialog.js.map +1 -0
- package/dist/react/ui/index.d.ts +23 -0
- package/dist/react/ui/index.d.ts.map +1 -0
- package/dist/react/ui/index.js +23 -0
- package/dist/react/ui/index.js.map +1 -0
- package/dist/react/ui/input.d.ts +3 -0
- package/dist/react/ui/input.d.ts.map +1 -0
- package/dist/react/ui/input.js +8 -0
- package/dist/react/ui/input.js.map +1 -0
- package/dist/react/ui/select.d.ts +20 -0
- package/dist/react/ui/select.d.ts.map +1 -0
- package/dist/react/ui/select.js +27 -0
- package/dist/react/ui/select.js.map +1 -0
- package/dist/react/ui/table.d.ts +15 -0
- package/dist/react/ui/table.d.ts.map +1 -0
- package/dist/react/ui/table.js +30 -0
- package/dist/react/ui/table.js.map +1 -0
- package/dist/react/ui/tabs.d.ts +12 -0
- package/dist/react/ui/tabs.d.ts.map +1 -0
- package/dist/react/ui/tabs.js +20 -0
- package/dist/react/ui/tabs.js.map +1 -0
- package/dist/react/ui/tooltip.d.ts +10 -0
- package/dist/react/ui/tooltip.d.ts.map +1 -0
- package/dist/react/ui/tooltip.js +12 -0
- package/dist/react/ui/tooltip.js.map +1 -0
- package/dist/react/use-open-console.d.ts.map +1 -1
- package/dist/react/use-open-console.js +24 -1
- package/dist/react/use-open-console.js.map +1 -1
- package/dist/spa/assets/index-BkK5KeFh.css +1 -0
- package/dist/spa/assets/index-DICjg157.js +173 -0
- package/dist/spa/index.html +2 -2
- package/package.json +24 -5
- package/dist/spa/assets/index-BVGbSaHI.css +0 -1
- package/dist/spa/assets/index-bm93wD8B.js +0 -143
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,72 @@
|
|
|
1
1
|
# @dudousxd/nestjs-telescope-ui
|
|
2
2
|
|
|
3
|
+
## 1.21.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#73](https://github.com/DavideCarvalho/nestjs-telescope/pull/73) [`5203512`](https://github.com/DavideCarvalho/nestjs-telescope/commit/520351225a9f0f754e11cc7ef3e28a17d4499d11) Thanks [@DavideCarvalho](https://github.com/DavideCarvalho)! - Adopt the Aviary console design tokens and a vendored shadcn-on-Base-UI primitive layer.
|
|
8
|
+
|
|
9
|
+
The dashboard was authored against hardcoded Tailwind `zinc`/`emerald` utilities — the only
|
|
10
|
+
Aviary console with no token vocabulary at all. It now declares the canonical tokens from
|
|
11
|
+
`AVIARY-UI.md` (`--bg`, `--panel`, `--panel-2`, `--line`, `--line-soft`, `--text`, `--muted`,
|
|
12
|
+
`--good`, `--warn`, `--bad`, `--live`, `--accent`) and consumes them through Tailwind semantic
|
|
13
|
+
colours, so it reads as a sibling of the agent, durable and media consoles rather than a stranger.
|
|
14
|
+
|
|
15
|
+
- **Light mode actually works.** It was a block of `.light .bg-zinc-900 { … }` overrides that
|
|
16
|
+
covered only the utilities someone had remembered to list, leaving mid-grey panels and
|
|
17
|
+
unreadable status text. The tokens are now declared twice — dark under `:root`, light under
|
|
18
|
+
`.light` — so every token-based surface, border, label and status flips with the theme.
|
|
19
|
+
- **Telescope's accent is magenta** (`#e879f9`). Its de-facto accent was emerald-400, which is
|
|
20
|
+
byte-identical to `--good`: the same hue meant both "healthy" and "interactive", side by side
|
|
21
|
+
on the Overview page. Magenta clears `--good`, `--warn`, `--bad`, `--live`, agent's violet and
|
|
22
|
+
media's cyan.
|
|
23
|
+
- **Vendored shadcn primitives** under `src/react/ui/` on Base UI — `Button`, `Badge`, `Input`,
|
|
24
|
+
`Table`, `Select`, `Tabs`, `Tooltip`, `Dialog` — wired so shadcn's semantic classes resolve to
|
|
25
|
+
the Aviary tokens. Note that shadcn's `accent` is a _hover surface_, so the brand hue is
|
|
26
|
+
exposed as `brand`/`--accent` and never as `bg-accent`.
|
|
27
|
+
- The command palette and the queue job drawer are now one `Dialog` implementation instead of
|
|
28
|
+
two hand-rolled overlays, and the two native `<select>` popups (which the OS drew, unthemed)
|
|
29
|
+
are now themable listboxes.
|
|
30
|
+
|
|
31
|
+
`cacheBadge()` and `inertiaBadges()` gain a `variant` field naming the semantic `Badge` variant.
|
|
32
|
+
`className` is unchanged in shape and still returned, so existing callers keep working; prefer
|
|
33
|
+
`variant` in new code.
|
|
34
|
+
|
|
35
|
+
Also fixes a long-standing packaging bug this work's bundle check surfaced: the `./react` barrel
|
|
36
|
+
reaches `recharts`, `react-router-dom` and `reflect-metadata`, none of which this package declared
|
|
37
|
+
— the exact failure that once broke a host's client build. They are now declared as optional peer
|
|
38
|
+
dependencies. `@base-ui-components/react`, `class-variance-authority`, `clsx` and `tailwind-merge`
|
|
39
|
+
are `dependencies`, because this package publishes React source that hosts bundle. A new
|
|
40
|
+
`published-graph.spec.ts` bundles each published entry with esbuild and asserts every package it
|
|
41
|
+
reaches is declared, so this cannot regress silently.
|
|
42
|
+
|
|
43
|
+
### Patch Changes
|
|
44
|
+
|
|
45
|
+
- [#71](https://github.com/DavideCarvalho/nestjs-telescope/pull/71) [`68e4052`](https://github.com/DavideCarvalho/nestjs-telescope/commit/68e40523200c699dae3a376752b8604d3d68ef1f) Thanks [@DavideCarvalho](https://github.com/DavideCarvalho)! - Bound the React peer ranges to the majors this package is actually built and tested against.
|
|
46
|
+
|
|
47
|
+
`react` and `react-dom` were declared `>=18.0.0` and `@tanstack/react-query` `>=5.0.0` — open-ended
|
|
48
|
+
ranges that claim support for every future major. React 20 and Query 6 do not exist yet and
|
|
49
|
+
certainly are not tested here, so the declaration was a promise the package cannot keep; a consumer
|
|
50
|
+
on a future major would get no warning and a runtime surprise instead.
|
|
51
|
+
|
|
52
|
+
Now `^18.0.0 || ^19.0.0` and `^5.0.0`. Both majors are real: the package builds and tests against
|
|
53
|
+
React 18, and its `./react/console` launcher is consumed from a React 19 host.
|
|
54
|
+
|
|
55
|
+
No behaviour change — peer ranges only affect what a package manager warns about on install.
|
|
56
|
+
|
|
57
|
+
## 1.20.1
|
|
58
|
+
|
|
59
|
+
### Patch Changes
|
|
60
|
+
|
|
61
|
+
- [#69](https://github.com/DavideCarvalho/nestjs-telescope/pull/69) [`acdfacb`](https://github.com/DavideCarvalho/nestjs-telescope/commit/acdfacba22495b6517bf89d7e50a25d3032c1933) Thanks [@DavideCarvalho](https://github.com/DavideCarvalho)! - Clear the console launcher's pending state when the page is restored from the back/forward cache.
|
|
62
|
+
|
|
63
|
+
`useOpenTelescopeConsole` deliberately keeps `isPending` set after a successful mint so the button
|
|
64
|
+
does not flicker back to idle on a page that is navigating away. With bfcache the page does not die:
|
|
65
|
+
pressing Back restored the launcher with its React state intact, leaving a permanent "Opening…"
|
|
66
|
+
spinner on a button that could never be clicked again. The hook now listens for `pageshow` and
|
|
67
|
+
resets only when `event.persisted` is true, so a fresh load and a mint that is still genuinely in
|
|
68
|
+
flight both keep the original behaviour.
|
|
69
|
+
|
|
3
70
|
## 1.20.0
|
|
4
71
|
|
|
5
72
|
### Minor Changes
|
|
@@ -4,7 +4,7 @@ export function BatchTimeline({ batch, currentId, onSelect, }) {
|
|
|
4
4
|
return (_jsx("ol", { className: "space-y-1", children: [...batch]
|
|
5
5
|
.sort((a, b) => a.sequence - b.sequence)
|
|
6
6
|
.map((entry) => (_jsx("li", { children: _jsxs("button", { type: "button", onClick: () => onSelect?.(entry.id), className: `flex w-full justify-between gap-4 px-2 py-1 text-left text-xs ${entry.id === currentId
|
|
7
|
-
? 'bg-
|
|
8
|
-
: 'text-
|
|
7
|
+
? 'bg-panel-2 text-brand'
|
|
8
|
+
: 'text-muted-foreground hover:bg-panel'}`, children: [_jsxs("span", { children: [_jsx("span", { className: "text-brand", children: entry.type }), " ", entryLabel(entry)] }), _jsx("span", { className: "text-muted-foreground", children: entry.durationMs != null ? `${entry.durationMs}ms` : '' })] }) }, entry.id))) }));
|
|
9
9
|
}
|
|
10
10
|
//# sourceMappingURL=batch-timeline.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batch-timeline.js","sourceRoot":"","sources":["../../../src/react/components/batch-timeline.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,MAAM,UAAU,aAAa,CAAC,EAC5B,KAAK,EACL,SAAS,EACT,QAAQ,GAKT;IACC,OAAO,CACL,aAAI,SAAS,EAAC,WAAW,YACtB,CAAC,GAAG,KAAK,CAAC;aACR,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;aACvC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACd,uBACE,kBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EACnC,SAAS,EAAE,iEACT,KAAK,CAAC,EAAE,KAAK,SAAS;oBACpB,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"batch-timeline.js","sourceRoot":"","sources":["../../../src/react/components/batch-timeline.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,MAAM,UAAU,aAAa,CAAC,EAC5B,KAAK,EACL,SAAS,EACT,QAAQ,GAKT;IACC,OAAO,CACL,aAAI,SAAS,EAAC,WAAW,YACtB,CAAC,GAAG,KAAK,CAAC;aACR,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;aACvC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACd,uBACE,kBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EACnC,SAAS,EAAE,iEACT,KAAK,CAAC,EAAE,KAAK,SAAS;oBACpB,CAAC,CAAC,uBAAuB;oBACzB,CAAC,CAAC,sCACN,EAAE,aAEF,2BACE,eAAM,SAAS,EAAC,YAAY,YAAE,KAAK,CAAC,IAAI,GAAQ,OAAE,UAAU,CAAC,KAAK,CAAC,IAC9D,EACP,eAAM,SAAS,EAAC,uBAAuB,YACpC,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,EAAE,GACnD,IACA,IAhBF,KAAK,CAAC,EAAE,CAiBZ,CACN,CAAC,GACD,CACN,CAAC;AACJ,CAAC"}
|
|
@@ -1,17 +1,24 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Cache entries carry `content: { operation, hit, key, tier?, stale?, ... }`. This
|
|
3
|
-
* module derives a small status pill:
|
|
4
|
-
*
|
|
3
|
+
* module derives a small status pill: `HIT` reads `--good`, `MISS` reads `--warn`,
|
|
4
|
+
* and `SET`/`DEL`/`CLEAR` are neutral. A grace-served (`stale`) hit reads warn to
|
|
5
5
|
* stand out from a fresh hit; a `tier` (e.g. l1/l2) is appended when present.
|
|
6
6
|
*/
|
|
7
|
+
import { type BadgeProps } from '../ui/index.js';
|
|
7
8
|
export interface CacheBadgeInfo {
|
|
8
9
|
label: string;
|
|
10
|
+
/**
|
|
11
|
+
* Semantic role, not a colour: which `Badge` variant renders this pill. The
|
|
12
|
+
* hue behind it comes from the Aviary status tokens, so it themes with the
|
|
13
|
+
* console. Prefer this over {@link CacheBadgeInfo.className} in new code.
|
|
14
|
+
*/
|
|
15
|
+
variant: NonNullable<BadgeProps['variant']>;
|
|
16
|
+
/** Resolved class string for the variant, for callers rendering their own element. */
|
|
9
17
|
className: string;
|
|
10
18
|
}
|
|
11
19
|
/**
|
|
12
20
|
* Pure mapping from entry content to a cache pill descriptor; `null` for any
|
|
13
|
-
* non-cache or unrecognized content.
|
|
14
|
-
* by the queue action buttons.
|
|
21
|
+
* non-cache or unrecognized content.
|
|
15
22
|
*/
|
|
16
23
|
export declare function cacheBadge(content: unknown): CacheBadgeInfo | null;
|
|
17
24
|
/** Small cache hit/miss/set status pill; renders nothing for non-cache content. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache-badge.d.ts","sourceRoot":"","sources":["../../../src/react/components/cache-badge.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"cache-badge.d.ts","sourceRoot":"","sources":["../../../src/react/components/cache-badge.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAS,KAAK,UAAU,EAAiB,MAAM,gBAAgB,CAAC;AAsBvE,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,OAAO,EAAE,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;IAC5C,sFAAsF;IACtF,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,cAAc,GAAG,IAAI,CAalE;AAED,mFAAmF;AACnF,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAIhF"}
|
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Cache entries carry `content: { operation, hit, key, tier?, stale?, ... }`. This
|
|
4
|
+
* module derives a small status pill: `HIT` reads `--good`, `MISS` reads `--warn`,
|
|
5
|
+
* and `SET`/`DEL`/`CLEAR` are neutral. A grace-served (`stale`) hit reads warn to
|
|
6
|
+
* stand out from a fresh hit; a `tier` (e.g. l1/l2) is appended when present.
|
|
7
|
+
*/
|
|
8
|
+
import { Badge, badgeVariants } from '../ui/index.js';
|
|
2
9
|
const OPERATIONS = new Set(['get', 'set', 'delete', 'clear']);
|
|
3
10
|
/** Narrow unknown entry content to the cache shape without casts. */
|
|
4
11
|
function isCacheContent(content) {
|
|
@@ -13,39 +20,30 @@ function isCacheContent(content) {
|
|
|
13
20
|
return false;
|
|
14
21
|
return typeof key === 'string';
|
|
15
22
|
}
|
|
16
|
-
|
|
23
|
+
function info(label, variant) {
|
|
24
|
+
return { label, variant, className: badgeVariants({ variant }) };
|
|
25
|
+
}
|
|
17
26
|
/**
|
|
18
27
|
* Pure mapping from entry content to a cache pill descriptor; `null` for any
|
|
19
|
-
* non-cache or unrecognized content.
|
|
20
|
-
* by the queue action buttons.
|
|
28
|
+
* non-cache or unrecognized content.
|
|
21
29
|
*/
|
|
22
30
|
export function cacheBadge(content) {
|
|
23
31
|
if (!isCacheContent(content))
|
|
24
32
|
return null;
|
|
25
33
|
const tierSuffix = typeof content.tier === 'string' ? ` ${content.tier.toUpperCase()}` : '';
|
|
26
|
-
if (content.operation === 'set')
|
|
27
|
-
return
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
if (content.operation === 'clear') {
|
|
33
|
-
return { label: 'CLEAR', className: `${PILL_BASE} border-zinc-700 text-zinc-400` };
|
|
34
|
-
}
|
|
34
|
+
if (content.operation === 'set')
|
|
35
|
+
return info(`SET${tierSuffix}`, 'muted');
|
|
36
|
+
if (content.operation === 'delete')
|
|
37
|
+
return info('DEL', 'muted');
|
|
38
|
+
if (content.operation === 'clear')
|
|
39
|
+
return info('CLEAR', 'muted');
|
|
35
40
|
if (content.hit === true) {
|
|
36
|
-
// A grace-period (stale) hit
|
|
41
|
+
// A grace-period (stale) hit warns so it's distinguishable from a fresh hit.
|
|
37
42
|
const stale = content.stale === true;
|
|
38
|
-
return {
|
|
39
|
-
label: `${stale ? 'HIT·STALE' : 'HIT'}${tierSuffix}`,
|
|
40
|
-
className: `${PILL_BASE} ${stale ? 'border-amber-500/40 text-amber-300' : 'border-emerald-500/40 text-emerald-300'}`,
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
if (content.hit === false) {
|
|
44
|
-
return {
|
|
45
|
-
label: `MISS${tierSuffix}`,
|
|
46
|
-
className: `${PILL_BASE} border-amber-500/40 text-amber-300`,
|
|
47
|
-
};
|
|
43
|
+
return info(`${stale ? 'HIT·STALE' : 'HIT'}${tierSuffix}`, stale ? 'warn' : 'good');
|
|
48
44
|
}
|
|
45
|
+
if (content.hit === false)
|
|
46
|
+
return info(`MISS${tierSuffix}`, 'warn');
|
|
49
47
|
return null;
|
|
50
48
|
}
|
|
51
49
|
/** Small cache hit/miss/set status pill; renders nothing for non-cache content. */
|
|
@@ -53,6 +51,6 @@ export function CacheBadge({ content }) {
|
|
|
53
51
|
const badge = cacheBadge(content);
|
|
54
52
|
if (badge === null)
|
|
55
53
|
return null;
|
|
56
|
-
return _jsx(
|
|
54
|
+
return _jsx(Badge, { variant: badge.variant, children: badge.label });
|
|
57
55
|
}
|
|
58
56
|
//# sourceMappingURL=cache-badge.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache-badge.js","sourceRoot":"","sources":["../../../src/react/components/cache-badge.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"cache-badge.js","sourceRoot":"","sources":["../../../src/react/components/cache-badge.tsx"],"names":[],"mappings":";AAAA;;;;;GAKG;AACH,OAAO,EAAE,KAAK,EAAmB,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAUvE,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;AAE9D,qEAAqE;AACrE,SAAS,cAAc,CAAC,OAAgB;IACtC,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAClE,IAAI,CAAC,CAAC,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1F,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IACxC,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9E,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC3D,OAAO,OAAO,GAAG,KAAK,QAAQ,CAAC;AACjC,CAAC;AAcD,SAAS,IAAI,CAAC,KAAa,EAAE,OAA2C;IACtE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AACnE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,OAAgB;IACzC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,MAAM,UAAU,GAAG,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5F,IAAI,OAAO,CAAC,SAAS,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC,MAAM,UAAU,EAAE,EAAE,OAAO,CAAC,CAAC;IAC1E,IAAI,OAAO,CAAC,SAAS,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAChE,IAAI,OAAO,CAAC,SAAS,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACjE,IAAI,OAAO,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC;QACzB,6EAA6E;QAC7E,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,KAAK,IAAI,CAAC;QACrC,OAAO,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,GAAG,UAAU,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACtF,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC,OAAO,UAAU,EAAE,EAAE,MAAM,CAAC,CAAC;IACpE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,UAAU,CAAC,EAAE,OAAO,EAAwB;IAC1D,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IAClC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,OAAO,KAAC,KAAK,IAAC,OAAO,EAAE,KAAK,CAAC,OAAO,YAAG,KAAK,CAAC,KAAK,GAAS,CAAC;AAC9D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chart-card.d.ts","sourceRoot":"","sources":["../../../../src/react/components/charts/chart-card.tsx"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,KAAK,EACL,MAAY,EACZ,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,GAAG,GAAG,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"chart-card.d.ts","sourceRoot":"","sources":["../../../../src/react/components/charts/chart-card.tsx"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,KAAK,EACL,MAAY,EACZ,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,GAAG,GAAG,CAAC,OAAO,CAYd;AAED,wBAAgB,eAAe,CAAC,EAAE,MAAY,EAAE,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,CASlF"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
/** Shared card chrome (title, optional right slot, framed body) for every chart card. */
|
|
3
3
|
export function ChartCard({ title, right, height = 220, children, }) {
|
|
4
|
-
return (_jsxs("section", { className: "rounded-lg border border-
|
|
4
|
+
return (_jsxs("section", { className: "rounded-lg border border-line bg-panel/40 p-4", children: [_jsxs("header", { className: "mb-3 flex items-center justify-between", children: [_jsx("h3", { className: "text-xs font-medium uppercase tracking-wide text-muted-foreground", children: title }), right] }), _jsx("div", { style: { height }, children: children })] }));
|
|
5
5
|
}
|
|
6
6
|
export function ChartEmptyState({ height = 220 }) {
|
|
7
|
-
return (_jsx("div", { className: "flex items-center justify-center text-xs text-
|
|
7
|
+
return (_jsx("div", { className: "flex items-center justify-center text-xs text-muted-foreground", style: { height }, children: "No data in window." }));
|
|
8
8
|
}
|
|
9
9
|
//# sourceMappingURL=chart-card.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chart-card.js","sourceRoot":"","sources":["../../../../src/react/components/charts/chart-card.tsx"],"names":[],"mappings":";AAAA,yFAAyF;AACzF,MAAM,UAAU,SAAS,CAAC,EACxB,KAAK,EACL,KAAK,EACL,MAAM,GAAG,GAAG,EACZ,QAAQ,GAMT;IACC,OAAO,CACL,mBAAS,SAAS,EAAC,
|
|
1
|
+
{"version":3,"file":"chart-card.js","sourceRoot":"","sources":["../../../../src/react/components/charts/chart-card.tsx"],"names":[],"mappings":";AAAA,yFAAyF;AACzF,MAAM,UAAU,SAAS,CAAC,EACxB,KAAK,EACL,KAAK,EACL,MAAM,GAAG,GAAG,EACZ,QAAQ,GAMT;IACC,OAAO,CACL,mBAAS,SAAS,EAAC,+CAA+C,aAChE,kBAAQ,SAAS,EAAC,wCAAwC,aACxD,aAAI,SAAS,EAAC,mEAAmE,YAC9E,KAAK,GACH,EACJ,KAAK,IACC,EACT,cAAK,KAAK,EAAE,EAAE,MAAM,EAAE,YAAG,QAAQ,GAAO,IAChC,CACX,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,EAAE,MAAM,GAAG,GAAG,EAAuB;IACnE,OAAO,CACL,cACE,SAAS,EAAC,gEAAgE,EAC1E,KAAK,EAAE,EAAE,MAAM,EAAE,mCAGb,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1,41 +1,51 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Shared
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* Shared theme values for the Recharts chart cards. Only this folder imports
|
|
3
|
+
* Recharts, so this is the one place chart colours are decided.
|
|
4
|
+
*
|
|
5
|
+
* Two palettes live here and they are NOT the same thing:
|
|
6
|
+
* - `TYPE_HEX` is CATEGORICAL: one hue per entry type, chosen to be mutually
|
|
7
|
+
* distinguishable. It is data, and deliberately does not go through the Aviary
|
|
8
|
+
* status tokens — a `request` series is not "healthy", it is just requests.
|
|
9
|
+
* - `chartTheme` / `ACCENT_HEX` is CHROME: grid, axes, tooltip, the throughput
|
|
10
|
+
* accent. Those follow the console tokens so they theme with everything else.
|
|
11
|
+
*
|
|
12
|
+
* Recharts takes plain colour strings rather than classes, so chrome reads the
|
|
13
|
+
* tokens as `var(--x)`; SVG resolves the custom property at paint time.
|
|
5
14
|
*/
|
|
6
15
|
/** Resolved hex colors for known entry types (matches the `fill-*` tokens used elsewhere). */
|
|
7
16
|
export declare const TYPE_HEX: Record<string, string>;
|
|
8
|
-
|
|
17
|
+
/** Primary throughput accent — the console `--accent`, not a status hue. */
|
|
18
|
+
export declare const ACCENT_HEX = "var(--accent)";
|
|
9
19
|
export declare function hexForType(type: string, fallbackIndex?: number): string;
|
|
10
20
|
export declare const chartTheme: {
|
|
11
|
-
readonly gridStroke: "
|
|
12
|
-
readonly axisStroke: "
|
|
13
|
-
readonly axisTick: "
|
|
14
|
-
readonly tooltipBg: "
|
|
15
|
-
readonly tooltipBorder: "
|
|
16
|
-
readonly tooltipText: "
|
|
17
|
-
readonly tooltipLabel: "
|
|
18
|
-
readonly legendText: "
|
|
21
|
+
readonly gridStroke: "color-mix(in srgb, var(--line) 70%, transparent)";
|
|
22
|
+
readonly axisStroke: "var(--line)";
|
|
23
|
+
readonly axisTick: "var(--muted)";
|
|
24
|
+
readonly tooltipBg: "var(--panel-2)";
|
|
25
|
+
readonly tooltipBorder: "var(--line)";
|
|
26
|
+
readonly tooltipText: "var(--text)";
|
|
27
|
+
readonly tooltipLabel: "var(--muted)";
|
|
28
|
+
readonly legendText: "var(--muted)";
|
|
19
29
|
};
|
|
20
30
|
/** Shared `contentStyle` for Recharts `<Tooltip>` so every chart looks identical. */
|
|
21
31
|
export declare const tooltipContentStyle: {
|
|
22
|
-
readonly background: "
|
|
23
|
-
readonly border: "1px solid
|
|
32
|
+
readonly background: "var(--panel-2)";
|
|
33
|
+
readonly border: "1px solid var(--line)";
|
|
24
34
|
readonly borderRadius: 6;
|
|
25
35
|
readonly fontSize: 11;
|
|
26
|
-
readonly color: "
|
|
36
|
+
readonly color: "var(--text)";
|
|
27
37
|
};
|
|
28
38
|
export declare const tooltipLabelStyle: {
|
|
29
|
-
readonly color: "
|
|
39
|
+
readonly color: "var(--muted)";
|
|
30
40
|
readonly fontSize: 10;
|
|
31
41
|
readonly textTransform: "uppercase";
|
|
32
42
|
readonly letterSpacing: "0.05em";
|
|
33
43
|
};
|
|
34
44
|
export declare const tooltipItemStyle: {
|
|
35
|
-
readonly color: "
|
|
45
|
+
readonly color: "var(--text)";
|
|
36
46
|
};
|
|
37
47
|
export declare const axisTickStyle: {
|
|
38
|
-
readonly fill: "
|
|
48
|
+
readonly fill: "var(--muted)";
|
|
39
49
|
readonly fontSize: 10;
|
|
40
50
|
};
|
|
41
51
|
//# sourceMappingURL=chart-theme.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chart-theme.d.ts","sourceRoot":"","sources":["../../../../src/react/components/charts/chart-theme.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"chart-theme.d.ts","sourceRoot":"","sources":["../../../../src/react/components/charts/chart-theme.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,8FAA8F;AAC9F,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAO3C,CAAC;AAKF,4EAA4E;AAC5E,eAAO,MAAM,UAAU,kBAAkB,CAAC;AAE1C,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,SAAI,GAAG,MAAM,CAGlE;AAED,eAAO,MAAM,UAAU;;;;;;;;;CASb,CAAC;AAEX,qFAAqF;AACrF,eAAO,MAAM,mBAAmB;;;;;;CAMtB,CAAC;AAEX,eAAO,MAAM,iBAAiB;;;;;CAKpB,CAAC;AAEX,eAAO,MAAM,gBAAgB;;CAEnB,CAAC;AAEX,eAAO,MAAM,aAAa;;;CAGhB,CAAC"}
|
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Shared
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* Shared theme values for the Recharts chart cards. Only this folder imports
|
|
3
|
+
* Recharts, so this is the one place chart colours are decided.
|
|
4
|
+
*
|
|
5
|
+
* Two palettes live here and they are NOT the same thing:
|
|
6
|
+
* - `TYPE_HEX` is CATEGORICAL: one hue per entry type, chosen to be mutually
|
|
7
|
+
* distinguishable. It is data, and deliberately does not go through the Aviary
|
|
8
|
+
* status tokens — a `request` series is not "healthy", it is just requests.
|
|
9
|
+
* - `chartTheme` / `ACCENT_HEX` is CHROME: grid, axes, tooltip, the throughput
|
|
10
|
+
* accent. Those follow the console tokens so they theme with everything else.
|
|
11
|
+
*
|
|
12
|
+
* Recharts takes plain colour strings rather than classes, so chrome reads the
|
|
13
|
+
* tokens as `var(--x)`; SVG resolves the custom property at paint time.
|
|
5
14
|
*/
|
|
6
15
|
/** Resolved hex colors for known entry types (matches the `fill-*` tokens used elsewhere). */
|
|
7
16
|
export const TYPE_HEX = {
|
|
@@ -14,20 +23,21 @@ export const TYPE_HEX = {
|
|
|
14
23
|
};
|
|
15
24
|
/** Ordered palette for series whose type is not in {@link TYPE_HEX}. */
|
|
16
25
|
const FALLBACK_PALETTE = ['#71717a', '#a1a1aa', '#22d3ee', '#c084fc', '#fb923c', '#4ade80'];
|
|
17
|
-
|
|
26
|
+
/** Primary throughput accent — the console `--accent`, not a status hue. */
|
|
27
|
+
export const ACCENT_HEX = 'var(--accent)';
|
|
18
28
|
export function hexForType(type, fallbackIndex = 0) {
|
|
19
29
|
const fallback = FALLBACK_PALETTE[fallbackIndex % FALLBACK_PALETTE.length];
|
|
20
30
|
return TYPE_HEX[type] ?? fallback ?? '#71717a';
|
|
21
31
|
}
|
|
22
32
|
export const chartTheme = {
|
|
23
|
-
gridStroke: '
|
|
24
|
-
axisStroke: '
|
|
25
|
-
axisTick: '
|
|
26
|
-
tooltipBg: '
|
|
27
|
-
tooltipBorder: '
|
|
28
|
-
tooltipText: '
|
|
29
|
-
tooltipLabel: '
|
|
30
|
-
legendText: '
|
|
33
|
+
gridStroke: 'color-mix(in srgb, var(--line) 70%, transparent)',
|
|
34
|
+
axisStroke: 'var(--line)',
|
|
35
|
+
axisTick: 'var(--muted)',
|
|
36
|
+
tooltipBg: 'var(--panel-2)',
|
|
37
|
+
tooltipBorder: 'var(--line)',
|
|
38
|
+
tooltipText: 'var(--text)',
|
|
39
|
+
tooltipLabel: 'var(--muted)',
|
|
40
|
+
legendText: 'var(--muted)',
|
|
31
41
|
};
|
|
32
42
|
/** Shared `contentStyle` for Recharts `<Tooltip>` so every chart looks identical. */
|
|
33
43
|
export const tooltipContentStyle = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chart-theme.js","sourceRoot":"","sources":["../../../../src/react/components/charts/chart-theme.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"chart-theme.js","sourceRoot":"","sources":["../../../../src/react/components/charts/chart-theme.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,8FAA8F;AAC9F,MAAM,CAAC,MAAM,QAAQ,GAA2B;IAC9C,OAAO,EAAE,SAAS,EAAE,cAAc;IAClC,KAAK,EAAE,SAAS,EAAE,UAAU;IAC5B,GAAG,EAAE,SAAS,EAAE,aAAa;IAC7B,SAAS,EAAE,SAAS,EAAE,UAAU;IAChC,WAAW,EAAE,SAAS,EAAE,YAAY;IACpC,IAAI,EAAE,SAAS,EAAE,WAAW;CAC7B,CAAC;AAEF,wEAAwE;AACxE,MAAM,gBAAgB,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AAE5F,4EAA4E;AAC5E,MAAM,CAAC,MAAM,UAAU,GAAG,eAAe,CAAC;AAE1C,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,aAAa,GAAG,CAAC;IACxD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,aAAa,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC3E,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,IAAI,SAAS,CAAC;AACjD,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,UAAU,EAAE,kDAAkD;IAC9D,UAAU,EAAE,aAAa;IACzB,QAAQ,EAAE,cAAc;IACxB,SAAS,EAAE,gBAAgB;IAC3B,aAAa,EAAE,aAAa;IAC5B,WAAW,EAAE,aAAa;IAC1B,YAAY,EAAE,cAAc;IAC5B,UAAU,EAAE,cAAc;CAClB,CAAC;AAEX,qFAAqF;AACrF,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,UAAU,EAAE,UAAU,CAAC,SAAS;IAChC,MAAM,EAAE,aAAa,UAAU,CAAC,aAAa,EAAE;IAC/C,YAAY,EAAE,CAAC;IACf,QAAQ,EAAE,EAAE;IACZ,KAAK,EAAE,UAAU,CAAC,WAAW;CACrB,CAAC;AAEX,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,KAAK,EAAE,UAAU,CAAC,YAAY;IAC9B,QAAQ,EAAE,EAAE;IACZ,aAAa,EAAE,WAAW;IAC1B,aAAa,EAAE,QAAQ;CACf,CAAC;AAEX,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,KAAK,EAAE,UAAU,CAAC,WAAW;CACrB,CAAC;AAEX,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,IAAI,EAAE,UAAU,CAAC,QAAQ;IACzB,QAAQ,EAAE,EAAE;CACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gauge-card.d.ts","sourceRoot":"","sources":["../../../../src/react/components/charts/gauge-card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAIjC,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,KAAK,EACL,GAAO,EACP,GAAO,EACP,KAAK,EACL,
|
|
1
|
+
{"version":3,"file":"gauge-card.d.ts","sourceRoot":"","sources":["../../../../src/react/components/charts/gauge-card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAIjC,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,KAAK,EACL,GAAO,EACP,GAAO,EACP,KAAK,EACL,KAAqB,EACrB,MAAY,GACb,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,GAAG,CAAC,OAAO,CAwCd"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { RadialBar, RadialBarChart, ResponsiveContainer } from 'recharts';
|
|
3
3
|
import { ChartCard } from './chart-card.js';
|
|
4
|
-
export function GaugeCard({ title, value, min = 0, max = 1, label, color = '
|
|
4
|
+
export function GaugeCard({ title, value, min = 0, max = 1, label, color = 'var(--good)', height = 220, }) {
|
|
5
5
|
const range = max - min;
|
|
6
6
|
const pct = range === 0 ? 0 : Math.max(0, Math.min(1, (value - min) / range));
|
|
7
7
|
const displayLabel = label ?? `${Math.round(pct * 100)}%`;
|
|
@@ -14,6 +14,6 @@ export function GaugeCard({ title, value, min = 0, max = 1, label, color = '#34d
|
|
|
14
14
|
alignItems: 'center',
|
|
15
15
|
justifyContent: 'center',
|
|
16
16
|
paddingTop: '40%',
|
|
17
|
-
}, children: _jsx("span", { style: { fontSize: 20, fontWeight: 600, color: '
|
|
17
|
+
}, children: _jsx("span", { style: { fontSize: 20, fontWeight: 600, color: 'var(--text)' }, children: displayLabel }) })] }) }));
|
|
18
18
|
}
|
|
19
19
|
//# sourceMappingURL=gauge-card.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gauge-card.js","sourceRoot":"","sources":["../../../../src/react/components/charts/gauge-card.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,UAAU,SAAS,CAAC,EACxB,KAAK,EACL,KAAK,EACL,GAAG,GAAG,CAAC,EACP,GAAG,GAAG,CAAC,EACP,KAAK,EACL,KAAK,GAAG,
|
|
1
|
+
{"version":3,"file":"gauge-card.js","sourceRoot":"","sources":["../../../../src/react/components/charts/gauge-card.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,UAAU,SAAS,CAAC,EACxB,KAAK,EACL,KAAK,EACL,GAAG,GAAG,CAAC,EACP,GAAG,GAAG,CAAC,EACP,KAAK,EACL,KAAK,GAAG,aAAa,EACrB,MAAM,GAAG,GAAG,GASb;IACC,MAAM,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC;IACxB,MAAM,GAAG,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IAC9E,MAAM,YAAY,GAAG,KAAK,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;IAC1D,MAAM,UAAU,GAAG,MAAM,GAAG,EAAE,CAAC;IAE/B,MAAM,IAAI,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAEjD,OAAO,CACL,KAAC,SAAS,IAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,YACzC,eAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,aACtD,KAAC,mBAAmB,IAAC,KAAK,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,YAC7C,KAAC,cAAc,IACb,WAAW,EAAC,KAAK,EACjB,WAAW,EAAC,MAAM,EAClB,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,GAAG,EACf,QAAQ,EAAE,CAAC,EACX,OAAO,EAAE,EAAE,YAEX,KAAC,SAAS,IAAC,OAAO,EAAC,OAAO,EAAC,YAAY,EAAE,CAAC,EAAE,iBAAiB,EAAE,KAAK,GAAI,GACzD,GACG,EACtB,cACE,KAAK,EAAE;wBACL,QAAQ,EAAE,UAAU;wBACpB,KAAK,EAAE,CAAC;wBACR,OAAO,EAAE,MAAM;wBACf,UAAU,EAAE,QAAQ;wBACpB,cAAc,EAAE,QAAQ;wBACxB,UAAU,EAAE,KAAK;qBAClB,YAED,eAAM,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,YACjE,YAAY,GACR,GACH,IACF,GACI,CACb,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entries-table.d.ts","sourceRoot":"","sources":["../../../src/react/components/entries-table.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"entries-table.d.ts","sourceRoot":"","sources":["../../../src/react/components/entries-table.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAMnD,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAuC/C;AAED,8EAA8E;AAC9E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAItD;AAED,wEAAwE;AACxE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CASvD;AAED,wBAAgB,YAAY,CAAC,EAC3B,OAAO,EACP,QAAQ,GACT,EAAE;IAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,CAsErE"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '../ui/index.js';
|
|
2
3
|
import { CacheBadge } from './cache-badge.js';
|
|
3
4
|
import { InertiaBadge } from './inertia-badge.js';
|
|
4
5
|
import { buildUserActivityHref, findUserTag, userTagId } from './user-tag.js';
|
|
@@ -67,13 +68,13 @@ export function dumpValuePreview(value) {
|
|
|
67
68
|
return text.length > 80 ? `${text.slice(0, 80)}…` : text;
|
|
68
69
|
}
|
|
69
70
|
export function EntriesTable({ entries, onSelect, }) {
|
|
70
|
-
return (_jsxs(
|
|
71
|
+
return (_jsxs(Table, { className: "text-left", children: [_jsx(TableHeader, { children: _jsxs(TableRow, { children: [_jsx(TableHead, { className: "px-0 py-2", children: "Time" }), _jsx(TableHead, { className: "px-0", children: "Type" }), _jsx(TableHead, { className: "px-0", children: "Summary" }), _jsx(TableHead, { className: "px-0", children: "Duration" }), _jsx(TableHead, { className: "px-0", children: "Tags" })] }) }), _jsx(TableBody, { children: entries.map((entry) => {
|
|
71
72
|
const userTag = findUserTag(entry.tags);
|
|
72
73
|
const otherTags = entry.tags.filter((tag) => tag !== userTag);
|
|
73
|
-
return (_jsxs(
|
|
74
|
+
return (_jsxs(TableRow, { onClick: () => onSelect?.(entry.id), onKeyDown: (event) => {
|
|
74
75
|
if (event.key === 'Enter' || event.key === ' ')
|
|
75
76
|
onSelect?.(entry.id);
|
|
76
|
-
}, className: "cursor-pointer
|
|
77
|
+
}, className: "cursor-pointer hover:bg-panel", children: [_jsx(TableCell, { className: "px-0 py-1.5 align-middle text-muted-foreground", children: new Date(entry.createdAt).toLocaleTimeString() }), _jsx(TableCell, { className: "px-0 py-1.5 align-middle text-brand", children: entry.type }), _jsx(TableCell, { className: "max-w-md truncate px-0 py-1.5 align-middle text-foreground", children: _jsxs("span", { className: "inline-flex items-center gap-1.5", children: [entry.type === 'cache' ? _jsx(CacheBadge, { content: entry.content }) : null, entry.type === 'inertia' ? _jsx(InertiaBadge, { content: entry.content }) : null, _jsx("span", { className: "truncate", children: entryLabel(entry) })] }) }), _jsx(TableCell, { className: "px-0 py-1.5 align-middle text-muted-foreground", children: entry.durationMs != null ? `${entry.durationMs}ms` : '—' }), _jsx(TableCell, { className: "px-0 py-1.5 align-middle text-muted-foreground", children: _jsxs("span", { className: "inline-flex items-center gap-1.5", children: [entry.traceId !== null && (_jsxs("a", { href: `#/traces/${entry.traceId}`, title: `View trace ${entry.traceId}`, onClick: (event) => event.stopPropagation(), className: "rounded bg-panel px-1.5 py-0.5 font-mono text-[10px] text-brand hover:bg-panel-2", children: ["trace:", entry.traceId.slice(0, 6)] })), userTag !== null && (_jsx("a", { href: buildUserActivityHref(userTag), title: `View all activity for user ${userTagId(userTag)}`, onClick: (event) => event.stopPropagation(), className: "rounded bg-panel px-1.5 py-0.5 font-mono text-[10px] text-good hover:bg-panel-2", children: userTag })), otherTags.length > 0 && _jsx("span", { children: otherTags.join(' ') })] }) })] }, entry.id));
|
|
77
78
|
}) })] }));
|
|
78
79
|
}
|
|
79
80
|
//# sourceMappingURL=entries-table.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entries-table.js","sourceRoot":"","sources":["../../../src/react/components/entries-table.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"entries-table.js","sourceRoot":"","sources":["../../../src/react/components/entries-table.tsx"],"names":[],"mappings":"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"}
|