PageSourceSearch

https://fanarchy.fans/shared-header.js

js fanarchy.fans collected 2026-10-02 05:36:03 UTC 6,715 bytes, 44 lines download raw bytes

1// Auto-generated from site-chrome.ts — DO NOT EDIT DIRECTLY
2// Source of truth: firebase/functions/src/functions/sharing/site-chrome.ts
3// Regenerate: cd firebase/functions && npm run generate-chrome
4(function() {
5    // Inject header CSS
6    var style = document.createElement('style');
7    style.textContent = "\n        /* ========== SITE HEADER ========== */\n        .site-header {\n            background: #FFFFFF;\n            border-bottom: 1px solid #E9ECEF;\n            position: sticky;\n            top: 0;\n            z-index: 100;\n        }\n        .site-chrome-container {\n            max-width: 1120px;\n            margin: 0 auto;\n            padding: 0 20px;\n        }\n        .nav-inner {\n            display: flex;\n            align-items: center;\n            justify-content: space-between;\n            height: 64px;\n        }\n        .nav-logo {\n            display: flex;\n            align-items: center;\n            gap: 10px;\n            text-decoration: none;\n            color: #041E42;\n        }\n        .nav-logo img {\n            height: 36px;\n            width: 36px;\n            border-radius: 8px;\n        }\n        .nav-logo span {\n            font-family: 'Anton', sans-serif;\n            font-size: 22px;\n            text-transform: uppercase;\n            letter-spacing: 0.5px;\n        }\n        .nav-links {\n            display: none;\n            list-style: none;\n            gap: 24px;\n            align-items: center;\n        }\n        .nav-links a {\n            color: #041E42;\n            font-size: 14px;\n            font-weight: 500;\n            text-decoration: none;\n            transition: color 0.15s;\n        }\n        .nav-links a:hover { color: #BF0D3E; text-decoration: none; }\n        .nav-cta { display: none; }\n        .nav-toggle {\n            display: flex;\n            flex-direction: column;\n            gap: 5px;\n            background: none;\n            border: none;\n            cursor: pointer;\n            padding: 8px;\n        }\n        .nav-toggle span {\n            display: block;\n            width: 24px;\n            height: 2px;\n            background: #041E42;\n            border-radius: 2px;\n            transition: transform 0.2s;\n        }\n        .mobile-menu {\n            display: none;\n            background: #FFFFFF;\n            border-bottom: 1px solid #E9ECEF;\n            padding: 16px 20px;\n        }\n        .mobile-menu.open { display: block; }\n        .mobile-menu a {\n            display: block;\n            padding: 10px 0;\n            color: #041E42;\n            font-size: 16px;\n            font-weight: 500;\n            border-bottom: 1px solid #F8F9FA;\n            text-decoration: none;\n        }\n        .mobile-menu a:last-child { border-bottom: none; }\n        .mobile-menu a:hover { color: #BF0D3E; text-decoration: none; }\n        @media (min-width: 768px) {\n            .nav-links { display: flex; }\n            .nav-cta { display: block; }\n            .nav-toggle { display: none; }\n        }";
8    document.head.appendChild(style);
9
10    // Replace placeholder with header HTML
11    var el = document.getElementById('site-header');
12    if (el) {
13        el.outerHTML = "<header class=\"site-header\">\n        <div class=\"site-chrome-container\">\n            <nav class=\"nav-inner\">\n                <a href=\"/\" class=\"nav-logo\" aria-label=\"Fanarchy Home\">\n                    <img src=\"/email-assets/fanarchy-icon-1024.png\" alt=\"\" width=\"36\" height=\"36\">\n                    <span>Fanarchy</span>\n                </a>\n\n                <ul class=\"nav-links\">\n                    <li><a href=\"/games/search\">Games</a></li>\n                    <li><a href=\"/players/search\">Players</a></li>\n                    <li><a href=\"/news\">News</a></li>\n                    <li><a href=\"/slack\">Slack</a></li>\n                    <li><a href=\"/discord\">Discord</a></li>\n                    <li><a href=\"/#features\">Features</a></li>\n                    <li><a href=\"/faq\">FAQ</a></li>\n                    <li><a href=\"/about\">About</a></li>\n                    <li><a href=\"/compare\">Compare</a></li>\n                </ul>\n\n                <div class=\"nav-cta\">\n                    <a href=\"https://fanarchy.onelink.me/s9P9/fu1emsnk\" target=\"_blank\" rel=\"noopener noreferrer\" data-install-trigger=\"nav_header\">\n                        <img src=\"/email-assets/Download_on_the_App_Store_Badge_US-UK_RGB_blk_092917.svg\" alt=\"Download Fanarchy on the App Store\" class=\"app-store-badge\" style=\"height: 36px;\">\n                    </a>\n                </div>\n\n                <button class=\"nav-toggle\" aria-label=\"Open menu\" onclick=\"document.querySelector('.mobile-menu').classList.toggle('open')\">
13\n                    <span></span><span></span><span></span>\n                </button>\n            </nav>\n        </div>\n        <div class=\"mobile-menu\">\n            <a href=\"/games/search\">Games</a>\n            <a href=\"/players/search\">Players</a>\n            <a href=\"/news\">News</a>\n            <a href=\"/slack\">Slack</a>\n            <a href=\"/discord\">Discord</a>\n            <a href=\"/#features\">Features</a>\n            <a href=\"/faq\">FAQ</a>\n            <a href=\"/about\">About</a>\n            <a href=\"/compare\">Compare</a>\n            <a href=\"https://fanarchy.onelink.me/s9P9/fu1emsnk\" target=\"_blank\" rel=\"noopener noreferrer\" data-install-trigger=\"nav_mobile\">\n                <img src=\"/email-assets/Download_on_the_App_Store_Badge_US-UK_RGB_blk_092917.svg\" alt=\"Download Fanarchy on the App Store\" class=\"app-store-badge\" style=\"height: 36px;\">\n            </a>\n        </div>\n    </header>";
14    }
15
16    // Highlight active nav item based on current path
17    var path = window.location.pathname;
18    var map = {
19        '/games': 'games',
20        '/players': 'players',
21        '/p': 'players',
22        '/news': 'news',
23        '/slack': 'slack',
24        '/discord': 'discord',
25        '/about': 'about',
26        '/compare': 'compare'
27    };
28    var active = null;
29    for (var prefix in map) {
30        if (path === prefix || path.startsWith(prefix + '/')) {
31            active = prefix;
32            break;
33        }
34    }
35    if (active) {
36        var links = document.querySelectorAll('.nav-links a, .mobile-menu a');
37        for (var i = 0; i < links.length; i++) {
38            var href = links[i].getAttribute('href');
39            if (href && (href === active || href.startsWith(active + '/'))) {
40                links[i].style.color = '#BF0D3E';
41            }
42        }
43    }
44})();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.