import React from 'react'; import { View, StyleSheet, TouchableOpacity, ActivityIndicator } from 'react-native'; import { useSafeAreaInsets } from 'react-native-safe-area-context'; import { MaterialCommunityIcons } from '@expo/vector-icons'; import { Avatar, Text } from '../../../components/common'; import { colors, spacing, borderRadius, shadows } from '../../../theme'; interface GroupInfoSummaryCardProps { groupName?: string; groupAvatar?: string; groupNo?: string; groupDescription?: string; memberCountText?: string; } export const GroupInfoSummaryCard: React.FC = ({ groupName, groupAvatar, groupNo, groupDescription, memberCountText, }) => { return ( {groupName || '群聊'} {memberCountText || '- 人'} 群号:{groupNo || '-'} {groupDescription || '暂无群描述'} ); }; interface DecisionFooterProps { canAction: boolean; submitting: boolean; onReject: () => void; onApprove: () => void; processedText?: string; } export const DecisionFooter: React.FC = ({ canAction, submitting, onReject, onApprove, processedText = '该请求已处理', }) => { const insets = useSafeAreaInsets(); if (canAction) { return ( 拒绝 {submitting ? : 同意} ); } return ( {processedText} ); }; const styles = StyleSheet.create({ headerCard: { backgroundColor: colors.background.paper, borderRadius: borderRadius.lg, padding: spacing.lg, marginBottom: spacing.md, ...shadows.sm, }, groupHeader: { flexDirection: 'row', alignItems: 'center', }, groupInfo: { marginLeft: spacing.lg, flex: 1, }, groupName: { marginBottom: spacing.xs, fontWeight: '700', }, groupMeta: { flexDirection: 'row', alignItems: 'center', gap: spacing.xs, }, groupNoText: { marginTop: spacing.xs, }, descriptionContainer: { flexDirection: 'row', alignItems: 'flex-start', backgroundColor: colors.background.default, borderRadius: borderRadius.lg, padding: spacing.md, marginTop: spacing.md, }, groupDesc: { marginLeft: spacing.sm, flex: 1, lineHeight: 20, }, footer: { paddingHorizontal: spacing.lg, paddingTop: spacing.sm, flexDirection: 'row', backgroundColor: colors.background.default, }, btn: { flex: 1, height: 42, borderRadius: borderRadius.md, alignItems: 'center', justifyContent: 'center', }, reject: { marginRight: spacing.sm, backgroundColor: colors.error.light + '25', borderWidth: 1, borderColor: colors.error.light, }, approve: { marginLeft: spacing.sm, backgroundColor: colors.primary.main, }, statusBox: { alignItems: 'center', paddingTop: spacing.sm, backgroundColor: colors.background.default, }, });