diff --git a/site/src/DocsLinks.jsx b/site/src/DocsLinks.jsx
index d80d783..1c6f689 100644
--- a/site/src/DocsLinks.jsx
+++ b/site/src/DocsLinks.jsx
@@ -18,7 +18,7 @@ function DocsLinks() {
{cards.map((c) => (
-
+
{c.eyebrow}
{c.title}
{c.desc}
diff --git a/site/src/FAQ.jsx b/site/src/FAQ.jsx
index a9bb5d7..f1402e9 100644
--- a/site/src/FAQ.jsx
+++ b/site/src/FAQ.jsx
@@ -6,7 +6,7 @@
function FAQItem({ n, q, children, open, onToggle }) {
return (
-
+
{String(n).padStart(2, "0")}
{q}
{open ? "−" : "+"}
diff --git a/site/src/Footer.jsx b/site/src/Footer.jsx
index 85237b5..4526563 100644
--- a/site/src/Footer.jsx
+++ b/site/src/Footer.jsx
@@ -28,20 +28,20 @@ function Footer() {
diff --git a/site/src/Hero.jsx b/site/src/Hero.jsx
index 1118fad..b985d07 100644
--- a/site/src/Hero.jsx
+++ b/site/src/Hero.jsx
@@ -3,7 +3,7 @@
// ============================================================
// HERO — gradient wordmark, one-key value prop, live TUI preview
// ============================================================
-function CopyChip({ cmd, prompt = "$" }) {
+function CopyChip({ cmd, prompt = "$", event = "copy-command" }) {
const [copied, setCopied] = React.useState(false);
const onCopy = () => {
try {
@@ -20,6 +20,8 @@ function CopyChip({ cmd, prompt = "$" }) {
className={"copy-btn" + (copied ? " is-copied" : "")}
onClick={onCopy}
aria-label="Copy install command"
+ data-umami-event={event}
+ data-umami-event-cmd={cmd}
>
{copied ? "COPIED" : "COPY"}
@@ -103,8 +105,8 @@ function Hero() {
diff --git a/site/src/InstallTerminal.jsx b/site/src/InstallTerminal.jsx
index 905d6c4..c340414 100644
--- a/site/src/InstallTerminal.jsx
+++ b/site/src/InstallTerminal.jsx
@@ -27,7 +27,7 @@ function InstallTerminal() {
Prefer a prebuilt binary? Download it from the GitHub releases page.
-
+
@@ -53,7 +53,7 @@ function InstallTerminal() {
Press ? any time for the full key map.
-
+
diff --git a/site/src/Nav.jsx b/site/src/Nav.jsx
index c622cbe..5ea1d7c 100644
--- a/site/src/Nav.jsx
+++ b/site/src/Nav.jsx
@@ -37,7 +37,7 @@ function Nav({ theme, onToggleTheme }) {
return (
-
@@ -47,17 +47,17 @@ function Nav({ theme, onToggleTheme }) {
v{window.TIHOLE_VERSION}
-
+
{isLight ? 'LIGHT' : 'NIGHT'}
- GITHUB ↗
+ GITHUB ↗
);
diff --git a/site/src/Releases.jsx b/site/src/Releases.jsx
index ac4f648..3411b8c 100644
--- a/site/src/Releases.jsx
+++ b/site/src/Releases.jsx
@@ -176,6 +176,7 @@ function Releases() {
href="https://github.com/z19r/tihole/blob/main/CHANGELOG.md"
target="_blank"
rel="noreferrer"
+ data-umami-event="releases-full-changelog"
>
FULL CHANGELOG ↗
diff --git a/site/src/Screens.jsx b/site/src/Screens.jsx
index d99dfb1..22dd548 100644
--- a/site/src/Screens.jsx
+++ b/site/src/Screens.jsx
@@ -75,6 +75,7 @@ function Screens() {
aria-selected={active === t.id}
className={"screens-tab" + (active === t.id ? " is-active" : "")}
onClick={() => setActive(t.id)}
+ data-umami-event={"screens-tab-" + t.id}
>
{String(i + 1).padStart(2, "0")}
{t.label}