Files
snakkimo-cmt/src/App.jsx
admin 7680f4f9e3 feat: TranslationHub, Pair-Review-Button (Action-Bar), reviewed für Bilder
- TranslationHub (/translations): Coverage-Matrix, Batch-Übersetzen pro Tabelle×Sprache
- Pair Status: StatusSelect ersetzt durch Action-Bar ✓Reviewed/↩Draft/🚫Block,
  Reviewed kaskadiert via /pairs/:id/review (Backend prüft 3-Sprachen-Vollständigkeit)
- Top-Nav: 'Übersetzungen' zwischen Inhalte und Audio
- Dashboard: Übersetzungen-Kachel
- tables.js: pictures-Status um 'reviewed' erweitert

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-03 07:36:20 +02:00

41 lines
1.8 KiB
JavaScript

import { BrowserRouter, Routes, Route, Navigate } from 'react-router-dom';
import { getUser } from './lib/api';
import Login from './pages/Login';
import Dashboard from './pages/Dashboard';
import DatabaseAdmin from './pages/DatabaseAdmin';
import TableView from './pages/TableView';
import ContentHub from './pages/ContentHub';
import ContentCreation from './pages/ContentCreation';
import AudioHub from './pages/AudioHub';
import WordGenerator from './pages/WordGenerator';
import Publish from './pages/Publish';
import Settings from './pages/Settings';
import TranslationHub from './pages/TranslationHub';
function RequireAuth({ children }) {
const user = getUser();
if (!user) return <Navigate to="/login" replace />;
return children;
}
export default function App() {
return (
<BrowserRouter>
<Routes>
<Route path="/login" element={<Login />} />
<Route path="/" element={<RequireAuth><Dashboard /></RequireAuth>} />
<Route path="/db" element={<RequireAuth><DatabaseAdmin /></RequireAuth>} />
<Route path="/db/:tableKey" element={<RequireAuth><TableView /></RequireAuth>} />
<Route path="/content" element={<RequireAuth><ContentHub /></RequireAuth>} />
<Route path="/content/creation" element={<RequireAuth><ContentCreation /></RequireAuth>} />
<Route path="/audio" element={<RequireAuth><AudioHub /></RequireAuth>} />
<Route path="/translations" element={<RequireAuth><TranslationHub /></RequireAuth>} />
<Route path="/content/words" element={<RequireAuth><WordGenerator /></RequireAuth>} />
<Route path="/publish" element={<RequireAuth><Publish /></RequireAuth>} />
<Route path="/settings" element={<RequireAuth><Settings /></RequireAuth>} />
<Route path="*" element={<Navigate to="/" replace />} />
</Routes>
</BrowserRouter>
);
}