import type { GestureResponderEvent } from "react-native"; import type { JSX } from "react"; 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 { product: Product; 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; const openListing = () => router.push(`/listing/${product.id}`); const handleBuyPress = (event: GestureResponderEvent) => { event.stopPropagation(); requestBuy(product.id); }; if (variant === "list") { return ( setIsHovered(true)} onHoverOut={() => setIsHovered(false)} > {product.emoji} {product.priceNum} {product.cur} {product.name} {product.desc} ); } return ( setIsHovered(true)} onHoverOut={() => setIsHovered(false)} className="w-full md:w-[calc(50%-10px)] lg:w-[calc(25%-18px)]" > {product.emoji} {product.name} {product.seller} {product.price} ); }