Add analytics

This commit is contained in:
2026-04-16 04:05:21 -07:00
parent af0434cffb
commit b8129f6aa5
4 changed files with 37 additions and 5 deletions

View File

@@ -18,6 +18,13 @@ export function AppShell({ children, searchParams }: { children: ReactNode, sear
<meta charSet="UTF-8" /> <meta charSet="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Caleb's Blog</title> <title>Caleb's Blog</title>
<script
defer
src="https://l.cbraaten.dev/script.js"
data-domains="cbraaten.dev,www.cbraaten.dev"
data-website-id="3632433b-2e3b-45d7-aea2-dece88184e92"
data-performance="true"
></script>
<style dangerouslySetInnerHTML={{ __html: minifyCSS(styles) }} /> <style dangerouslySetInnerHTML={{ __html: minifyCSS(styles) }} />
</head> </head>
<body> <body>

View File

@@ -1,6 +1,7 @@
// Add function to 'Clear all filters' // Add function to 'Clear all filters'
document.querySelector('.clear-tags-btn') document.querySelector('.clear-tags-btn')
?.addEventListener('click', (e) => { ?.addEventListener('click', (e) => {
umami.track("ClearAllTags");
const activeTags = document.querySelectorAll('a.tag-pill.active') const activeTags = document.querySelectorAll('a.tag-pill.active')
activeTags.forEach((activeTag) => { activeTags.forEach((activeTag) => {
activeTag.classList.remove('active') activeTag.classList.remove('active')
@@ -20,10 +21,14 @@ function toggleTagPill(e: Event) {
if (target.classList.contains('active')) { if (target.classList.contains('active')) {
target.classList.remove('active') target.classList.remove('active')
searchParams.delete('tag', getURLSafeTagName(target.innerText)) const tagName = getURLSafeTagName(target.innerText)
searchParams.delete('tag', tagName)
umami.track("ToggleTag", { tag: tagName, type: 'remove' });
} else { } else {
target.classList.add('active') target.classList.add('active')
searchParams.append('tag', getURLSafeTagName(target.innerText)) const tagName = getURLSafeTagName(target.innerText)
searchParams.append('tag', tagName)
umami.track("ToggleTag", { tag: tagName, type: 'add' });
} }
// Update tag urls after the loader in onLoad completes // Update tag urls after the loader in onLoad completes

View File

@@ -73,6 +73,7 @@ function attachThemeOptionListeners() {
function selectTheme(theme: string) { function selectTheme(theme: string) {
THEMES[currentMode] = theme; THEMES[currentMode] = theme;
localStorage.setItem('theme-' + currentMode, theme); localStorage.setItem('theme-' + currentMode, theme);
umami.track("SelectTheme", { type: currentMode, theme: theme });
updateUI(); updateUI();
applyTheme(); applyTheme();
} }

View File

@@ -13,21 +13,40 @@ export function ProfileBadge() {
</div> </div>
<ul className="social-links"> <ul className="social-links">
<li> <li>
<a href={urlLinkedIn} data-external target="_blank" rel="noopener noreferrer" aria-label="LinkedIn"> <a
href={urlLinkedIn}
data-external
target="_blank"
rel="noopener"
aria-label="LinkedIn"
data-umami-event="NavToLinkedIn"
>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/> <path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/>
</svg> </svg>
</a> </a>
</li> </li>
<li> <li>
<a href={urlX} data-external target="_blank" rel="noopener noreferrer" aria-label="X (Twitter)"> <a href={urlX}
data-external
target="_blank"
rel="noopener"
aria-label="X (Twitter)"
data-umami-event="NavToX"
>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"/> <path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"/>
</svg> </svg>
</a> </a>
</li> </li>
<li> <li>
<a href={urlGit} data-external target="_blank" rel="noopener noreferrer" aria-label="GitHub / Gitea"> <a href={urlGit}
data-external
target="_blank"
rel="noopener"
aria-label="GitHub / Gitea"
data-umami-event="NavToGit"
>
<div className="git-icon-wrapper"> <div className="git-icon-wrapper">
<svg className="icon-github" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> <svg className="icon-github" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/> <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/>