diff --git a/reproducibility/site/src/components/CitationCard.astro b/reproducibility/site/src/components/CitationCard.astro index 13eeb99..b1afc7a 100644 --- a/reproducibility/site/src/components/CitationCard.astro +++ b/reproducibility/site/src/components/CitationCard.astro @@ -10,24 +10,28 @@ interface Props { const { title, venue, authors, bibtex, url } = Astro.props; --- -
-
{venue}
-

{title}

-

{authors}

- { - url && ( - - {url} ↗ - - ) - } +
+
+
{venue}
+

{title}

+

{authors}

+ { + url && ( + + {url} ↗ + + ) + } +
-
+ {/* mt-auto pushes the BibTeX block to the bottom so it aligns across cards + whose top content differs in height (the grid forces equal heights). */} +
BibTeX
-
{bibtex}
+
{bibtex}
diff --git a/reproducibility/site/src/layouts/Default.astro b/reproducibility/site/src/layouts/Default.astro index 9a306c9..bbc5e7a 100644 --- a/reproducibility/site/src/layouts/Default.astro +++ b/reproducibility/site/src/layouts/Default.astro @@ -7,9 +7,34 @@ import GoogleAnalytics from "@qg/shared/components/GoogleAnalytics.astro"; interface Props { title: string; description?: string; + /** Optional 1200×630 PNG/JPG path; defaults to the logo. Override per page when relevant. */ + ogImage?: string; + /** Explicit Open Graph type — "website" by default; "article" for citation pages, etc. */ + ogType?: "website" | "article"; + /** Optional JSON-LD structured-data string emitted into (e.g. Dataset / SoftwareApplication). */ + jsonLd?: string; } -const { title, description } = Astro.props; +const { + title, + description, + ogImage = "/querygym-logo.png", + ogType = "website", + jsonLd, +} = Astro.props; + +const SITE_URL = "https://leaderboard.querygym.com"; +const SITE_NAME = "QueryGym Leaderboard"; +const TAGLINE = "Reproducible benchmarks for LLM query reformulation."; +const DEFAULT_DESC = "Reproducible benchmarks for LLM-based query reformulation. Click any row for the exact commands that produced each score — methods × LLMs × retrievers (BM25, SPLADE++, BGE) across BEIR, MS MARCO DL, and DL-HARD."; + +// Home/index pages pass title="Leaderboard"; avoid the "Leaderboard — QueryGym Leaderboard" doubling. +const fullTitle = title === "Leaderboard" || title === SITE_NAME + ? `${SITE_NAME} — ${TAGLINE}` + : `${title} — ${SITE_NAME}`; +const desc = description ?? DEFAULT_DESC; +const canonical = new URL(Astro.url.pathname, SITE_URL).toString(); +const ogImageAbsolute = new URL(ogImage, SITE_URL).toString(); // Top-menu linkout items (external: true) open in a new tab so the user // keeps their place on the leaderboard when they cross to a sibling site. @@ -29,17 +54,41 @@ const navLinks = [ - {title} — QueryGym Leaderboard - {description && } + + + + {fullTitle} + + + + + + + + + + + + + + + + + + + + + {jsonLd &&