@props([ 'value' => 0, 'max' => 100, 'color' => 'primary', 'size' => 'md', 'showLabel' => false, 'animated' => true, 'gradient' => false, ]) @php $percentage = $max > 0 ? min(100, ($value / $max) * 100) : 0; $sizeClasses = match($size) { 'sm' => 'h-1.5', 'lg' => 'h-4', default => 'h-2.5', }; $colorClasses = match($color) { 'success' => 'bg-success', 'warning' => 'bg-warning', 'error' => 'bg-error', 'info' => 'bg-info', default => 'bg-primary', }; $gradientClasses = match($color) { 'success' => 'bg-gradient-to-r from-green-400 to-emerald-500', 'warning' => 'bg-gradient-to-r from-yellow-400 to-orange-500', 'error' => 'bg-gradient-to-r from-red-400 to-rose-500', 'info' => 'bg-gradient-to-r from-blue-400 to-cyan-500', default => 'bg-gradient-to-r from-primary to-secondary', }; @endphp
merge(['class' => 'w-full']) }}> @if($showLabel)
{{ $slot }} {{ number_format($percentage, 0) }}%
@endif
@if($animated && $percentage > 0)
@endif
@once @push('styles') @endpush @endonce