Download script.js from Stoneforge/bizmaster-pro-cloud-control-hub: direct link, hf CLI and curl.
- Browser
- Download file 2.9 kB
-
https://huggingface.co/spaces/Stoneforge/bizmaster-pro-cloud-control-hub/resolve/main/script.js
- Command line
-
hf download hf://spaces/Stoneforge/bizmaster-pro-cloud-control-hub/script.js
-
curl -L -o script.js https://huggingface.co/spaces/Stoneforge/bizmaster-pro-cloud-control-hub/resolve/main/script.js
2.9 kB
| // Global functions and event listeners | |
| document.addEventListener('DOMContentLoaded', function() { | |
| // Initialize tooltips | |
| const tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]')); | |
| tooltipTriggerList.map(function (tooltipTriggerEl) { | |
| return new bootstrap.Tooltip(tooltipTriggerEl); | |
| }); | |
| // Mobile menu toggle | |
| const mobileMenuButton = document.getElementById('mobile-menu-button'); | |
| const mobileMenu = document.getElementById('mobile-menu'); | |
| if (mobileMenuButton && mobileMenu) { | |
| mobileMenuButton.addEventListener('click', function() { | |
| mobileMenu.classList.toggle('hidden'); | |
| }); | |
| } | |
| // Sidebar toggle for mobile | |
| const sidebarToggle = document.getElementById('sidebar-toggle'); | |
| const sidebar = document.getElementById('sidebar'); | |
| if (sidebarToggle && sidebar) { | |
| sidebarToggle.addEventListener('click', function() { | |
| sidebar.classList.toggle('-translate-x-full'); | |
| }); | |
| } | |
| // Dark mode toggle | |
| const darkModeToggle = document.getElementById('dark-mode-toggle'); | |
| if (darkModeToggle) { | |
| darkModeToggle.addEventListener('click', function() { | |
| document.documentElement.classList.toggle('dark'); | |
| localStorage.setItem('darkMode', document.documentElement.classList.contains('dark')); | |
| }); | |
| } | |
| // Check for dark mode preference | |
| if (localStorage.getItem('darkMode') === 'true') { | |
| document.documentElement.classList.add('dark'); | |
| } | |
| }); | |
| // Function to show toast notifications | |
| function showToast(message, type = 'success') { | |
| const toastContainer = document.getElementById('toast-container'); | |
| if (!toastContainer) return; | |
| const colors = { | |
| success: 'bg-green-500', | |
| error: 'bg-red-500', | |
| warning: 'bg-yellow-500', | |
| info: 'bg-blue-500' | |
| }; | |
| const toast = document.createElement('div'); | |
| toast.className = `text-white px-6 py-4 border-0 rounded relative mb-4 ${colors[type]}`; | |
| toast.innerHTML = ` | |
| <span class="inline-block align-middle mr-8">${message}</span> | |
| <button class="absolute bg-transparent text-2xl font-semibold leading-none right-0 top-0 mt-4 mr-6 outline-none focus:outline-none"> | |
| × | |
| </button> | |
| `; | |
| toast.querySelector('button').addEventListener('click', () => { | |
| toast.remove(); | |
| }); | |
| toastContainer.appendChild(toast); | |
| setTimeout(() => { | |
| toast.remove(); | |
| }, 5000); | |
| } | |
| // API functions | |
| async function fetchProjects() { | |
| try { | |
| const response = await fetch('/api/projects'); | |
| const data = await response.json(); | |
| return data; | |
| } catch (error) { | |
| console.error('Error fetching projects:', error); | |
| showToast('Failed to load projects', 'error'); | |
| return []; | |
| } | |
| } |