From a7681357b5c2f107ed7cbd6530356ecca60e72a0 Mon Sep 17 00:00:00 2001 From: Matthieu Date: Mon, 24 Nov 2025 17:24:35 +0100 Subject: [PATCH] Refactor CardSearch component for improved mobile and desktop layouts --- src/components/CardSearch.tsx | 198 +++++++++++++++++++++++----------- 1 file changed, 133 insertions(+), 65 deletions(-) diff --git a/src/components/CardSearch.tsx b/src/components/CardSearch.tsx index 41a57f5..66269e8 100644 --- a/src/components/CardSearch.tsx +++ b/src/components/CardSearch.tsx @@ -617,79 +617,147 @@ const CardSearch = () => { )} {searchResults && searchResults.length > 0 && ( -
- {searchResults.map((card) => { - const currentFaceIndex = getCurrentFaceIndex(card.id); - const isMultiFaced = isDoubleFaced(card); - const inCollection = userCollection.get(card.id) || 0; - const isAddingThisCard = addingCardId === card.id; + <> + {/* Mobile: Horizontal list layout */} +
+ {searchResults.map((card) => { + const currentFaceIndex = getCurrentFaceIndex(card.id); + const isMultiFaced = isDoubleFaced(card); + const inCollection = userCollection.get(card.id) || 0; + const isAddingThisCard = addingCardId === card.id; - const displayName = isMultiFaced && card.card_faces - ? card.card_faces[currentFaceIndex]?.name || card.name - : card.name; + const displayName = isMultiFaced && card.card_faces + ? card.card_faces[currentFaceIndex]?.name || card.name + : card.name; - return ( -
-
- {getCardImageUri(card, currentFaceIndex) ? ( + return ( +
+ {/* Card image */} +
{displayName} - ) : ( - - )} - {isMultiFaced && ( - - )} - {inCollection > 0 && ( - - - x{inCollection} - - )} -
-
-

{displayName}

-

- {isMultiFaced && card.card_faces - ? card.card_faces[currentFaceIndex]?.type_line || card.type_line - : card.type_line} -

- {card.prices?.usd && ( -
${card.prices.usd}
- )} - )} - +
+ {/* Info */} +
+

{displayName}

+
+ {card.prices?.usd && ${card.prices.usd}} + {inCollection > 0 && ( + + + x{inCollection} + + )} +
+
+ {/* Action button */} +
+ +
-
- ); - })} -
+ ); + })} +
+ + {/* Desktop: Grid layout */} +
+ {searchResults.map((card) => { + const currentFaceIndex = getCurrentFaceIndex(card.id); + const isMultiFaced = isDoubleFaced(card); + const inCollection = userCollection.get(card.id) || 0; + const isAddingThisCard = addingCardId === card.id; + + const displayName = isMultiFaced && card.card_faces + ? card.card_faces[currentFaceIndex]?.name || card.name + : card.name; + + return ( +
+
+ {getCardImageUri(card, currentFaceIndex) ? ( + {displayName} + ) : ( + + )} + {isMultiFaced && ( + + )} + {inCollection > 0 && ( + + + x{inCollection} + + )} +
+
+

{displayName}

+

+ {isMultiFaced && card.card_faces + ? card.card_faces[currentFaceIndex]?.type_line || card.type_line + : card.type_line} +

+ {card.prices?.usd && ( +
${card.prices.usd}
+ )} + +
+
+ ); + })} +
+ )}