import type { Colors } from '@/constants/Colors'; import { Ionicons } from '@expo/vector-icons'; import { GlassView, isLiquidGlassAvailable } from 'expo-glass-effect'; import React from 'react'; import { StyleSheet, Text, TouchableOpacity, View } from 'react-native'; export interface InfoCardProps { label: string; value: string; icon: keyof typeof Ionicons.glyphMap; colors: (typeof Colors)[keyof typeof Colors]; onPress?: () => void; clickable?: boolean; glassEffectStyle?: 'clear' | 'regular'; tintColor?: string; className?: string; } export const InfoCard: React.FC = ({ label, value, icon, colors, onPress, clickable = false, glassEffectStyle = 'clear', }) => { const isGlassAvailable = isLiquidGlassAvailable(); // 如果可点击且有onPress回调,使用TouchableOpacity包装 if (clickable && onPress) { return ( {isGlassAvailable ? ( {label} {value} ) : ( {label} {value} )} ); } // 不可点击的版本 return ( {isGlassAvailable ? ( {label} {value} ) : ( {label} {value} )} ); }; const styles = StyleSheet.create({ container: { flex: 1, }, infoCard: { flex: 1, borderRadius: 20, padding: 16, backgroundColor: '#fff', gap: 6, shadowColor: '#000', shadowOpacity: 0.04, shadowRadius: 8, shadowOffset: { width: 0, height: 4 }, elevation: 2, position: 'relative', overflow: 'hidden', // 保证玻璃边界圆角效果 }, infoCardArrow: { position: 'absolute', top: 12, right: 12, zIndex: 1, }, infoCardIcon: { width: 28, height: 28, borderRadius: 14, backgroundColor: '#EEF1FF', alignItems: 'center', justifyContent: 'center', }, infoCardLabel: { fontSize: 13, color: '#6B7280', marginTop: 8, }, infoCardValue: { fontSize: 16, fontWeight: '600', color: '#1F2933', }, }); export default InfoCard;