@props(['value', 'judged' => true]) @php // $judged: does "up" mean good here? Sales/Profit are judged (growth is good); // Purchases is not (more spend isn't inherently good or bad), so it stays neutral gray. $isUp = is_numeric($value) && $value > 0; $isDown = is_numeric($value) && $value < 0; $toneClasses = match (true) { $value === null => 'text-gray-400 dark:text-gray-500', $value === 'new' => 'text-indigo-600 dark:text-indigo-400 bg-indigo-50 dark:bg-indigo-500/10', ! $judged => 'text-gray-600 dark:text-gray-300 bg-gray-100 dark:bg-gray-700/50', $isUp => 'text-green-700 dark:text-green-400 bg-green-50 dark:bg-green-500/10', $isDown => 'text-red-700 dark:text-red-400 bg-red-50 dark:bg-red-500/10', default => 'text-gray-500 dark:text-gray-400 bg-gray-100 dark:bg-gray-700/50', }; @endphp @if ($value === null) vs previous period: n/a @elseif ($value === 'new') New activity @else @if ($isUp) @elseif ($isDown) @endif {{ $value > 0 ? '+' : '' }}{{ $value }}% vs previous period @endif