@props([ 'value' => null, 'label' => null, 'tone' => 'auto', 'icon' => 'auto', 'shape' => 'badge', 'dot' => false, ]) @php $shape = in_array($shape, ['badge', 'inline'], true) ? $shape : 'badge'; $resolvedTone = $tone; if ($tone === 'auto') { $numericValue = is_numeric($value) ? (float) $value : null; $resolvedTone = match (true) { $numericValue !== null && $numericValue > 0 => 'positive', $numericValue !== null && $numericValue < 0 => 'negative', is_string($value) && str_starts_with(trim($value), '+') => 'positive', is_string($value) && (str_starts_with(trim($value), '-') || str_starts_with(trim($value), '−')) => 'negative', default => 'neutral', }; } $resolvedTone = in_array($resolvedTone, ['positive', 'negative', 'neutral', 'primary'], true) ? $resolvedTone : 'neutral'; $resolvedIcon = $icon === 'auto' ? match ($resolvedTone) { 'positive' => 'trend-up', 'negative' => 'trend-down', default => 'minus', } : $icon; @endphp class([ 'ui-performance-badge', 'ui-performance-badge--'.$resolvedTone, 'ui-performance-badge--'.$shape, 'ui-performance-badge--dot' => $dot, ]) }}> @if ($dot) @elseif ($resolvedIcon && $resolvedIcon !== 'none') @endif @if ($value !== null && $value !== '') {{ $value }} @endif @if ($label !== null && $label !== '') {{ $label }} @endif {{ $slot }}