Vibe Google Analytics

This commit is contained in:
2026-06-25 18:55:04 -04:00
parent fdf8e754f5
commit 73ae3eac53
86 changed files with 53925 additions and 46039 deletions
-3
View File
@@ -257,9 +257,6 @@ a, .btn-link {
}
.inline-card-btn {
background: none;
border: none;
+39 -16
View File
@@ -6,26 +6,29 @@
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
<title>Chrono CCG - Card Gallery</title>
<base href="/"/>
<meta name="description" content="Explore the full collection of Chrono CCG cards. Filter by cost, faction, and type."/>
<meta name="keywords" content="Chrono CCG, Reference, Card Gallery, DB"/>
<meta content="Explore the full collection of Chrono CCG cards. Filter by cost, faction, and type."
name="description"/>
<meta content="Chrono CCG, Reference, Card Gallery, DB" name="keywords"/>
<!-- Open Graph / Facebook -->
<meta property="og:type" content="website"/>
<meta property="og:url" content="https://chronoccg.com/"/>
<meta property="og:title" content="Chrono CCG - Card Gallery"/>
<meta property="og:description" content="Explore the full collection of Chrono CCG cards. Filter by cost, faction, and type."/>
<meta property="og:image" content="https://chronoccg.com/favicon.png"/>
<meta content="website" property="og:type"/>
<meta content="https://chronoccg.com/" property="og:url"/>
<meta content="Chrono CCG - Card Gallery" property="og:title"/>
<meta content="Explore the full collection of Chrono CCG cards. Filter by cost, faction, and type."
property="og:description"/>
<meta content="https://chronoccg.com/favicon.png" property="og:image"/>
<!-- Twitter -->
<meta property="twitter:card" content="summary_large_image"/>
<meta property="twitter:url" content="https://chronoccg.com/"/>
<meta property="twitter:title" content="Chrono CCG - Card Gallery"/>
<meta property="twitter:description" content="Explore the full collection of Chrono CCG cards. Filter by cost, faction, and type."/>
<meta property="twitter:image" content="https://chronoccg.com/favicon.png"/>
<meta content="summary_large_image" property="twitter:card"/>
<meta content="https://chronoccg.com/" property="twitter:url"/>
<meta content="Chrono CCG - Card Gallery" property="twitter:title"/>
<meta content="Explore the full collection of Chrono CCG cards. Filter by cost, faction, and type."
property="twitter:description"/>
<meta content="https://chronoccg.com/favicon.png" property="twitter:image"/>
<link href="manifest.json" rel="manifest" />
<link rel="apple-touch-icon" sizes="512x512" href="icon-512.png" />
<link rel="apple-touch-icon" sizes="192x192" href="icon-192.png" />
<link href="manifest.json" rel="manifest"/>
<link href="icon-512.png" rel="apple-touch-icon" sizes="512x512"/>
<link href="icon-192.png" rel="apple-touch-icon" sizes="192x192"/>
<link href="https://fonts.googleapis.com" rel="preconnect"/>
<link crossorigin href="https://fonts.gstatic.com" rel="preconnect"/>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet"/>
@@ -37,6 +40,26 @@
<script defer src="/_content/Telerik.UI.for.Blazor/js/telerik-blazor.js"></script>
<link href="/favicon.png" rel="icon" type="image/png"/>
<script type="importmap"></script>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-HVMP2QEJLR"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() {
dataLayer.push(arguments);
}
gtag('js', new Date());
gtag('config', 'G-HVMP2QEJLR');
window.trackPageView = (path) => {
gtag('event', 'page_view', {
page_path: path,
page_location: window.location.origin + path
});
};
</script>
</head>
<body>
+2 -1
View File
@@ -1,3 +1,4 @@
// In development, always fetch from the network and do not cache.
// This is appropriate during development as the service worker will wake up and fetch resources from the network.
self.addEventListener('fetch', () => { });
self.addEventListener('fetch', () => {
});
@@ -8,8 +8,8 @@ self.addEventListener('fetch', event => event.respondWith(onFetch(event)));
const cacheNamePrefix = 'offline-cache-';
const cacheName = `${cacheNamePrefix}${self.assetsManifest.version}`;
const offlineAssetsInclude = [ /\.dll$/, /\.pdb$/, /\.wasm/, /\.html/, /\.js$/, /\.json$/, /\.css$/, /\.woff$/, /\.png$/, /\.jpe?g$/, /\.gif$/, /\.ico$/, /\.blat$/, /\.dat$/ ];
const offlineAssetsExclude = [ /^service-worker\.js$/ ];
const offlineAssetsInclude = [/\.dll$/, /\.pdb$/, /\.wasm/, /\.html/, /\.js$/, /\.json$/, /\.css$/, /\.woff$/, /\.png$/, /\.jpe?g$/, /\.gif$/, /\.ico$/, /\.blat$/, /\.dat$/];
const offlineAssetsExclude = [/^service-worker\.js$/];
async function onInstall(event) {
console.info('Service worker installing');
@@ -18,7 +18,7 @@ async function onInstall(event) {
const assetsRequests = self.assetsManifest.assets
.filter(asset => offlineAssetsInclude.some(pattern => pattern.test(asset.url)))
.filter(asset => !offlineAssetsExclude.some(pattern => pattern.test(asset.url)))
.map(asset => new Request(asset.url, { integrity: asset.hash, cache: 'no-cache' }));
.map(asset => new Request(asset.url, {integrity: asset.hash, cache: 'no-cache'}));
await caches.open(cacheName).then(cache => cache.addAll(assetsRequests));
}
+7 -1
View File
@@ -1,6 +1,12 @@
{
"navigationFallback": {
"rewrite": "/index.html",
"exclude": ["/css/*", "/lib/*", "/_framework/*", "/_content/*", "/sample-data/*"]
"exclude": [
"/css/*",
"/lib/*",
"/_framework/*",
"/_content/*",
"/sample-data/*"
]
}
}