import React from 'react' import { usePage } from '@inertiajs/react' import StudioLayout from '../../Layouts/StudioLayout' function MetricCard({ label, value }) { return (
{label}
{Number(value || 0).toFixed(1)}
) } export default function StudioGroupReputation() { const { props } = usePage() const reputation = props.reputation || {} const trustSignals = Array.isArray(props.trustSignals) ? props.trustSignals : [] const metrics = props.metrics || {} const topContributors = Array.isArray(reputation.top_contributors) ? reputation.top_contributors : [] const recentBadges = Array.isArray(reputation.recent_badges) ? reputation.recent_badges : [] const memberBadgeUnlocks = Array.isArray(reputation.member_badge_unlocks) ? reputation.member_badge_unlocks : [] return (

Trust signals

Public-safe labels that shape discovery and confidence.

{trustSignals.map((signal) => {signal.label})}
Contributors
{Number(reputation.counts?.contributors || 0)}
Member badges
{Number(reputation.counts?.member_badges || 0)}
{metrics.last_calculated_at ?
Last calculated {new Date(metrics.last_calculated_at).toLocaleString()}
: null}

Top contributors

Reputation summaries derived from visible collaboration history.

{topContributors.length > 0 ? topContributors.map((entry) => (
{entry.user?.avatar_url ? {entry.user?.name :
}
{entry.user?.name || entry.user?.username}
{entry.trusted_indicator ? Trusted : null}
{entry.summary || 'Contributor'}
{entry.counts?.releases || 0} releases • {entry.counts?.projects || 0} projects • {entry.counts?.credited_artworks || 0} artworks • {entry.counts?.review_actions || 0} reviews
{Array.isArray(entry.badges) && entry.badges.length > 0 ?
{entry.badges.map((badge) => {badge.label})}
: null}
)) :
No contributor reputation signals yet.
}

Group badges

{recentBadges.length > 0 ? recentBadges.map((badge) => (
{badge.label}
{badge.reason}
)) :
No group badges awarded yet.
}

Recent member badge unlocks

{memberBadgeUnlocks.length > 0 ? memberBadgeUnlocks.map((entry) => (
{entry.user?.name || entry.user?.username}
{entry.badge?.label}
{entry.badge?.reason}
)) :
No member badge unlocks yet.
}
) }