import React from "react"; import { View, Text, TouchableOpacity, StyleSheet, Dimensions, ScrollView, } from "react-native"; import { Ionicons } from "@expo/vector-icons"; import { router } from "expo-router"; const { width } = Dimensions.get("window"); // Sample Screen Components const HomeScreen = () => ( Selamat Datang! Ini adalah halaman utama aplikasi Anda ); const SearchScreen = () => ( Search Screen Cari apa yang Anda butuhkan ); const ProfileScreen = () => ( Profile Screen Informasi profil pengguna ); const NotificationScreen = () => ( {Array.from({ length: 10 }).map((_, index) => ( Notifications Notifikasi terbaru Anda ))} ); // Custom Tab Component const CustomTab = ({ icon, label, isActive, onPress }: any) => ( {label} {isActive && } ); // Main Custom Tab Navigator const CustomTabNavigator = () => { const [activeTab, setActiveTab] = React.useState( 'home' ); const [showHome, setShowHome] = React.useState(true); const tabs = [ { id: "search", icon: "search-outline", activeIcon: "search", label: "Event", component: SearchScreen, path: "/event", }, { id: "notifications", icon: "notifications-outline", activeIcon: "notifications", label: "Forum", component: NotificationScreen, path: "/forum", }, { id: "profile", icon: "person-outline", activeIcon: "person", label: "Katalog", component: ProfileScreen, path: "/profile", }, ]; // Function untuk handle tab press const handleTabPress = (tabId: string) => { setActiveTab(tabId); setShowHome(false); // Hide home when any tab is pressed }; // Determine which component to show const getActiveComponent = () => { if (showHome || activeTab === "home") { return HomeScreen; } // const selectedTab = tabs.find((tab) => tab.id === activeTab); // return selectedTab ? selectedTab.component : HomeScreen; return HomeScreen }; const ActiveComponent = getActiveComponent(); return ( {/* Content Area */} {/* Custom Tab Bar */} {tabs.map((e) => ( { handleTabPress(e.id); router.push(e.path as any); }} /> ))} ); }; const styles = StyleSheet.create({ container: { flex: 1, backgroundColor: "#f5f5f5", }, content: { flex: 1, }, screen: { flex: 1, justifyContent: "center", alignItems: "center", padding: 20, }, screenTitle: { fontSize: 28, fontWeight: "bold", color: "#333", marginBottom: 10, }, screenText: { fontSize: 16, color: "#666", textAlign: "center", }, tabBar: { backgroundColor: "#fff", paddingBottom: 20, paddingTop: 10, shadowColor: "#000", shadowOffset: { width: 0, height: -2, }, shadowOpacity: 0.1, shadowRadius: 3, elevation: 5, }, tabContainer: { flexDirection: "row", justifyContent: "space-around", alignItems: "center", paddingHorizontal: 20, }, tabItem: { alignItems: "center", justifyContent: "center", paddingVertical: 8, paddingHorizontal: 12, minWidth: width / 5, position: "relative", }, activeTab: { transform: [{ scale: 1.05 }], }, iconContainer: { padding: 8, borderRadius: 20, marginBottom: 4, }, activeIconContainer: { backgroundColor: "#007AFF", shadowColor: "#007AFF", shadowOffset: { width: 0, height: 2, }, shadowOpacity: 0.3, shadowRadius: 4, elevation: 4, }, tabLabel: { fontSize: 12, color: "#666", fontWeight: "500", }, activeTabLabel: { color: "#007AFF", fontWeight: "600", }, activeIndicator: { position: "absolute", bottom: -2, width: 4, height: 4, borderRadius: 2, backgroundColor: "#007AFF", }, }); export default CustomTabNavigator;