{{-- Chama loadEvents em paralelo --}}

Olá, {{ explode(' ', auth()->user()->name)[0] }}

Continue sua jornada de aprendizado

{{-- Botão Atualizar + Último Sincronismo --}} @if($moodleConnected) @endif
Minhas Compras Meus Dados Financeiro @if($moodleConnected) @endif
@include('livewire.aluno._modal-suporte')
@if($notificacoesNaoLidas > 0) {{ $notificacoesNaoLidas > 99 ? '99+' : $notificacoesNaoLidas }} @endif Notificações @if($moodleConnected) @endif
{{-- Último sincronismo (mobile only) --}} @if($moodleConnected && $lastSync)
Sincronizado às {{ $lastSync }}
@endif
{{-- Banners de Avisos Urgentes/Importantes/Informativos --}} @if(count($avisosDestaque) > 0)
@foreach($avisosDestaque as $destaque) @php $av = $destaque['aviso'] ?? null; @endphp @if($av)
@if($av['nivel_urgencia'] === 'urgente') 🚨 @elseif($av['nivel_urgencia'] === 'importante') ⚠️ @elseif($av['nivel_urgencia'] === 'informativo') ℹ️ @else 📢 @endif

{{ $av['titulo'] }}

{!! $av['mensagem'] !!}
Ver
@endif @endforeach
@endif {{-- Erro global --}} @if($hasError)

{{ $errorMessage }}

@endif

Meus Cursos

@if(!$loadingCourses && count($courses) > 0 && $moodleConnected) @endif
{{-- SKELETON LOADING --}} @if($loadingCourses)
@for($i = 0; $i < 3; $i++)
@endfor
@else {{-- CURSOS CARREGADOS --}}
@forelse($courses as $index => $course) @php $progress = $progressData[$course['id']] ?? 0; // Imagem: SEMPRE prioriza local (storage) para não depender de sessão Moodle $courseImage = $course['courseimage_local'] ?? null; // Gradiente consistente por ID do curso (não muda nos re-renders) $gradients = [ 'from-indigo-500 to-purple-600', 'from-blue-500 to-cyan-600', 'from-emerald-500 to-teal-600', 'from-orange-500 to-rose-600', 'from-violet-500 to-fuchsia-600', 'from-sky-500 to-indigo-600', ]; // Extrai apenas números do ID para o cálculo do gradiente $courseIdNum = is_numeric($course['id']) ? (int)$course['id'] : (int)filter_var($course['id'], FILTER_SANITIZE_NUMBER_INT); $gradient = $gradients[$courseIdNum % count($gradients)]; // Cor da barra de progresso $progressColor = $progress >= 100 ? 'from-emerald-400 to-green-500' : ($progress >= 50 ? 'from-blue-400 to-indigo-500' : 'from-amber-400 to-orange-500'); @endphp
@if($courseImage) {{ $course['fullname'] }} @endif
📚
@if($progress >= 100)
Concluído
@elseif($progress >= 50)
Em andamento
@else
Iniciando
@endif
{{ $progress }}% concluído

{{ $course['fullname'] }}

Progresso

{{ $progress }}%

Status

@if($progress >= 100) ✓ Completo @elseif($progress >= 50) → Ativo @else ◦ Início @endif

{{ $progress >= 100 ? '✓ Revisar Conteúdo' : 'Continuar Estudando' }}
@empty
📚

Nenhum curso encontrado

Você ainda não está matriculado em nenhum curso. Realize a compra ou matrícula.

Realizar Matrícula
@endforelse
@endif
@if($moodleConnected)

Próximos Eventos

@if($loadingEvents) {{-- Skeleton eventos --}}
@for($i = 0; $i < 2; $i++)
@endfor
@elseif(count($upcomingEvents) > 0)
@foreach($upcomingEvents as $event) @php $eventDate = \Carbon\Carbon::createFromTimestamp($event['timestart']); $daysRemaining = now()->diffInDays($eventDate, false); // Cor consistente por ID do evento $eventColors = [ ['bar' => 'from-blue-500 to-cyan-500', 'badge' => 'bg-blue-100 text-blue-700 dark:bg-blue-900/40 dark:text-blue-300', 'date' => 'from-blue-500 to-cyan-500'], ['bar' => 'from-purple-500 to-pink-500', 'badge' => 'bg-purple-100 text-purple-700 dark:bg-purple-900/40 dark:text-purple-300', 'date' => 'from-purple-500 to-pink-500'], ['bar' => 'from-emerald-500 to-teal-500', 'badge' => 'bg-emerald-100 text-emerald-700 dark:bg-emerald-900/40 dark:text-emerald-300', 'date' => 'from-emerald-500 to-teal-500'], ['bar' => 'from-orange-500 to-rose-500', 'badge' => 'bg-orange-100 text-orange-700 dark:bg-orange-900/40 dark:text-orange-300', 'date' => 'from-orange-500 to-rose-500'], ]; $color = $eventColors[($event['id'] ?? $loop->index) % count($eventColors)]; @endphp
{{ $eventDate->translatedFormat('M') }}
{{ $eventDate->format('d') }}

{{ $event['name'] }}

{{ $eventDate->format('H:i') }} @if($daysRemaining >= 0) {{ $daysRemaining == 0 ? 'Hoje' : ($daysRemaining == 1 ? 'Amanhã' : "Em {$daysRemaining} dias") }} @endif
@endforeach
@else

Nenhum evento nos próximos 30 dias.

@endif
@endif {{-- fim do moodleConnected para eventos --}} @if(count($avisosModais) > 0) @endif