agnes-love/_site/links/index.html
2026-06-25 00:57:39 +00:00

329 lines
14 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang="en" class="scroll-smooth">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Links — Agnes the Alien</title>
<meta name="description" content="Personal website and blog of Agnes the Alien." />
<meta name="generator" content="Eleventy" />
<link rel="canonical" href="https://agnes.love/links/" />
<meta property="og:type" content="website" />
<meta property="og:site_name" content="Agnes the Alien" />
<meta property="og:url" content="https://agnes.love/links/" />
<meta property="og:title" content="Links" />
<meta property="og:description" content="Personal website and blog of Agnes the Alien." />
<meta property="og:image" content="https://agnes.love//screenshot.png" />
<meta property="og:image:alt" content="Agnes the Alien preview" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="Links" />
<meta name="twitter:description" content="Personal website and blog of Agnes the Alien." />
<meta name="twitter:image" content="https://agnes.love//screenshot.png" />
<meta name="twitter:image:alt" content="Agnes the Alien preview" />
<link rel="webmention" href="https://webmention.io/agnes.love/webmention" />
<link rel="pingback" href="https://webmention.io/agnes.love/xmlrpc" />
<link rel="stylesheet" href="/assets/css/build.css" />
<link rel="alternate" type="application/atom+xml" title="Agnes the Alien Feed" href="/feed.xml" />
<link rel="icon" href="/assets/favicon.svg" type="image/svg+xml">
<link rel="shortcut icon" href="/assets/favicon.svg" type="image/svg+xml">
<link rel="mask-icon" href="/assets/favicon.svg" color="#a78bfa">
<link rel="icon" type="image/png" sizes="32x32" href="/assets/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/assets/favicon-16x16.png">
<link rel="apple-touch-icon" sizes="180x180" href="/assets/apple-touch-icon.png">
<meta name="theme-color" content="#a78bfa" />
<link rel="manifest" href="/manifest.webmanifest">
<link id="hljs-light" rel="stylesheet" href="https://unpkg.com/@highlightjs/cdn-assets@11.9.0/styles/tokyo-night-light.min.css">
<link id="hljs-dark" rel="stylesheet" href="https://unpkg.com/@highlightjs/cdn-assets@11.9.0/styles/tokyo-night-dark.min.css" disabled>
<script src="https://unpkg.com/@highlightjs/cdn-assets@11.9.0/highlight.min.js" defer></script>
<script defer>
document.addEventListener('DOMContentLoaded', function () {
const html = document.documentElement;
const light = document.getElementById('hljs-light');
const dark = document.getElementById('hljs-dark');
function applyTheme() {
const isDark = html.classList.contains('dark');
if (light && dark) {
light.disabled = !!isDark;
dark.disabled = !isDark;
}
}
// Initial apply
applyTheme();
// Observe class changes on <html> to react to dark-mode toggle
const observer = new MutationObserver(applyTheme);
observer.observe(html, { attributes: true, attributeFilter: ['class'] });
// Highlight code blocks
document.querySelectorAll('pre code').forEach((el) => {
if (window.hljs && typeof window.hljs.highlightElement === 'function') {
window.hljs.highlightElement(el);
}
});
});
</script>
<style>
.contrast { filter: contrast(1.2) saturate(1.1); }
.reduce-motion * { transition: none !important; animation: none !important; }
</style>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "WebSite",
"url": "https://agnes.love",
"name": "Agnes the Alien",
"description": "Personal website and blog of Agnes the Alien."
},
{
"@type": "Organization",
"name": "Agnes the Alien",
"url": "https://agnes.love",
"sameAs": [
]
}
]
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://agnes.love"
},
{
"@type": "ListItem",
"position": 2,
"name": "Links",
"item": "https://agnes.love/links/"
}
]
}
</script>
</head>
<body class="bg-[var(--bg)] text-[var(--text)] min-h-screen flex flex-col">
<div id="progress-bar" aria-hidden="true"></div>
<header class="bg-[var(--surface)] border-b border-gray-200 dark:border-gray-700">
<div class="container mx-auto px-4 py-3 flex items-center gap-3">
<button id="hamburger" class="md:hidden p-2 rounded border border-gray-300 dark:border-gray-600" aria-label="Toggle menu" aria-controls="primary-nav" aria-expanded="false">
<span class="bar-1 block w-5 h-0.5 bg-gray-700 dark:bg-gray-200 mb-1 transition-transform"></span>
<span class="bar-2 block w-5 h-0.5 bg-gray-700 dark:bg-gray-200 mb-1 transition-opacity"></span>
<span class="bar-3 block w-5 h-0.5 bg-gray-700 dark:bg-gray-200 transition-transform"></span>
</button>
<a class="text-lg font-semibold" href="/">Agnes the Alien</a>
<form class="ml-auto hidden sm:block" role="search" aria-label="Site" action="/search/" method="get">
<label class="sr-only" for="q">Search</label>
<input id="q" name="q" type="search" placeholder="Search…" class="px-3 py-2 border rounded w-64" />
</form>
<div class="flex items-center gap-2 ml-2">
<button id="dark-toggle" class="px-2 py-1 text-sm border rounded" aria-pressed="false" aria-label="Toggle dark mode">🌙</button>
<div class="relative">
<button id="a11y-toggle" class="px-2 py-1 text-sm border rounded" aria-expanded="false" aria-controls="a11y-menu">A11y</button>
<div id="a11y-menu" class="absolute right-0 mt-1 bg-[var(--surface)] border rounded p-2 text-sm space-x-2 whitespace-nowrap hidden">
<button id="font-dec" class="px-2 py-1 border rounded">A-</button>
<button id="font-inc" class="px-2 py-1 border rounded">A+</button>
<button id="contrast-toggle" class="px-2 py-1 border rounded">Contrast</button>
<button id="motion-toggle" class="px-2 py-1 border rounded">Reduce motion</button>
<button id="font-toggle" type="button" aria-pressed="false" class="px-2 py-1 border rounded hidden md:inline-block">System Fonts</button>
</div>
</div>
</div>
</div>
</header>
<nav class="bg-[var(--surface)] border-b border-gray-200 dark:border-gray-700">
<div id="primary-nav" class="container mx-auto px-4 py-2 hidden md:block">
<ul class="flex flex-col md:flex-row text-base md:text-sm space-y-3 md:space-y-0 md:space-x-6">
<li>
<a href="/" class="nav-item block py-2 text-purple-600 dark:text-purple-400 "
>🏠 Home</a>
</li>
<li>
<a href="/blog/" class="nav-item block py-2 text-purple-600 dark:text-purple-400 "
>✍️ Blog</a>
</li>
<li>
<a href="/about/" class="nav-item block py-2 text-purple-600 dark:text-purple-400 "
>👋 About</a>
</li>
<li>
<a href="/uses/" class="nav-item block py-2 text-purple-600 dark:text-purple-400 "
>🛠️ Uses</a>
</li>
<li>
<a href="/now/" class="nav-item block py-2 text-purple-600 dark:text-purple-400 "
>📍 Now</a>
</li>
<li>
<a href="/contact/" class="nav-item block py-2 text-purple-600 dark:text-purple-400 "
>💬 Contact</a>
</li>
</ul>
</div>
</nav>
<div class="container mx-auto px-4 py-6 max-w-4xl flex-1">
<main>
<h1 class="text-2xl font-bold mb-4">Links</h1>
<p class="text-gray-600 dark:text-gray-400 mb-6">A curated index of sites, references, and tools. Replace these with your own favorites or wire up a bookmarks feed.</p>
<section class="space-y-8">
<div>
<h2 class="text-lg font-semibold">Web Development</h2>
<ul class="list-disc pl-6">
<li><a class="text-blue-600 dark:text-blue-400 hover:underline" href="https://www.11ty.dev/">Eleventy</a> — Static site generator with a small, flexible core.</li>
<li><a class="text-blue-600 dark:text-blue-400 hover:underline" href="https://playwright.dev/">Playwright</a> — Reliable endtoend testing across browsers.</li>
<li><a class="text-blue-600 dark:text-blue-400 hover:underline" href="https://web.dev/">web.dev</a> — Guides on performance and modern web APIs.</li>
</ul>
</div>
<div>
<h2 class="text-lg font-semibold">IndieWeb & Publishing</h2>
<ul class="list-disc pl-6">
<li><a class="text-blue-600 dark:text-blue-400 hover:underline" href="https://indieweb.org/">IndieWeb Wiki</a> — Build on your own domain with open standards.</li>
<li><a class="text-blue-600 dark:text-blue-400 hover:underline" href="https://microformats.org/">microformats</a> — Semantic markup for people and posts.</li>
<li><a class="text-blue-600 dark:text-blue-400 hover:underline" href="https://mehdix.ir/awesome-static-generators/">Awesome Static Generators</a> — Explore SSGs.</li>
</ul>
</div>
<div>
<h2 class="text-lg font-semibold">Design & Accessibility</h2>
<ul class="list-disc pl-6">
<li><a class="text-blue-600 dark:text-blue-400 hover:underline" href="https://www.a11yproject.com/">The A11Y Project</a> — Practical accessibility resources.</li>
<li><a class="text-blue-600 dark:text-blue-400 hover:underline" href="https://type-scale.com/">Type Scale</a> — Visualize typographic scales.</li>
<li><a class="text-blue-600 dark:text-blue-400 hover:underline" href="https://colorandcontrast.com/">Color & Contrast</a> — Understand accessible color usage.</li>
</ul>
</div>
</section>
</main>
</div>
<footer class="bg-[var(--surface)] border-t border-gray-200 dark:border-gray-700 mt-12">
<div class="container mx-auto px-4 py-8 max-w-4xl">
<div class="grid grid-cols-1 md:grid-cols-3 gap-6 text-sm">
<div>
<h3 class="font-semibold mb-2">Technical</h3>
<ul class="space-y-1 text-gray-600 dark:text-gray-400">
<li><a href="https://11ty.dev" target="_blank" rel="noopener">Built with Eleventy</a></li>
<li><a href="/style/" class="hover:text-blue-600">Style Guide</a></li>
<li><a href="https://treasurechest.alien.town/agnes/agnes-love/edit/main/links.njk" class="hover:text-blue-600" target="_blank" rel="noopener">Edit This Page</a></li>
<li><a href="https://treasurechest.alien.town/agnes/agnes-love/blob/main/GUIDE.md" class="hover:text-blue-600" target="_blank" rel="noopener">Project Guide</a></li>
</ul>
</div>
<div>
<h3 class="font-semibold mb-2">Navigation</h3>
<ul class="space-y-1 text-gray-600 dark:text-gray-400">
<li><a href="/sitemap/" class="hover:text-blue-600">Sitemap</a></li>
<li><a href="/archive/" class="hover:text-blue-600">Archive</a></li>
<li><a href="/categories/" class="hover:text-blue-600">Categories</a></li>
</ul>
</div>
<div>
<h3 class="font-semibold mb-2">Connect</h3>
<ul class="space-y-1 text-gray-600 dark:text-gray-400">
<li>
<a href="mailto:alienhospitals@gmail.com" rel="me" class="inline-flex items-center gap-2 hover:text-blue-600">
<svg class="w-4 h-4" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" role="img"><path d="M4 4h16v16H4z"/><path d="m22 6-10 7L2 6"/></svg>
<span>Email</span>
</a>
</li>
<li>
<a href="https://alienhttps://lesbian.alien.dentist" target="_blank" rel="me noopener" class="inline-flex items-center gap-2 hover:text-blue-600">
<svg class="w-4 h-4" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" role="img"><path d="M21.57 13.11c-.3 1.55-2.7 3.25-5.46 3.58-1.44.17-2.86.33-4.37.26-2.47-.11-4.43-.59-4.43-.59 0 .24.02.48.05.71.35 2.67 2.64 2.83 4.8 2.9 2.18.07 4.12-.54 4.12-.54l.09 1.99s-1.52.81-4.23.96c-1.5.08-3.36-.04-5.52-.65-4.69-1.26-5.5-6.33-5.63-11.46-.04-1.5-.02-2.92-.02-4.12 0-5.3 3.47-6.86 3.47-6.86 1.74-.8 4.72-1.14 7.83-1.16h.08c3.11.02 6.09.36 7.83 1.16 0 0 3.47 1.56 3.47 6.86 0 0 .04 3.01-.08 4.98-.05.82-.16 1.63-.34 2.41z"/></svg>
<span>Mastodon</span>
</a>
</li>
</ul>
</div>
</div>
<div class="border-t border-gray-200 dark:border-gray-700 mt-6 pt-6 text-center text-gray-500">
<p>
2025 Agnes the Alien •
<a href="/feed.xml" class="hover:text-blue-600">RSS</a>
Code: <a href="https://opensource.org/license/mit" target="_blank" rel="noopener" class="hover:text-blue-600">MIT</a>
Content: <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/" target="_blank" rel="noopener" class="hover:text-blue-600">CC BY-NC-SA 4.0</a>
</p>
</div>
</div>
</footer>
<script src="/assets/js/main.js"></script>
<script src="/assets/js/flexsearch.min.js"></script>
<script src="/assets/js/search.js"></script>
<script src="/assets/js/easter-eggs.js"></script>
</body>
</html>