From a08e4943fc46575beaf09564b293bafb56d47190 Mon Sep 17 00:00:00 2001
From: thesn10 <38666407+thesn10@users.noreply.github.com>
Date: Fri, 3 Jul 2026 13:03:09 +0200
Subject: [PATCH] Redesign ListingCard grid
---
app/src/components/ListingCard.tsx | 71 ++++++++++++++++++++++--------
1 file changed, 52 insertions(+), 19 deletions(-)
diff --git a/app/src/components/ListingCard.tsx b/app/src/components/ListingCard.tsx
index 13a45c4..ca8d878 100644
--- a/app/src/components/ListingCard.tsx
+++ b/app/src/components/ListingCard.tsx
@@ -1,11 +1,14 @@
import type { GestureResponderEvent } from "react-native";
import type { JSX } from "react";
-import { Pressable, View } from "react-native";
+import { useState } from "react";
+import { Pressable, StyleSheet, View } from "react-native";
import { useRouter } from "expo-router";
import { Button, Separator, Surface, Typography } from "heroui-native";
+import Svg, { Defs, RadialGradient, Rect, Stop } from "react-native-svg";
import type { Product } from "@/data/mock";
import { availabilityInfo } from "@/lib/status";
import { StatusChip } from "@/components/StatusChip";
+import { MonoText } from "@/components/MonoText";
import { useModals } from "@/state/modals";
interface ListingCardProps {
@@ -13,9 +16,24 @@ interface ListingCardProps {
variant?: "list" | "grid";
}
+function CardHighlightOverlay({ gradientId }: { gradientId: string }): JSX.Element {
+ return (
+
+ );
+}
+
export function ListingCard({ product, variant = "grid" }: ListingCardProps): JSX.Element {
const router = useRouter();
const { requestBuy } = useModals();
+ const [isHovered, setIsHovered] = useState(false);
const availability = availabilityInfo(product.qty);
const isOut = product.qty === 0;
@@ -28,8 +46,17 @@ export function ListingCard({ product, variant = "grid" }: ListingCardProps): JS
if (variant === "list") {
return (
-
-
+ setIsHovered(true)}
+ onHoverOut={() => setIsHovered(false)}
+ >
+
-
-
- {product.emoji}
+ setIsHovered(true)}
+ onHoverOut={() => setIsHovered(false)}
+ className="w-full p-1.5 md:w-1/2 lg:w-1/4"
+ >
+
+
+
+ {product.emoji}
-
- {product.name}
-
-
- {product.seller}
-
-
-
- {product.price}
+
+
+ {product.name}
+
+ {product.seller}
+
+
+ {product.price}
+