Files
frontend/src/screens/message/components/ChatScreen/MorePanel.tsx
lafay 4ee3079b9f
All checks were successful
Frontend CI / build-and-push-web (push) Successful in 8m15s
Frontend CI / ota-android (push) Successful in 10m56s
Frontend CI / build-android-apk (push) Successful in 1h3m22s
feat(Theme): enhance theming and UI consistency across components
- Updated app.json to set userInterfaceStyle to automatic for improved theme adaptability.
- Refactored layout components to utilize useAppColors for dynamic theming, ensuring consistent color usage.
- Introduced SystemChrome component to manage system UI background color based on theme.
- Enhanced TabsLayout, ProfileStackLayout, and other components to leverage new theming structure.
- Improved QRCodeScanner, SearchBar, and CommentItem styles to align with the updated theme system.
- Consolidated styles in SystemMessageItem and TabBar for better maintainability and visual coherence.
2026-03-25 05:16:54 +08:00

44 lines
1.3 KiB
TypeScript

/**
* 更多功能面板组件
*/
import React from 'react';
import { View, TouchableOpacity } from 'react-native';
import { MaterialCommunityIcons } from '@expo/vector-icons';
import { Text } from '../../../../components/common';
import { useChatScreenStyles } from './styles';
import { MORE_ACTIONS } from './constants';
import { MorePanelProps } from './types';
export const MorePanel: React.FC<MorePanelProps> = ({
onAction,
disabledActionIds = [],
}) => {
const styles = useChatScreenStyles();
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;