- Add skip-to-main-content link and main content ID target - Add prefers-reduced-motion media queries for all animations - Enhance visible focus indicators (2px offset, high-contrast ring) - Replace ~160 text-surface-500 instances with text-surface-600/dark:text-surface-400 for 4.5:1+ contrast ratio compliance - Add aria-hidden="true" to ~30+ decorative SVG icons across sidebars/widgets - Convert facepile containers from div to semantic ul/li with role="list" - Add aria-label to icon-only buttons (share, sort controls) - Add sr-only labels to form inputs (webmention, search) - Add aria-live="polite" to dynamically loaded webmentions - Add aria-label with relative+absolute date to time-difference component - Add keyboard handlers (Enter/Space) to custom interactive elements - Add aria-label to nav landmarks (table of contents) - Fix modal focus trap and dialog accessibility - Fix lightbox keyboard navigation and screen reader announcements Confab-Link: http://localhost:8080/sessions/edb1b7b0-da66-4486-bd9c-d1cfa7553b88
43 lines
1.7 KiB
Plaintext
43 lines
1.7 KiB
Plaintext
---
|
|
layout: layouts/base.njk
|
|
title: Search
|
|
permalink: /search/
|
|
eleventyExcludeFromCollections: true
|
|
pagefindIgnore: true
|
|
---
|
|
<div class="page-header mb-6 sm:mb-8">
|
|
<h1 class="text-2xl sm:text-3xl font-bold text-surface-900 dark:text-surface-100 mb-2">Search</h1>
|
|
<p class="text-surface-600 dark:text-surface-400">Search across all posts, articles, notes, and pages.</p>
|
|
</div>
|
|
|
|
<div id="search"></div>
|
|
<noscript>
|
|
<div class="p-6 bg-surface-100 dark:bg-surface-800 rounded-lg mt-4">
|
|
<p class="text-surface-700 dark:text-surface-300">Search requires JavaScript to be enabled. Please enable JavaScript in your browser settings to use the search feature.</p>
|
|
<p class="text-surface-600 dark:text-surface-400 text-sm mt-2">Alternatively, you can browse content via the <a href="/blog/" class="text-accent-600 dark:text-accent-400 hover:underline">blog archive</a> or <a href="/categories/" class="text-accent-600 dark:text-accent-400 hover:underline">categories</a>.</p>
|
|
</div>
|
|
</noscript>
|
|
|
|
<script>
|
|
initPagefind("#search", { showSubResults: true, showEmptyFilters: false });
|
|
|
|
// Support ?q= query parameter and auto-focus
|
|
window.addEventListener("DOMContentLoaded", () => {
|
|
const input = document.querySelector("#search input[type='text']");
|
|
if (input) {
|
|
// Pagefind generates the input without a label — add one
|
|
input.setAttribute("aria-label", "Search all content");
|
|
}
|
|
const params = new URLSearchParams(window.location.search);
|
|
const query = params.get("q");
|
|
if (query) {
|
|
if (input) {
|
|
input.value = query;
|
|
input.dispatchEvent(new Event("input", { bubbles: true }));
|
|
}
|
|
} else {
|
|
if (input) input.focus();
|
|
}
|
|
});
|
|
</script>
|