All checks were successful
Build and Deploy to Storj / build-and-deploy (push) Successful in 9s
117 lines
3.7 KiB
Text
117 lines
3.7 KiB
Text
---
|
|
// BaseLayout.astro — Base layout with nav, footer, SEO meta
|
|
import '../styles/global.css';
|
|
import Nav from '../components/Nav.astro';
|
|
import Footer from '../components/Footer.astro';
|
|
|
|
export interface Props {
|
|
title: string;
|
|
description: string;
|
|
ogImage?: string;
|
|
ogType?: string;
|
|
canonicalUrl?: string;
|
|
}
|
|
|
|
const {
|
|
title,
|
|
description,
|
|
ogImage = '/social-card.png',
|
|
ogType = 'website',
|
|
canonicalUrl,
|
|
} = Astro.props;
|
|
|
|
const siteTitle = 'Scott Scoble';
|
|
const fullTitle = title.includes(siteTitle) ? title : `${title} — ${siteTitle}`;
|
|
const siteUrl = 'https://scott.scoble.me';
|
|
const currentPath = canonicalUrl || Astro.url.pathname;
|
|
---
|
|
|
|
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
|
<link rel="icon" href="/favicon.ico" sizes="16x16 32x32 48x48" />
|
|
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
|
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<meta name="generator" content={Astro.generator} />
|
|
|
|
<!-- Primary Meta -->
|
|
<title>{fullTitle}</title>
|
|
<meta name="description" content={description} />
|
|
<meta name="author" content="Scott Scoble" />
|
|
|
|
<!-- Open Graph -->
|
|
<meta property="og:title" content={fullTitle} />
|
|
<meta property="og:description" content={description} />
|
|
<meta property="og:type" content={ogType} />
|
|
<meta property="og:url" content={new URL(currentPath, siteUrl).href} />
|
|
<meta property="og:image" content={new URL(ogImage, siteUrl).href} />
|
|
<meta property="og:site_name" content="Scott Scoble" />
|
|
<meta property="og:locale" content="en_US" />
|
|
|
|
<!-- Twitter Card -->
|
|
<meta name="twitter:card" content="summary_large_image" />
|
|
<meta name="twitter:title" content={fullTitle} />
|
|
<meta name="twitter:description" content={description} />
|
|
<meta name="twitter:image" content={new URL(ogImage, siteUrl).href} />
|
|
|
|
<!-- Canonical -->
|
|
<link rel="canonical" href={new URL(currentPath, siteUrl).href} />
|
|
|
|
<!-- RSS -->
|
|
<link rel="alternate" type="application/rss+xml" title="Scott Scoble Blog" href="/rss.xml" />
|
|
|
|
<!-- Umami Analytics -->
|
|
<script defer src="https://os.scoble.me/umami/script.js" data-website-id="4a23c88a-5397-4bac-a830-074c6aca7108"></script>
|
|
|
|
<!-- Google Fonts -->
|
|
<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=EB+Garamond:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500&display=swap" rel="stylesheet" />
|
|
</head>
|
|
<body>
|
|
<a href="#main-content" class="skip-link">Skip to main content</a>
|
|
|
|
<Nav currentPath={currentPath} />
|
|
|
|
<main id="main-content">
|
|
<slot />
|
|
</main>
|
|
|
|
<Footer />
|
|
</body>
|
|
</html>
|
|
|
|
<style is:global>
|
|
/* CSS Variables must be defined globally for all components to access */
|
|
:root {
|
|
--color-brown: #4a4438;
|
|
--color-brown-dark: #2d2a24;
|
|
--color-green: #3d5a3e;
|
|
--color-green-dark: #2d5a3e;
|
|
--color-cream: #faf8f5;
|
|
--color-cream-warm: #f5f0e8;
|
|
--color-amber: #c8952e;
|
|
--color-amber-light: #d4a94e;
|
|
--color-text: #2d2a24;
|
|
--color-text-muted: #6b6458;
|
|
--color-border: #e0dbd2;
|
|
--color-border-light: #ede9e2;
|
|
--color-bg: #faf8f5;
|
|
--color-bg-alt: #f5f0e8;
|
|
--font-heading: 'EB Garamond', Georgia, serif;
|
|
--font-body: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
--size-xs: 0.75rem;
|
|
--size-sm: 0.875rem;
|
|
--size-base: 1rem;
|
|
--size-md: 1.125rem;
|
|
--size-lg: 1.25rem;
|
|
--size-xl: 1.5rem;
|
|
--size-2xl: 2rem;
|
|
--size-3xl: 2.5rem;
|
|
--size-4xl: 3rem;
|
|
}
|
|
</style>
|
|
<!-- CI/CD test: 2026-04-28T21:06:42-07:00 -->
|