Iceshrimp.NET/Iceshrimp.Frontend/Components/ProfileInfo.razor
2024-11-20 00:48:29 +01:00

103 lines
No EOL
3.1 KiB
Text

@using Iceshrimp.Frontend.Localization
@using Iceshrimp.Shared.Schemas.Web
@using Microsoft.Extensions.Localization
@using Iceshrimp.Assets.PhosphorIcons
@inject IStringLocalizer<Localization> Loc;
<div class="profile-info">
<div class="badges">
@switch (UserProfile.Role)
{
case Role.Moderator:
<span class="badge">
<Icon Name="Icons.ShieldWarning" Size="1.3em"/>
@Loc["Moderator"]
</span>
break;
case Role.Admin:
<span class="badge">
<Icon Name="Icons.ShieldStar" Size="1.3em"/>
@Loc["Admin"]
</span>
break;
case Role.None:
break;
default:
throw new ArgumentOutOfRangeException();
}
@if (User.IsBot)
{
<span class="badge">
<Icon Name="Icons.Robot" Size="1.3em"/>
@Loc["Automated"]
</span>
}
@if (UserProfile.IsLocked)
{
<span class="badge">
<Icon Name="Icons.Lock" Size="1.3em"/>
@Loc["Private"]
</span>
}
</div>
@if (UserProfile.Bio != null)
{
<div class="bio">
<MfmText Text="@UserProfile.Bio" Emoji="@Emojis"/>
</div>
}
<div class="data">
@if (UserProfile.Birthday != null)
{
<div class="birthday field">
<span class="field-name">
<Icon Name="Icons.Balloon" Size="1.3em"/>
@Loc["Birthday"]
</span>
<span class="field-value">@UserProfile.Birthday</span>
</div>
}
@if (UserProfile.Location != null)
{
<div class="location field">
<span class="field-name">
<Icon Name="Icons.MapPin" Size="1.3em"/>
@Loc["Location"]
</span>
<span class="field-value">@UserProfile.Location</span>
</div>
}
</div>
@if (UserProfile.Fields != null)
{
<div class="fields">
@foreach (var field in UserProfile.Fields)
{
<ProfileInfoField Field="field" Emojis="@Emojis"/>
}
</div>
}
<div class="metadata">
<div class="section">
<div class="field-data">
@UserProfile.Followers
</div>
<div class="field-text">
@Loc["Followers"]
</div>
</div>
<div class="section">
<div class="field-data">
@UserProfile.Following
</div>
<div class="field-text">
@Loc["Following"]
</div>
</div>
</div>
</div>
@code {
[Parameter] [EditorRequired] public required UserResponse User { get; set; }
[Parameter] [EditorRequired] public required UserProfileResponse UserProfile { get; set; }
[Parameter] [EditorRequired] public required List<EmojiResponse> Emojis { get; set; }
}