@@ -102,38 +102,37 @@ const base = import.meta.env.BASE_URL.replace(/\/$/, "");
102102 </div >
103103</div >
104104
105- <script >
105+ <script is:inline define:vars = { { base } } >
106106 // Theme toggle
107- document.getElementById('theme-toggle')?.addEventListener('click', () => {
108- const html = document.documentElement;
109- const isDark = html.classList.contains('dark');
107+ document.getElementById('theme-toggle')?.addEventListener('click', function() {
108+ var html = document.documentElement;
109+ var isDark = html.classList.contains('dark');
110110 html.classList.toggle('dark');
111111 localStorage.setItem('theme', isDark ? 'light' : 'dark');
112112 });
113113
114114 // Mobile sidebar toggle
115- document.getElementById('sidebar-toggle')?.addEventListener('click', () => {
116- const sidebar = document.getElementById('sidebar');
117- const overlay = document.getElementById('sidebar-overlay');
115+ document.getElementById('sidebar-toggle')?.addEventListener('click', function() {
116+ var sidebar = document.getElementById('sidebar');
117+ var overlay = document.getElementById('sidebar-overlay');
118118 sidebar?.classList.toggle('-translate-x-full');
119119 overlay?.classList.toggle('hidden');
120120 });
121121
122122 // Search
123- const searchTrigger = document.getElementById('search-trigger');
124- const searchDialog = document.getElementById('search-dialog');
125- const searchBackdrop = document.getElementById('search-backdrop');
126- const searchInput = document.getElementById('search-input') as HTMLInputElement ;
127- const searchResults = document.getElementById('search-results');
128- const searchPlaceholder = document.getElementById('search-placeholder');
123+ var searchTrigger = document.getElementById('search-trigger');
124+ var searchDialog = document.getElementById('search-dialog');
125+ var searchBackdrop = document.getElementById('search-backdrop');
126+ var searchInput = document.getElementById('search-input');
127+ var searchResults = document.getElementById('search-results');
128+ var searchPlaceholder = document.getElementById('search-placeholder');
129129
130- let pagefind: any = null;
130+ var pagefind = null;
131131
132132 async function loadPagefind() {
133133 if (pagefind) return;
134134 try {
135- const base = import.meta.env.BASE_URL.replace(/\/$/, '');
136- pagefind = await import(/* @vite-ignore */ `${base}/pagefind/pagefind.js`);
135+ pagefind = await import(base + '/pagefind/pagefind.js');
137136 await pagefind.init();
138137 } catch (e) {
139138 console.warn('Pagefind not available:', e);
@@ -159,19 +158,19 @@ const base = import.meta.env.BASE_URL.replace(/\/$/, "");
159158 searchTrigger?.addEventListener('click', openSearch);
160159 searchBackdrop?.addEventListener('click', closeSearch);
161160
162- document.addEventListener('keydown', (e) => {
161+ document.addEventListener('keydown', function (e) {
163162 if ((e.metaKey || e.ctrlKey) && e.key === 'k') {
164163 e.preventDefault();
165164 searchDialog?.classList.contains('hidden') ? openSearch() : closeSearch();
166165 }
167166 if (e.key === 'Escape') closeSearch();
168167 });
169168
170- let debounceTimer: ReturnType<typeof setTimeout> ;
171- searchInput?.addEventListener('input', () => {
169+ var debounceTimer;
170+ searchInput?.addEventListener('input', function() {
172171 clearTimeout(debounceTimer);
173- debounceTimer = setTimeout(async () => {
174- const query = searchInput.value.trim();
172+ debounceTimer = setTimeout(async function() {
173+ var query = searchInput.value.trim();
175174 if (!searchResults) return;
176175
177176 if (!query) {
@@ -184,24 +183,24 @@ const base = import.meta.env.BASE_URL.replace(/\/$/, "");
184183 }
185184
186185 if (!pagefind) {
187- searchResults.innerHTML = '<p class="text-sm text-[var(--text-tertiary)] px-2 py-4 text-center">Search index not available. Try again after the site is built. </p>';
186+ searchResults.innerHTML = '<p class="text-sm text-[var(--text-tertiary)] px-2 py-4 text-center">Search index not available.</p>';
188187 return;
189188 }
190189
191- const search = await pagefind.search(query);
192- const results = await Promise.all(search.results.slice(0, 10).map((r: any) => r.data()));
190+ var search = await pagefind.search(query);
191+ var results = await Promise.all(search.results.slice(0, 10).map(function(r) { return r.data(); } ));
193192
194193 if (results.length === 0) {
195194 searchResults.innerHTML = '<p class="text-sm text-[var(--text-tertiary)] px-2 py-4 text-center">No results found</p>';
196195 return;
197196 }
198197
199- searchResults.innerHTML = results.map((r: any) => `
200- <a href="${ r.url} " class="block px-3 py-2.5 rounded-md hover:bg-[var(--bg-hover)] transition-colors">
201- <span class="block text-sm font-medium text-[var(--text-primary)] leading-snug">${ r.meta?.title || 'Untitled'} </span>
202- <span class="block text-xs text-[var(--text-tertiary)] mt-1 leading-relaxed line-clamp-2">${ r.excerpt} </span>
203- </a>
204- ` ).join('');
198+ searchResults.innerHTML = results.map(function(r) {
199+ return ' <a href="' + r.url + ' " class="block px-3 py-2.5 rounded-md hover:bg-[var(--bg-hover)] transition-colors">' +
200+ ' <span class="block text-sm font-medium text-[var(--text-primary)] leading-snug">' + ( r.meta?.title || 'Untitled') + ' </span>' +
201+ ' <span class="block text-xs text-[var(--text-tertiary)] mt-1 leading-relaxed line-clamp-2">' + ( r.excerpt || '') + ' </span>' +
202+ ' </a>';
203+ } ).join('');
205204 }, 200);
206205 });
207206</script >
0 commit comments