@include('revision.partials.page-intro', [
'eyebrow' => 'Progress',
'title' => auth()->id() === $targetUser->id ? 'My Study Progress' : $targetUser->name . "'s Study Progress",
'description' => 'See what has been studied, what is going well, and what needs another pass.',
'tone' => 'brand',
])
@if (auth()->user()->can('revision.progress.view_child') && $students->isNotEmpty())
@endif
@include('revision.partials.stat-card', ['label' => 'Questions Done', 'value' => number_format($totalQuestions), 'icon' => 'fa-solid fa-list-check'])
@include('revision.partials.stat-card', ['label' => 'Accuracy', 'value' => $overallAccuracy . '%', 'icon' => 'fa-solid fa-bullseye', 'valueClass' => $overallAccuracy >= 70 ? 'text-green-600' : ($overallAccuracy >= 50 ? 'text-amber-600' : 'text-red-600')])
@include('revision.partials.stat-card', ['label' => 'Flashcards Reviewed', 'value' => $totalFlashcards, 'icon' => 'fa-solid fa-layer-group'])
@include('revision.partials.stat-card', ['label' => 'Study Time', 'value' => floor($totalStudyTime / 3600) . 'h ' . floor(($totalStudyTime % 3600) / 60) . 'm', 'icon' => 'fa-regular fa-clock'])
@include('revision.partials.stat-card', ['label' => 'Spanish Words Reviewed', 'value' => number_format($spanishWordsReviewed), 'icon' => 'fa-solid fa-language'])
@include('revision.partials.stat-card', ['label' => 'Spanish Attempts', 'value' => number_format($spanishAttempts), 'icon' => 'fa-solid fa-repeat'])
@include('revision.partials.stat-card', ['label' => 'Spanish Accuracy', 'value' => $spanishAccuracy . '%', 'icon' => 'fa-solid fa-bullseye', 'valueClass' => $spanishAccuracy >= 70 ? 'text-green-600' : ($spanishAccuracy >= 50 ? 'text-amber-600' : 'text-red-600')])
Questions
Exam-style answers and self-check review.
Flashcards
Fast recall and confidence-building review.
Spanish
Vocabulary practice, listening, and weak-word revision.
@include('revision.partials.section-heading', [
'title' => 'Questions By Subject',
'subtitle' => 'Accuracy across topics that have been studied.',
])
@if ($questionProgress->isEmpty())
@include('revision.partials.empty-state', [
'title' => 'No question sessions yet',
'message' => 'Start a practice session to see topic accuracy here.',
'icon' => 'fa-solid fa-list-check',
])
@else
@foreach ($questionProgress as $subjectName => $topics)
{{ $subjectName }}
@foreach ($topics as $p)
@php($acc = $p->questions_attempted > 0 ? (int) round(($p->questions_correct / $p->questions_attempted) * 100) : 0)
@include('revision.partials.progress-meter', [
'name' => $p->topic?->name ?? 'General',
'value' => $acc,
])
@endforeach
@endforeach
@endif
@include('revision.partials.section-heading', [
'title' => 'Flashcard Confidence',
'subtitle' => 'How steady recall is looking by subject.',
])
@if ($flashcardsBySubject->isEmpty())
@include('revision.partials.empty-state', [
'title' => 'No flashcard sessions yet',
'message' => 'Run a flashcard round to build confidence tracking.',
'icon' => 'fa-solid fa-layer-group',
])
@else
@foreach ($flashcardsBySubject as $subjectName => $stats)
{{ $subjectName }}
{{ $stats['reviewed'] }} reviewed
Mastered: {{ $stats['mastered'] }}
Avg confidence: {{ $stats['avg_confidence'] }}/5
@endforeach
@endif
@include('revision.partials.section-heading', [
'title' => 'Spanish Topics',
'subtitle' => 'Progress and accuracy across vocab groups.',
])
@if ($spanishByTopic->isEmpty())
@include('revision.partials.empty-state', [
'title' => 'No Spanish sessions yet',
'message' => 'Start a Spanish session to track vocab progress here.',
'icon' => 'fa-solid fa-language',
])
@else
@foreach ($spanishByTopic as $topicName => $stats)
{{ $topicName }}
{{ $stats['words'] }} words
Attempts: {{ $stats['attempts'] }}
Accuracy: {{ $stats['accuracy'] }}%
@endforeach
@endif
@include('revision.partials.section-heading', [
'title' => 'Recent Study Sessions',
'subtitle' => 'Latest sessions across all study modes.',
])
@if ($recentSessions->isEmpty())
@include('revision.partials.empty-state', [
'title' => 'No study sessions yet',
'message' => 'Start revising to build a session history.',
'icon' => 'fa-solid fa-bullseye',
])
@else
| Date |
Study Mode |
Subject |
Completed |
Time |
@foreach ($recentSessions as $session)
| {{ $session->created_at->format('M j, g:ia') }} |
{{ ucfirst(str_replace('_', ' ', $session->activity_type)) }} |
{{ $session->subject?->name ?? 'Mixed' }} |
{{ $session->items_correct }}/{{ $session->items_completed }} |
{{ round($session->duration_seconds / 60) }}m |
@endforeach
@if ($recentSessions->hasPages())
{{ $recentSessions->links() }}
@endif
@endif