'use client' import { useState } from 'react' import { useTheme } from '@/lib/ThemeContext' import { Sidebar } from '@/components/Sidebar' import { ThemeToggle } from '@/components/ThemeToggle' import { LanguageDropdown } from '@/components/LanguageDropdown' import { KlassenManager } from './_components/KlassenManager' import { LehrerManager } from './_components/LehrerManager' import { FaecherManager } from './_components/FaecherManager' import { RaeumeManager } from './_components/RaeumeManager' import { PeriodsManager } from './_components/PeriodsManager' import { CurriculumManager } from './_components/CurriculumManager' import { AssignmentsManager } from './_components/AssignmentsManager' import { RegelnHub } from './_components/regeln/RegelnHub' import { PlanHub } from './_components/plan/PlanHub' import { HelpPanel } from './_components/HelpPanel' import { setStundenplanToken, getStundenplanToken } from '@/lib/stundenplan/api' type Tab = 'plan' | 'klassen' | 'lehrer' | 'faecher' | 'raeume' | 'periods' | 'curriculum' | 'assignments' | 'regeln' const TABS: { id: Tab; label: string }[] = [ { id: 'plan', label: 'Plan' }, { id: 'klassen', label: 'Klassen' }, { id: 'lehrer', label: 'Lehrer' }, { id: 'faecher', label: 'Faecher' }, { id: 'raeume', label: 'Raeume' }, { id: 'periods', label: 'Zeitraster' }, { id: 'curriculum', label: 'Stundentafel' }, { id: 'assignments', label: 'Lehrauftraege' }, { id: 'regeln', label: 'Regeln (Constraints)' }, ] export default function StundenplanPage() { const { isDark } = useTheme() const [tab, setTab] = useState('plan') const [token, setToken] = useState(getStundenplanToken()) const [tokenSaved, setTokenSaved] = useState(false) const handleSaveToken = () => { setStundenplanToken(token) setTokenSaved(true) setTimeout(() => setTokenSaved(false), 2500) } return (
{/* Background blobs — same effect as /korrektur to keep the visual language consistent across studio-v2 pages. */}

Stundenplan

Stammdaten, Regeln und Plan-Generierung fuer den Schul-Stundenplan

Anmeldung noch nicht integriert — Dev-Token setzen

Bis die volle BreakPilot-Anmeldung an dieses Modul angebunden ist, muss ein gueltiger JWT-Token manuell hinterlegt werden. Ohne Token antwortet die API mit Authorization header required.

  1. An BreakPilot anmelden (z.B. ueber das Lehrer-Login)
  2. Im Browser DevTools → Application/Storage → Cookies oder localStorage den JWT-Token kopieren (Feldname kann je nach Login-Flow variieren)
  3. Token unten einfuegen, Speichern, Seite neu laden
setToken(e.target.value)} placeholder="Bearer-Token (ohne 'Bearer '-Prefix)" className={`flex-1 px-3 py-1.5 rounded-lg text-sm ${ isDark ? 'bg-white/10 border border-white/20 text-white' : 'bg-white border border-slate-300 text-slate-900' }`} />
{tokenSaved && (

Token gespeichert. Seite neu laden, um die Aenderung zu uebernehmen.

)}
{tab === 'plan' && } {tab === 'klassen' && } {tab === 'lehrer' && } {tab === 'faecher' && } {tab === 'raeume' && } {tab === 'periods' && } {tab === 'curriculum' && } {tab === 'assignments' && } {tab === 'regeln' && }
) }