@namespace Shared.Components @if (Card != null) {
@if (HasImage) {
@Card.Name
}

@Card.Name

@Card.Category @if (Card.Cost.HasValue) { @Card.Cost } @if (Card.Attack.HasValue) { @Card.Attack } @if (Card.Health.HasValue) { @Card.Health } @if (Card.Speed != null) { @Card.Speed }
@if (Card.Syndicate != null) {
Faction @Card.Syndicate
} @if (Card.Description != null) {
@RenderCardDescription(Card.Description)
} @if (Card.Set != null) {
Set @Card.Set
} @if (Card.Artist != null) {
Artists @Card.Artist
} @if (Card.Rarity != null) {
Rarity @Card.Rarity
} @if (Card.Archetypes is { Count: > 0 }) {
Archetypes @string.Join(", ", Card.Archetypes)
} @if (Card.ImmortalizeWhen != null) {
Immortalize When @Card.ImmortalizeWhen
} @if (Card.HasImmortalize) {
Immortalizes To @foreach (var name in Card.ImmortalizeTo!) { var targetName = name; var target = LookupCard(targetName); if (target != null) { } else { @targetName } }
} @if (Card.ImmortalizeFrom != null) {
Immortalizes From @{ var fromCard = LookupCard(Card.ImmortalizeFrom); if (fromCard != null) { } else { @Card.ImmortalizeFrom } }
}
} @code { [Parameter] public CardData? Card { get; set; } [Parameter] public EventCallback OnClose { get; set; } [Parameter] public EventCallback OnSelectCard { get; set; } [Parameter] public RenderFragment? DescriptionRenderer { get; set; } private bool HasImage => Card?.ImageFile is { Length: > 0 } && Card.ImageFile != "placeholder.png"; private async Task Close() { await OnClose.InvokeAsync(); } private async Task SelectCard(CardData card) { await OnSelectCard.InvokeAsync(card); } private RenderFragment RenderCardDescription(string description) { if (DescriptionRenderer != null) return DescriptionRenderer(description); return builder => builder.AddContent(0, description); } private CardData? LookupCard(string cardName) { return CardDatabase.Cards.FirstOrDefault(c => string.Equals(c.Name, cardName, StringComparison.OrdinalIgnoreCase)); } }