Round 24: Data Import/Export, School Events, Student Wellness, Styling

- Data Import/Export View: CSV/JSON import with drag-and-drop, column mapping, data preview, validation, export with filters, database statistics
- School Event Management View: Calendar/list views, event CRUD with recurring support, registration, feedback, budget tracking
- Student Wellness View: Daily check-in (mood, sleep, stress, activity), wellness score gauge, health records, trend charts
- 4 new Prisma models: DataImportJob, DataExportJob, WellnessCheckin, WellnessScore
- Enhanced SchoolEvent model with budget, registration, recurring, and status fields
- Added EventFeedback model
- Enhanced auth-view styling with glassmorphism card and animated floating shapes
- Enhanced dashboard-view with gradient header, animated stat counters, welcome section
- Added global CSS utility classes and keyframe animations
- 14+ new API route files
- 300+ i18n keys added
- All views verified working in browser
This commit is contained in:
Mustafa Cetin committed 2026-07-30 03:05:16 +00:00
1 parent 7ea8dc48c8
commit a159ed7fe6
22 files changed
+8349 -153

No files matched your search

+690
View File
@@ -5094,6 +5094,8 @@ const de: TranslationDict = {
'nav.tablet-grading': 'Tablet-Benotung',
'nav.student-achievements': 'Erfolge',
'nav.student-study-planner': 'Lernplaner',
'nav.school-events': 'Schulveranstaltungen',
'nav.data-import-export': 'Datenimport/-export',
'notif_center.title': 'Benachrichtigungscenter',
'notif_center.subtitle': 'Alle Benachrichtigungen und Updates an einem Ort',
'notif_center.loading': 'Laden...',
@@ -5637,6 +5639,349 @@ const de: TranslationDict = {
'report_card.section_comments': 'Bemerkungen',
'report_card.section_attendance': 'Anwesenheit',
'report_card.section_signature': 'Unterschrift',
// Student Wellness
'nav.student-wellness': 'Wohlbefinden',
'wellness.title': 'Schüler-Wohlbefinden',
'wellness.subtitle': 'Gesundheit und Wohlbefinden verfolgen',
'wellness.dashboard': 'Dashboard',
'wellness.checkin': 'Täglicher Check-in',
'wellness.health_records': 'Gesundheitsakten',
'wellness.reports': 'Berichte',
'wellness.overall_score': 'Gesamtwert',
'wellness.overall_score_desc': 'Ihr Wohlbefindens-Score',
'wellness.trend': 'Trend',
'wellness.trend_chart': 'Wohlbefindenstrend',
'wellness.trend_chart_desc': 'Verlauf über die letzten 30 Tage',
'wellness.average_mood': 'Durchschnittsstimmung',
'wellness.sleep_quality': 'Schlafqualität',
'wellness.stress_level': 'Stresslevel',
'wellness.physical_activity': 'Körperliche Aktivität',
'wellness.physical': 'Körperlich',
'wellness.mental': 'Mental',
'wellness.social': 'Sozial',
'wellness.academic': 'Akademisch',
'wellness.mood_excellent': 'Ausgezeichnet',
'wellness.mood_good': 'Gut',
'wellness.mood_okay': 'Okay',
'wellness.mood_low': 'Niedrig',
'wellness.mood_very_low': 'Sehr niedrig',
'wellness.mood_label': 'Wie fühlst du dich heute?',
'wellness.sleep_hours': 'Schlafstunden',
'wellness.sleep_hours_label': 'Wie viele Stunden hast du geschlafen?',
'wellness.sleep_quality_label': 'Wie war deine Schlafqualität?',
'wellness.stress_label': 'Wie gestresst bist du?',
'wellness.stress_low': 'Niedrig',
'wellness.stress_moderate': 'Mäßig',
'wellness.stress_high': 'Hoch',
'wellness.stress_very_high': 'Sehr hoch',
'wellness.activity_type': 'Aktivitätsart',
'wellness.activity_duration': 'Dauer (Minuten)',
'wellness.activity_running': 'Laufen',
'wellness.activity_walking': 'Spazieren',
'wellness.activity_cycling': 'Fahrradfahren',
'wellness.activity_swimming': 'Schwimmen',
'wellness.activity_sports': 'Sport',
'wellness.activity_dance': 'Tanzen',
'wellness.activity_yoga': 'Yoga',
'wellness.activity_other': 'Sonstiges',
'wellness.meals_count': 'Mahlzeiten pro Tag',
'wellness.water_glasses': 'Gläser Wasser',
'wellness.gratitude': 'Dankbarkeitseintrag',
'wellness.gratitude_placeholder': 'Wofür bist du heute dankbar?',
'wellness.notes': 'Notizen',
'wellness.notes_placeholder': 'Zusätzliche Notizen...',
'wellness.submit_checkin': 'Check-in speichern',
'wellness.checkin_success': 'Check-in erfolgreich gespeichert!',
'wellness.checkin_error': 'Fehler beim Speichern des Check-ins',
'wellness.no_checkins': 'Noch keine Check-ins vorhanden',
'wellness.no_checkins_desc': 'Starte deinen ersten Check-in, um dein Wohlbefinden zu verfolgen.',
'wellness.health_allergies': 'Allergien',
'wellness.health_conditions': 'Erkrankungen',
'wellness.health_medications': 'Medikamente',
'wellness.health_blood_type': 'Blutgruppe',
'wellness.health_doctor': 'Arzt',
'wellness.health_doctor_phone': 'Arzt-Telefon',
'wellness.health_insurance': 'Versicherung',
'wellness.health_last_checkup': 'Letzte Untersuchung',
'wellness.health_emergency': 'Notfallkontakt',
'wellness.health_vaccinations': 'Impfungen',
'wellness.health_visits': 'Arztbesuche',
'wellness.health_alert': 'Gesundheitshinweis',
'wellness.health_no_records': 'Keine Gesundheitsakten vorhanden',
'wellness.weekly_summary': 'Wochenübersicht',
'wellness.monthly_summary': 'Monatsübersicht',
'wellness.summary_period': 'Zeitraum',
'wellness.summary_week': 'Woche',
'wellness.summary_month': 'Monat',
'wellness.patterns': 'Muster & Trends',
'wellness.class_comparison': 'Klassenvergleich',
'wellness.class_comparison_desc': 'Anonymisierter Vergleich mit Klassendurchschnitt',
'wellness.recommendations': 'Empfehlungen',
'wellness.recommendations_desc': 'KI-gestützte Wohlbefindenstipps',
'wellness.export_report': 'Bericht exportieren',
'wellness.export_success': 'Bericht erfolgreich exportiert!',
'wellness.score_excellent': 'Ausgezeichnet',
'wellness.score_good': 'Gut',
'wellness.score_fair': 'Befriedigend',
'wellness.score_poor': 'Schlecht',
'wellness.score_critical': 'Kritisch',
'wellness.school_overview': 'Schulübersicht',
'wellness.class_overview': 'Klassenübersicht',
'wellness.students_checked_in': 'Schüler eingecheckt',
'wellness.avg_wellness_score': 'Durchschn. Wohlbefinden',
'wellness.low_wellness_alerts': 'Niedrig-Wohlbefinden-Warnungen',
'wellness.student_wellness': 'Schüler-Wohlbefinden',
'wellness.view_details': 'Details anzeigen',
'wellness.today': 'Heute',
'wellness.this_week': 'Diese Woche',
'wellness.this_month': 'Dieser Monat',
'wellness.days': 'Tage',
'wellness.hours': 'Stunden',
'wellness.minutes': 'Minuten',
'wellness.date': 'Datum',
'wellness.recent_checkins': 'Letzte Check-ins',
'wellness.wellness_radar': 'Wohlbefindensradar',
'wellness.wellness_radar_desc': 'Überblick über alle Wohlbefindensbereiche',
'wellness.sleep_poor': 'Schlecht',
'wellness.sleep_fair': 'Mäßig',
'wellness.sleep_good': 'Gut',
'wellness.sleep_excellent': 'Ausgezeichnet',
'wellness.no_data': 'Keine Daten verfügbar',
'wellness.checkin_history': 'Check-in-Verlauf',
'wellness.save': 'Speichern',
'wellness.cancel': 'Abbrechen',
'wellness.loading': 'Laden...',
// Data Import/Export
'nav.data_import_export': 'Datenimport/-export',
'data_import_export.title': 'Datenimport & -export',
'data_import_export.subtitle': 'Daten importieren, exportieren und verwalten',
'data_import_export.tab_import': 'Import',
'data_import_export.tab_export': 'Export',
'data_import_export.tab_history': 'Verlauf',
'data_import_export.tab_management': 'Datenverwaltung',
'data_import_export.upload_title': 'Datei hochladen',
'data_import_export.upload_subtitle': 'CSV- oder JSON-Datei per Drag & Drop hochladen',
'data_import_export.drag_drop': 'Datei hierher ziehen oder klicken',
'data_import_export.drag_drop_active': 'Datei hier ablegen',
'data_import_export.supported_formats': 'Unterstützte Formate: CSV, JSON',
'data_import_export.max_file_size': 'Max. Dateigröße: 10 MB',
'data_import_export.import_type': 'Importtyp',
'data_import_export.type_student': 'Schüler',
'data_import_export.type_teacher': 'Lehrer',
'data_import_export.type_grade': 'Noten',
'data_import_export.type_attendance': 'Anwesenheit',
'data_import_export.type_competency': 'Kompetenzen',
'data_import_export.column_mapping': 'Spaltenzuordnung',
'data_import_export.column_mapping_desc': 'Ordnen Sie die CSV-Spalten den Datenbankfeldern zu',
'data_import_export.csv_column': 'CSV-Spalte',
'data_import_export.db_field': 'Datenbankfeld',
'data_import_export.preview': 'Datenvorschau',
'data_import_export.preview_desc': 'Vorschau der ersten 10 Zeilen vor dem Import',
'data_import_export.row': 'Zeile',
'data_import_export.start_import': 'Import starten',
'data_import_export.importing': 'Import läuft...',
'data_import_export.import_progress': 'Importfortschritt',
'data_import_export.import_success': 'Import erfolgreich abgeschlossen',
'data_import_export.import_error': 'Fehler beim Import',
'data_import_export.success_rows': 'Erfolgreiche Zeilen',
'data_import_export.error_rows': 'Fehlerhafte Zeilen',
'data_import_export.total_rows': 'Gesamtzeilen',
'data_import_export.validation_errors': 'Validierungsfehler',
'data_import_export.no_file': 'Keine Datei ausgewählt',
'data_import_export.invalid_format': 'Ungültiges Dateiformat',
'data_import_export.file_too_large': 'Datei zu groß',
'data_import_export.required_field_missing': 'Pflichtfeld fehlt',
'data_import_export.invalid_data_type': 'Ungültiger Datentyp',
'data_import_export.export_title': 'Daten exportieren',
'data_import_export.export_type': 'Exporttyp',
'data_import_export.type_report': 'Berichte',
'data_import_export.export_format': 'Exportformat',
'data_import_export.format_csv': 'CSV',
'data_import_export.format_json': 'JSON',
'data_import_export.date_range': 'Zeitraum',
'data_import_export.date_from': 'Von',
'data_import_export.date_to': 'Bis',
'data_import_export.class_filter': 'Klassenfilter',
'data_import_export.subject_filter': 'Fachfilter',
'data_import_export.all_classes': 'Alle Klassen',
'data_import_export.all_subjects': 'Alle Fächer',
'data_import_export.export_templates': 'Exportvorlagen',
'data_import_export.template_full': 'Vollständiger Export',
'data_import_export.template_grades_only': 'Nur Noten',
'data_import_export.template_attendance_only': 'Nur Anwesenheit',
'data_import_export.template_competency_only': 'Nur Kompetenzen',
'data_import_export.schedule_export': 'Geplanten Export erstellen',
'data_import_export.schedule_daily': 'Täglich',
'data_import_export.schedule_weekly': 'Wöchentlich',
'data_import_export.schedule_monthly': 'Monatlich',
'data_import_export.start_export': 'Export starten',
'data_import_export.exporting': 'Export läuft...',
'data_import_export.export_success': 'Export erfolgreich erstellt',
'data_import_export.export_error': 'Fehler beim Export',
'data_import_export.download': 'Herunterladen',
'data_import_export.history_title': 'Exportverlauf',
'data_import_export.import_history': 'Importverlauf',
'data_import_export.file_name': 'Dateiname',
'data_import_export.file_size': 'Dateigröße',
'data_import_export.status': 'Status',
'data_import_export.created_at': 'Erstellt',
'data_import_export.status_pending': 'Ausstehend',
'data_import_export.status_processing': 'In Bearbeitung',
'data_import_export.status_completed': 'Abgeschlossen',
'data_import_export.status_failed': 'Fehlgeschlagen',
'data_import_export.no_history': 'Kein Verlauf vorhanden',
'data_import_export.management_title': 'Datenverwaltung',
'data_import_export.db_statistics': 'Datenbankstatistiken',
'data_import_export.total_records': 'Gesamtdatensätze',
'data_import_export.bulk_delete': 'Massenlöschung',
'data_import_export.bulk_delete_desc': 'Mehrere Datensätze gleichzeitig löschen',
'data_import_export.cleanup_tools': 'Bereinigungstools',
'data_import_export.remove_orphans': 'Verwaiste Datensätze entfernen',
'data_import_export.remove_orphans_desc': 'Datensätze ohne gültige Referenzen bereinigen',
'data_import_export.backup': 'Backup erstellen',
'data_import_export.backup_desc': 'Vollständiges Backup der Datenbank erstellen',
'data_import_export.restore': 'Backup wiederherstellen',
'data_import_export.restore_desc': 'Datenbank aus Backup wiederherstellen',
'data_import_export.confirm_delete': 'Löschen bestätigen',
'data_import_export.confirm_delete_msg': 'Möchten Sie die ausgewählten Datensätze wirklich löschen?',
'data_import_export.confirm_cleanup': 'Bereinigung bestätigen',
'data_import_export.confirm_cleanup_msg': 'Möchten Sie verwaiste Datensätze wirklich entfernen?',
'data_import_export.operation_success': 'Vorgang erfolgreich',
'data_import_export.operation_error': 'Fehler beim Vorgang',
'data_import_export.no_access': 'Kein Zugriff',
'data_import_export.no_access_desc': 'Sie haben keine Berechtigung für diese Funktion',
'data_import_export.records': 'Datensätze',
'data_import_export.students': 'Schüler',
'data_import_export.teachers': 'Lehrer',
'data_import_export.grades': 'Noten',
'data_import_export.attendance_records': 'Anwesenheitseinträge',
'data_import_export.competency_records': 'Kompetenzeinträge',
'data_import_export.select_all': 'Alle auswählen',
'data_import_export.deselect_all': 'Auswahl aufheben',
'data_import_export.apply_template': 'Vorlage anwenden',
'data_import_export.custom_export': 'Benutzerdefinierter Export',
'data_import_export.export_options': 'Exportoptionen',
'data_import_export.include_headers': 'Kopfzeilen einbeziehen',
'data_import_export.include_metadata': 'Metadaten einbeziehen',
'data_import_export.clear_filters': 'Filter zurücksetzen',
// School Events
'nav.school_events': 'Schulveranstaltungen',
'se.title': 'Schulveranstaltungen',
'se.subtitle': 'Verwalten Sie Schulanlässe, Anmeldungen und Feedback',
'se.create_event': 'Veranstaltung erstellen',
'se.edit_event': 'Veranstaltung bearbeiten',
'se.create_event_desc': 'Planen Sie eine neue Schulveranstaltung',
'se.edit_event_desc': 'Bearbeiten Sie die Veranstaltungsdetails',
'se.event_title': 'Titel',
'se.event_title_placeholder': 'z.B. Sporttag 2025',
'se.event_description': 'Beschreibung',
'se.event_description_placeholder': 'Beschreiben Sie die Veranstaltung...',
'se.event_type': 'Veranstaltungsart',
'se.start_date': 'Beginn',
'se.end_date': 'Ende',
'se.location': 'Ort',
'se.location_placeholder': 'z.B. Turnhalle, Raum 204',
'se.budget': 'Budget',
'se.notes': 'Notizen',
'se.notes_placeholder': 'Zusätzliche Hinweise...',
'se.status': 'Status',
'se.status_draft': 'Entwurf',
'se.status_published': 'Veröffentlicht',
'se.status_cancelled': 'Abgesagt',
'se.status_completed': 'Abgeschlossen',
'se.registration_settings': 'Anmeldungseinstellungen',
'se.requires_registration': 'Anmeldung erforderlich',
'se.capacity': 'Kapazität',
'se.registration_deadline': 'Anmeldeschluss',
'se.recurring_settings': 'Wiederkehrende Veranstaltung',
'se.is_recurring': 'Wiederkehrend',
'se.recurrence_type': 'Wiederholungsart',
'se.recurrence_daily': 'Täglich',
'se.recurrence_weekly': 'Wöchentlich',
'se.recurrence_monthly': 'Monatlich',
'se.recurrence_custom': 'Benutzerdefiniert',
'se.recurring': 'Wiederkehrend',
'se.banner_image_url': 'Banner-Bild-URL',
'se.search_placeholder': 'Veranstaltungen suchen...',
'se.filter_type': 'Art',
'se.filter_status': 'Status',
'se.all_types': 'Alle Arten',
'se.all_statuses': 'Alle Status',
'se.date_from': 'Von',
'se.date_to': 'Bis',
'se.total_events': 'Veranstaltungen gesamt',
'se.upcoming_events': 'Bevorstehende',
'se.total_registrations': 'Anmeldungen gesamt',
'se.total_budget': 'Gesamtbudget',
'se.event_statistics': 'Veranstaltungsstatistiken',
'se.events_by_type': 'Veranstaltungen nach Art',
'se.overview': 'Übersicht',
'se.published_events': 'Veröffentlichte Veranstaltungen',
'se.completed_events': 'Abgeschlossene Veranstaltungen',
'se.avg_rating': 'Durchschnittsbewertung',
'se.loading': 'Wird geladen...',
'se.no_events': 'Keine Veranstaltungen gefunden',
'se.create_first_event': 'Erste Veranstaltung erstellen',
'se.more': 'weitere',
'se.registered': 'Angemeldet',
'se.full': 'Voll',
'se.deadline_in': 'Anmeldeschluss in',
'se.days': 'Tage',
'se.in': 'in',
'se.register': 'Anmelden',
'se.cancel_registration': 'Anmeldung stornieren',
'se.registration_success': 'Erfolgreich angemeldet',
'se.registration_cancelled': 'Anmeldung storniert',
'se.event_full_waitlist': 'Veranstaltung ist voll',
'se.error_register': 'Fehler bei der Anmeldung',
'se.error_cancel_registration': 'Fehler beim Stornieren',
'se.registrations': 'Anmeldungen',
'se.no_registrations': 'Noch keine Anmeldungen',
'se.capacity_used': 'Kapazität ausgenutzt',
'se.mark_attended': 'Teilgenommen',
'se.attended': 'Teilgenommen',
'se.attendance_updated': 'Teilnahme aktualisiert',
'se.feedback': 'Feedback',
'se.no_feedback': 'Noch kein Feedback',
'se.leave_feedback': 'Feedback geben',
'se.feedback_desc': 'Bewerten Sie diese Veranstaltung',
'se.submit_feedback': 'Feedback absenden',
'se.feedback_submitted': 'Feedback abgegeben',
'se.error_feedback': 'Fehler beim Absenden des Feedbacks',
'se.feedback_comment_placeholder': 'Ihr Feedback zur Veranstaltung...',
'se.rating_poor': 'Schlecht',
'se.rating_fair': 'Befriedigend',
'se.rating_good': 'Gut',
'se.rating_very_good': 'Sehr gut',
'se.rating_excellent': 'Ausgezeichnet',
'se.reviews': 'Bewertungen',
'se.publish': 'Veröffentlichen',
'se.event_published': 'Veranstaltung veröffentlicht',
'se.event_created': 'Veranstaltung erfolgreich erstellt',
'se.event_updated': 'Veranstaltung erfolgreich aktualisiert',
'se.event_deleted': 'Veranstaltung erfolgreich gelöscht',
'se.saving': 'Wird gespeichert...',
'se.error_fetch': 'Fehler beim Laden der Veranstaltungen',
'se.error_create': 'Fehler beim Erstellen der Veranstaltung',
'se.error_update': 'Fehler beim Aktualisieren der Veranstaltung',
'se.error_delete': 'Fehler beim Löschen der Veranstaltung',
'se.error_required_fields': 'Bitte füllen Sie alle Pflichtfelder aus',
'se.delete_confirm_title': 'Veranstaltung löschen',
'se.delete_confirm_desc': 'Möchten Sie die Veranstaltung "{title}" wirklich löschen? Diese Aktion kann nicht rückgängig gemacht werden.',
'se.type_sports': 'Sporttag',
'se.type_cultural': 'Kulturell',
'se.type_academic': 'Akademisch',
'se.type_social': 'Sozial',
'se.type_parent_meeting': 'Elternabend',
'se.type_holiday': 'Ferien/Feiertag',
'se.type_field_trip': 'Ausflug',
'se.type_assembly': 'Versammlung',
'se.type_concert': 'Konzert',
'se.type_graduation': 'Abschlussfeier',
'se.type_fair': 'Schulfest',
};
const en: TranslationDict = {
@@ -10729,6 +11074,8 @@ const en: TranslationDict = {
'nav.tablet-grading': 'Tablet Grading',
'nav.student-achievements': 'Achievements',
'nav.student-study-planner': 'Study Planner',
'nav.school-events': 'School Events',
'nav.data-import-export': 'Data Import/Export',
'notif_center.title': 'Notification Center',
'notif_center.subtitle': 'All your notifications and updates in one place',
'notif_center.loading': 'Loading...',
@@ -11272,6 +11619,349 @@ const en: TranslationDict = {
'report_card.section_comments': 'Comments',
'report_card.section_attendance': 'Attendance',
'report_card.section_signature': 'Signature',
// Student Wellness
'nav.student-wellness': 'Wellness',
'wellness.title': 'Student Wellness',
'wellness.subtitle': 'Track health and wellbeing',
'wellness.dashboard': 'Dashboard',
'wellness.checkin': 'Daily Check-in',
'wellness.health_records': 'Health Records',
'wellness.reports': 'Reports',
'wellness.overall_score': 'Overall Score',
'wellness.overall_score_desc': 'Your wellness score',
'wellness.trend': 'Trend',
'wellness.trend_chart': 'Wellness Trend',
'wellness.trend_chart_desc': 'Progress over the last 30 days',
'wellness.average_mood': 'Average Mood',
'wellness.sleep_quality': 'Sleep Quality',
'wellness.stress_level': 'Stress Level',
'wellness.physical_activity': 'Physical Activity',
'wellness.physical': 'Physical',
'wellness.mental': 'Mental',
'wellness.social': 'Social',
'wellness.academic': 'Academic',
'wellness.mood_excellent': 'Excellent',
'wellness.mood_good': 'Good',
'wellness.mood_okay': 'Okay',
'wellness.mood_low': 'Low',
'wellness.mood_very_low': 'Very Low',
'wellness.mood_label': 'How are you feeling today?',
'wellness.sleep_hours': 'Sleep Hours',
'wellness.sleep_hours_label': 'How many hours did you sleep?',
'wellness.sleep_quality_label': 'How was your sleep quality?',
'wellness.stress_label': 'How stressed are you?',
'wellness.stress_low': 'Low',
'wellness.stress_moderate': 'Moderate',
'wellness.stress_high': 'High',
'wellness.stress_very_high': 'Very High',
'wellness.activity_type': 'Activity Type',
'wellness.activity_duration': 'Duration (minutes)',
'wellness.activity_running': 'Running',
'wellness.activity_walking': 'Walking',
'wellness.activity_cycling': 'Cycling',
'wellness.activity_swimming': 'Swimming',
'wellness.activity_sports': 'Sports',
'wellness.activity_dance': 'Dance',
'wellness.activity_yoga': 'Yoga',
'wellness.activity_other': 'Other',
'wellness.meals_count': 'Meals per Day',
'wellness.water_glasses': 'Glasses of Water',
'wellness.gratitude': 'Gratitude Entry',
'wellness.gratitude_placeholder': 'What are you grateful for today?',
'wellness.notes': 'Notes',
'wellness.notes_placeholder': 'Additional notes...',
'wellness.submit_checkin': 'Save Check-in',
'wellness.checkin_success': 'Check-in saved successfully!',
'wellness.checkin_error': 'Error saving check-in',
'wellness.no_checkins': 'No check-ins yet',
'wellness.no_checkins_desc': 'Start your first check-in to track your wellness.',
'wellness.health_allergies': 'Allergies',
'wellness.health_conditions': 'Conditions',
'wellness.health_medications': 'Medications',
'wellness.health_blood_type': 'Blood Type',
'wellness.health_doctor': 'Doctor',
'wellness.health_doctor_phone': 'Doctor Phone',
'wellness.health_insurance': 'Insurance',
'wellness.health_last_checkup': 'Last Checkup',
'wellness.health_emergency': 'Emergency Contact',
'wellness.health_vaccinations': 'Vaccinations',
'wellness.health_visits': 'Doctor Visits',
'wellness.health_alert': 'Health Alert',
'wellness.health_no_records': 'No health records available',
'wellness.weekly_summary': 'Weekly Summary',
'wellness.monthly_summary': 'Monthly Summary',
'wellness.summary_period': 'Period',
'wellness.summary_week': 'Week',
'wellness.summary_month': 'Month',
'wellness.patterns': 'Patterns & Trends',
'wellness.class_comparison': 'Class Comparison',
'wellness.class_comparison_desc': 'Anonymized comparison with class average',
'wellness.recommendations': 'Recommendations',
'wellness.recommendations_desc': 'AI-powered wellness tips',
'wellness.export_report': 'Export Report',
'wellness.export_success': 'Report exported successfully!',
'wellness.score_excellent': 'Excellent',
'wellness.score_good': 'Good',
'wellness.score_fair': 'Fair',
'wellness.score_poor': 'Poor',
'wellness.score_critical': 'Critical',
'wellness.school_overview': 'School Overview',
'wellness.class_overview': 'Class Overview',
'wellness.students_checked_in': 'Students checked in',
'wellness.avg_wellness_score': 'Avg Wellness Score',
'wellness.low_wellness_alerts': 'Low Wellness Alerts',
'wellness.student_wellness': 'Student Wellness',
'wellness.view_details': 'View Details',
'wellness.today': 'Today',
'wellness.this_week': 'This Week',
'wellness.this_month': 'This Month',
'wellness.days': 'Days',
'wellness.hours': 'Hours',
'wellness.minutes': 'Minutes',
'wellness.date': 'Date',
'wellness.recent_checkins': 'Recent Check-ins',
'wellness.wellness_radar': 'Wellness Radar',
'wellness.wellness_radar_desc': 'Overview of all wellness areas',
'wellness.sleep_poor': 'Poor',
'wellness.sleep_fair': 'Fair',
'wellness.sleep_good': 'Good',
'wellness.sleep_excellent': 'Excellent',
'wellness.no_data': 'No data available',
'wellness.checkin_history': 'Check-in History',
'wellness.save': 'Save',
'wellness.cancel': 'Cancel',
'wellness.loading': 'Loading...',
// Data Import/Export
'nav.data_import_export': 'Data Import/Export',
'data_import_export.title': 'Data Import & Export',
'data_import_export.subtitle': 'Import, export and manage data',
'data_import_export.tab_import': 'Import',
'data_import_export.tab_export': 'Export',
'data_import_export.tab_history': 'History',
'data_import_export.tab_management': 'Data Management',
'data_import_export.upload_title': 'Upload File',
'data_import_export.upload_subtitle': 'Upload CSV or JSON file via drag & drop',
'data_import_export.drag_drop': 'Drag file here or click to browse',
'data_import_export.drag_drop_active': 'Drop file here',
'data_import_export.supported_formats': 'Supported formats: CSV, JSON',
'data_import_export.max_file_size': 'Max file size: 10 MB',
'data_import_export.import_type': 'Import Type',
'data_import_export.type_student': 'Students',
'data_import_export.type_teacher': 'Teachers',
'data_import_export.type_grade': 'Grades',
'data_import_export.type_attendance': 'Attendance',
'data_import_export.type_competency': 'Competencies',
'data_import_export.column_mapping': 'Column Mapping',
'data_import_export.column_mapping_desc': 'Map CSV columns to database fields',
'data_import_export.csv_column': 'CSV Column',
'data_import_export.db_field': 'Database Field',
'data_import_export.preview': 'Data Preview',
'data_import_export.preview_desc': 'Preview first 10 rows before importing',
'data_import_export.row': 'Row',
'data_import_export.start_import': 'Start Import',
'data_import_export.importing': 'Importing...',
'data_import_export.import_progress': 'Import Progress',
'data_import_export.import_success': 'Import completed successfully',
'data_import_export.import_error': 'Import failed',
'data_import_export.success_rows': 'Successful Rows',
'data_import_export.error_rows': 'Error Rows',
'data_import_export.total_rows': 'Total Rows',
'data_import_export.validation_errors': 'Validation Errors',
'data_import_export.no_file': 'No file selected',
'data_import_export.invalid_format': 'Invalid file format',
'data_import_export.file_too_large': 'File too large',
'data_import_export.required_field_missing': 'Required field missing',
'data_import_export.invalid_data_type': 'Invalid data type',
'data_import_export.export_title': 'Export Data',
'data_import_export.export_type': 'Export Type',
'data_import_export.type_report': 'Reports',
'data_import_export.export_format': 'Export Format',
'data_import_export.format_csv': 'CSV',
'data_import_export.format_json': 'JSON',
'data_import_export.date_range': 'Date Range',
'data_import_export.date_from': 'From',
'data_import_export.date_to': 'To',
'data_import_export.class_filter': 'Class Filter',
'data_import_export.subject_filter': 'Subject Filter',
'data_import_export.all_classes': 'All Classes',
'data_import_export.all_subjects': 'All Subjects',
'data_import_export.export_templates': 'Export Templates',
'data_import_export.template_full': 'Full Export',
'data_import_export.template_grades_only': 'Grades Only',
'data_import_export.template_attendance_only': 'Attendance Only',
'data_import_export.template_competency_only': 'Competencies Only',
'data_import_export.schedule_export': 'Schedule Export',
'data_import_export.schedule_daily': 'Daily',
'data_import_export.schedule_weekly': 'Weekly',
'data_import_export.schedule_monthly': 'Monthly',
'data_import_export.start_export': 'Start Export',
'data_import_export.exporting': 'Exporting...',
'data_import_export.export_success': 'Export created successfully',
'data_import_export.export_error': 'Export failed',
'data_import_export.download': 'Download',
'data_import_export.history_title': 'Export History',
'data_import_export.import_history': 'Import History',
'data_import_export.file_name': 'File Name',
'data_import_export.file_size': 'File Size',
'data_import_export.status': 'Status',
'data_import_export.created_at': 'Created',
'data_import_export.status_pending': 'Pending',
'data_import_export.status_processing': 'Processing',
'data_import_export.status_completed': 'Completed',
'data_import_export.status_failed': 'Failed',
'data_import_export.no_history': 'No history available',
'data_import_export.management_title': 'Data Management',
'data_import_export.db_statistics': 'Database Statistics',
'data_import_export.total_records': 'Total Records',
'data_import_export.bulk_delete': 'Bulk Delete',
'data_import_export.bulk_delete_desc': 'Delete multiple records at once',
'data_import_export.cleanup_tools': 'Cleanup Tools',
'data_import_export.remove_orphans': 'Remove Orphaned Records',
'data_import_export.remove_orphans_desc': 'Clean up records without valid references',
'data_import_export.backup': 'Create Backup',
'data_import_export.backup_desc': 'Create a full database backup',
'data_import_export.restore': 'Restore Backup',
'data_import_export.restore_desc': 'Restore database from backup',
'data_import_export.confirm_delete': 'Confirm Delete',
'data_import_export.confirm_delete_msg': 'Are you sure you want to delete the selected records?',
'data_import_export.confirm_cleanup': 'Confirm Cleanup',
'data_import_export.confirm_cleanup_msg': 'Are you sure you want to remove orphaned records?',
'data_import_export.operation_success': 'Operation successful',
'data_import_export.operation_error': 'Operation failed',
'data_import_export.no_access': 'No Access',
'data_import_export.no_access_desc': 'You do not have permission for this feature',
'data_import_export.records': 'Records',
'data_import_export.students': 'Students',
'data_import_export.teachers': 'Teachers',
'data_import_export.grades': 'Grades',
'data_import_export.attendance_records': 'Attendance Records',
'data_import_export.competency_records': 'Competency Records',
'data_import_export.select_all': 'Select All',
'data_import_export.deselect_all': 'Deselect All',
'data_import_export.apply_template': 'Apply Template',
'data_import_export.custom_export': 'Custom Export',
'data_import_export.export_options': 'Export Options',
'data_import_export.include_headers': 'Include Headers',
'data_import_export.include_metadata': 'Include Metadata',
'data_import_export.clear_filters': 'Clear Filters',
// School Events
'nav.school_events': 'School Events',
'se.title': 'School Events',
'se.subtitle': 'Manage school events, registrations, and feedback',
'se.create_event': 'Create Event',
'se.edit_event': 'Edit Event',
'se.create_event_desc': 'Plan a new school event',
'se.edit_event_desc': 'Edit the event details',
'se.event_title': 'Title',
'se.event_title_placeholder': 'e.g. Sports Day 2025',
'se.event_description': 'Description',
'se.event_description_placeholder': 'Describe the event...',
'se.event_type': 'Event Type',
'se.start_date': 'Start Date',
'se.end_date': 'End Date',
'se.location': 'Location',
'se.location_placeholder': 'e.g. Gymnasium, Room 204',
'se.budget': 'Budget',
'se.notes': 'Notes',
'se.notes_placeholder': 'Additional notes...',
'se.status': 'Status',
'se.status_draft': 'Draft',
'se.status_published': 'Published',
'se.status_cancelled': 'Cancelled',
'se.status_completed': 'Completed',
'se.registration_settings': 'Registration Settings',
'se.requires_registration': 'Requires Registration',
'se.capacity': 'Capacity',
'se.registration_deadline': 'Registration Deadline',
'se.recurring_settings': 'Recurring Event',
'se.is_recurring': 'Recurring',
'se.recurrence_type': 'Recurrence Type',
'se.recurrence_daily': 'Daily',
'se.recurrence_weekly': 'Weekly',
'se.recurrence_monthly': 'Monthly',
'se.recurrence_custom': 'Custom',
'se.recurring': 'Recurring',
'se.banner_image_url': 'Banner Image URL',
'se.search_placeholder': 'Search events...',
'se.filter_type': 'Type',
'se.filter_status': 'Status',
'se.all_types': 'All Types',
'se.all_statuses': 'All Statuses',
'se.date_from': 'From',
'se.date_to': 'To',
'se.total_events': 'Total Events',
'se.upcoming_events': 'Upcoming',
'se.total_registrations': 'Total Registrations',
'se.total_budget': 'Total Budget',
'se.event_statistics': 'Event Statistics',
'se.events_by_type': 'Events by Type',
'se.overview': 'Overview',
'se.published_events': 'Published Events',
'se.completed_events': 'Completed Events',
'se.avg_rating': 'Average Rating',
'se.loading': 'Loading...',
'se.no_events': 'No events found',
'se.create_first_event': 'Create First Event',
'se.more': 'more',
'se.registered': 'Registered',
'se.full': 'Full',
'se.deadline_in': 'Deadline in',
'se.days': 'days',
'se.in': 'in',
'se.register': 'Register',
'se.cancel_registration': 'Cancel Registration',
'se.registration_success': 'Successfully registered',
'se.registration_cancelled': 'Registration cancelled',
'se.event_full_waitlist': 'Event is full',
'se.error_register': 'Error registering',
'se.error_cancel_registration': 'Error cancelling registration',
'se.registrations': 'Registrations',
'se.no_registrations': 'No registrations yet',
'se.capacity_used': 'Capacity used',
'se.mark_attended': 'Mark Attended',
'se.attended': 'Attended',
'se.attendance_updated': 'Attendance updated',
'se.feedback': 'Feedback',
'se.no_feedback': 'No feedback yet',
'se.leave_feedback': 'Leave Feedback',
'se.feedback_desc': 'Rate this event',
'se.submit_feedback': 'Submit Feedback',
'se.feedback_submitted': 'Feedback submitted',
'se.error_feedback': 'Error submitting feedback',
'se.feedback_comment_placeholder': 'Your feedback about the event...',
'se.rating_poor': 'Poor',
'se.rating_fair': 'Fair',
'se.rating_good': 'Good',
'se.rating_very_good': 'Very Good',
'se.rating_excellent': 'Excellent',
'se.reviews': 'reviews',
'se.publish': 'Publish',
'se.event_published': 'Event published',
'se.event_created': 'Event created successfully',
'se.event_updated': 'Event updated successfully',
'se.event_deleted': 'Event deleted successfully',
'se.saving': 'Saving...',
'se.error_fetch': 'Error loading events',
'se.error_create': 'Error creating event',
'se.error_update': 'Error updating event',
'se.error_delete': 'Error deleting event',
'se.error_required_fields': 'Please fill in all required fields',
'se.delete_confirm_title': 'Delete Event',
'se.delete_confirm_desc': 'Are you sure you want to delete the event "{title}"? This action cannot be undone.',
'se.type_sports': 'Sports Day',
'se.type_cultural': 'Cultural',
'se.type_academic': 'Academic',
'se.type_social': 'Social',
'se.type_parent_meeting': 'Parent Meeting',
'se.type_holiday': 'Holiday',
'se.type_field_trip': 'Field Trip',
'se.type_assembly': 'Assembly',
'se.type_concert': 'Concert',
'se.type_graduation': 'Graduation',
'se.type_fair': 'School Fair',
};
const translations: Record<string, TranslationDict> = { de, en };
+4 -1
View File
@@ -47,7 +47,10 @@ export type ViewName =
| 'student-study-planner'
| 'seating-chart'
| 'school-library'
| 'report-cards';
| 'report-cards'
| 'data-import-export'
| 'student-wellness'
| 'school-events';
export interface CurrentUser {
id: string;