backend-lehrer (5 files): - alerts_agent/db/repository.py (992 → 5), abitur_docs_api.py (956 → 3) - teacher_dashboard_api.py (951 → 3), services/pdf_service.py (916 → 3) - mail/mail_db.py (987 → 6) klausur-service (5 files): - legal_templates_ingestion.py (942 → 3), ocr_pipeline_postprocess.py (929 → 4) - ocr_pipeline_words.py (876 → 3), ocr_pipeline_ocr_merge.py (616 → 2) - KorrekturPage.tsx (956 → 6) website (5 pages): - mail (985 → 9), edu-search (958 → 8), mac-mini (950 → 7) - ocr-labeling (946 → 7), audit-workspace (871 → 4) studio-v2 (5 files + 1 deleted): - page.tsx (946 → 5), MessagesContext.tsx (925 → 4) - korrektur (914 → 6), worksheet-cleanup (899 → 6) - useVocabWorksheet.ts (888 → 3) - Deleted dead page-original.tsx (934 LOC) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
32 lines
904 B
TypeScript
32 lines
904 B
TypeScript
'use client'
|
|
|
|
import { GlassCard } from './GlassCard'
|
|
|
|
interface StatCardProps {
|
|
label: string
|
|
value: string | number
|
|
icon: React.ReactNode
|
|
color?: string
|
|
delay?: number
|
|
isDark?: boolean
|
|
}
|
|
|
|
export function StatCard({ label, value, icon, color = '#a78bfa', delay = 0, isDark = true }: StatCardProps) {
|
|
return (
|
|
<GlassCard size="sm" delay={delay} isDark={isDark}>
|
|
<div className="flex items-center gap-4">
|
|
<div
|
|
className="w-12 h-12 rounded-2xl flex items-center justify-center"
|
|
style={{ backgroundColor: `${color}20` }}
|
|
>
|
|
<span style={{ color }}>{icon}</span>
|
|
</div>
|
|
<div>
|
|
<p className={`text-sm ${isDark ? 'text-white/50' : 'text-slate-500'}`}>{label}</p>
|
|
<p className={`text-2xl font-bold ${isDark ? 'text-white' : 'text-slate-900'}`}>{value}</p>
|
|
</div>
|
|
</div>
|
|
</GlassCard>
|
|
)
|
|
}
|