@props([ 'card' => [], 'title' => '', 'unitsSuffix' => false, 'periodLabel' => '', ]) @php $card = is_array($card) ? $card : []; $hasTarget = (bool) ($card['has_target'] ?? false); $status = $hasTarget ? (string) ($card['status'] ?? 'neutral') : 'green'; $percentage = (int) ($card['percentage'] ?? 0); $circlePercent = $hasTarget ? min(max($percentage, 0), 100) : 100; $cardTitle = $title !== '' ? $title : (string) ($card['label'] ?? ''); $displayActual = (string) ($card['display_actual'] ?? '0'); $displayTarget = (string) ($card['display_target'] ?? 'No target'); $centerValue = $hasTarget ? $percentage.'%' : $displayActual; $radius = 54; $stroke = 12; $circumference = 2 * M_PI * $radius; $strokeDashoffset = $circumference * (1 - ($circlePercent / 100)); $ringClass = match ($status) { 'red' => 'text-red-400', 'yellow' => 'text-amber-400', 'green' => 'text-emerald-400', default => 'text-slate-500', }; $percentTextClass = match ($status) { 'red' => 'text-red-300', 'yellow' => 'text-amber-300', 'green' => 'text-emerald-300', default => 'text-slate-300', }; @endphp