@polishd/next 0.2.3-dev.0 → 0.2.3-dev.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.
- package/AGENTS.md +1 -0
- package/CHANGELOG.md +136 -0
- package/README.md +34 -3
- package/dist/ai/digest.d.ts.map +1 -1
- package/dist/ai/digest.js +3 -2
- package/dist/ai/digest.js.map +1 -1
- package/dist/ai/github.d.ts +22 -1
- package/dist/ai/github.d.ts.map +1 -1
- package/dist/ai/github.js +99 -3
- package/dist/ai/github.js.map +1 -1
- package/dist/ai/issue-pages.d.ts +52 -0
- package/dist/ai/issue-pages.d.ts.map +1 -0
- package/dist/ai/issue-pages.js +50 -0
- package/dist/ai/issue-pages.js.map +1 -0
- package/dist/ai/issues.d.ts +13 -1
- package/dist/ai/issues.d.ts.map +1 -1
- package/dist/ai/issues.js +60 -4
- package/dist/ai/issues.js.map +1 -1
- package/dist/ai/summary.d.ts.map +1 -1
- package/dist/ai/summary.js +7 -0
- package/dist/ai/summary.js.map +1 -1
- package/dist/ai/types.d.ts +43 -0
- package/dist/ai/types.d.ts.map +1 -1
- package/dist/client/dom.d.ts +23 -0
- package/dist/client/dom.d.ts.map +1 -1
- package/dist/client/dom.js +45 -2
- package/dist/client/dom.js.map +1 -1
- package/dist/client/init.d.ts.map +1 -1
- package/dist/client/init.js +15 -6
- package/dist/client/init.js.map +1 -1
- package/dist/client/monitor.d.ts.map +1 -1
- package/dist/client/monitor.js +5 -1
- package/dist/client/monitor.js.map +1 -1
- package/dist/dashboard/chrome.d.ts +4 -2
- package/dist/dashboard/chrome.d.ts.map +1 -1
- package/dist/dashboard/chrome.js +15 -5
- package/dist/dashboard/chrome.js.map +1 -1
- package/dist/dashboard/design.d.ts +3 -1
- package/dist/dashboard/design.d.ts.map +1 -1
- package/dist/dashboard/design.js +2 -2
- package/dist/dashboard/design.js.map +1 -1
- package/dist/dashboard/drawer.d.ts +34 -0
- package/dist/dashboard/drawer.d.ts.map +1 -0
- package/dist/dashboard/drawer.js +44 -0
- package/dist/dashboard/drawer.js.map +1 -0
- package/dist/dashboard/index.d.ts +3 -1
- package/dist/dashboard/index.d.ts.map +1 -1
- package/dist/dashboard/index.js +29 -23
- package/dist/dashboard/index.js.map +1 -1
- package/dist/dashboard/issues.d.ts +9 -0
- package/dist/dashboard/issues.d.ts.map +1 -0
- package/dist/dashboard/issues.js +81 -0
- package/dist/dashboard/issues.js.map +1 -0
- package/dist/dashboard/journeys.d.ts.map +1 -1
- package/dist/dashboard/journeys.js +1 -0
- package/dist/dashboard/journeys.js.map +1 -1
- package/dist/dashboard/metric-trends.d.ts +6 -0
- package/dist/dashboard/metric-trends.d.ts.map +1 -0
- package/dist/dashboard/metric-trends.js +236 -0
- package/dist/dashboard/metric-trends.js.map +1 -0
- package/dist/dashboard/pages.d.ts.map +1 -1
- package/dist/dashboard/pages.js +7 -45
- package/dist/dashboard/pages.js.map +1 -1
- package/dist/dashboard/snapshots.d.ts +8 -1
- package/dist/dashboard/snapshots.d.ts.map +1 -1
- package/dist/dashboard/snapshots.js +6 -4
- package/dist/dashboard/snapshots.js.map +1 -1
- package/dist/dashboard/telemetry.d.ts.map +1 -1
- package/dist/dashboard/telemetry.js +5 -4
- package/dist/dashboard/telemetry.js.map +1 -1
- package/dist/dashboard/ui.d.ts +33 -6
- package/dist/dashboard/ui.d.ts.map +1 -1
- package/dist/dashboard/ui.js +44 -6
- package/dist/dashboard/ui.js.map +1 -1
- package/dist/dashboard.css +114 -0
- package/dist/server/ingest.d.ts.map +1 -1
- package/dist/server/ingest.js +7 -0
- package/dist/server/ingest.js.map +1 -1
- package/dist/server/queries.d.ts +41 -0
- package/dist/server/queries.d.ts.map +1 -1
- package/dist/server/queries.js +109 -3
- package/dist/server/queries.js.map +1 -1
- package/dist/server/reclassify.d.ts +3 -0
- package/dist/server/reclassify.d.ts.map +1 -0
- package/dist/server/reclassify.js +65 -0
- package/dist/server/reclassify.js.map +1 -0
- package/dist/server/snapshots.d.ts +18 -2
- package/dist/server/snapshots.d.ts.map +1 -1
- package/dist/server/snapshots.js +197 -20
- package/dist/server/snapshots.js.map +1 -1
- package/dist/server/store.d.ts +5 -0
- package/dist/server/store.d.ts.map +1 -1
- package/dist/server/store.js +17 -0
- package/dist/server/store.js.map +1 -1
- package/dist/shared/metric-buckets.d.ts +31 -0
- package/dist/shared/metric-buckets.d.ts.map +1 -0
- package/dist/shared/metric-buckets.js +49 -0
- package/dist/shared/metric-buckets.js.map +1 -0
- package/dist/shared/text-signals.d.ts +56 -0
- package/dist/shared/text-signals.d.ts.map +1 -0
- package/dist/shared/text-signals.js +80 -0
- package/dist/shared/text-signals.js.map +1 -0
- package/dist/shared/types.d.ts +1 -1
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/shared/types.js.map +1 -1
- package/package.json +4 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issues.d.ts","sourceRoot":"","sources":["../../src/dashboard/issues.tsx"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,iBAAiB,EAAsB,MAAM,aAAa,CAAC;AAoLzE,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,MAAM,EACN,IAAI,EACJ,SAAS,GACV,EAAE;IACD,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,8CAA8C;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,SAAS,EAAE,OAAO,CAAC;CACpB,+BAwEA"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { TabLink } from "./chrome";
|
|
3
|
+
import { border, card, divider, labelCls as label } from "./ui";
|
|
4
|
+
/** "3 Aug", or "3 Aug 2024" once it's from another year. */
|
|
5
|
+
function shortDate(ms) {
|
|
6
|
+
const d = new Date(ms);
|
|
7
|
+
const sameYear = d.getFullYear() === new Date().getFullYear();
|
|
8
|
+
return d.toLocaleDateString("en-GB", {
|
|
9
|
+
day: "numeric",
|
|
10
|
+
month: "short",
|
|
11
|
+
...(sameYear ? {} : { year: "numeric" }),
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
/** Coarse relative age — "2d ago" — for the meta line. */
|
|
15
|
+
function timeAgo(ms) {
|
|
16
|
+
const delta = Date.now() - ms;
|
|
17
|
+
if (delta < 60_000)
|
|
18
|
+
return "just now";
|
|
19
|
+
const mins = Math.floor(delta / 60_000);
|
|
20
|
+
if (mins < 60)
|
|
21
|
+
return `${mins}m ago`;
|
|
22
|
+
const hours = Math.floor(mins / 60);
|
|
23
|
+
if (hours < 24)
|
|
24
|
+
return `${hours}h ago`;
|
|
25
|
+
const days = Math.floor(hours / 24);
|
|
26
|
+
if (days < 30)
|
|
27
|
+
return `${days}d ago`;
|
|
28
|
+
return shortDate(ms);
|
|
29
|
+
}
|
|
30
|
+
function Stat({ label: labelText, value, tone = "text-white", }) {
|
|
31
|
+
return (_jsxs("div", { className: `${card} px-4 py-4`, children: [_jsx("div", { className: `text-[28px] font-semibold tabular-nums leading-none ${tone}`, children: value.toLocaleString() }), _jsx("div", { className: `mt-2 ${label}`, children: labelText })] }));
|
|
32
|
+
}
|
|
33
|
+
/** Open / closed / unreadable — the one thing you look for per row. */
|
|
34
|
+
function StatePill({ detail }) {
|
|
35
|
+
if (!detail) {
|
|
36
|
+
return (_jsx("span", { className: "shrink-0 rounded-full bg-[#1a1a1a] px-2 py-0.5 text-[10px] font-medium text-[#666]", children: "\u25CB unreadable" }));
|
|
37
|
+
}
|
|
38
|
+
if (detail.state === "open") {
|
|
39
|
+
return (_jsx("span", { className: "shrink-0 rounded-full bg-emerald-950 px-2 py-0.5 text-[10px] font-medium text-emerald-400", children: "\u25CF open" }));
|
|
40
|
+
}
|
|
41
|
+
const notPlanned = detail.stateReason === "not_planned";
|
|
42
|
+
return (_jsx("span", { className: `shrink-0 rounded-full px-2 py-0.5 text-[10px] font-medium ${notPlanned ? "bg-[#1a1a1a] text-[#888]" : "bg-[#1e132b] text-[#b083f0]"}`, children: notPlanned ? "✕ not planned" : "✓ closed" }));
|
|
43
|
+
}
|
|
44
|
+
function Chip({ children, tone = "text-[#888]" }) {
|
|
45
|
+
return (_jsx("span", { className: `max-w-full break-all rounded border border-[#2e2e2e] px-1.5 py-0.5 text-[10px] font-medium ${tone}`, children: children }));
|
|
46
|
+
}
|
|
47
|
+
/** The dot-separated facts under a row's title, in the order they matter. */
|
|
48
|
+
function metaLine(issue) {
|
|
49
|
+
const { detail } = issue;
|
|
50
|
+
const opened = detail?.createdAt ?? issue.filedAt;
|
|
51
|
+
const bits = [];
|
|
52
|
+
if (opened)
|
|
53
|
+
bits.push(`opened ${timeAgo(opened)}`);
|
|
54
|
+
if (detail?.author)
|
|
55
|
+
bits.push(`by ${detail.author}`);
|
|
56
|
+
if (detail?.closedAt)
|
|
57
|
+
bits.push(`closed ${timeAgo(detail.closedAt)}`);
|
|
58
|
+
// An "updated" that is really just the moment it was filed says nothing.
|
|
59
|
+
else if (detail && detail.updatedAt > (opened ?? 0) + 60_000) {
|
|
60
|
+
bits.push(`updated ${timeAgo(detail.updatedAt)}`);
|
|
61
|
+
}
|
|
62
|
+
if (detail && detail.comments > 0) {
|
|
63
|
+
bits.push(`${detail.comments} ${detail.comments === 1 ? "comment" : "comments"}`);
|
|
64
|
+
}
|
|
65
|
+
if (detail && detail.assignees.length > 0) {
|
|
66
|
+
bits.push(`assigned to ${detail.assignees.join(", ")}`);
|
|
67
|
+
}
|
|
68
|
+
return bits.join(" · ");
|
|
69
|
+
}
|
|
70
|
+
function IssueRow({ issue, repo }) {
|
|
71
|
+
const { detail } = issue;
|
|
72
|
+
const title = detail?.title ?? issue.claim ?? `Issue #${issue.number}`;
|
|
73
|
+
return (_jsxs("div", { className: `px-4 py-4 sm:px-5 ${divider} first:border-t-0`, children: [_jsxs("div", { className: "flex items-start justify-between gap-3", children: [_jsxs("div", { className: "min-w-0", children: [_jsxs("a", { href: issue.url, target: "_blank", rel: "noreferrer noopener", className: "text-[14px] font-medium leading-snug text-white hover:text-[#8ab4f8]", children: [_jsxs("span", { className: "mr-1.5 font-mono text-[12px] tabular-nums text-[#666]", children: ["#", issue.number] }), title] }), _jsx("p", { className: "mt-1.5 text-[11px] leading-snug text-[#666]", children: metaLine(issue) })] }), _jsx(StatePill, { detail: detail })] }), _jsxs("div", { className: "mt-2.5 flex flex-wrap items-center gap-1.5", children: [_jsxs(Chip, { tone: "text-[#aaa]", children: [_jsx("span", { className: "text-[#666]", children: "evidence" }), " ", _jsx("span", { className: "font-mono", children: issue.evidence })] }), issue.verdict === "confirmed" && (_jsx(Chip, { tone: "text-emerald-500", children: "verified against source" })), issue.verdict === "inconclusive" && (_jsx(Chip, { tone: "text-[#f5a623]", children: "filed unverified" })), (detail?.labels ?? []).map((l) => (_jsx(Chip, { children: l }, l)))] }), issue.claim && issue.claim !== title && (_jsxs("p", { className: "mt-2.5 text-[12px] leading-relaxed text-[#888]", children: [_jsx("span", { className: label, children: "Reported as" }), " ", _jsx("span", { className: "text-[#aaa]", children: issue.claim })] })), detail ? (detail.body.trim().length > 0 && (_jsxs("details", { className: "group mt-2.5", children: [_jsxs("summary", { className: "cursor-pointer list-none text-[11px] font-medium text-[#888] transition-colors hover:text-white [&::-webkit-details-marker]:hidden", children: [_jsx("span", { className: "group-open:hidden", children: "Show issue body \u2193" }), _jsx("span", { className: "hidden group-open:inline", children: "Hide issue body \u2191" })] }), _jsx("div", { className: "mt-2 max-h-96 overflow-y-auto rounded-md border border-[#2e2e2e] bg-[#111] px-3 py-2.5", children: _jsx("pre", { className: "whitespace-pre-wrap break-words font-mono text-[11px] leading-relaxed text-[#aaa]", children: detail.body }) })] }))) : (_jsxs("p", { className: "mt-2.5 text-[12px] leading-relaxed text-[#777]", children: ["Polishd filed this issue", issue.filedAt ? ` on ${shortDate(issue.filedAt)}` : "", ", but GitHub won't return it now \u2014 it was deleted or transferred, or the access token no longer covers", repo ? ` ${repo}` : " the repository", "."] }))] }));
|
|
74
|
+
}
|
|
75
|
+
export default function IssuesView({ issues, repo, connected, }) {
|
|
76
|
+
const open = issues.filter((i) => i.detail?.state === "open").length;
|
|
77
|
+
const closed = issues.filter((i) => i.detail?.state === "closed").length;
|
|
78
|
+
const verified = issues.filter((i) => i.verdict === "confirmed").length;
|
|
79
|
+
return (_jsxs("main", { className: "text-white", children: [_jsxs("div", { className: `mb-8 flex items-start justify-between gap-3 border-b ${border} pb-6`, children: [_jsxs("div", { children: [_jsx("h1", { className: "text-[22px] font-semibold tracking-tight text-white", children: "Issues" }), _jsx("p", { className: "mt-1 text-[13px] text-[#666]", children: "Bugs polishd filed from your analytics \u2014 each one traced back to the behavior that found it, and shown as your tracker has it now." })] }), repo && (_jsxs("a", { href: `https://github.com/${repo}/issues`, target: "_blank", rel: "noreferrer noopener", className: "shrink-0 whitespace-nowrap rounded-full bg-[#141414] px-3 py-1 font-mono text-[11px] text-[#888] transition-colors hover:text-white", children: [repo, " \u2197"] }))] }), !connected ? (_jsxs("div", { className: `${card} px-5 py-8 text-center`, children: [_jsx("p", { className: "text-[13px] text-[#888]", children: "No GitHub repository is connected." }), _jsx("p", { className: "mx-auto mt-1.5 max-w-md text-[12px] leading-relaxed text-[#666]", children: "Connect one in the settings and polishd can verify the problems it finds against your source and file them as issues \u2014 which is what this tab lists." }), _jsx(TabLink, { tab: "settings", className: "mt-4 inline-block rounded-md border border-[#2e2e2e] px-3 py-1.5 text-[12px] text-[#aaa] transition-colors hover:border-[#555] hover:text-white", children: "Open settings" })] })) : (_jsxs(_Fragment, { children: [_jsx("section", { className: "mb-8", children: _jsxs("div", { className: "grid grid-cols-2 gap-3 sm:grid-cols-4", children: [_jsx(Stat, { label: "Filed by polishd", value: issues.length }), _jsx(Stat, { label: "Open", value: open, tone: "text-emerald-400" }), _jsx(Stat, { label: "Closed", value: closed }), _jsx(Stat, { label: "Verified against source", value: verified })] }) }), _jsxs("section", { className: "mb-8", children: [_jsx("div", { className: `mb-3 ${label}`, children: "Filed issues" }), _jsx("div", { className: card, children: issues.length === 0 ? (_jsx("p", { className: "px-5 py-8 text-center text-[13px] text-[#555]", children: "Nothing filed yet. Problems the summary finds on the Analytics tab carry a \u201CFile bug\u201D button \u2014 anything filed from there, or automatically, lands here." })) : (issues.map((issue) => (_jsx(IssueRow, { issue: issue, repo: repo }, issue.evidence)))) })] })] }))] }));
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=issues.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issues.js","sourceRoot":"","sources":["../../src/dashboard/issues.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"journeys.d.ts","sourceRoot":"","sources":["../../src/dashboard/journeys.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAe,cAAc,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"journeys.d.ts","sourceRoot":"","sources":["../../src/dashboard/journeys.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAe,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAyVrE,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,cAAc,EAAE,CAAA;CAAE,+BAwB/E"}
|
|
@@ -90,6 +90,7 @@ const STEP_STYLE = {
|
|
|
90
90
|
},
|
|
91
91
|
session_end: { dot: "bg-[#666]", verb: "Left the site", verbTone: "text-[#888]" },
|
|
92
92
|
// Non-action types never reach the flow chart, but the map must be total.
|
|
93
|
+
text_click: { dot: "bg-[#444]", verb: "Clicked text", verbTone: "text-[#888]" },
|
|
93
94
|
scroll_depth: { dot: "bg-[#444]", verb: "Scrolled", verbTone: "text-[#888]" },
|
|
94
95
|
viewport: { dot: "bg-[#444]", verb: "Viewport", verbTone: "text-[#888]" },
|
|
95
96
|
web_vital: { dot: "bg-[#444]", verb: "Web vital", verbTone: "text-[#888]" },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"journeys.js","sourceRoot":"","sources":["../../src/dashboard/journeys.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"journeys.js","sourceRoot":"","sources":["../../src/dashboard/journeys.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metric-trends.d.ts","sourceRoot":"","sources":["../../src/dashboard/metric-trends.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAGV,YAAY,EACZ,aAAa,EAEd,MAAM,mBAAmB,CAAC;AA0F3B,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EACpC,QAAQ,EACR,MAAM,GACP,EAAE;IACD,QAAQ,EAAE,aAAa,CAAC;IACxB,MAAM,EAAE,YAAY,CAAC;CACtB,+BA8DA"}
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* Polishd — the Overview tiles and the metric charts they open (client).
|
|
5
|
+
*
|
|
6
|
+
* The six numbers at the top of the Analytics tab are all-time totals, which
|
|
7
|
+
* answer "how much" and never "when". Every tile is now a button: clicking one
|
|
8
|
+
* opens a bottom drawer with that metric bucketed over time, so "142 sessions"
|
|
9
|
+
* becomes "40 of them on Tuesday, none since".
|
|
10
|
+
*
|
|
11
|
+
* All six series ride down from the server together (see `getMetricTrends`),
|
|
12
|
+
* at both granularities, so switching metric or switching hourly/daily is
|
|
13
|
+
* instant and costs no round trip. Buckets are UTC — the labels are rendered
|
|
14
|
+
* server-side, and a local-timezone label would follow wherever the server
|
|
15
|
+
* runs rather than wherever the reader is.
|
|
16
|
+
*/
|
|
17
|
+
import { useState } from "react";
|
|
18
|
+
import BottomDrawer, { DrawerHeader } from "./drawer";
|
|
19
|
+
import { InfoTip, card, labelCls, yScale } from "./ui";
|
|
20
|
+
const METRICS = [
|
|
21
|
+
{
|
|
22
|
+
key: "sessions",
|
|
23
|
+
label: "Sessions",
|
|
24
|
+
tip: "Distinct anonymous visitors, counted by the polishd_session cookie. One cookie = one session; no fingerprinting. Click for sessions over time.",
|
|
25
|
+
tone: "text-white",
|
|
26
|
+
accent: "#3b82f6",
|
|
27
|
+
additive: false,
|
|
28
|
+
unit: ["session", "sessions"],
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
key: "pageViews",
|
|
32
|
+
label: "Page views",
|
|
33
|
+
tip: "page_view events — initial page loads plus client-side (soft) navigations between routes. Click for page views over time.",
|
|
34
|
+
tone: "text-white",
|
|
35
|
+
accent: "#3b82f6",
|
|
36
|
+
additive: true,
|
|
37
|
+
unit: ["page view", "page views"],
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
key: "rageClicks",
|
|
41
|
+
label: "Rage clicks",
|
|
42
|
+
tip: "3+ clicks on the same element within 500ms. A strong signal of frustration — something looks clickable or is broken. Double/triple-clicks that select text don't count. Click for rage clicks over time.",
|
|
43
|
+
tone: "text-red-500",
|
|
44
|
+
accent: "#ef4444",
|
|
45
|
+
additive: true,
|
|
46
|
+
unit: ["rage click", "rage clicks"],
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
key: "deadClicks",
|
|
50
|
+
label: "Dead clicks",
|
|
51
|
+
tip: "Clicks on non-interactive elements (no link, button, or role within 4 ancestors). Users expected something to happen but nothing did. Clicks on text are excluded — that's reading, not confusion. Click for dead clicks over time.",
|
|
52
|
+
tone: "text-[#f5a623]",
|
|
53
|
+
accent: "#f5a623",
|
|
54
|
+
additive: true,
|
|
55
|
+
unit: ["dead click", "dead clicks"],
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
key: "jsErrors",
|
|
59
|
+
label: "JS errors",
|
|
60
|
+
tip: "Uncaught exceptions and unhandled promise rejections, with page and component context. Click for errors over time.",
|
|
61
|
+
tone: "text-red-500",
|
|
62
|
+
accent: "#ef4444",
|
|
63
|
+
additive: true,
|
|
64
|
+
unit: ["error", "errors"],
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
key: "totalEvents",
|
|
68
|
+
label: "Events",
|
|
69
|
+
tip: "Total raw signals captured across all event types. Click for events over time.",
|
|
70
|
+
tone: "text-white",
|
|
71
|
+
accent: "#3b82f6",
|
|
72
|
+
additive: true,
|
|
73
|
+
unit: ["event", "events"],
|
|
74
|
+
},
|
|
75
|
+
];
|
|
76
|
+
const GRAN_LABEL = { hour: "Hourly", day: "Daily" };
|
|
77
|
+
const GRAN_UNIT = {
|
|
78
|
+
hour: ["hour", "hours"],
|
|
79
|
+
day: ["day", "days"],
|
|
80
|
+
};
|
|
81
|
+
const plural = (n, [one, many]) => `${n} ${n === 1 ? one : many}`;
|
|
82
|
+
// ── The tile grid ────────────────────────────────────────────────────────────
|
|
83
|
+
export default function OverviewTiles({ overview, trends, }) {
|
|
84
|
+
// Daily is the better default once there's more than a day of history;
|
|
85
|
+
// before that it's a single bar, and hourly is the only shape worth drawing.
|
|
86
|
+
const [gran, setGran] = useState(trends.day.length >= 2 || trends.hour.length === 0 ? "day" : "hour");
|
|
87
|
+
const [open, setOpen] = useState(null);
|
|
88
|
+
const series = trends[gran];
|
|
89
|
+
const metric = METRICS.find((m) => m.key === open) ?? null;
|
|
90
|
+
const hasTrend = trends.day.length > 0 || trends.hour.length > 0;
|
|
91
|
+
return (_jsxs(_Fragment, { children: [_jsx("div", { className: "grid grid-cols-2 gap-3 sm:grid-cols-3 lg:grid-cols-6", children: METRICS.map((m) => (_jsx(StatTile, { meta: m, value: overview[m.key], spark: hasTrend ? series.map((p) => p[m.key]) : [], onOpen: hasTrend ? () => setOpen(m.key) : null }, m.key))) }), _jsx(BottomDrawer, { open: metric !== null, onClose: () => setOpen(null), label: metric ? `${metric.label} over time` : "Metric over time", children: metric && (_jsxs(_Fragment, { children: [_jsx(DrawerHeader, { eyebrow: "Over time", title: _jsx("h3", { className: "text-[16px] font-semibold text-white", children: metric.label }), onClose: () => setOpen(null), children: _jsx(GranularityToggle, { value: gran, trends: trends, onChange: setGran }) }), _jsx(MetricPicker, { value: metric.key, onChange: setOpen }), _jsx(MetricChart, { meta: metric, gran: gran, points: series }, `${metric.key}-${gran}`), _jsx(ChartMeta, { meta: metric, gran: gran, points: series, allTime: overview[metric.key] })] })) })] }));
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* One stat tile. A button rather than a div, because it opens something — the
|
|
95
|
+
* sparkline is the hint that there's a shape behind the number.
|
|
96
|
+
*
|
|
97
|
+
* When there's no series at all (empty store, or nothing captured yet) it
|
|
98
|
+
* renders as the plain card it has always been: an empty drawer would be a
|
|
99
|
+
* worse answer than no drawer.
|
|
100
|
+
*/
|
|
101
|
+
function StatTile({ meta, value, spark, onOpen, }) {
|
|
102
|
+
const body = (_jsxs(_Fragment, { children: [_jsx("div", { className: `text-[28px] font-semibold tabular-nums leading-none ${meta.tone}`, children: value.toLocaleString() }), _jsxs("div", { className: `mt-2 flex items-center ${labelCls}`, children: [meta.label, _jsx(InfoTip, { text: meta.tip })] }), _jsx(Sparkline, { values: spark, accent: meta.accent })] }));
|
|
103
|
+
if (!onOpen)
|
|
104
|
+
return _jsx("div", { className: `${card} px-4 py-4`, children: body });
|
|
105
|
+
return (_jsx("button", { type: "button", "data-component": "metric-tile", onClick: onOpen, "aria-label": `${meta.label}: ${value.toLocaleString()} — open the chart over time`, className: `${card} group px-4 py-4 text-left transition-colors hover:border-[#555] focus:border-[#555] focus:outline-none`, children: body }));
|
|
106
|
+
}
|
|
107
|
+
/** The shape of the number, at tile size. Flat or empty series draw nothing. */
|
|
108
|
+
function Sparkline({ values, accent }) {
|
|
109
|
+
const peak = Math.max(...values, 0);
|
|
110
|
+
if (values.length < 2 || peak === 0)
|
|
111
|
+
return _jsx("div", { className: "mt-3 h-[18px]" });
|
|
112
|
+
const W = 60;
|
|
113
|
+
const H = 18;
|
|
114
|
+
const step = W / (values.length - 1);
|
|
115
|
+
const d = values
|
|
116
|
+
.map((v, i) => `${i === 0 ? "M" : "L"}${(i * step).toFixed(2)},${(H - (v / peak) * H).toFixed(2)}`)
|
|
117
|
+
.join(" ");
|
|
118
|
+
return (_jsxs("svg", { viewBox: `0 0 ${W} ${H}`, preserveAspectRatio: "none", className: "mt-3 h-[18px] w-full opacity-60 transition-opacity group-hover:opacity-100", "aria-hidden": true, children: [_jsx("path", { d: `${d} L${W},${H} L0,${H} Z`, fill: accent, fillOpacity: "0.12", vectorEffect: "non-scaling-stroke" }), _jsx("path", { d: d, fill: "none", stroke: accent, strokeWidth: "1.25", strokeLinejoin: "round", vectorEffect: "non-scaling-stroke" })] }));
|
|
119
|
+
}
|
|
120
|
+
// ── Drawer controls ──────────────────────────────────────────────────────────
|
|
121
|
+
const chip = "rounded-md px-2 py-1 text-[11px] font-medium transition-colors disabled:cursor-not-allowed disabled:opacity-30";
|
|
122
|
+
function GranularityToggle({ value, trends, onChange, }) {
|
|
123
|
+
return (_jsx("div", { className: "flex items-center gap-0.5 rounded-lg border border-[#2e2e2e] p-0.5", role: "group", "aria-label": "Bucket size", children: ["hour", "day"].map((g) => (_jsx("button", { type: "button", "data-component": "metric-granularity", onClick: () => onChange(g), disabled: trends[g].length === 0, "aria-pressed": value === g, title: trends[g].length === 0
|
|
124
|
+
? `No ${GRAN_UNIT[g][1]} of data yet`
|
|
125
|
+
: `Bucket by ${GRAN_UNIT[g][0]}`, className: `${chip} ${value === g ? "bg-white text-black" : "text-[#888] hover:text-white"}`, children: GRAN_LABEL[g] }, g))) }));
|
|
126
|
+
}
|
|
127
|
+
/** Switch series without closing the drawer — all six are already loaded. */
|
|
128
|
+
function MetricPicker({ value, onChange, }) {
|
|
129
|
+
return (_jsx("div", { className: "mb-4 flex flex-wrap gap-1.5", children: METRICS.map((m) => (_jsxs("button", { type: "button", "data-component": "metric-switch", onClick: () => onChange(m.key), "aria-pressed": value === m.key, className: `${chip} border ${value === m.key
|
|
130
|
+
? "border-[#555] bg-[#161616] text-white"
|
|
131
|
+
: "border-[#222] text-[#777] hover:border-[#3a3a3a] hover:text-[#ccc]"}`, children: [_jsx("span", { className: "mr-1.5 inline-block h-1.5 w-1.5 rounded-full align-middle", style: { backgroundColor: value === m.key ? m.accent : "#3a3a3a" } }), m.label] }, m.key))) }));
|
|
132
|
+
}
|
|
133
|
+
// ── The chart ────────────────────────────────────────────────────────────────
|
|
134
|
+
const W = 720;
|
|
135
|
+
const H = 240;
|
|
136
|
+
const PAD_L = 44;
|
|
137
|
+
const PAD_R = 14;
|
|
138
|
+
const PAD_T = 16;
|
|
139
|
+
const PAD_B = 34;
|
|
140
|
+
const PLOT_W = W - PAD_L - PAD_R;
|
|
141
|
+
const PLOT_H = H - PAD_T - PAD_B;
|
|
142
|
+
/**
|
|
143
|
+
* Bars, not a line: each bucket is a count of things that happened inside a
|
|
144
|
+
* window, and a line between two counts implies values in between that were
|
|
145
|
+
* never measured. Zero-height bars are left as gridline-level ticks so a quiet
|
|
146
|
+
* hour reads as measured-and-empty rather than missing.
|
|
147
|
+
*
|
|
148
|
+
* Interaction is one transparent overlay rather than per-bar handlers: pointer
|
|
149
|
+
* position maps straight to a bucket index, so the reader gets a value
|
|
150
|
+
* anywhere along the plot instead of only when they land on a thin bar. Arrow
|
|
151
|
+
* keys walk the same index for anyone not using a pointer.
|
|
152
|
+
*/
|
|
153
|
+
function MetricChart({ meta, gran, points, }) {
|
|
154
|
+
const [active, setActive] = useState(null);
|
|
155
|
+
if (points.length === 0) {
|
|
156
|
+
return (_jsxs("p", { className: `${card} px-5 py-10 text-center text-[13px] text-[#555]`, children: ["No ", GRAN_UNIT[gran][0], "-level data yet."] }));
|
|
157
|
+
}
|
|
158
|
+
const values = points.map((p) => p[meta.key]);
|
|
159
|
+
const peak = Math.max(...values, 1);
|
|
160
|
+
const { top, ticks } = yScale(peak);
|
|
161
|
+
const n = points.length;
|
|
162
|
+
const slot = PLOT_W / n;
|
|
163
|
+
const barW = Math.min(slot * 0.62, 28);
|
|
164
|
+
const xFor = (i) => PAD_L + slot * (i + 0.5);
|
|
165
|
+
const yFor = (v) => PAD_T + PLOT_H - (v / top) * PLOT_H;
|
|
166
|
+
// At most ~8 axis labels, so 48 hourly buckets don't collide into a smear.
|
|
167
|
+
const labelStep = Math.max(1, Math.ceil(n / 8));
|
|
168
|
+
const showLabel = (i) => i === n - 1 || (n - 1 - i) % labelStep === 0;
|
|
169
|
+
const pointerIndex = (e) => {
|
|
170
|
+
const rect = e.currentTarget.getBoundingClientRect();
|
|
171
|
+
if (rect.width === 0)
|
|
172
|
+
return null;
|
|
173
|
+
const x = ((e.clientX - rect.left) / rect.width) * W;
|
|
174
|
+
const i = Math.floor((x - PAD_L) / slot);
|
|
175
|
+
return i < 0 || i >= n ? null : i;
|
|
176
|
+
};
|
|
177
|
+
const move = (delta) => setActive((cur) => {
|
|
178
|
+
const next = (cur === null ? n - 1 : cur) + delta;
|
|
179
|
+
return Math.min(Math.max(next, 0), n - 1);
|
|
180
|
+
});
|
|
181
|
+
const onKeyDown = (e) => {
|
|
182
|
+
if (e.key === "ArrowLeft")
|
|
183
|
+
move(-1);
|
|
184
|
+
else if (e.key === "ArrowRight")
|
|
185
|
+
move(1);
|
|
186
|
+
else if (e.key === "Home")
|
|
187
|
+
setActive(0);
|
|
188
|
+
else if (e.key === "End")
|
|
189
|
+
setActive(n - 1);
|
|
190
|
+
else
|
|
191
|
+
return;
|
|
192
|
+
e.preventDefault();
|
|
193
|
+
};
|
|
194
|
+
const hovered = active === null ? null : points[active];
|
|
195
|
+
// Keep the tooltip inside the card at both ends of the axis.
|
|
196
|
+
const tipPct = active === null ? 50 : Math.min(Math.max((xFor(active) / W) * 100, 12), 88);
|
|
197
|
+
return (
|
|
198
|
+
// `pt-9` reserves a band above the plot for the readout. Floating it over
|
|
199
|
+
// the bars instead would put it on top of whichever bar is tallest — which
|
|
200
|
+
// is the one most worth looking at.
|
|
201
|
+
_jsxs("div", { className: "relative pt-9", children: [_jsx("div", { role: "status", "aria-live": "polite", className: `pointer-events-none absolute inset-x-0 top-0 h-7 transition-opacity duration-100 ${hovered ? "opacity-100" : "opacity-0"}`, children: _jsx("span", { className: "absolute -translate-x-1/2 whitespace-nowrap rounded-md border border-[#2e2e2e] bg-[#111] px-2.5 py-1.5 text-[12px] shadow-xl", style: { left: `${tipPct}%` }, children: hovered && (_jsxs(_Fragment, { children: [_jsx("span", { className: "text-[#888]", children: hovered.title }), _jsx("span", { className: "mx-1.5 text-[#444]", children: "\u00B7" }), _jsx("span", { className: "font-semibold tabular-nums text-white", children: plural(hovered[meta.key], meta.unit) })] })) }) }), _jsx("div", { className: `${card} px-2 pb-2 pt-3 focus-within:border-[#555]`, children: _jsxs("svg", { viewBox: `0 0 ${W} ${H}`, className: "w-full focus:outline-none", tabIndex: 0, role: "img", "aria-label": `${meta.label} per ${GRAN_UNIT[gran][0]}, ${plural(n, GRAN_UNIT[gran])} ending ${points[n - 1].title}. Use the arrow keys to read individual buckets.`, onPointerMove: (e) => setActive(pointerIndex(e)), onPointerDown: (e) => setActive(pointerIndex(e)), onPointerLeave: () => setActive(null),
|
|
202
|
+
// A touch drag that turns into a page scroll cancels the pointer
|
|
203
|
+
// without ever leaving the element, which would strand the readout.
|
|
204
|
+
onPointerCancel: () => setActive(null), onKeyDown: onKeyDown, onBlur: () => setActive(null), children: [ticks.map((t) => (_jsxs("g", { children: [_jsx("line", { x1: PAD_L, y1: yFor(t), x2: W - PAD_R, y2: yFor(t), stroke: "#1c1c1c", strokeWidth: 1 }), _jsx("text", { x: PAD_L - 8, y: yFor(t) + 3.5, textAnchor: "end", fontSize: 10, fill: "#666", className: "tabular-nums", children: t.toLocaleString() })] }, t))), points.map((p, i) => {
|
|
205
|
+
const v = p[meta.key];
|
|
206
|
+
const y = yFor(v);
|
|
207
|
+
// A measured zero still gets a hairline, so it reads as "none here"
|
|
208
|
+
// rather than as a bucket that was never recorded.
|
|
209
|
+
const h = Math.max(PAD_T + PLOT_H - y, v === 0 ? 1 : 2);
|
|
210
|
+
return (_jsx("rect", { x: xFor(i) - barW / 2, y: PAD_T + PLOT_H - h, width: barW, height: h, rx: Math.min(2, barW / 3), fill: v === 0 ? "#2a2a2a" : meta.accent, fillOpacity: active === null || active === i ? 1 : 0.45 }, p.ts));
|
|
211
|
+
}), points.map((p, i) => showLabel(i) ? (_jsx("text", { x: xFor(i), y: H - 12, textAnchor: "middle", fontSize: 10, fill: active === i ? "#ccc" : "#666", children: p.label }, p.ts)) : null), active !== null && (_jsx("line", { x1: xFor(active), y1: PAD_T, x2: xFor(active), y2: PAD_T + PLOT_H, stroke: "#555", strokeWidth: 1, strokeDasharray: "3 3" }))] }) })] }));
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* What the chart adds up to. The all-time tile and a capped window disagree by
|
|
215
|
+
* design, so the difference is stated rather than left for the reader to spot.
|
|
216
|
+
*/
|
|
217
|
+
function ChartMeta({ meta, gran, points, allTime, }) {
|
|
218
|
+
if (points.length === 0)
|
|
219
|
+
return null;
|
|
220
|
+
const values = points.map((p) => p[meta.key]);
|
|
221
|
+
const total = values.reduce((a, b) => a + b, 0);
|
|
222
|
+
const peak = Math.max(...values);
|
|
223
|
+
const peakAt = points[values.indexOf(peak)];
|
|
224
|
+
const avg = total / values.length;
|
|
225
|
+
const latest = values[values.length - 1];
|
|
226
|
+
const unit = GRAN_UNIT[gran][0];
|
|
227
|
+
return (_jsxs(_Fragment, { children: [_jsxs("div", { className: "mt-4 grid grid-cols-2 gap-px overflow-hidden rounded-lg border border-[#2e2e2e] bg-[#2e2e2e] sm:grid-cols-4", children: [meta.additive ? (_jsx(Cell, { label: `Total (${plural(points.length, GRAN_UNIT[gran])})`, value: total.toLocaleString() })) : (_jsx(Cell, { label: `Busiest ${unit}`, value: peakAt.title, small: true })), _jsx(Cell, { label: `Peak / ${unit}`, value: peak.toLocaleString() }), _jsx(Cell, { label: `Average / ${unit}`, value: avg >= 10 ? Math.round(avg).toLocaleString() : avg.toFixed(1) }), _jsx(Cell, { label: `Latest ${unit}`, value: latest.toLocaleString() })] }), _jsxs("p", { className: "mt-3 text-[11px] leading-relaxed text-[#555]", children: [meta.additive && total < allTime
|
|
228
|
+
? `The tile counts all time (${allTime.toLocaleString()}); this chart covers the last ${plural(points.length, GRAN_UNIT[gran])} of activity. `
|
|
229
|
+
: "", !meta.additive
|
|
230
|
+
? "Buckets aren't summed here — a visitor active across several buckets is counted in each, so a total would count them more than once. "
|
|
231
|
+
: "", "Buckets start at the UTC ", unit, "."] })] }));
|
|
232
|
+
}
|
|
233
|
+
function Cell({ label, value, small }) {
|
|
234
|
+
return (_jsxs("div", { className: "bg-[#0a0a0a] px-4 py-3", children: [_jsx("div", { className: labelCls, children: label }), _jsx("div", { className: `mt-1 font-semibold tabular-nums text-white ${small ? "text-[13px]" : "text-[16px]"}`, children: value })] }));
|
|
235
|
+
}
|
|
236
|
+
//# sourceMappingURL=metric-trends.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metric-trends.js","sourceRoot":"","sources":["../../src/dashboard/metric-trends.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pages.d.ts","sourceRoot":"","sources":["../../src/dashboard/pages.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pages.d.ts","sourceRoot":"","sources":["../../src/dashboard/pages.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAkB,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAiNjE,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,OAAO,EAAE,CAAA;CAAE,+BAwCpE"}
|
package/dist/dashboard/pages.js
CHANGED
|
@@ -4,20 +4,12 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
4
4
|
* Polishd — "Top pages" table + sessions-over-time drawer (client).
|
|
5
5
|
*
|
|
6
6
|
* Lists the most-visited pages; clicking a row opens a bottom drawer with a
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* above it.
|
|
7
|
+
* chart of distinct sessions per day for that page. The drawer shell itself
|
|
8
|
+
* lives in ./drawer — the Overview tiles open into the same one.
|
|
10
9
|
*/
|
|
11
|
-
import {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
const divider = `border-t ${border}`;
|
|
15
|
-
const labelCls = "text-[11px] font-medium uppercase tracking-[0.08em] text-[#666]";
|
|
16
|
-
// ── Tooltip + header cell (compact copies of the dashboard's, for the client) ──
|
|
17
|
-
function InfoTip({ text, anchor = "right", below = false, }) {
|
|
18
|
-
const vClass = below ? "top-full mt-2" : "bottom-full mb-2";
|
|
19
|
-
return (_jsxs("span", { className: "group/tip relative ml-1 inline-flex translate-y-px cursor-help align-middle", children: [_jsx("span", { className: "flex h-3.5 w-3.5 items-center justify-center rounded-full border border-[#444] text-[9px] font-bold leading-none text-[#666]", children: "i" }), _jsx("span", { role: "tooltip", className: `pointer-events-none absolute ${vClass} ${anchor === "left" ? "left-0" : "right-0"} z-20 w-64 max-w-[calc(100vw-2rem)] rounded-lg border border-[#2e2e2e] bg-[#111] px-3 py-2 text-left text-[12px] font-normal normal-case leading-snug tracking-normal text-[#aaa] opacity-0 shadow-2xl transition-opacity duration-150 group-hover/tip:opacity-100`, children: text })] }));
|
|
20
|
-
}
|
|
10
|
+
import { useState } from "react";
|
|
11
|
+
import BottomDrawer, { DrawerHeader } from "./drawer";
|
|
12
|
+
import { InfoTip, border, card, divider, labelCls, yScale } from "./ui";
|
|
21
13
|
function Th({ children, tip, align = "right", }) {
|
|
22
14
|
return (_jsx("th", { className: `whitespace-nowrap py-2.5 ${align === "left" ? "pl-5 pr-6 text-left" : "px-4 text-right"} ${labelCls}`, children: _jsxs("span", { className: "inline-flex items-center gap-0.5", children: [children, _jsx(InfoTip, { text: tip, anchor: align === "left" ? "left" : "right", below: true })] }) }));
|
|
23
15
|
}
|
|
@@ -31,20 +23,6 @@ function PageMeta({ page }) {
|
|
|
31
23
|
return (_jsxs("div", { className: `grid grid-cols-2 gap-px overflow-hidden rounded-lg border ${border} bg-[#2e2e2e] sm:grid-cols-4`, children: [_jsx(MetaCell, { label: "Sessions", value: String(page.sessions) }), _jsx(MetaCell, { label: "Page views", value: String(page.pageViews) }), _jsx(MetaCell, { label: "Views / session", value: viewsPerSession.toFixed(1) }), _jsx(MetaCell, { label: "Peak / day", value: String(peakDay) }), _jsx(MetaCell, { label: "Avg scroll", value: page.avgScrollDepth === null ? "—" : `${page.avgScrollDepth}%` }), _jsx(MetaCell, { label: "Rage clicks", value: String(page.rageClicks), tone: page.rageClicks > 0 ? "text-red-400" : "text-[#555]" }), _jsx(MetaCell, { label: "Dead clicks", value: String(page.deadClicks), tone: page.deadClicks > 0 ? "text-[#f5a623]" : "text-[#555]" }), _jsx(MetaCell, { label: "JS errors", value: String(page.jsErrors), tone: page.jsErrors > 0 ? "text-red-400" : "text-[#555]" })] }));
|
|
32
24
|
}
|
|
33
25
|
// ── Sessions-over-time line chart ─────────────────────────────────────────────
|
|
34
|
-
/** A nice 0-based integer tick scale for the y-axis. */
|
|
35
|
-
function yScale(peak) {
|
|
36
|
-
const target = 4; // aim for ~4 gridlines
|
|
37
|
-
if (peak <= target) {
|
|
38
|
-
const top = Math.max(peak, 1);
|
|
39
|
-
return { top, ticks: Array.from({ length: top + 1 }, (_, i) => i) };
|
|
40
|
-
}
|
|
41
|
-
const step = Math.ceil(peak / target);
|
|
42
|
-
const top = step * Math.ceil(peak / step);
|
|
43
|
-
const ticks = [];
|
|
44
|
-
for (let v = 0; v <= top; v += step)
|
|
45
|
-
ticks.push(v);
|
|
46
|
-
return { top, ticks };
|
|
47
|
-
}
|
|
48
26
|
function SessionsChart({ trend }) {
|
|
49
27
|
if (trend.length === 0) {
|
|
50
28
|
return _jsx("p", { className: "py-8 text-center text-[13px] text-[#555]", children: "No session data yet." });
|
|
@@ -75,23 +53,7 @@ function SessionsChart({ trend }) {
|
|
|
75
53
|
}
|
|
76
54
|
// ── Bottom drawer ─────────────────────────────────────────────────────────────
|
|
77
55
|
function PageDrawer({ page, onClose }) {
|
|
78
|
-
|
|
79
|
-
if (!page)
|
|
80
|
-
return;
|
|
81
|
-
const onKey = (e) => {
|
|
82
|
-
if (e.key === "Escape")
|
|
83
|
-
onClose();
|
|
84
|
-
};
|
|
85
|
-
document.addEventListener("keydown", onKey);
|
|
86
|
-
const prev = document.body.style.overflow;
|
|
87
|
-
document.body.style.overflow = "hidden";
|
|
88
|
-
return () => {
|
|
89
|
-
document.removeEventListener("keydown", onKey);
|
|
90
|
-
document.body.style.overflow = prev;
|
|
91
|
-
};
|
|
92
|
-
}, [page, onClose]);
|
|
93
|
-
const open = page !== null;
|
|
94
|
-
return (_jsxs("div", { className: `fixed inset-0 z-50 ${open ? "" : "pointer-events-none"}`, "aria-hidden": !open, children: [_jsx("div", { onClick: onClose, className: `absolute inset-0 bg-black/60 transition-opacity duration-200 ${open ? "opacity-100" : "opacity-0"}` }), _jsx("div", { className: `absolute inset-x-0 bottom-0 transition-transform duration-200 ease-out ${open ? "translate-y-0" : "translate-y-full"}`, children: _jsx("div", { role: "dialog", "aria-modal": "true", "aria-label": "Page sessions over time", className: `mx-auto max-h-[80vh] max-w-5xl overflow-y-auto rounded-t-xl border ${border} bg-[#0a0a0a] px-4 pb-6 pt-4 shadow-2xl sm:px-6 sm:pb-8 sm:pt-5`, children: page && (_jsxs(_Fragment, { children: [_jsx("div", { className: "mx-auto mb-4 h-1 w-10 rounded-full bg-[#2e2e2e]" }), _jsxs("div", { className: "mb-6 flex items-start justify-between gap-4", children: [_jsxs("div", { children: [_jsx("div", { className: labelCls, children: "Page" }), _jsx("h3", { className: "mt-1 font-mono text-[16px] text-white", children: page.path })] }), _jsx("button", { type: "button", onClick: onClose, "aria-label": "Close", className: "flex h-7 w-7 shrink-0 items-center justify-center rounded-md border border-[#2e2e2e] text-[#888] transition-colors hover:bg-[#111] hover:text-white", children: "\u2715" })] }), _jsx(PageMeta, { page: page }), _jsx("div", { className: `mb-3 mt-6 ${labelCls}`, children: "Sessions over time" }), _jsx(SessionsChart, { trend: page.trend })] })) }) })] }));
|
|
56
|
+
return (_jsx(BottomDrawer, { open: page !== null, onClose: onClose, label: "Page sessions over time", children: page && (_jsxs(_Fragment, { children: [_jsx(DrawerHeader, { eyebrow: "Page", title: _jsx("h3", { className: "font-mono text-[16px] text-white", children: page.path }), onClose: onClose }), _jsx(PageMeta, { page: page }), _jsx("div", { className: `mb-3 mt-6 ${labelCls}`, children: "Sessions over time" }), _jsx(SessionsChart, { trend: page.trend })] })) }));
|
|
95
57
|
}
|
|
96
58
|
// ── Table ─────────────────────────────────────────────────────────────────────
|
|
97
59
|
function PageRow({ page, onOpen }) {
|
|
@@ -99,6 +61,6 @@ function PageRow({ page, onOpen }) {
|
|
|
99
61
|
}
|
|
100
62
|
export default function TopPagesTable({ pages }) {
|
|
101
63
|
const [selected, setSelected] = useState(null);
|
|
102
|
-
return (_jsxs(_Fragment, { children: [_jsx("div", { className: card, children: pages.length === 0 ? (_jsx("p", { className: "px-5 py-8 text-center text-[13px] text-[#555]", children: "No data yet \u2014 browse the site then refresh." })) : (_jsx("div", { className: "overflow-x-auto", children: _jsxs("table", { className: "w-full min-w-[520px]", children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx(Th, { align: "left", tip: "The route. Click a row to see its sessions over time.", children: "Path" }), _jsx(Th, { tip: "Distinct sessions that viewed this page. Pages are ranked by this.", children: "Sessions" }), _jsx(Th, { tip: "page_view events \u2014 loads plus soft navigations to this route.", children: "Views" }), _jsx(Th, { tip: "Rage clicks (3+ in 500ms on one element) on this page.", children: "Rage" }), _jsx(Th, { tip: "Dead clicks (on non-interactive elements) on this page.", children: "Dead" }), _jsx(Th, { tip: "JS errors thrown on this page.", children: "Errors" }), _jsx(Th, { tip: "Open the sessions-over-time chart.", children: "" })] }) }), _jsx("tbody", { children: pages.map((p) => (_jsx(PageRow, { page: p, onOpen: () => setSelected(p) }, p.path))) })] }) })) }), _jsx(PageDrawer, { page: selected, onClose: () => setSelected(null) })] }));
|
|
64
|
+
return (_jsxs(_Fragment, { children: [_jsx("div", { className: card, children: pages.length === 0 ? (_jsx("p", { className: "px-5 py-8 text-center text-[13px] text-[#555]", children: "No data yet \u2014 browse the site then refresh." })) : (_jsx("div", { className: "overflow-x-auto", children: _jsxs("table", { className: "w-full min-w-[520px]", children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx(Th, { align: "left", tip: "The route. Click a row to see its sessions over time.", children: "Path" }), _jsx(Th, { tip: "Distinct sessions that viewed this page. Pages are ranked by this.", children: "Sessions" }), _jsx(Th, { tip: "page_view events \u2014 loads plus soft navigations to this route.", children: "Views" }), _jsx(Th, { tip: "Rage clicks (3+ in 500ms on one element) on this page.", children: "Rage" }), _jsx(Th, { tip: "Dead clicks (on non-interactive, non-text elements) on this page.", children: "Dead" }), _jsx(Th, { tip: "JS errors thrown on this page.", children: "Errors" }), _jsx(Th, { tip: "Open the sessions-over-time chart.", children: "" })] }) }), _jsx("tbody", { children: pages.map((p) => (_jsx(PageRow, { page: p, onOpen: () => setSelected(p) }, p.path))) })] }) })) }), _jsx(PageDrawer, { page: selected, onClose: () => setSelected(null) })] }));
|
|
103
65
|
}
|
|
104
66
|
//# sourceMappingURL=pages.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pages.js","sourceRoot":"","sources":["../../src/dashboard/pages.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb
|
|
1
|
+
{"version":3,"file":"pages.js","sourceRoot":"","sources":["../../src/dashboard/pages.tsx"],"names":[],"mappings":"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"}
|