Team Ai
Apppublic

Agnik7/flowscript-docs-the-scripting-river-guide

sourceHugging Faceupdated 10mo agoView on Hugging Face
0likes
script.js74 linesDownload Raw Back to root
1// Dark mode toggle functionality2document.addEventListener('DOMContentLoaded', () => {3    // Check for saved theme preference or use system preference4    const savedTheme = localStorage.getItem('theme');5    const systemPrefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;6    7    if (savedTheme === 'dark' || (!savedTheme && systemPrefersDark)) {8        document.documentElement.classList.add('dark');9    }10 11    // Initialize search functionality12    const searchInput = document.querySelector('#search-input');13    if (searchInput) {14        searchInput.addEventListener('input', debounce(handleSearch, 300));15    }16});17 18function toggleDarkMode() {19    const html = document.documentElement;20    html.classList.toggle('dark');21    localStorage.setItem('theme', html.classList.contains('dark') ? 'dark' : 'light');22}23 24// Search functionality25async function handleSearch(e) {26    const query = e.target.value.trim();27    if (!query) return;28    29    try {30        // This would be replaced with actual search API call31        const results = await mockSearch(query);32        displaySearchResults(results);33    } catch (error) {34        console.error('Search failed:', error);35    }36}37 38function mockSearch(query) {39    return new Promise(resolve => {40        setTimeout(() => {41            resolve([42                { title: 'Getting Started', url: '/getting-started', excerpt: 'Learn how to set up FlowScript in your project...' },43                { title: 'API Reference', url: '/api-reference', excerpt: 'Complete reference of all FlowScript APIs...' },44                { title: 'Transform Operators', url: '/guides/transform-operators', excerpt: 'Guide to using transform operators in your flows...' }45            ].filter(item => 46                item.title.toLowerCase().includes(query.toLowerCase()) || 47                item.excerpt.toLowerCase().includes(query.toLowerCase())48            ));49        }, 300);50    });51}52 53function displaySearchResults(results) {54    const container = document.querySelector('#search-results');55    if (!container) return;56    57    container.innerHTML = results.length 58        ? results.map(result => `59            <a href="${result.url}" class="block p-3 hover:bg-gray-100 dark:hover:bg-gray-800 rounded transition">60                <h3 class="font-medium text-blue-600 dark:text-blue-400">${result.title}</h3>61                <p class="text-sm text-gray-600 dark:text-gray-400">${result.excerpt}</p>62            </a>63        `).join('')64        : '<p class="p-3 text-gray-600 dark:text-gray-400">No results found</p>';65}66 67// Utility function68function debounce(func, wait) {69    let timeout;70    return function(...args) {71        clearTimeout(timeout);72        timeout = setTimeout(() => func.apply(this, args), wait);73    };74}