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;
-
AddCard(card)"
title="@(count > 0 ? $"{card.Name} ({count}/3)" : card.Name)">
@@ -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 ── */