feat: CTAO brand redesign (official tokens, Inter+Space Grotesk, logo), spec-based nav/footer, EN UI, card covers + featured lead, mock badges, Sveltia logo; remove fake demo articles
This commit is contained in:
+29
-12
@@ -1,46 +1,63 @@
|
||||
---
|
||||
import '../styles/global.css';
|
||||
const { title = 'CTAO Portal', description = 'Portal obserwatorium CTAO' } = Astro.props;
|
||||
const { title = 'CTAO Science Portal', description = 'CTAO Science Portal — demo' } = Astro.props;
|
||||
const path = Astro.url.pathname;
|
||||
const isActive = (href) => (href === '/' ? path === '/' : path.startsWith(href));
|
||||
// Navigation = services from the Science Portal spec (REQUIREMENTS.md §2/§5).
|
||||
// External systems built by other teams are links out, clearly marked.
|
||||
const links = [
|
||||
{ href: '/', label: 'Newsy' },
|
||||
{ href: '/telescopes', label: 'Teleskopy' },
|
||||
{ href: '/', label: 'News' },
|
||||
{ href: '/telescopes', label: 'Proposals' },
|
||||
{ href: '/dashboard', label: 'Dashboard' },
|
||||
];
|
||||
---
|
||||
<!doctype html>
|
||||
<html lang="pl">
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>{title}</title>
|
||||
<meta name="description" content={description} />
|
||||
{/* Sora via Google Fonts for the demo; self-host the woff2 for production. */}
|
||||
{/* Brand typography (BRAND D.3): Inter (body) + Space Grotesk (headlines).
|
||||
Google Fonts for the demo; self-host woff2 for production. */}
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||
<link href="https://fonts.googleapis.com/css2?family=Sora:wght@400..700&display=swap" rel="stylesheet" />
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400..700&family=Space+Grotesk:wght@500..700&display=swap" rel="stylesheet" />
|
||||
</head>
|
||||
<body>
|
||||
<a class="skip" href="#main">Przejdź do treści</a>
|
||||
<a class="skip" href="#main">Skip to content</a>
|
||||
<header class="site-header">
|
||||
<div class="container nav">
|
||||
<a class="brand" href="/"><span class="dot"></span> CTAO Portal</a>
|
||||
<a class="brand" href="/" aria-label="CTAO Science Portal — home">
|
||||
<img src="/brand/AAFF_CTAO_Logo_RGB_Monochrome-negative.svg" alt="CTAO" />
|
||||
<span class="brand-sub">Science Portal</span>
|
||||
</a>
|
||||
<span class="spacer"></span>
|
||||
<nav aria-label="Główna nawigacja" style="display: contents">
|
||||
<nav aria-label="Main navigation">
|
||||
{links.map((l) => (
|
||||
<a class="navlink" href={l.href} aria-current={isActive(l.href) ? 'page' : undefined}>{l.label}</a>
|
||||
))}
|
||||
<a class="navlink external" href="https://padc-ctao-data-explorer.obspm.fr/" target="_blank" rel="noopener">Data</a>
|
||||
</nav>
|
||||
<a class="navlink navlink--edit" href="/admin">✎ Edytor</a>
|
||||
<a class="navlink navlink--edit" href="/admin">✎ Editor</a>
|
||||
<button class="login-mock" type="button" disabled title="Mock — CTAO AAI sign-in will be integrated here">Sign in</button>
|
||||
</div>
|
||||
</header>
|
||||
<main id="main">
|
||||
<slot />
|
||||
</main>
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
CTAO Portal — demo (git-based CMS). Treść generowana statycznie z plików Markdown.
|
||||
{/* Bottom menu required by SPEC §3.3.1: disclaimers, privacy, contact, settings, search.
|
||||
Placeholder links = <a> without href (valid HTML placeholder-link semantics). */}
|
||||
<div class="container inner">
|
||||
<a>Disclaimer</a>
|
||||
<a>Privacy</a>
|
||||
<a>Contact</a>
|
||||
<a>Site settings</a>
|
||||
<a>Search</a>
|
||||
<span class="note">Science Portal Core demo (Cyfronet / SUSS-PORT team). Sample content
|
||||
imported from ctao.org; footer links are placeholders. Statically generated from
|
||||
Markdown (git-based CMS).</span>
|
||||
</div>
|
||||
</footer>
|
||||
</body>
|
||||
|
||||
Reference in New Issue
Block a user