From 887630365ff0531a0556cb71a6b1be0956c41d06 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 12 Jan 2026 08:57:51 +0000 Subject: feat(deck): show due card count on deck list page Display a badge with the number of cards due for study today next to each deck name on the home page. The count is fetched along with deck data from the API to minimize additional network requests. --- src/client/atoms/decks.ts | 1 + src/client/pages/DeckDetailPage.test.tsx | 1 + src/client/pages/HomePage.test.tsx | 4 ++++ src/client/pages/HomePage.tsx | 23 +++++++++++++++-------- 4 files changed, 21 insertions(+), 8 deletions(-) (limited to 'src/client') diff --git a/src/client/atoms/decks.ts b/src/client/atoms/decks.ts index 57abef4..e9b0d03 100644 --- a/src/client/atoms/decks.ts +++ b/src/client/atoms/decks.ts @@ -6,6 +6,7 @@ export interface Deck { name: string; description: string | null; newCardsPerDay: number; + dueCardCount: number; createdAt: string; updatedAt: string; } diff --git a/src/client/pages/DeckDetailPage.test.tsx b/src/client/pages/DeckDetailPage.test.tsx index 402ecd4..b138a0b 100644 --- a/src/client/pages/DeckDetailPage.test.tsx +++ b/src/client/pages/DeckDetailPage.test.tsx @@ -70,6 +70,7 @@ const mockDeck = { name: "Japanese Vocabulary", description: "Common Japanese words", newCardsPerDay: 20, + dueCardCount: 0, createdAt: "2024-01-01T00:00:00Z", updatedAt: "2024-01-01T00:00:00Z", }; diff --git a/src/client/pages/HomePage.test.tsx b/src/client/pages/HomePage.test.tsx index 4921e22..8946fcf 100644 --- a/src/client/pages/HomePage.test.tsx +++ b/src/client/pages/HomePage.test.tsx @@ -84,6 +84,7 @@ const mockDecks = [ name: "Japanese Vocabulary", description: "Common Japanese words", newCardsPerDay: 20, + dueCardCount: 5, createdAt: "2024-01-01T00:00:00Z", updatedAt: "2024-01-01T00:00:00Z", }, @@ -92,6 +93,7 @@ const mockDecks = [ name: "Spanish Verbs", description: null, newCardsPerDay: 10, + dueCardCount: 0, createdAt: "2024-01-02T00:00:00Z", updatedAt: "2024-01-02T00:00:00Z", }, @@ -239,6 +241,7 @@ describe("HomePage", () => { name: "No Description Deck", description: null, newCardsPerDay: 20, + dueCardCount: 0, createdAt: "2024-01-01T00:00:00Z", updatedAt: "2024-01-01T00:00:00Z", }; @@ -312,6 +315,7 @@ describe("HomePage", () => { name: "New Deck", description: "A new deck", newCardsPerDay: 20, + dueCardCount: 0, createdAt: "2024-01-03T00:00:00Z", updatedAt: "2024-01-03T00:00:00Z", }; diff --git a/src/client/pages/HomePage.tsx b/src/client/pages/HomePage.tsx index e0e9e9e..ad6ece4 100644 --- a/src/client/pages/HomePage.tsx +++ b/src/client/pages/HomePage.tsx @@ -57,14 +57,21 @@ function DeckList({ >
- -

- {deck.name} -

- +
+ +

+ {deck.name} +

+ + {deck.dueCardCount > 0 && ( + + {deck.dueCardCount} + + )} +
{deck.description && (

{deck.description} -- cgit v1.2.3-70-g09d2