<?php
/**
 * Reusable rating badge component.
 * Expects $rating array from UserRating::getAverageForUser() or null.
 */
$rating = $rating ?? null;
$stars = '';
$count = 0;
$average = 0;
$hasRating = false;

if ($rating && isset($rating['average']) && isset($rating['count']) && $rating['count'] > 0) {
    $hasRating = true;
    $average = round((float)$rating['average'], 1);
    $count = (int)$rating['count'];
    $intPart = (int)$average;
    $stars = str_repeat('★', $intPart) . str_repeat('☆', 5 - $intPart);
}
?>

<?php if ($hasRating): ?>
    <a href="<?= $profileUrl ?? '#' ?>" class="inline-flex items-center gap-1 rounded-full border border-gray-200 dark:border-gray-600 bg-white dark:bg-gray-800 px-2.5 py-1 text-sm text-gray-700 dark:text-gray-300 hover:border-primary-300 dark:hover:border-primary-600 hover:text-primary-600 dark:hover:text-primary-400 transition-colors" title="<?= Lang::get('view_all_reviews') ?>">
        <span class="text-yellow-400 leading-none"><?= $stars ?></span>
        <span class="font-medium"><?= $average ?></span>
        <span class="text-xs">(<?= $count ?>)</span>
    </a>
<?php else: ?>
    <span class="inline-flex items-center rounded-full border border-gray-200 dark:border-gray-600 bg-white dark:bg-gray-800 px-2.5 py-1 text-sm text-gray-500 dark:text-gray-400"><?= Lang::get('no_ratings') ?></span>
<?php endif; ?>
