Vibe deck improvements
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
@namespace Shared.Components
|
||||
@using Chrono.Model
|
||||
|
||||
<div class="deck-card-row">
|
||||
@foreach (var group in Cards.GroupBy(x => x))
|
||||
{
|
||||
var cardName = group.Key;
|
||||
var count = group.Count();
|
||||
var card = LookupCard(cardName);
|
||||
<button class="mini-card-btn @(count > 1 ? "is-stacked" : "")"
|
||||
@onclick="() => SelectCard(card)">
|
||||
<div class="mini-card-stack">
|
||||
@for (var i = 0; i < (count > 1 ? Math.Min(count, 3) : 1); i++)
|
||||
{
|
||||
<div class="mini-card" style="--stack-index: @i">
|
||||
<div class="mini-card-img">
|
||||
<img src="@(card?.ImagePath ?? "cards/placeholder.png")" alt="@cardName"
|
||||
loading="lazy"/>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
@if (count > 1)
|
||||
{
|
||||
<div class="mini-card-count">@count</div>
|
||||
}
|
||||
</div>
|
||||
</button>
|
||||
}
|
||||
</div>
|
||||
|
||||
@code {
|
||||
[Parameter, EditorRequired] public List<string> Cards { get; set; } = [];
|
||||
[Parameter] public EventCallback<CardData?> OnSelectCard { get; set; }
|
||||
|
||||
private async Task SelectCard(CardData? card) => await OnSelectCard.InvokeAsync(card);
|
||||
|
||||
private static readonly Dictionary<string, CardData> CardLookup = CardDatabase.Cards
|
||||
.Where(c => !string.IsNullOrWhiteSpace(c.Name))
|
||||
.GroupBy(c => c.Name, StringComparer.OrdinalIgnoreCase)
|
||||
.ToDictionary(g => g.Key, g => g.First(), StringComparer.OrdinalIgnoreCase);
|
||||
|
||||
private CardData? LookupCard(string cardName)
|
||||
{
|
||||
return CardLookup.GetValueOrDefault(cardName);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user