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 searchTimeout: ReturnType | null = null; searchInput.addEventListener('input', () => { const query = searchInput.value.trim(); if (searchTimeout) { clearTimeout(searchTimeout); } if (query.length < 2) { searchResults.innerHTML = ''; searchResults.classList.add('hidden'); return; } searchTimeout = 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;