NeonClary
Add settings menu for diagram layout and panel visibility
ebbd1a5
Raw
History Blame Contribute Delete
1.26 kB
import React, { useState, useEffect } from 'react';
import Header from './components/Header';
import DecidronSimulator from './components/decidron/DecidronSimulator';
import { loadSettings, saveSettings } from './utils/settings';
import './styles/variables.css';
import './styles/layout.css';
import './styles/components.css';
import './styles/ccai.css';
const THEME_KEY = 'decidron-theme';
export default function App() {
const [theme, setTheme] = useState(
() => localStorage.getItem(THEME_KEY)
|| (window.matchMedia?.('(prefers-color-scheme: dark)').matches ? 'dark' : 'light')
);
const [settings, setSettings] = useState(() => loadSettings());
useEffect(() => {
document.documentElement.setAttribute('data-theme', theme);
localStorage.setItem(THEME_KEY, theme);
}, [theme]);
useEffect(() => {
saveSettings(settings);
}, [settings]);
const toggleTheme = () => setTheme((t) => (t === 'dark' ? 'light' : 'dark'));
return (
<div className="app">
<Header
theme={theme}
onToggleTheme={toggleTheme}
settings={settings}
onSettingsChange={setSettings}
/>
<main className="app-main">
<DecidronSimulator settings={settings} />
</main>
</div>
);
}