@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.
Files changed (136) hide show
  1. package/CHANGELOG.md +67 -0
  2. package/dist/react/components/batch-timeline.js +2 -2
  3. package/dist/react/components/batch-timeline.js.map +1 -1
  4. package/dist/react/components/cache-badge.d.ts +11 -4
  5. package/dist/react/components/cache-badge.d.ts.map +1 -1
  6. package/dist/react/components/cache-badge.js +22 -24
  7. package/dist/react/components/cache-badge.js.map +1 -1
  8. package/dist/react/components/charts/chart-card.d.ts.map +1 -1
  9. package/dist/react/components/charts/chart-card.js +2 -2
  10. package/dist/react/components/charts/chart-card.js.map +1 -1
  11. package/dist/react/components/charts/chart-theme.d.ts +28 -18
  12. package/dist/react/components/charts/chart-theme.d.ts.map +1 -1
  13. package/dist/react/components/charts/chart-theme.js +22 -12
  14. package/dist/react/components/charts/chart-theme.js.map +1 -1
  15. package/dist/react/components/charts/gauge-card.d.ts.map +1 -1
  16. package/dist/react/components/charts/gauge-card.js +2 -2
  17. package/dist/react/components/charts/gauge-card.js.map +1 -1
  18. package/dist/react/components/entries-table.d.ts.map +1 -1
  19. package/dist/react/components/entries-table.js +4 -3
  20. package/dist/react/components/entries-table.js.map +1 -1
  21. package/dist/react/components/entry-detail.js +26 -26
  22. package/dist/react/components/entry-detail.js.map +1 -1
  23. package/dist/react/components/entry-insights.d.ts.map +1 -1
  24. package/dist/react/components/entry-insights.js +16 -16
  25. package/dist/react/components/entry-insights.js.map +1 -1
  26. package/dist/react/components/export-json-toolbar.js +2 -2
  27. package/dist/react/components/export-json-toolbar.js.map +1 -1
  28. package/dist/react/components/extensions/panel-renderer.d.ts.map +1 -1
  29. package/dist/react/components/extensions/panel-renderer.js +7 -7
  30. package/dist/react/components/extensions/panel-renderer.js.map +1 -1
  31. package/dist/react/components/extensions/stat-card.d.ts.map +1 -1
  32. package/dist/react/components/extensions/stat-card.js +7 -7
  33. package/dist/react/components/extensions/stat-card.js.map +1 -1
  34. package/dist/react/components/flamegraph-view.d.ts.map +1 -1
  35. package/dist/react/components/flamegraph-view.js +5 -5
  36. package/dist/react/components/flamegraph-view.js.map +1 -1
  37. package/dist/react/components/inertia-badge.d.ts +8 -1
  38. package/dist/react/components/inertia-badge.d.ts.map +1 -1
  39. package/dist/react/components/inertia-badge.js +20 -18
  40. package/dist/react/components/inertia-badge.js.map +1 -1
  41. package/dist/react/components/inertia-body.d.ts.map +1 -1
  42. package/dist/react/components/inertia-body.js +8 -8
  43. package/dist/react/components/inertia-body.js.map +1 -1
  44. package/dist/react/components/pulse-panel.d.ts.map +1 -1
  45. package/dist/react/components/pulse-panel.js +6 -6
  46. package/dist/react/components/pulse-panel.js.map +1 -1
  47. package/dist/react/components/queues/EnqueueJobForm.d.ts.map +1 -1
  48. package/dist/react/components/queues/EnqueueJobForm.js +2 -1
  49. package/dist/react/components/queues/EnqueueJobForm.js.map +1 -1
  50. package/dist/react/components/queues/JobActions.d.ts.map +1 -1
  51. package/dist/react/components/queues/JobActions.js +11 -9
  52. package/dist/react/components/queues/JobActions.js.map +1 -1
  53. package/dist/react/components/queues/JobDetailDrawer.d.ts.map +1 -1
  54. package/dist/react/components/queues/JobDetailDrawer.js +8 -13
  55. package/dist/react/components/queues/JobDetailDrawer.js.map +1 -1
  56. package/dist/react/components/queues/JobTable.d.ts.map +1 -1
  57. package/dist/react/components/queues/JobTable.js +0 -0
  58. package/dist/react/components/queues/JobTable.js.map +1 -1
  59. package/dist/react/components/queues/QueueList.d.ts.map +1 -1
  60. package/dist/react/components/queues/QueueList.js +6 -6
  61. package/dist/react/components/queues/QueueList.js.map +1 -1
  62. package/dist/react/components/queues/QueueStateTabs.d.ts.map +1 -1
  63. package/dist/react/components/queues/QueueStateTabs.js +9 -7
  64. package/dist/react/components/queues/QueueStateTabs.js.map +1 -1
  65. package/dist/react/components/queues/queue-format.d.ts +5 -1
  66. package/dist/react/components/queues/queue-format.d.ts.map +1 -1
  67. package/dist/react/components/queues/queue-format.js +11 -7
  68. package/dist/react/components/queues/queue-format.js.map +1 -1
  69. package/dist/react/components/queues-panel.js +1 -1
  70. package/dist/react/components/queues-panel.js.map +1 -1
  71. package/dist/react/components/request-timeline.d.ts.map +1 -1
  72. package/dist/react/components/request-timeline.js +2 -2
  73. package/dist/react/components/request-timeline.js.map +1 -1
  74. package/dist/react/components/retention-indicator.d.ts.map +1 -1
  75. package/dist/react/components/retention-indicator.js +1 -1
  76. package/dist/react/components/retention-indicator.js.map +1 -1
  77. package/dist/react/components/sparkline.d.ts.map +1 -1
  78. package/dist/react/components/sparkline.js +1 -1
  79. package/dist/react/components/sparkline.js.map +1 -1
  80. package/dist/react/components/tag-autocomplete.d.ts.map +1 -1
  81. package/dist/react/components/tag-autocomplete.js +5 -4
  82. package/dist/react/components/tag-autocomplete.js.map +1 -1
  83. package/dist/react/components/waterfall-view.js +3 -3
  84. package/dist/react/components/waterfall-view.js.map +1 -1
  85. package/dist/react/components/window-select.d.ts.map +1 -1
  86. package/dist/react/components/window-select.js +6 -2
  87. package/dist/react/components/window-select.js.map +1 -1
  88. package/dist/react/ui/badge.d.ts +16 -0
  89. package/dist/react/ui/badge.d.ts.map +1 -0
  90. package/dist/react/ui/badge.js +28 -0
  91. package/dist/react/ui/badge.js.map +1 -0
  92. package/dist/react/ui/button.d.ts +17 -0
  93. package/dist/react/ui/button.d.ts.map +1 -0
  94. package/dist/react/ui/button.js +35 -0
  95. package/dist/react/ui/button.js.map +1 -0
  96. package/dist/react/ui/cn.d.ts +8 -0
  97. package/dist/react/ui/cn.d.ts.map +1 -0
  98. package/dist/react/ui/cn.js +11 -0
  99. package/dist/react/ui/cn.js.map +1 -0
  100. package/dist/react/ui/dialog.d.ts +26 -0
  101. package/dist/react/ui/dialog.d.ts.map +1 -0
  102. package/dist/react/ui/dialog.js +40 -0
  103. package/dist/react/ui/dialog.js.map +1 -0
  104. package/dist/react/ui/index.d.ts +23 -0
  105. package/dist/react/ui/index.d.ts.map +1 -0
  106. package/dist/react/ui/index.js +23 -0
  107. package/dist/react/ui/index.js.map +1 -0
  108. package/dist/react/ui/input.d.ts +3 -0
  109. package/dist/react/ui/input.d.ts.map +1 -0
  110. package/dist/react/ui/input.js +8 -0
  111. package/dist/react/ui/input.js.map +1 -0
  112. package/dist/react/ui/select.d.ts +20 -0
  113. package/dist/react/ui/select.d.ts.map +1 -0
  114. package/dist/react/ui/select.js +27 -0
  115. package/dist/react/ui/select.js.map +1 -0
  116. package/dist/react/ui/table.d.ts +15 -0
  117. package/dist/react/ui/table.d.ts.map +1 -0
  118. package/dist/react/ui/table.js +30 -0
  119. package/dist/react/ui/table.js.map +1 -0
  120. package/dist/react/ui/tabs.d.ts +12 -0
  121. package/dist/react/ui/tabs.d.ts.map +1 -0
  122. package/dist/react/ui/tabs.js +20 -0
  123. package/dist/react/ui/tabs.js.map +1 -0
  124. package/dist/react/ui/tooltip.d.ts +10 -0
  125. package/dist/react/ui/tooltip.d.ts.map +1 -0
  126. package/dist/react/ui/tooltip.js +12 -0
  127. package/dist/react/ui/tooltip.js.map +1 -0
  128. package/dist/react/use-open-console.d.ts.map +1 -1
  129. package/dist/react/use-open-console.js +24 -1
  130. package/dist/react/use-open-console.js.map +1 -1
  131. package/dist/spa/assets/index-BkK5KeFh.css +1 -0
  132. package/dist/spa/assets/index-DICjg157.js +173 -0
  133. package/dist/spa/index.html +2 -2
  134. package/package.json +24 -5
  135. package/dist/spa/assets/index-BVGbSaHI.css +0 -1
  136. 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-zinc-800 text-emerald-300'
8
- : 'text-zinc-400 hover:bg-zinc-900'}`, children: [_jsxs("span", { children: [_jsx("span", { className: "text-emerald-500", children: entry.type }), " ", entryLabel(entry)] }), _jsx("span", { className: "text-zinc-600", children: entry.durationMs != null ? `${entry.durationMs}ms` : '' })] }) }, entry.id))) }));
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,8BAA8B;oBAChC,CAAC,CAAC,iCACN,EAAE,aAEF,2BACE,eAAM,SAAS,EAAC,kBAAkB,YAAE,KAAK,CAAC,IAAI,GAAQ,OAAE,UAAU,CAAC,KAAK,CAAC,IACpE,EACP,eAAM,SAAS,EAAC,eAAe,YAC5B,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
+ {"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: green `HIT` / amber `MISS` for reads, neutral
4
- * `SET`, and `DEL`/`CLEAR` for writes. A grace-served (`stale`) hit reads amber to
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. Mirrors the bordered-pill token style used
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;AAsBH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAID;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,cAAc,GAAG,IAAI,CA6BlE;AAED,mFAAmF;AACnF,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAIhF"}
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
- const PILL_BASE = 'rounded border px-1.5 py-0.5 text-[10px] font-medium';
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. Mirrors the bordered-pill token style used
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 { label: `SET${tierSuffix}`, className: `${PILL_BASE} border-zinc-700 text-zinc-300` };
28
- }
29
- if (content.operation === 'delete') {
30
- return { label: 'DEL', className: `${PILL_BASE} border-zinc-700 text-zinc-400` };
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 is amber so it's distinguishable from a fresh 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("span", { className: badge.className, children: badge.label });
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":";AAeA,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;AAOD,MAAM,SAAS,GAAG,sDAAsD,CAAC;AAEzE;;;;GAIG;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,EAAE,CAAC;QAChC,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,EAAE,EAAE,SAAS,EAAE,GAAG,SAAS,gCAAgC,EAAE,CAAC;IAChG,CAAC;IACD,IAAI,OAAO,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QACnC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,SAAS,gCAAgC,EAAE,CAAC;IACnF,CAAC;IACD,IAAI,OAAO,CAAC,SAAS,KAAK,OAAO,EAAE,CAAC;QAClC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,SAAS,gCAAgC,EAAE,CAAC;IACrF,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC;QACzB,gFAAgF;QAChF,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,KAAK,IAAI,CAAC;QACrC,OAAO;YACL,KAAK,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,GAAG,UAAU,EAAE;YACpD,SAAS,EAAE,GAAG,SAAS,IACrB,KAAK,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,wCACjD,EAAE;SACH,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,KAAK,KAAK,EAAE,CAAC;QAC1B,OAAO;YACL,KAAK,EAAE,OAAO,UAAU,EAAE;YAC1B,SAAS,EAAE,GAAG,SAAS,qCAAqC;SAC7D,CAAC;IACJ,CAAC;IACD,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,eAAM,SAAS,EAAE,KAAK,CAAC,SAAS,YAAG,KAAK,CAAC,KAAK,GAAQ,CAAC;AAChE,CAAC"}
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,CAUd;AAED,wBAAgB,eAAe,CAAC,EAAE,MAAY,EAAE,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,CAMlF"}
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-zinc-800 bg-zinc-900/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-zinc-400", children: title }), right] }), _jsx("div", { style: { height }, children: children })] }));
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-zinc-600", style: { height }, children: "No data in window." }));
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,sDAAsD,aACvE,kBAAQ,SAAS,EAAC,wCAAwC,aACxD,aAAI,SAAS,EAAC,2DAA2D,YAAE,KAAK,GAAM,EACrF,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,cAAK,SAAS,EAAC,wDAAwD,EAAC,KAAK,EAAE,EAAE,MAAM,EAAE,mCAEnF,CACP,CAAC;AACJ,CAAC"}
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 dark theme tokens for the Recharts chart cards. Centralizing these keeps
3
- * the chart layer consistent with the dashboard's zinc/emerald palette and makes
4
- * the rest of the app chart-library-agnostic (only this folder imports Recharts).
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
- export declare const ACCENT_HEX = "#34d399";
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: "#ffffff10";
12
- readonly axisStroke: "#3f3f46";
13
- readonly axisTick: "#71717a";
14
- readonly tooltipBg: "#18181b";
15
- readonly tooltipBorder: "#27272a";
16
- readonly tooltipText: "#e4e4e7";
17
- readonly tooltipLabel: "#a1a1aa";
18
- readonly legendText: "#a1a1aa";
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: "#18181b";
23
- readonly border: "1px solid #27272a";
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: "#e4e4e7";
36
+ readonly color: "var(--text)";
27
37
  };
28
38
  export declare const tooltipLabelStyle: {
29
- readonly color: "#a1a1aa";
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: "#e4e4e7";
45
+ readonly color: "var(--text)";
36
46
  };
37
47
  export declare const axisTickStyle: {
38
- readonly fill: "#71717a";
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;;;;GAIG;AAEH,8FAA8F;AAC9F,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAO3C,CAAC;AAKF,eAAO,MAAM,UAAU,YAAY,CAAC;AAEpC,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
+ {"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 dark theme tokens for the Recharts chart cards. Centralizing these keeps
3
- * the chart layer consistent with the dashboard's zinc/emerald palette and makes
4
- * the rest of the app chart-library-agnostic (only this folder imports Recharts).
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
- export const ACCENT_HEX = '#34d399'; // emerald-400 — primary throughput accent
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: '#ffffff10',
24
- axisStroke: '#3f3f46', // zinc-700
25
- axisTick: '#71717a', // zinc-500
26
- tooltipBg: '#18181b', // zinc-900
27
- tooltipBorder: '#27272a', // zinc-800
28
- tooltipText: '#e4e4e7', // zinc-200
29
- tooltipLabel: '#a1a1aa', // zinc-400
30
- legendText: '#a1a1aa', // zinc-400
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;;;;GAIG;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,MAAM,CAAC,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,0CAA0C;AAE/E,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,WAAW;IACvB,UAAU,EAAE,SAAS,EAAE,WAAW;IAClC,QAAQ,EAAE,SAAS,EAAE,WAAW;IAChC,SAAS,EAAE,SAAS,EAAE,WAAW;IACjC,aAAa,EAAE,SAAS,EAAE,WAAW;IACrC,WAAW,EAAE,SAAS,EAAE,WAAW;IACnC,YAAY,EAAE,SAAS,EAAE,WAAW;IACpC,UAAU,EAAE,SAAS,EAAE,WAAW;CAC1B,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
+ {"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,KAAiB,EACjB,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,CAsCd"}
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 = '#34d399', height = 220, }) {
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: '#e4e4e7' }, children: displayLabel }) })] }) }));
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,SAAS,EACjB,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,SAAS,EAAE,YAAG,YAAY,GAAQ,GACnF,IACF,GACI,CACb,CAAC;AACJ,CAAC"}
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;AAKnD,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
+ {"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("table", { className: "w-full text-left text-xs", children: [_jsx("thead", { className: "text-zinc-500", children: _jsxs("tr", { children: [_jsx("th", { className: "py-2 font-normal", children: "Time" }), _jsx("th", { className: "font-normal", children: "Type" }), _jsx("th", { className: "font-normal", children: "Summary" }), _jsx("th", { className: "font-normal", children: "Duration" }), _jsx("th", { className: "font-normal", children: "Tags" })] }) }), _jsx("tbody", { children: entries.map((entry) => {
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("tr", { onClick: () => onSelect?.(entry.id), onKeyDown: (event) => {
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 border-t border-zinc-900 hover:bg-zinc-900", children: [_jsx("td", { className: "py-1.5 text-zinc-500", children: new Date(entry.createdAt).toLocaleTimeString() }), _jsx("td", { className: "text-emerald-400", children: entry.type }), _jsx("td", { className: "max-w-md truncate text-zinc-300", 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("td", { className: "text-zinc-400", children: entry.durationMs != null ? `${entry.durationMs}ms` : '—' }), _jsx("td", { className: "text-zinc-600", 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-zinc-900 px-1.5 py-0.5 font-mono text-[10px] text-sky-400 hover:bg-zinc-800", 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-zinc-900 px-1.5 py-0.5 font-mono text-[10px] text-emerald-400 hover:bg-zinc-800", children: userTag })), otherTags.length > 0 && _jsx("span", { children: otherTags.join(' ') })] }) })] }, entry.id));
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":";AACA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/F,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE9E,MAAM,UAAU,UAAU,CAAC,KAAY;IACrC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC9B,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACpD,MAAM,MAAM,GAAG,OAAkC,CAAC;QAClD,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;YACnC,OAAO,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;QAC3F,CAAC;QACD,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ;YAAE,OAAO,MAAM,CAAC,GAAG,CAAC;QACtD,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACxE,OAAO,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAC1C,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC1B,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,MAAM,CAAC,KAAK,CAAC;YACrF,OAAO,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,MAAM,CAAC,IAAI,CAAC;QAClF,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAChE,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YACtE,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,KAAK,IAAI,IAAI,MAAM,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;YACxF,OAAO,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,GAAG,EAAE,EAAE,CAAC;QAC3C,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACjE,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QACrE,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;YACrE,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YACtE,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,OAAO,GAAG,MAAM,MAAM,MAAM,CAAC,SAAS,GAAG,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC;QAC5D,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC/D,MAAM,KAAK,GAAG,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;YACtE,OAAO,IAAI,KAAK,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC;QACxC,CAAC;QACD,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ;YAAE,OAAO,MAAM,CAAC,OAAO,CAAC;QAC9D,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;YACnC,OAAO,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;QAC3F,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC;AACpB,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,gBAAgB,CAAC,IAAa;IAC5C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACzD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxF,OAAO,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3D,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,EAC3B,OAAO,EACP,QAAQ,GAC8C;IACtD,OAAO,CACL,MAAC,KAAK,IAAC,SAAS,EAAC,WAAW,aAC1B,KAAC,WAAW,cACV,MAAC,QAAQ,eACP,KAAC,SAAS,IAAC,SAAS,EAAC,WAAW,qBAAiB,EACjD,KAAC,SAAS,IAAC,SAAS,EAAC,MAAM,qBAAiB,EAC5C,KAAC,SAAS,IAAC,SAAS,EAAC,MAAM,wBAAoB,EAC/C,KAAC,SAAS,IAAC,SAAS,EAAC,MAAM,yBAAqB,EAChD,KAAC,SAAS,IAAC,SAAS,EAAC,MAAM,qBAAiB,IACnC,GACC,EACd,KAAC,SAAS,cACP,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;oBACrB,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACxC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,OAAO,CAAC,CAAC;oBAC9D,OAAO,CACL,MAAC,QAAQ,IAEP,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EACnC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;4BACnB,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG;gCAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;wBACvE,CAAC,EACD,SAAS,EAAC,+BAA+B,aAEzC,KAAC,SAAS,IAAC,SAAS,EAAC,gDAAgD,YAClE,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,kBAAkB,EAAE,GACrC,EACZ,KAAC,SAAS,IAAC,SAAS,EAAC,qCAAqC,YAAE,KAAK,CAAC,IAAI,GAAa,EACnF,KAAC,SAAS,IAAC,SAAS,EAAC,4DAA4D,YAC/E,gBAAM,SAAS,EAAC,kCAAkC,aAC/C,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,KAAC,UAAU,IAAC,OAAO,EAAE,KAAK,CAAC,OAAO,GAAI,CAAC,CAAC,CAAC,IAAI,EACtE,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,KAAC,YAAY,IAAC,OAAO,EAAE,KAAK,CAAC,OAAO,GAAI,CAAC,CAAC,CAAC,IAAI,EAC3E,eAAM,SAAS,EAAC,UAAU,YAAE,UAAU,CAAC,KAAK,CAAC,GAAQ,IAChD,GACG,EACZ,KAAC,SAAS,IAAC,SAAS,EAAC,gDAAgD,YAClE,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,GAAG,GAC/C,EACZ,KAAC,SAAS,IAAC,SAAS,EAAC,gDAAgD,YACnE,gBAAM,SAAS,EAAC,kCAAkC,aAC/C,KAAK,CAAC,OAAO,KAAK,IAAI,IAAI,CACzB,aACE,IAAI,EAAE,YAAY,KAAK,CAAC,OAAO,EAAE,EACjC,KAAK,EAAE,cAAc,KAAK,CAAC,OAAO,EAAE,EACpC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,EAAE,EAC3C,SAAS,EAAC,kFAAkF,uBAErF,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAC9B,CACL,EACA,OAAO,KAAK,IAAI,IAAI,CACnB,YACE,IAAI,EAAE,qBAAqB,CAAC,OAAO,CAAC,EACpC,KAAK,EAAE,8BAA8B,SAAS,CAAC,OAAO,CAAC,EAAE,EACzD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,EAAE,EAC3C,SAAS,EAAC,iFAAiF,YAE1F,OAAO,GACN,CACL,EACA,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,yBAAO,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GAAQ,IACtD,GACG,KA7CP,KAAK,CAAC,EAAE,CA8CJ,CACZ,CAAC;gBACJ,CAAC,CAAC,GACQ,IACN,CACT,CAAC;AACJ,CAAC"}