From e1cb1a81a301d1dccc737fc5dfce232ba4b7cc04 Mon Sep 17 00:00:00 2001 From: 6d486f49 <76097bcc@gmail.com> Date: Fri, 3 Jul 2026 13:48:14 -0400 Subject: [PATCH] ... --- Chrono/Server/Components/Pages/DeckBuilder.razor | 14 ++++++++++++-- .../Server/Components/Pages/DeckBuilder.razor.css | 8 +++++--- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/Chrono/Server/Components/Pages/DeckBuilder.razor b/Chrono/Server/Components/Pages/DeckBuilder.razor index c8b9ef3..9d8d400 100644 --- a/Chrono/Server/Components/Pages/DeckBuilder.razor +++ b/Chrono/Server/Components/Pages/DeckBuilder.razor @@ -83,7 +83,7 @@ { var count = CountInDeck(card.Name); var maxed = count >= 3; -
@@ -314,7 +314,13 @@ } } - private int CountInDeck(string name) => deckCards.Count(c => c == name); + private Dictionary _deckCounts = new(); + + private void RebuildDeckCounts() => + _deckCounts = deckCards.GroupBy(n => n).ToDictionary(g => g.Key, g => g.Count()); + + private int CountInDeck(string name) => + _deckCounts.TryGetValue(name, out var c) ? c : 0; protected override async Task OnParametersSetAsync() { @@ -339,23 +345,27 @@ deckNotes = deck.Notes ?? ""; deckCards = new List(deck.Cards); divers = new List(deck.Divers); + RebuildDeckCounts(); } private void AddCard(CardData card) { if (CountInDeck(card.Name) >= 3) return; deckCards.Add(card.Name); + RebuildDeckCounts(); } private void RemoveCard(string name) { var idx = deckCards.LastIndexOf(name); if (idx >= 0) deckCards.RemoveAt(idx); + RebuildDeckCounts(); } private void ClearDeck() { deckCards.Clear(); + RebuildDeckCounts(); } private void OpenDiverPicker(int slot) diff --git a/Chrono/Server/Components/Pages/DeckBuilder.razor.css b/Chrono/Server/Components/Pages/DeckBuilder.razor.css index b896909..25f1e1b 100644 --- a/Chrono/Server/Components/Pages/DeckBuilder.razor.css +++ b/Chrono/Server/Components/Pages/DeckBuilder.razor.css @@ -261,7 +261,7 @@ background: var(--bg-surface); border: 2px solid transparent; transition: transform 0.18s ease, box-shadow 0.18s ease, border-color 0.18s ease; - aspect-ratio: 5 / 8; + height: 210px; } .browser-card:hover { @@ -289,7 +289,7 @@ .browser-card-img { position: relative; width: 100%; - padding-bottom: 140%; + height: calc(100% - 26px); overflow: hidden; background: #0e0e22; } @@ -340,13 +340,15 @@ .browser-card-name { font-size: 0.7rem; font-weight: 600; - padding: 0.3rem 0.45rem; + padding: 0 0.45rem; background: var(--bg-elevated); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: var(--text-primary); letter-spacing: 0.01em; + height: 26px; + line-height: 26px; } /* ── Deck Panel ── */