--- import Analytics from '../components/Analytics/Analytics.astro'; import Authenticator from '../components/Authenticator/Authenticator.astro'; import Footer from '../components/Footer.astro'; import Navigation from '../components/Navigation/Navigation.astro'; import OpenSourceBanner from '../components/OpenSourceBanner.astro'; import { PageProgress } from '../components/PageProgress'; import { PageSponsor } from '../components/PageSponsor'; import { siteConfig } from '../lib/config'; import '../styles/global.css'; export interface Props { title: string; // This isn't used anywhere except for the sponsor event labels briefTitle?: string; redirectUrl?: string; description?: string; keywords?: string[]; noIndex?: boolean; canonicalUrl?: string; initialLoadingMessage?: string; permalink?: string; jsonLd?: Record[]; } const { title = siteConfig.title, briefTitle, description = siteConfig.description, keywords = siteConfig.keywords, noIndex = false, permalink = '', canonicalUrl: givenCanonical = '', jsonLd = [], redirectUrl = '', initialLoadingMessage = '', } = Astro.props; // Remove trailing slashes to consider the page as canonical const currentPageAbsoluteUrl = `https://roadmap.sh${permalink}`; const canonicalUrl = givenCanonical || currentPageAbsoluteUrl; const commitUrl = `https://github.com/kamranahmedse/developer-roadmap/commit/${ import.meta.env.GITHUB_SHA }`; // e.g. frontend:react or best-practices:frontend-performance const gaPageIdentifier = Astro.url.pathname .replace(/^\//, '') .replace(/\/$/, '') .replace(/\//g, ':'); --- {title} { redirectUrl && ( ) } {noIndex && } { jsonLd.length > 0 && (