mastery-meter.blade.php 1.2 KB

123456789101112131415161718192021222324252627282930
  1. @props([
  2. 'value' => 0,
  3. 'errorRate' => 0,
  4. 'label' => '掌握度',
  5. ])
  6. @php
  7. $percent = round(max(0, min(1, $value ?? 0)) * 100, 1);
  8. $errorPercent = round(max(0, min(1, $errorRate ?? 0)) * 100, 1);
  9. $tone = $percent >= 80 ? 'text-emerald-600' : ($percent >= 60 ? 'text-amber-600' : 'text-rose-600');
  10. @endphp
  11. <div class="rounded-xl border border-white/40 bg-white/70 shadow-sm backdrop-blur p-4">
  12. <div class="flex items-center justify-between mb-2">
  13. <div class="text-xs uppercase tracking-widest text-slate-500">{{ $label }}</div>
  14. <div class="text-lg font-semibold {{ $tone }}">{{ $percent }}%</div>
  15. </div>
  16. <div class="w-full h-2 rounded-full bg-slate-200 overflow-hidden">
  17. <div
  18. class="h-full rounded-full bg-gradient-to-r from-rose-400 via-amber-300 to-emerald-500 transition-all duration-500"
  19. style="width: {{ $percent }}%;"
  20. ></div>
  21. </div>
  22. <div class="mt-2 flex items-center justify-between text-[11px] text-slate-500">
  23. <span>错误率 {{ $errorPercent }}%</span>
  24. <span>
  25. {{ $percent >= 80 ? '稳固' : ($percent >= 60 ? '可提升' : '需巩固') }}
  26. </span>
  27. </div>
  28. </div>