Spaces:
Sleeping
Sleeping
import React, { useState, useEffect } from 'react'; | |
import { BrowserRouter as Router, Routes, Route, NavLink } from 'react-router-dom'; | |
import './App.css'; | |
import Home from './pages/Home'; | |
import Podcasts from './pages/Podcasts'; | |
import PodcastForm from './pages/PodcastForm'; | |
import WaveCanvas from './components/WaveCanvas'; | |
function App() { | |
const [isDarkTheme, setIsDarkTheme] = useState(true); | |
useEffect(() => { | |
document.body.setAttribute('data-theme', isDarkTheme ? 'dark' : 'light'); | |
}, [isDarkTheme]); | |
return ( | |
<Router> | |
<div className="app"> | |
<WaveCanvas /> | |
<nav className="leftnav"> | |
<div className="nav-brand">PodCraft</div> | |
<div className="nav-links"> | |
<NavLink to="/" className={({ isActive }) => isActive ? 'nav-link active' : 'nav-link'}> | |
<span className="nav-icon">π </span> | |
Home | |
</NavLink> | |
<NavLink to="/podcasts" className={({ isActive }) => isActive ? 'nav-link active' : 'nav-link'}> | |
<span className="nav-icon">π§</span> | |
Podcasts | |
</NavLink> | |
</div> | |
<div className="theme-toggle"> | |
<button | |
className="theme-button" | |
onClick={() => setIsDarkTheme(!isDarkTheme)} | |
> | |
<span className="nav-icon">{isDarkTheme ? 'βοΈ' : 'π'}</span> | |
{isDarkTheme ? 'Light Mode' : 'Dark Mode'} | |
</button> | |
</div> | |
</nav> | |
<main className="main-content"> | |
<Routes> | |
<Route path="/" element={<Home />} /> | |
<Route path="/podcasts" element={<Podcasts />} /> | |
<Route path="/podcast/:id" element={<PodcastForm />} /> | |
</Routes> | |
</main> | |
</div> | |
</Router> | |
); | |
} | |
export default App; | |