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>
This commit is contained in:
2026-06-03 07:36:20 +02:00
parent 9eecee9ace
commit 7680f4f9e3
6 changed files with 193 additions and 3 deletions

View File

@@ -10,6 +10,7 @@ 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();
@@ -28,6 +29,7 @@ export default function App() {
<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>} />