@props(['rating' => 0, 'size' => 'md', 'showNumber' => false, 'readonly' => false])

@php
    $rating = min(5, max(0, (float) $rating));
    $fullStars = floor($rating);
    $hasHalfStar = ($rating - $fullStars) >= 0.5;
    $emptyStars = 5 - $fullStars - ($hasHalfStar ? 1 : 0);
    
    $sizeClasses = [
        'sm' => 'text-sm',
        'md' => 'text-base',
        'lg' => 'text-lg',
        'xl' => 'text-xl',
    ];
    $iconSize = $sizeClasses[$size] ?? $sizeClasses['md'];
@endphp

<div class="star-rating {{ $iconSize }}" {{ $attributes }}>
    @for($i = 1; $i <= $fullStars; $i++)
        <i class="bi bi-star-fill text-warning"></i>
    @endfor
    
    @if($hasHalfStar)
        <i class="bi bi-star-half text-warning"></i>
    @endif
    
    @for($i = 1; $i <= $emptyStars; $i++)
        <i class="bi bi-star text-muted"></i>
    @endfor
    
    @if($showNumber)
        <span class="ms-2 text-muted">{{ number_format($rating, 1) }}</span>
    @endif
</div>

