import React from "react"; import { createBottomTabNavigator } from "@react-navigation/bottom-tabs"; import { View, Text, StyleSheet, Platform } from "react-native"; import { Ionicons } from "@react-native-vector-icons/ionicons"; import GroupScreen from "../screens/GroupScreen"; import Profile from "../screens/profile/Profile"; const Tab = createBottomTabNavigator(); const TAB_CONFIG = { activeColor: "#000", inactiveColor: "#8e8e93", backgroundColor: "#fff", height: 70, iconSize: 26, }; // 1. Define a color map for active tabs const activeTabColors: { [key: string]: string } = { Home: "#ff7675", // A soft red Profile: "#74b9ff", // A nice blue Group: "#55efc4", // Your theme's green Settings: "#ffeaa7", // A gentle yellow }; // 2. Define a text color map for contrasting icon colors const activeIconColors: { [key: string]: string } = { Home: "#333", Profile: "#333", Group: "#333", Settings: "#e17055", } function HomeScreen() { return ( 🏠 Home ); } function SettingsScreen() { return ( ⚙️ Settings ); } export default function BottomTabs() { return ( ({ headerShown: false, tabBarStyle: styles.tabBar, tabBarLabel: ({ focused, color }) => !focused ? ( {route.name} ) : null, tabBarIcon: ({ focused }) => { let iconName: string = "home-outline"; // Determine icon based on route if (route.name === "Home") iconName = focused ? "home" : "home-outline"; else if (route.name === "Profile") iconName = focused ? "person" : "person-outline"; else if (route.name === "Settings") iconName = focused ? "settings" : "settings-outline"; else if (route.name === "Group") iconName = focused ? "people" : "people-outline"; // 3. Get the active background color and icon color from the maps const activeBackgroundColor = activeTabColors[route.name]; const activeIconColor = activeIconColors[route.name]; return ( ); }, })} > ); } const styles = StyleSheet.create({ screen: { flex: 1, justifyContent: "center", alignItems: "center", backgroundColor: "#f5f7fa", }, text: { fontSize: 20, fontWeight: "600", color: "#111", }, tabBar: { position: "absolute", bottom: 20, left: 20, right: 20, height: TAB_CONFIG.height, backgroundColor: TAB_CONFIG.backgroundColor, borderRadius: 20, shadowColor: "#000", shadowOpacity: 0.1, shadowOffset: { width: 0, height: 5 }, shadowRadius: 8, elevation: 10, paddingBottom: Platform.OS === "ios" ? 25 : 10, paddingTop: 10, marginHorizontal: 10, }, label: { fontSize: 12, marginBottom: 5, }, iconContainer: { justifyContent: "center", alignItems: "center", width: 50, // Reduced size for a sleeker look height: 50, // Reduced size marginTop: 10, borderRadius: 15, }, activeIconContainer: { // The default active style, background color is now applied dynamically elevation: 2, shadowColor: '#000', shadowOpacity: 0.1, shadowRadius: 5, }, });