import React from "react"; import { ImageSourcePropType, StyleProp, ViewStyle, View, Text, TextStyle, useWindowDimensions, } from "react-native"; import { Image } from 'expo-image'; import Card from "../Card"; import { useTheme } from "../../../theme/ThemeContext"; import ProgressBar, { ProgressBarTextAlign, ProgressBarTextPosition, } from "../../ProgressBar/ProgressBar"; import CardHeader from "../CardHeader"; import CardFooter from "../CardFooter"; import LockOverlay from "../../LockOverlay/LockOverlay"; interface HorizontalDealCardProps { imageSource: ImageSourcePropType; variant?: "vertical" | "horizontal"; label?: string; labelStyle?: StyleProp; labelContainerStyle?: StyleProp; dealDescription?: string; dealDescriptionStyle?: StyleProp; dealProviderName?: string; dealProviderNameStyle?: StyleProp; dealPrice?: string; dealPriceStyle?: StyleProp; progressBar?: boolean; progressBarText?: string; progressBarTextPosition?: ProgressBarTextPosition; progressBarTextAlign?: ProgressBarTextAlign; progressColor?: string; progressWidth?: number; progressHeight?: number; remainingProgressColor?: string; progressValue?: number; onPress?: () => void; style?: StyleProp; width?: number | string; isRTL?: boolean; overlayVisible?: boolean; } const DealCard: React.FC = ({ imageSource, onPress, label, labelContainerStyle, labelStyle, dealDescription, dealDescriptionStyle, dealPrice, dealPriceStyle, dealProviderName, dealProviderNameStyle, progressBar, progressBarText, progressBarTextPosition, progressBarTextAlign, progressValue, progressHeight, progressWidth, remainingProgressColor, progressColor, style, width, variant = "horizontal", isRTL = false, overlayVisible = false, }) => { const {theme, isRTL: rtl} = useTheme(); isRTL = rtl; const { width: screenWidth } = useWindowDimensions(); const isVertical = variant === "vertical"; const imageSize = Math.min(110, 110); const cardPadding = 12 const fontSize = screenWidth < 360 ? 14 : 16; const calculatedProgressWidth = progressWidth || (typeof width === "number" ? width * 0.4 : screenWidth * 0.3); const containerFlexDirection = isVertical ? "column" : isRTL ? "row-reverse" : "row"; const textContainerStyle: ViewStyle = { flex: isVertical ? 0 : 1, ...(isVertical ? { paddingLeft: cardPadding, paddingRight: cardPadding } : isRTL ? { paddingLeft: cardPadding } : { paddingRight: cardPadding }), }; const renderDealPrice = (): React.ReactNode => { return ( {dealPrice} ); }; return ( {renderDealPrice()} {label && ( {label} )} {progressBar && ( )} ); }; export default DealCard;