From 688a91ae471219bd131a378b121410d81a88e492 Mon Sep 17 00:00:00 2001 From: Z User Date: Mon, 10 Aug 2026 16:15:48 +0000 Subject: [PATCH] Refactor: Consolidate sidebar navigation into 5 top-level sections Per TODO.md navigation consolidation requirements: - Home: Dashboard, Notifications - Teach: Classes, Progress, Assessments, Grading, Reports, Attendance, Homework, Lesson Plans, Resources, Notebooks, Drawing, Portfolio, Rubrics, Comments, Peer Assessment, Tablet Grading, Seating, Subjects, Competitions - School Life: Calendar, Communication, Announcements, Events, Newsletter, Library, Transport, Counseling, Wellness, Career, Discipline, Behavior, Illness, Substitutes, Timetable, Exam Calendar, Parents - Insights: Competence Flower, Mastery Matrix, Analytics, Coverage, Grade Analytics, Reports, AI Tests, Data Import/Export - Administration: Competencies, Districts, Settings Added i18n keys for new section labels (DE + EN). --- src/components/app-layout.tsx | 80 ++++++++++++++++++++--------------- src/lib/i18n.ts | 10 +++++ 2 files changed, 56 insertions(+), 34 deletions(-) diff --git a/src/components/app-layout.tsx b/src/components/app-layout.tsx index 7579028..038121c 100644 --- a/src/components/app-layout.tsx +++ b/src/components/app-layout.tsx @@ -219,66 +219,78 @@ type NavSection = { id: string; labelKey: string; items: NavItem[] }; const navSections: NavSection[] = [ { - id: 'analysis', - labelKey: 'polish.nav_analysis', + id: 'home', + labelKey: 'polish.nav_home', items: [ { key: 'dashboard', icon: LayoutDashboard, labelKey: 'nav.dashboard' }, - { key: 'calendar', icon: CalendarIconNav, labelKey: 'nav.calendar' }, - { key: 'analytics', icon: TrendingUp, labelKey: 'nav.analytics' }, - { key: 'grade-analytics', icon: BarChart3, labelKey: 'nav.grade-analytics' }, - { key: 'reports', icon: FileText, labelKey: 'nav.reports' }, - { key: 'coverage', icon: Target, labelKey: 'nav.coverage' }, + { key: 'notification-center', icon: Bell, labelKey: 'nav.notification_center' }, ], }, { - id: 'teaching', - labelKey: 'polish.nav_teaching', + id: 'teach', + labelKey: 'polish.nav_teach', items: [ { key: 'classes', icon: Users, labelKey: 'nav.classes' }, { key: 'progress', icon: PenLine, labelKey: 'nav.progress' }, - { key: 'flower', icon: Flower2, labelKey: 'nav.flower' }, - { key: 'matrix', icon: Grid3X3, labelKey: 'nav.matrix' }, { key: 'assessments', icon: ClipboardCheck, labelKey: 'nav.assessments' }, { key: 'grading', icon: Calculator, labelKey: 'nav.grading' }, + { key: 'report-cards', icon: FileText, labelKey: 'nav.report_cards' }, { key: 'attendance', icon: CalendarCheck, labelKey: 'nav.attendance' }, - { key: 'lesson-plans', icon: CalendarDays, labelKey: 'nav.lesson_plans' }, - { key: 'parents', icon: Mail, labelKey: 'nav.parents' }, - { key: 'behavior', icon: Shield, labelKey: 'nav.behavior' }, { key: 'homework', icon: BookCheck, labelKey: 'nav.homework' }, - { key: 'rubrics', icon: Ruler, labelKey: 'nav.rubrics' }, - { key: 'comments', icon: MessageSquareText, labelKey: 'nav.comments' }, + { key: 'lesson-plans', icon: CalendarDays, labelKey: 'nav.lesson_plans' }, + { key: 'resources', icon: LibraryIcon, labelKey: 'nav.resources' }, { key: 'notebooks', icon: BookOpen, labelKey: 'nav.notebooks' }, { key: 'drawing', icon: Palette, labelKey: 'nav.drawing' }, { key: 'portfolio', icon: Briefcase, labelKey: 'nav.portfolio' }, - { key: 'timetable', icon: ClockIcon, labelKey: 'nav.timetable' }, - { key: 'resources', icon: LibraryIcon, labelKey: 'nav.resources' }, - { key: 'competitions', icon: Trophy, labelKey: 'nav.competitions' }, - { key: 'subjects', icon: BookOpen, labelKey: 'nav.subjects' }, - { key: 'illness', icon: Heart, labelKey: 'nav.illness' }, - { key: 'communication', icon: MessageSquare, labelKey: 'nav.communication' }, - { key: 'counseling', icon: Heart, labelKey: 'counseling.title' }, - { key: 'disciplinary', icon: Shield, labelKey: 'disciplinary.title' }, - { key: 'ai-tests', icon: Brain, labelKey: 'ai_tests.title' }, - { key: 'tablet-grading', icon: Tablet, labelKey: 'nav.tablet_grading' }, - { key: 'exam-calendar', icon: CalendarClock, labelKey: 'nav.exam_calendar' }, + { key: 'rubrics', icon: Ruler, labelKey: 'nav.rubrics' }, + { key: 'comments', icon: MessageSquareText, labelKey: 'nav.comments' }, { key: 'peer-assessment', icon: UsersRound, labelKey: 'nav.peer-assessment' }, - { key: 'report-cards', icon: FileText, labelKey: 'nav.report_cards' }, + { key: 'tablet-grading', icon: Tablet, labelKey: 'nav.tablet_grading' }, { key: 'seating-chart', icon: LayoutGridIcon, labelKey: 'nav.seating_chart' }, - { key: 'school-library', icon: LibraryIcon, labelKey: 'nav.school_library' }, - { key: 'student-wellness', icon: Heart, labelKey: 'nav.student-wellness' }, - { key: 'student-career', icon: Compass, labelKey: 'nav.student-career' }, - { key: 'notification-center', icon: Bell, labelKey: 'nav.notification_center' }, + { key: 'subjects', icon: BookOpen, labelKey: 'nav.subjects' }, + { key: 'competitions', icon: Trophy, labelKey: 'nav.competitions' }, + ], + }, + { + id: 'school-life', + labelKey: 'polish.nav_school_life', + items: [ + { key: 'calendar', icon: CalendarIconNav, labelKey: 'nav.calendar' }, + { key: 'communication', icon: MessageSquare, labelKey: 'nav.communication' }, { key: 'announcements', icon: Megaphone, labelKey: 'nav.announcements' }, { key: 'school-events', icon: PartyPopper, labelKey: 'nav.school-events' }, { key: 'school-newsletter', icon: Newspaper, labelKey: 'nav.school-newsletter' }, + { key: 'school-library', icon: LibraryIcon, labelKey: 'nav.school_library' }, { key: 'school-transport', icon: Bus, labelKey: 'nav.school-transport' }, + { key: 'counseling', icon: Heart, labelKey: 'counseling.title' }, + { key: 'student-wellness', icon: Heart, labelKey: 'nav.student-wellness' }, + { key: 'student-career', icon: Compass, labelKey: 'nav.student-career' }, + { key: 'disciplinary', icon: Shield, labelKey: 'disciplinary.title' }, + { key: 'behavior', icon: Shield, labelKey: 'nav.behavior' }, + { key: 'illness', icon: Heart, labelKey: 'nav.illness' }, { key: 'substitute-teacher', icon: UserCheck, labelKey: 'nav.substitute-teacher' }, + { key: 'timetable', icon: ClockIcon, labelKey: 'nav.timetable' }, + { key: 'exam-calendar', icon: CalendarClock, labelKey: 'nav.exam_calendar' }, + { key: 'parents', icon: Mail, labelKey: 'nav.parents' }, + ], + }, + { + id: 'insights', + labelKey: 'polish.nav_insights', + items: [ + { key: 'flower', icon: Flower2, labelKey: 'nav.flower' }, + { key: 'matrix', icon: Grid3X3, labelKey: 'nav.matrix' }, + { key: 'analytics', icon: TrendingUp, labelKey: 'nav.analytics' }, + { key: 'coverage', icon: Target, labelKey: 'nav.coverage' }, + { key: 'grade-analytics', icon: BarChart3, labelKey: 'nav.grade-analytics' }, + { key: 'reports', icon: FileText, labelKey: 'nav.reports' }, + { key: 'ai-tests', icon: Brain, labelKey: 'ai_tests.title' }, { key: 'data-import-export', icon: Database, labelKey: 'nav.data-import-export' }, ], }, { - id: 'setup', - labelKey: 'polish.nav_setup', + id: 'administration', + labelKey: 'polish.nav_administration', items: [ { key: 'competencies', icon: BookOpen, labelKey: 'nav.competencies' }, { key: 'districts', icon: Building2, labelKey: 'nav.districts' }, diff --git a/src/lib/i18n.ts b/src/lib/i18n.ts index 3c3737e..d82d51d 100755 --- a/src/lib/i18n.ts +++ b/src/lib/i18n.ts @@ -813,6 +813,11 @@ const de: TranslationDict = { 'polish.search_placeholder': 'Schüler, Klassen oder Kompetenzen suchen…', 'polish.no_results': 'Keine Ergebnisse', 'polish.help': 'Hilfe', + 'polish.nav_home': 'Start', + 'polish.nav_teach': 'Unterricht', + 'polish.nav_school_life': 'Schulleben', + 'polish.nav_insights': 'Erkenntnisse', + 'polish.nav_administration': 'Verwaltung', 'polish.nav_setup': 'Einrichtung', 'polish.nav_teaching': 'Unterricht', 'polish.nav_analysis': 'Analyse', @@ -7462,6 +7467,11 @@ const en: TranslationDict = { 'polish.search_placeholder': 'Search students, classes or competencies…', 'polish.no_results': 'No results', 'polish.help': 'Help', + 'polish.nav_home': 'Home', + 'polish.nav_teach': 'Teach', + 'polish.nav_school_life': 'School Life', + 'polish.nav_insights': 'Insights', + 'polish.nav_administration': 'Administration', 'polish.nav_setup': 'Setup', 'polish.nav_teaching': 'Teaching', 'polish.nav_analysis': 'Analysis',