function toggleSidebar(): void { const sidebar = document.getElementById("docs-sidebar"); const overlay = document.getElementById("docs-overlay"); if (sidebar && overlay) { sidebar.classList.toggle("translate-x-0"); sidebar.classList.toggle("-translate-x-full"); overlay.classList.toggle("hidden"); } } function initializeDocsSearch(): void { const searchInput = document.getElementById( "docs-search", ) as HTMLInputElement; const searchResults = document.getElementById("docs-search-results"); if (!searchInput || !searchResults) return; let docsSearchTimeout: ReturnType | null = null; searchInput.addEventListener("input", () => { const query = searchInput.value.trim(); if (docsSearchTimeout) { clearTimeout(docsSearchTimeout); } if (query.length < 2) { searchResults.innerHTML = ""; searchResults.classList.add("hidden"); return; } docsSearchTimeout = setTimeout(() => { performDocsSearch(query); }, 300); }); } function performDocsSearch(query: string): void { const searchResults = document.getElementById("docs-search-results"); if (!searchResults) return; if (!(window as any).lunr) { console.warn("Lunr.js not loaded"); return; } try { const idx = (window as any).lunrIndex; if (!idx) { searchResults.innerHTML = '

Search index not loaded

'; searchResults.classList.remove("hidden"); return; } const results = idx.search(query); if (results.length === 0) { searchResults.innerHTML = '

No results found

'; } else { searchResults.innerHTML = results .slice(0, 10) .map((result: { ref: string }) => { const doc = (window as any).docsData?.[result.ref]; if (!doc) return ""; return `

${doc.title || result.ref}

${doc.section ? `

${doc.section}

` : ""}
`; }) .join(""); } searchResults.classList.remove("hidden"); } catch (error) { console.error("Search error:", error); searchResults.innerHTML = '

Search error

'; searchResults.classList.remove("hidden"); } } document.addEventListener("DOMContentLoaded", () => { initializeDocsSearch(); }); (window as any).toggleSidebar = toggleSidebar;