import { useState, useEffect } from 'react'; import { useSocket } from '../contexts/SocketContext.jsx'; import { api } from '../utils/api.js'; export default function GlobalBar({ isMobile, showSidebar, onBurger }) { const { connected } = useSocket(); const [settings, setSettings] = useState({ app_name: 'jama', logo_url: '' }); const [isDark, setIsDark] = useState(() => document.documentElement.getAttribute('data-theme') === 'dark'); useEffect(() => { api.getSettings().then(({ settings }) => setSettings(settings)).catch(() => {}); const handler = () => api.getSettings().then(({ settings }) => setSettings(settings)).catch(() => {}); window.addEventListener('jama:settings-changed', handler); const themeObserver = new MutationObserver(() => { setIsDark(document.documentElement.getAttribute('data-theme') === 'dark'); }); themeObserver.observe(document.documentElement, { attributes: true, attributeFilter: ['data-theme'] }); return () => { window.removeEventListener('jama:settings-changed', handler); themeObserver.disconnect(); }; }, []); const appName = settings.app_name || 'jama'; const logoUrl = settings.logo_url; const titleColor = (isDark ? settings.color_title_dark : settings.color_title) || null; if (isMobile && !showSidebar) return null; return (
{/* Left side: burger + logo + title grouped together */}
{appName} {appName}
{!connected && ( Offline )}
); }