Files
frontend/src/screens/message/components/ChatScreen/MorePanel.tsx

43 lines
1.3 KiB
TypeScript
Raw Normal View History

/**
*
*/
import React from 'react';
import { View, TouchableOpacity } from 'react-native';
import { MaterialCommunityIcons } from '@expo/vector-icons';
import { Text } from '../../../../components/common';
import { chatScreenStyles as styles } from './styles';
import { MORE_ACTIONS } from './constants';
import { MorePanelProps } from './types';
export const MorePanel: React.FC<MorePanelProps> = ({
onAction,
disabledActionIds = [],
}) => {
const disabledSet = new Set(disabledActionIds);
return (
<View style={styles.panelContainer}>
<View style={styles.moreGrid}>
{MORE_ACTIONS.map((action) => {
const disabled = disabledSet.has(action.id);
return (
<TouchableOpacity
key={action.id}
style={[styles.moreItem, disabled ? { opacity: 0.45 } : null]}
onPress={() => onAction(action.id)}
disabled={disabled}
>
<View style={styles.moreIconContainer}>
<MaterialCommunityIcons name={action.icon as any} size={28} color={action.color} />
</View>
<Text style={styles.moreItemText}>{action.name}</Text>
</TouchableOpacity>
);
})}
</View>
</View>
);
};
export default MorePanel;