Progress
@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())
@foreach ($students as $student) @endforeach Switch
@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