/// import styles from "./globals.css?url"; import { LoaderFunctionArgs, type LinksFunction } from "react-router"; import { Links, Meta, Outlet, Scripts, ScrollRestoration, useLoaderData, } from "react-router"; import { getUser, isAuthEnabled } from "~/lib/auth"; export const links: LinksFunction = () => [{ rel: "stylesheet", href: styles }]; /** * Generate GitHub information based on the version format * @param version - Version string (semver or git SHA) * @returns Object with GitHub URL and display version */ function getVersionMeta(version: string | null | undefined): { url: string | null; name: string | null; } { if (!version) return { url: null, name: null }; // Check if it's a semver (e.g., 1.2.3) or a git SHA const isSemver = /^\d+\.\d+\.\d+(?:-[\w.-]+)?(?:\+[\w.-]+)?$/.test(version); if (isSemver) { // Link to release page for semver return { url: `https://github.com/benvinegar/counterscale/releases/tag/v${version}`, name: version, }; } else { // Link to commit for git SHA - show only first 7 characters return { url: `https://github.com/benvinegar/counterscale/commit/${version}`, name: version.slice(0, 7), }; } } export const loader = async ({ context, request }: LoaderFunctionArgs) => { // specified during deploy via wrangler --var VERSION:value const version = context.cloudflare?.env?.VERSION; const user = await getUser(request, context.cloudflare.env); return { version: { ...getVersionMeta(version), }, origin: new URL(request.url).origin, url: request.url, user, isAuthEnabled: isAuthEnabled(context.cloudflare.env), }; }; export const Layout = ({ children = [] }: { children: React.ReactNode }) => { const data = useLoaderData() ?? { version: { url: "https://example.com/", name: "0.0.1", }, origin: "counterscale.dev", url: "https://counterscale.dev/", }; return (
{children}
); }; export default function App() { const data = useLoaderData(); // Check if current domain is a subdomain of counterscale.dev const currentOrigin = new URL(data.url).hostname; const isCounterscaleSubdomain = currentOrigin.endsWith(".counterscale.dev"); const homeUrl = isCounterscaleSubdomain ? "https://counterscale.dev" : "/"; return (
Counterscale Counterscale Icon
Dashboard Admin {(data.user?.authenticated && data.isAuthEnabled) && ( Logout )} GitHub Logo
Version{" "} {data.version ? ( {data.version.name} ) : ( "unknown" )}
); }