108 lines
4.2 KiB
Plaintext

---
import '@/styles/global.css';
import ThemeToggle from '@/components/ThemeToggle';
interface Props {
title: string;
description?: string;
}
const { title, description = "Classic electronics reference notebooks from Forrest M. Mims III" } = Astro.props;
---
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content={description} />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<link rel="manifest" href="/manifest.json" />
<meta name="theme-color" content="#3b5998" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<link rel="apple-touch-icon" href="/icons/apple-touch-icon.png" />
<title>{title} | Electronics Reference Library</title>
<script is:inline>
(function() {
const theme = localStorage.getItem('theme');
if (theme === 'dark' || (!theme && window.matchMedia('(prefers-color-scheme: dark)').matches)) {
document.documentElement.classList.add('dark');
}
})();
</script>
</head>
<body class="min-h-screen graph-paper-large">
<header class="border-b border-border bg-card/80 backdrop-blur-sm sticky top-0 z-50">
<div class="container mx-auto px-4 py-4">
<nav class="flex items-center justify-between">
<a href="/" class="flex items-center gap-3 hover:opacity-80 transition-opacity">
<div class="w-10 h-10 rounded-lg bg-primary flex items-center justify-center">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="text-primary-foreground">
<path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"/>
<path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"/>
</svg>
</div>
<div>
<h1 class="text-lg font-semibold title-accent text-foreground">Electronics Library</h1>
<p class="text-xs text-muted-foreground">Classic Reference Collection</p>
</div>
</a>
<div class="flex items-center gap-4">
<a
href="/mims"
class="text-sm font-medium text-muted-foreground hover:text-foreground transition-colors"
>
Mims
</a>
<a
href="/uglys"
class="text-sm font-medium text-muted-foreground hover:text-foreground transition-colors"
>
Ugly's
</a>
<ThemeToggle client:load />
<a
href="https://archive.org"
target="_blank"
rel="noopener noreferrer"
class="text-sm font-medium text-muted-foreground hover:text-foreground transition-colors flex items-center gap-1"
>
Archive.org
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"/>
<polyline points="15 3 21 3 21 9"/>
<line x1="10" x2="21" y1="14" y2="3"/>
</svg>
</a>
</div>
</nav>
</div>
</header>
<main class="container mx-auto px-4 py-8">
<slot />
</main>
<footer class="border-t border-border bg-card/50 mt-16">
<div class="container mx-auto px-4 py-8">
<div class="flex flex-col md:flex-row items-center justify-between gap-4 text-sm text-muted-foreground">
<p>
Preserving classic electronics and electrical references
</p>
<p>
Materials sourced from <a href="https://archive.org" target="_blank" rel="noopener noreferrer" class="underline hover:text-foreground">Archive.org</a>
</p>
</div>
</div>
</footer>
<script is:inline>
if ('serviceWorker' in navigator) {
window.addEventListener('load', function() {
navigator.serviceWorker.register('/sw.js');
});
}
</script>
</body>
</html>