@dudousxd/nestjs-telescope-ui 1.20.1 → 1.21.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/CHANGELOG.md +81 -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 +17 -12
  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/spa/assets/index-8YH4JvBj.css +1 -0
  129. package/dist/spa/assets/index-D6OGl7qB.js +173 -0
  130. package/dist/spa/index.html +2 -2
  131. package/package.json +24 -5
  132. package/dist/spa/assets/index-BVGbSaHI.css +0 -1
  133. package/dist/spa/assets/index-bm93wD8B.js +0 -143
package/CHANGELOG.md CHANGED
@@ -1,5 +1,86 @@
1
1
  # @dudousxd/nestjs-telescope-ui
2
2
 
3
+ ## 1.21.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [#75](https://github.com/DavideCarvalho/nestjs-telescope/pull/75) [`f5ba9bf`](https://github.com/DavideCarvalho/nestjs-telescope/commit/f5ba9bf29c16b55244cf05e41f12e31a202919cd) Thanks [@DavideCarvalho](https://github.com/DavideCarvalho)! - Stop an extension dashboard's tables from painting outside their cards.
8
+
9
+ A `table` panel was the one surface in the console still rendering hand-rolled `<table>` markup:
10
+ it never moved onto the vendored shadcn `Table` when that primitive landed, so it also never got
11
+ the scroll container the primitive brings. That matters because a section lays its panels out as
12
+ a `grid-cols-N` of equal cells, and a card is routinely narrower than the table inside it — a
13
+ 7-column table in a `cols: 3` section. `w-full` is only a _preferred_ width: `table-layout: auto`
14
+ still lays the table out at its min-content width, and with nothing clipping it the remaining
15
+ columns painted over the neighbouring panel.
16
+
17
+ Measured on flip's `durable.workflows` dashboard: a 379px card holding a 633px "Worker health"
18
+ table (its `STATUS` column landed on top of the panel to its right), and a 575px card holding a
19
+ 1154px "Workers" table. `agent.overview` had the same break — `COST (USD)` and `LAST ACTIVITY`
20
+ rendered outside their cards.
21
+
22
+ - Both table variants, paged and not, now render through `Table`/`TableHeader`/`TableBody`/
23
+ `TableRow`/`TableHead`/`TableCell`, so a table too wide for its card scrolls inside it and
24
+ every panel keeps the same row height, header casing and divider colour as the rest of the app.
25
+ - Cells are `whitespace-nowrap`. Wrapping is what turned durable's "Workers" panel into
26
+ three-line rows; with a scroller in place, a long worker id belongs on one line behind a
27
+ scrollbar.
28
+ - The pager's prev/next are the vendored `Button` (`outline`/`xs`) rather than bare `<button>`s.
29
+
30
+ ## 1.21.0
31
+
32
+ ### Minor Changes
33
+
34
+ - [#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.
35
+
36
+ The dashboard was authored against hardcoded Tailwind `zinc`/`emerald` utilities — the only
37
+ Aviary console with no token vocabulary at all. It now declares the canonical tokens from
38
+ `AVIARY-UI.md` (`--bg`, `--panel`, `--panel-2`, `--line`, `--line-soft`, `--text`, `--muted`,
39
+ `--good`, `--warn`, `--bad`, `--live`, `--accent`) and consumes them through Tailwind semantic
40
+ colours, so it reads as a sibling of the agent, durable and media consoles rather than a stranger.
41
+
42
+ - **Light mode actually works.** It was a block of `.light .bg-zinc-900 { … }` overrides that
43
+ covered only the utilities someone had remembered to list, leaving mid-grey panels and
44
+ unreadable status text. The tokens are now declared twice — dark under `:root`, light under
45
+ `.light` — so every token-based surface, border, label and status flips with the theme.
46
+ - **Telescope's accent is magenta** (`#e879f9`). Its de-facto accent was emerald-400, which is
47
+ byte-identical to `--good`: the same hue meant both "healthy" and "interactive", side by side
48
+ on the Overview page. Magenta clears `--good`, `--warn`, `--bad`, `--live`, agent's violet and
49
+ media's cyan.
50
+ - **Vendored shadcn primitives** under `src/react/ui/` on Base UI — `Button`, `Badge`, `Input`,
51
+ `Table`, `Select`, `Tabs`, `Tooltip`, `Dialog` — wired so shadcn's semantic classes resolve to
52
+ the Aviary tokens. Note that shadcn's `accent` is a _hover surface_, so the brand hue is
53
+ exposed as `brand`/`--accent` and never as `bg-accent`.
54
+ - The command palette and the queue job drawer are now one `Dialog` implementation instead of
55
+ two hand-rolled overlays, and the two native `<select>` popups (which the OS drew, unthemed)
56
+ are now themable listboxes.
57
+
58
+ `cacheBadge()` and `inertiaBadges()` gain a `variant` field naming the semantic `Badge` variant.
59
+ `className` is unchanged in shape and still returned, so existing callers keep working; prefer
60
+ `variant` in new code.
61
+
62
+ Also fixes a long-standing packaging bug this work's bundle check surfaced: the `./react` barrel
63
+ reaches `recharts`, `react-router-dom` and `reflect-metadata`, none of which this package declared
64
+ — the exact failure that once broke a host's client build. They are now declared as optional peer
65
+ dependencies. `@base-ui-components/react`, `class-variance-authority`, `clsx` and `tailwind-merge`
66
+ are `dependencies`, because this package publishes React source that hosts bundle. A new
67
+ `published-graph.spec.ts` bundles each published entry with esbuild and asserts every package it
68
+ reaches is declared, so this cannot regress silently.
69
+
70
+ ### Patch Changes
71
+
72
+ - [#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.
73
+
74
+ `react` and `react-dom` were declared `>=18.0.0` and `@tanstack/react-query` `>=5.0.0` — open-ended
75
+ ranges that claim support for every future major. React 20 and Query 6 do not exist yet and
76
+ certainly are not tested here, so the declaration was a promise the package cannot keep; a consumer
77
+ on a future major would get no warning and a runtime surprise instead.
78
+
79
+ Now `^18.0.0 || ^19.0.0` and `^5.0.0`. Both majors are real: the package builds and tests against
80
+ React 18, and its `./react/console` launcher is consumed from a React 19 host.
81
+
82
+ No behaviour change — peer ranges only affect what a package manager warns about on install.
83
+
3
84
  ## 1.20.1
4
85
 
5
86
  ### Patch 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"}