@polishd/next 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/AGENTS.md +262 -0
  2. package/DATABASE.md +147 -0
  3. package/LICENSE +21 -0
  4. package/README.md +310 -0
  5. package/bin/init.mjs +224 -0
  6. package/dist/ai/actions.d.ts +23 -0
  7. package/dist/ai/actions.d.ts.map +1 -0
  8. package/dist/ai/actions.js +58 -0
  9. package/dist/ai/actions.js.map +1 -0
  10. package/dist/ai/digest.d.ts +9 -0
  11. package/dist/ai/digest.d.ts.map +1 -0
  12. package/dist/ai/digest.js +108 -0
  13. package/dist/ai/digest.js.map +1 -0
  14. package/dist/ai/github.d.ts +51 -0
  15. package/dist/ai/github.d.ts.map +1 -0
  16. package/dist/ai/github.js +175 -0
  17. package/dist/ai/github.js.map +1 -0
  18. package/dist/ai/guard.d.ts +43 -0
  19. package/dist/ai/guard.d.ts.map +1 -0
  20. package/dist/ai/guard.js +57 -0
  21. package/dist/ai/guard.js.map +1 -0
  22. package/dist/ai/issues.d.ts +21 -0
  23. package/dist/ai/issues.d.ts.map +1 -0
  24. package/dist/ai/issues.js +291 -0
  25. package/dist/ai/issues.js.map +1 -0
  26. package/dist/ai/profile.d.ts +26 -0
  27. package/dist/ai/profile.d.ts.map +1 -0
  28. package/dist/ai/profile.js +160 -0
  29. package/dist/ai/profile.js.map +1 -0
  30. package/dist/ai/providers.d.ts +40 -0
  31. package/dist/ai/providers.d.ts.map +1 -0
  32. package/dist/ai/providers.js +142 -0
  33. package/dist/ai/providers.js.map +1 -0
  34. package/dist/ai/scan.d.ts +38 -0
  35. package/dist/ai/scan.d.ts.map +1 -0
  36. package/dist/ai/scan.js +274 -0
  37. package/dist/ai/scan.js.map +1 -0
  38. package/dist/ai/settings.d.ts +31 -0
  39. package/dist/ai/settings.d.ts.map +1 -0
  40. package/dist/ai/settings.js +182 -0
  41. package/dist/ai/settings.js.map +1 -0
  42. package/dist/ai/summary.d.ts +26 -0
  43. package/dist/ai/summary.d.ts.map +1 -0
  44. package/dist/ai/summary.js +260 -0
  45. package/dist/ai/summary.js.map +1 -0
  46. package/dist/ai/types.d.ts +188 -0
  47. package/dist/ai/types.d.ts.map +1 -0
  48. package/dist/ai/types.js +13 -0
  49. package/dist/ai/types.js.map +1 -0
  50. package/dist/client/init.d.ts +14 -0
  51. package/dist/client/init.d.ts.map +1 -0
  52. package/dist/client/init.js +274 -0
  53. package/dist/client/init.js.map +1 -0
  54. package/dist/client/monitor.d.ts +23 -0
  55. package/dist/client/monitor.d.ts.map +1 -0
  56. package/dist/client/monitor.js +176 -0
  57. package/dist/client/monitor.js.map +1 -0
  58. package/dist/client.d.ts +11 -0
  59. package/dist/client.d.ts.map +1 -0
  60. package/dist/client.js +10 -0
  61. package/dist/client.js.map +1 -0
  62. package/dist/config.d.ts +36 -0
  63. package/dist/config.d.ts.map +1 -0
  64. package/dist/config.js +26 -0
  65. package/dist/config.js.map +1 -0
  66. package/dist/dashboard/elements.d.ts +6 -0
  67. package/dist/dashboard/elements.d.ts.map +1 -0
  68. package/dist/dashboard/elements.js +35 -0
  69. package/dist/dashboard/elements.js.map +1 -0
  70. package/dist/dashboard/features.d.ts +6 -0
  71. package/dist/dashboard/features.d.ts.map +1 -0
  72. package/dist/dashboard/features.js +28 -0
  73. package/dist/dashboard/features.js.map +1 -0
  74. package/dist/dashboard/index.d.ts +54 -0
  75. package/dist/dashboard/index.d.ts.map +1 -0
  76. package/dist/dashboard/index.js +140 -0
  77. package/dist/dashboard/index.js.map +1 -0
  78. package/dist/dashboard/journeys.d.ts +5 -0
  79. package/dist/dashboard/journeys.d.ts.map +1 -0
  80. package/dist/dashboard/journeys.js +158 -0
  81. package/dist/dashboard/journeys.js.map +1 -0
  82. package/dist/dashboard/pages.d.ts +5 -0
  83. package/dist/dashboard/pages.d.ts.map +1 -0
  84. package/dist/dashboard/pages.js +104 -0
  85. package/dist/dashboard/pages.js.map +1 -0
  86. package/dist/dashboard/summary.d.ts +13 -0
  87. package/dist/dashboard/summary.d.ts.map +1 -0
  88. package/dist/dashboard/summary.js +333 -0
  89. package/dist/dashboard/summary.js.map +1 -0
  90. package/dist/index.d.ts +10 -0
  91. package/dist/index.d.ts.map +1 -0
  92. package/dist/index.js +10 -0
  93. package/dist/index.js.map +1 -0
  94. package/dist/proxy.d.ts +40 -0
  95. package/dist/proxy.d.ts.map +1 -0
  96. package/dist/proxy.js +29 -0
  97. package/dist/proxy.js.map +1 -0
  98. package/dist/route.d.ts +24 -0
  99. package/dist/route.d.ts.map +1 -0
  100. package/dist/route.js +37 -0
  101. package/dist/route.js.map +1 -0
  102. package/dist/server/ingest.d.ts +14 -0
  103. package/dist/server/ingest.d.ts.map +1 -0
  104. package/dist/server/ingest.js +73 -0
  105. package/dist/server/ingest.js.map +1 -0
  106. package/dist/server/queries.d.ts +245 -0
  107. package/dist/server/queries.d.ts.map +1 -0
  108. package/dist/server/queries.js +547 -0
  109. package/dist/server/queries.js.map +1 -0
  110. package/dist/server/store.d.ts +29 -0
  111. package/dist/server/store.d.ts.map +1 -0
  112. package/dist/server/store.js +359 -0
  113. package/dist/server/store.js.map +1 -0
  114. package/dist/server.d.ts +15 -0
  115. package/dist/server.d.ts.map +1 -0
  116. package/dist/server.js +15 -0
  117. package/dist/server.js.map +1 -0
  118. package/dist/session.d.ts +16 -0
  119. package/dist/session.d.ts.map +1 -0
  120. package/dist/session.js +29 -0
  121. package/dist/session.js.map +1 -0
  122. package/dist/shared/types.d.ts +56 -0
  123. package/dist/shared/types.d.ts.map +1 -0
  124. package/dist/shared/types.js +27 -0
  125. package/dist/shared/types.js.map +1 -0
  126. package/docs/SETUP.md +315 -0
  127. package/package.json +92 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dashboard/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { SessionJourney } from "../server/queries";
2
+ export default function JourneyList({ journeys }: {
3
+ journeys: SessionJourney[];
4
+ }): import("react").JSX.Element;
5
+ //# sourceMappingURL=journeys.d.ts.map
@@ -0,0 +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;AAoVrE,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,cAAc,EAAE,CAAA;CAAE,+BAwB/E"}
@@ -0,0 +1,158 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ /**
4
+ * Polishd — sampled user journeys (client).
5
+ *
6
+ * Renders the sampled sessions as a compact, scannable list of cards. Clicking
7
+ * a card opens a right-side drawer with the full session summary: metadata plus
8
+ * the start-to-finish flow chart of every action. A drawer (rather than a modal
9
+ * or separate page) keeps the dashboard in view while you drill into one
10
+ * session — the standard pattern for session-replay tooling.
11
+ */
12
+ import { useEffect, useState } from "react";
13
+ // ── Design tokens (kept in sync with page.tsx's Vercel aesthetic) ─────────────
14
+ const border = "border-[#2e2e2e]";
15
+ const card = `border ${border} rounded-lg bg-[#0a0a0a]`;
16
+ const divider = `border-t ${border}`;
17
+ const DEVICE_META = {
18
+ mobile: { label: "Mobile" },
19
+ tablet: { label: "Tablet" },
20
+ desktop: { label: "Desktop" },
21
+ };
22
+ // ── Formatting helpers ────────────────────────────────────────────────────────
23
+ function fmtDuration(ms) {
24
+ const s = Math.round(ms / 1000);
25
+ if (s < 60)
26
+ return `${s}s`;
27
+ const m = Math.floor(s / 60);
28
+ const rem = s % 60;
29
+ return rem ? `${m}m ${rem}s` : `${m}m`;
30
+ }
31
+ function fmtClock(ts) {
32
+ return new Date(ts).toLocaleString(undefined, {
33
+ month: "short",
34
+ day: "numeric",
35
+ hour: "2-digit",
36
+ minute: "2-digit",
37
+ });
38
+ }
39
+ function scoreTone(score) {
40
+ if (score >= 10)
41
+ return "text-red-500";
42
+ if (score >= 4)
43
+ return "text-[#f5a623]";
44
+ return "text-[#0cce6b]";
45
+ }
46
+ function deviceLabel(device) {
47
+ if (!device.category)
48
+ return "Unknown device";
49
+ const name = DEVICE_META[device.category]?.label ?? device.category;
50
+ const size = device.width ? ` · ${device.width}×${device.height ?? "?"}` : "";
51
+ const dpr = device.dpr && device.dpr !== 1 ? ` @${device.dpr}x` : "";
52
+ return `${name}${size}${dpr}`;
53
+ }
54
+ /** A one-line plain-English gist of the session, shown on the card. */
55
+ function summarize(j) {
56
+ const parts = [];
57
+ parts.push(`${j.pages} ${j.pages === 1 ? "page" : "pages"}`);
58
+ const actions = j.steps.filter((s) => s.type === "click" || s.type === "rage_click" || s.type === "dead_click").length;
59
+ if (actions)
60
+ parts.push(`${actions} ${actions === 1 ? "interaction" : "interactions"}`);
61
+ if (j.rageClicks)
62
+ parts.push(`${j.rageClicks} rage`);
63
+ if (j.deadClicks)
64
+ parts.push(`${j.deadClicks} dead`);
65
+ if (j.jsErrors)
66
+ parts.push(`${j.jsErrors} ${j.jsErrors === 1 ? "error" : "errors"}`);
67
+ return parts.join(" · ");
68
+ }
69
+ // ── Flow-chart step row (shared by the drawer) ────────────────────────────────
70
+ const STEP_STYLE = {
71
+ page_view: { dot: "bg-blue-500", verb: "Viewed", verbTone: "text-blue-400" },
72
+ click: { dot: "bg-[#555]", verb: "Clicked", verbTone: "text-[#bbb]" },
73
+ rage_click: {
74
+ dot: "bg-red-500",
75
+ verb: "Rage-clicked",
76
+ verbTone: "text-red-400",
77
+ tag: { text: "rage", cls: "bg-red-950 text-red-400" },
78
+ },
79
+ dead_click: {
80
+ dot: "bg-[#f5a623]",
81
+ verb: "Dead-clicked",
82
+ verbTone: "text-[#f5a623]",
83
+ tag: { text: "dead", cls: "bg-amber-950 text-amber-400" },
84
+ },
85
+ js_error: {
86
+ dot: "bg-red-600",
87
+ verb: "Error",
88
+ verbTone: "text-red-400",
89
+ tag: { text: "error", cls: "bg-red-950 text-red-400" },
90
+ },
91
+ session_end: { dot: "bg-[#666]", verb: "Left the site", verbTone: "text-[#888]" },
92
+ // Non-action types never reach the flow chart, but the map must be total.
93
+ scroll_depth: { dot: "bg-[#444]", verb: "Scrolled", verbTone: "text-[#888]" },
94
+ viewport: { dot: "bg-[#444]", verb: "Viewport", verbTone: "text-[#888]" },
95
+ web_vital: { dot: "bg-[#444]", verb: "Web vital", verbTone: "text-[#888]" },
96
+ hover: { dot: "bg-purple-500", verb: "Hovered", verbTone: "text-purple-400" },
97
+ component_view: { dot: "bg-purple-400", verb: "Viewed component", verbTone: "text-purple-300" },
98
+ mount: { dot: "bg-purple-400", verb: "Rendered component", verbTone: "text-purple-300" },
99
+ };
100
+ function JourneyStepRow({ step, isLast, prevPath, }) {
101
+ const s = STEP_STYLE[step.type];
102
+ const showPath = step.type === "page_view";
103
+ return (_jsxs("li", { className: "relative flex gap-3", children: [_jsxs("div", { className: "relative flex w-2.5 shrink-0 justify-center", children: [_jsx("span", { className: `z-10 mt-[5px] h-2.5 w-2.5 shrink-0 rounded-full ${s.dot}` }), !isLast && _jsx("span", { className: "absolute top-[5px] h-full w-px bg-[#2e2e2e]" })] }), _jsxs("div", { className: "min-w-0 flex-1 pb-3", children: [_jsxs("div", { className: "flex flex-wrap items-baseline gap-x-2 gap-y-0.5", children: [_jsx("span", { className: `text-[13px] font-medium ${s.verbTone}`, children: s.verb }), showPath ? (_jsx("span", { className: "truncate font-mono text-[12px] text-[#ccc]", children: step.path })) : step.label ? (_jsx("span", { className: "truncate text-[13px] text-white", children: step.label })) : null, s.tag && (_jsx("span", { className: `rounded px-1.5 py-0.5 text-[9px] font-semibold uppercase tracking-wider ${s.tag.cls}`, children: s.tag.text }))] }), step.detail && (_jsx("div", { className: "mt-0.5 truncate font-mono text-[11px] text-red-400/80", children: step.detail })), !showPath && step.type !== "session_end" && prevPath !== step.path && (_jsxs("div", { className: "mt-0.5 font-mono text-[11px] text-[#555]", children: ["on ", step.path] }))] })] }));
104
+ }
105
+ // ── Compact, clickable list card ──────────────────────────────────────────────
106
+ function JourneyListCard({ journey, onOpen, }) {
107
+ return (_jsxs("button", { type: "button", onClick: onOpen, className: `group flex w-full items-center gap-3 px-4 py-3 text-left transition-colors hover:bg-[#111] sm:gap-4 sm:px-5 sm:py-3.5 ${divider} first:border-t-0`, children: [_jsxs("div", { className: "flex w-12 shrink-0 flex-col items-center", children: [_jsx("span", { className: `text-[18px] font-semibold tabular-nums leading-none ${scoreTone(journey.score)}`, children: journey.score }), _jsx("span", { className: "mt-1 text-[9px] uppercase tracking-wider text-[#555]", children: "score" })] }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsxs("span", { className: "font-mono text-[13px] text-white", children: ["#", journey.id] }), _jsx("span", { className: `rounded-full px-2 py-0.5 text-[10px] font-medium ${journey.complete ? "bg-emerald-950 text-emerald-400" : "bg-[#1a1a1a] text-[#777]"}`, children: journey.complete ? "complete" : "partial" })] }), _jsx("div", { className: "mt-1 truncate text-[12px] text-[#888]", children: summarize(journey) })] }), _jsxs("div", { className: "hidden shrink-0 flex-col items-end gap-0.5 sm:flex", children: [_jsxs("span", { className: "text-[12px] tabular-nums text-[#ccc]", children: ["\u23F1 ", fmtDuration(journey.durationMs)] }), _jsx("span", { className: "text-[11px] text-[#666]", children: deviceLabel(journey.device) }), _jsx("span", { className: "text-[11px] text-[#555]", children: fmtClock(journey.startedAt) })] }), _jsx("span", { className: "shrink-0 text-[#555] transition-colors group-hover:text-[#999]", children: "\u203A" })] }));
108
+ }
109
+ // ── Right-side detail drawer ──────────────────────────────────────────────────
110
+ function MetaCell({ label, value, tone }) {
111
+ return (_jsxs("div", { className: `px-4 py-3 ${border} border-t`, children: [_jsx("div", { className: "text-[10px] uppercase tracking-[0.08em] text-[#666]", children: label }), _jsx("div", { className: `mt-1 text-[13px] tabular-nums ${tone ?? "text-white"}`, children: value })] }));
112
+ }
113
+ function JourneyDrawer({ journey, onClose, }) {
114
+ // Esc to close + lock background scroll while the drawer is open.
115
+ useEffect(() => {
116
+ if (!journey)
117
+ return;
118
+ const onKey = (e) => {
119
+ if (e.key === "Escape")
120
+ onClose();
121
+ };
122
+ document.addEventListener("keydown", onKey);
123
+ const prev = document.body.style.overflow;
124
+ document.body.style.overflow = "hidden";
125
+ return () => {
126
+ document.removeEventListener("keydown", onKey);
127
+ document.body.style.overflow = prev;
128
+ };
129
+ }, [journey, onClose]);
130
+ const open = journey !== null;
131
+ // Track the current page so action nodes only annotate path on change.
132
+ let lastPath = null;
133
+ 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("aside", { role: "dialog", "aria-modal": "true", "aria-label": "Session journey detail", className: `absolute right-0 top-0 flex h-full w-full max-w-sm flex-col border-l ${border} bg-[#0a0a0a] shadow-2xl transition-transform duration-200 ease-out sm:max-w-md ${open ? "translate-x-0" : "translate-x-full"}`, children: journey && (_jsxs(_Fragment, { children: [_jsxs("div", { className: `flex items-center gap-3 border-b ${border} px-4 py-4 sm:px-5`, children: [_jsxs("span", { className: "font-mono text-[14px] font-semibold text-white", children: ["#", journey.id] }), _jsx("span", { className: `rounded-full px-2 py-0.5 text-[10px] font-medium ${journey.complete ? "bg-emerald-950 text-emerald-400" : "bg-[#1a1a1a] text-[#777]"}`, children: journey.complete ? "complete" : "partial" }), _jsx("button", { type: "button", onClick: onClose, "aria-label": "Close", className: "ml-auto flex h-7 w-7 items-center justify-center rounded-md border border-[#2e2e2e] text-[#888] transition-colors hover:bg-[#111] hover:text-white", children: "\u2715" })] }), _jsxs("div", { className: "min-h-0 flex-1 overflow-y-auto overscroll-contain", children: [_jsxs("div", { className: "grid grid-cols-2", children: [_jsx(MetaCell, { label: "Recorded", value: fmtClock(journey.startedAt) }), _jsx(MetaCell, { label: "Duration", value: fmtDuration(journey.durationMs) }), _jsx(MetaCell, { label: "Device", value: deviceLabel(journey.device) }), _jsx(MetaCell, { label: "Pages", value: `${journey.pages} ${journey.pages === 1 ? "page" : "pages"}` }), _jsx(MetaCell, { label: "Polishd score", value: String(journey.score), tone: scoreTone(journey.score) }), _jsx(MetaCell, { label: "Frustration", value: journey.rageClicks + journey.deadClicks + journey.jsErrors === 0
134
+ ? "none"
135
+ : [
136
+ journey.rageClicks ? `${journey.rageClicks} rage` : null,
137
+ journey.deadClicks ? `${journey.deadClicks} dead` : null,
138
+ journey.jsErrors ? `${journey.jsErrors} err` : null,
139
+ ]
140
+ .filter(Boolean)
141
+ .join(" · "), tone: journey.rageClicks + journey.deadClicks + journey.jsErrors > 0
142
+ ? "text-[#f5a623]"
143
+ : "text-[#0cce6b]" })] }), _jsxs("div", { className: `border-t ${border} px-4 py-4 sm:px-5`, children: [_jsxs("div", { className: "mb-3 text-[10px] uppercase tracking-[0.08em] text-[#666]", children: ["Flow \u2014 ", journey.steps.length, " actions"] }), _jsxs("ol", { children: [journey.steps.map((step, i) => {
144
+ const prevPath = lastPath;
145
+ if (step.type === "page_view")
146
+ lastPath = step.path;
147
+ return (_jsx(JourneyStepRow, { step: step, isLast: i === journey.steps.length - 1 && !journey.truncated, prevPath: prevPath }, i));
148
+ }), journey.truncated && (_jsxs("li", { className: "flex gap-3", children: [_jsx("div", { className: "flex w-2.5 shrink-0 justify-center", children: _jsx("span", { className: "mt-[5px] h-2.5 w-2.5 rounded-full bg-[#333]" }) }), _jsx("span", { className: "text-[12px] italic text-[#555]", children: "\u2026 journey continues (more actions captured)" })] }))] })] })] })] })) })] }));
149
+ }
150
+ // ── Exported list + drawer ────────────────────────────────────────────────────
151
+ export default function JourneyList({ journeys }) {
152
+ const [selected, setSelected] = useState(null);
153
+ if (journeys.length === 0) {
154
+ return (_jsx("div", { className: card, children: _jsx("p", { className: "px-5 py-8 text-center text-[13px] text-[#555]", children: "No complete sessions captured yet \u2014 browse the site (try a few rage and dead clicks) then refresh." }) }));
155
+ }
156
+ return (_jsxs(_Fragment, { children: [_jsx("div", { className: card, children: journeys.map((j) => (_jsx(JourneyListCard, { journey: j, onOpen: () => setSelected(j) }, j.id))) }), _jsx(JourneyDrawer, { journey: selected, onClose: () => setSelected(null) })] }));
157
+ }
158
+ //# sourceMappingURL=journeys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"journeys.js","sourceRoot":"","sources":["../../src/dashboard/journeys.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { TopPage } from "../server/queries";
2
+ export default function TopPagesTable({ pages }: {
3
+ pages: TopPage[];
4
+ }): import("react").JSX.Element;
5
+ //# sourceMappingURL=pages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pages.d.ts","sourceRoot":"","sources":["../../src/dashboard/pages.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAkB,OAAO,EAAE,MAAM,mBAAmB,CAAC;AA8SjE,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,OAAO,EAAE,CAAA;CAAE,+BAwCpE"}
@@ -0,0 +1,104 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ /**
4
+ * Polishd — "Top pages" table + sessions-over-time drawer (client).
5
+ *
6
+ * Lists the most-visited pages; clicking a row opens a bottom drawer with a
7
+ * bar chart of distinct sessions per day for that page. A bottom drawer (rather
8
+ * than a side panel) suits a wide time-series chart and keeps the table in view
9
+ * above it.
10
+ */
11
+ import { useEffect, useState } from "react";
12
+ const border = "border-[#2e2e2e]";
13
+ const card = `border ${border} rounded-lg bg-[#0a0a0a]`;
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
+ }
21
+ function Th({ children, tip, align = "right", }) {
22
+ 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
+ }
24
+ // ── Page-level metadata grid ──────────────────────────────────────────────────
25
+ function MetaCell({ label, value, tone }) {
26
+ return (_jsxs("div", { className: "bg-[#0a0a0a] px-4 py-3", children: [_jsx("div", { className: labelCls, children: label }), _jsx("div", { className: `mt-1 text-[16px] font-semibold tabular-nums ${tone ?? "text-white"}`, children: value })] }));
27
+ }
28
+ function PageMeta({ page }) {
29
+ const peakDay = page.trend.length ? Math.max(...page.trend.map((p) => p.sessions)) : 0;
30
+ const viewsPerSession = page.sessions > 0 ? page.pageViews / page.sessions : 0;
31
+ 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
+ }
33
+ // ── 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
+ function SessionsChart({ trend }) {
49
+ if (trend.length === 0) {
50
+ return _jsx("p", { className: "py-8 text-center text-[13px] text-[#555]", children: "No session data yet." });
51
+ }
52
+ const peak = Math.max(...trend.map((p) => p.sessions), 1);
53
+ const { top, ticks } = yScale(peak);
54
+ // SVG geometry (a viewBox; the element scales to its container width).
55
+ const W = 640;
56
+ const H = 220;
57
+ const padL = 32;
58
+ const padR = 14;
59
+ const padT = 12;
60
+ const padB = 28;
61
+ const plotW = W - padL - padR;
62
+ const plotH = H - padT - padB;
63
+ const n = trend.length;
64
+ const xFor = (i) => (n === 1 ? padL + plotW / 2 : padL + (i / (n - 1)) * plotW);
65
+ const yFor = (v) => padT + plotH - (v / top) * plotH;
66
+ const pts = trend.map((p, i) => ({ ...p, x: xFor(i), y: yFor(p.sessions) }));
67
+ const linePath = pts.map((p, i) => `${i === 0 ? "M" : "L"}${p.x},${p.y}`).join(" ");
68
+ // Area fill closes the line down to the baseline.
69
+ const areaPath = `${linePath} L${pts[pts.length - 1].x},${yFor(0)} L${pts[0].x},${yFor(0)} Z`;
70
+ // Show at most ~6 date labels so they don't collide.
71
+ const maxLabels = 6;
72
+ const labelStep = Math.max(1, Math.ceil(n / maxLabels));
73
+ const showLabel = (i) => i === 0 || i === n - 1 || i % labelStep === 0;
74
+ return (_jsx("div", { children: _jsxs("svg", { viewBox: `0 0 ${W} ${H}`, className: "w-full", role: "img", "aria-label": "Sessions over time", children: [_jsx("defs", { children: _jsxs("linearGradient", { id: "polishd-area", x1: "0", y1: "0", x2: "0", y2: "1", children: [_jsx("stop", { offset: "0%", stopColor: "#3b82f6", stopOpacity: "0.25" }), _jsx("stop", { offset: "100%", stopColor: "#3b82f6", stopOpacity: "0" })] }) }), ticks.map((t) => (_jsxs("g", { children: [_jsx("line", { x1: padL, y1: yFor(t), x2: W - padR, y2: yFor(t), stroke: "#1c1c1c", strokeWidth: 1 }), _jsx("text", { x: padL - 8, y: yFor(t) + 3.5, textAnchor: "end", fontSize: 10, fill: "#666", className: "tabular-nums", children: t })] }, t))), _jsx("path", { d: areaPath, fill: "url(#polishd-area)" }), _jsx("path", { d: linePath, fill: "none", stroke: "#3b82f6", strokeWidth: 2, strokeLinejoin: "round" }), pts.map((p, i) => (_jsxs("g", { children: [_jsx("circle", { cx: p.x, cy: p.y, r: 3, fill: "#0a0a0a", stroke: "#3b82f6", strokeWidth: 2, children: _jsxs("title", { children: [p.label, ": ", p.sessions, " ", p.sessions === 1 ? "session" : "sessions"] }) }), showLabel(i) && (_jsx("text", { x: p.x, y: H - 9, textAnchor: "middle", fontSize: 10, fill: "#666", children: p.label }))] }, p.ts)))] }) }));
75
+ }
76
+ // ── Bottom drawer ─────────────────────────────────────────────────────────────
77
+ function PageDrawer({ page, onClose }) {
78
+ useEffect(() => {
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 })] })) }) })] }));
95
+ }
96
+ // ── Table ─────────────────────────────────────────────────────────────────────
97
+ function PageRow({ page, onOpen }) {
98
+ return (_jsxs("tr", { onClick: onOpen, className: `group cursor-pointer ${divider} transition-colors hover:bg-[#111]`, children: [_jsx("td", { className: "py-2.5 pl-5 pr-6", children: _jsx("span", { className: "font-mono text-[13px] text-[#ccc] group-hover:text-white", children: page.path }) }), _jsx("td", { className: "py-2.5 px-4 text-right text-[13px] font-semibold tabular-nums text-white", children: page.sessions }), _jsx("td", { className: "py-2.5 px-4 text-right text-[13px] tabular-nums text-[#888]", children: page.pageViews }), _jsx("td", { className: "py-2.5 px-4 text-right text-[13px] tabular-nums text-[#888]", children: page.rageClicks }), _jsx("td", { className: "py-2.5 px-4 text-right text-[13px] tabular-nums text-[#888]", children: page.deadClicks }), _jsx("td", { className: "py-2.5 px-4 text-right text-[13px] tabular-nums text-[#888]", children: page.jsErrors }), _jsx("td", { className: "py-2.5 pl-4 pr-5 text-right text-[13px] tabular-nums text-[#555]", children: _jsx("span", { className: "group-hover:text-[#999]", children: "\u203A" }) })] }));
99
+ }
100
+ export default function TopPagesTable({ pages }) {
101
+ 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) })] }));
103
+ }
104
+ //# sourceMappingURL=pages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pages.js","sourceRoot":"","sources":["../../src/dashboard/pages.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { PolishdAISettingsPublic, PolishdProjectProfile, PolishdSummary } from "../ai/types";
2
+ export interface SummaryCardProps {
3
+ initialSummary: PolishdSummary | null;
4
+ initialSettings: PolishdAISettingsPublic;
5
+ initialStale: boolean;
6
+ initialProfile: PolishdProjectProfile | null;
7
+ /** Component identifiers in the analytics that the profile doesn't cover. */
8
+ initialGaps: string[];
9
+ /** Whether the app's source tree is on disk here (scan possible). */
10
+ sourceAvailable: boolean;
11
+ }
12
+ export default function SummaryCard({ initialSummary, initialSettings, initialStale, initialProfile, initialGaps, sourceAvailable, }: SummaryCardProps): import("react").JSX.Element;
13
+ //# sourceMappingURL=summary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summary.d.ts","sourceRoot":"","sources":["../../src/dashboard/summary.tsx"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAEV,uBAAuB,EAGvB,qBAAqB,EAErB,cAAc,EACf,MAAM,aAAa,CAAC;AA2GrB,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;IACtC,eAAe,EAAE,uBAAuB,CAAC;IACzC,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAC7C,6EAA6E;IAC7E,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,qEAAqE;IACrE,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,cAAc,EACd,eAAe,EACf,YAAY,EACZ,cAAc,EACd,WAAW,EACX,eAAe,GAChB,EAAE,gBAAgB,+BAoKlB"}