diff --git a/app/(application)/coba/index.tsx b/app/(application)/coba/index.tsx
index f033548..7e1b43b 100644
--- a/app/(application)/coba/index.tsx
+++ b/app/(application)/coba/index.tsx
@@ -1,4 +1,3 @@
-/* eslint-disable @typescript-eslint/no-unused-vars */
import React from "react";
import {
View,
@@ -86,7 +85,7 @@ const CustomTabNavigator = () => {
activeIcon: "notifications",
label: "Forum",
component: NotificationScreen,
- path: "/(application)/(home-tabs)/forum",
+ path: "/forum",
},
{
id: "profile",
@@ -94,7 +93,7 @@ const CustomTabNavigator = () => {
activeIcon: "person",
label: "Katalog",
component: ProfileScreen,
- path: "/(application)/(home-tabs)/katalog",
+ path: "/profile",
},
];
@@ -102,7 +101,7 @@ const CustomTabNavigator = () => {
// Function untuk handle tab press
const handleTabPress = (tabId: string) => {
setActiveTab(tabId);
- // setShowHome(false); // Hide home when any tab is pressed
+ setShowHome(false); // Hide home when any tab is pressed
};
// Determine which component to show
@@ -110,8 +109,9 @@ const CustomTabNavigator = () => {
if (showHome || activeTab === "home") {
return HomeScreen;
}
- const selectedTab = tabs.find((tab) => tab.id === activeTab);
- return selectedTab ? selectedTab.component : HomeScreen;
+ // const selectedTab = tabs.find((tab) => tab.id === activeTab);
+ // return selectedTab ? selectedTab.component : HomeScreen;
+ return HomeScreen
};
const ActiveComponent = getActiveComponent();
@@ -135,7 +135,7 @@ const CustomTabNavigator = () => {
label={e.label}
isActive={activeTab === e.id && !showHome}
onPress={() => {
- // handleTabPress(e.id);
+ handleTabPress(e.id);
router.push(e.path as any);
}}
/>
diff --git a/components/_Interface/types.ts b/components/_Interface/types.ts
new file mode 100644
index 0000000..19ccbd4
--- /dev/null
+++ b/components/_Interface/types.ts
@@ -0,0 +1,13 @@
+import { Href } from "expo-router";
+
+export { ITabs };
+
+interface ITabs {
+ id: string;
+ icon: string;
+ activeIcon: string;
+ label: string;
+ path: Href;
+ isActive: boolean;
+ disabled: boolean;
+}
diff --git a/screens/Authentication/RegisterView.tsx b/screens/Authentication/RegisterView.tsx
index f7db88d..317e788 100644
--- a/screens/Authentication/RegisterView.tsx
+++ b/screens/Authentication/RegisterView.tsx
@@ -8,7 +8,6 @@ import { MaterialCommunityIcons } from "@expo/vector-icons";
import { router } from "expo-router";
import { Text, View } from "react-native";
-
export default function RegisterView() {
return (
<>
@@ -44,16 +43,16 @@ export default function RegisterView() {
)}
/>
- {/* {
- console.log("Home clicked");
- router.push("/(application)/home");
- }}
- /> */}
+ {
+ console.log("Home clicked");
+ router.push("/(application)/coba");
+ }}
+ />
diff --git a/screens/Home/UiHome.tsx b/screens/Home/UiHome.tsx
index 0d0908b..4713d33 100644
--- a/screens/Home/UiHome.tsx
+++ b/screens/Home/UiHome.tsx
@@ -1,136 +1,26 @@
-/* eslint-disable no-unused-expressions */
+// import { ITabs } from "@/components/_Interface/types";
import Spacing from "@/components/_ShareComponent/Spacing";
import ViewWrapper from "@/components/_ShareComponent/ViewWrapper";
-import { AccentColor, MainColor } from "@/constants/color-palet";
-import { Ionicons } from "@expo/vector-icons";
-import { Href, router, useNavigation } from "expo-router";
+import { useNavigation } from "expo-router";
import React, { useEffect } from "react";
-import {
- Dimensions,
- StyleSheet,
- Text,
- TouchableOpacity,
- View,
-} from "react-native";
import Home_BottomFeatureSection from "./bottomFeatureSection";
import Home_ImageSection from "./imageSection";
+import TabSection from "./tabSection";
+import { tabsHome } from "./tabsList";
import Home_FeatureSection from "./topFeatureSection";
-interface Tabs {
- id: string;
- icon: string;
- activeIcon: string;
- label: string;
- path: Href;
- isActive: boolean;
- disabled: boolean;
-}
-
-const { width } = Dimensions.get("window");
-
export default function NewHomeView() {
- const tabs: Tabs[] = [
- {
- id: "forum",
- icon: "chatbubble-ellipses-outline",
- activeIcon: "chatbubble-ellipses",
- label: "Forum",
- path: "/forum",
- isActive: true,
- disabled: false,
- },
- {
- id: "marketplace",
- icon: "cart-outline",
- activeIcon: "cart",
- label: "Marketplace",
- path: "/marketplace",
- isActive: false,
- disabled: true,
- },
- {
- id: "maps",
- icon: "map-outline",
- activeIcon: "map",
- label: "Maps",
- path: "/maps",
- isActive: true,
- disabled: false,
- },
- {
- id: "profile",
- icon: "person-outline",
- activeIcon: "person",
- label: "Profile",
- path: "/profile",
- isActive: true,
- disabled: false,
- },
- ];
-
- const CustomTab = ({ icon, label, isActive, onPress, disabled }: any) => (
-
-
-
-
-
- {label}
-
- {isActive && }
-
- );
-
const navigation = useNavigation();
useEffect(() => {
- navigation.setOptions({
- // headerTitle: "HIPMI",
- // headerLeft: () => (
- // router.push("/(application)/user-search")}
- // />
- // ),
- // headerRight: () => (
- // router.push("/(application)/notifications")}
- // />
- // ),
- });
+ navigation.setOptions({});
}, [navigation]);
+
return (
<>
-
-
- {tabs.map((e) => (
- {
- e.disabled ? console.log("disabled") : router.push(e.path);
- }}
- />
- ))}
-
-
- }
- >
+ }>
+ {/* Content Image */}
@@ -145,74 +35,3 @@ export default function NewHomeView() {
>
);
}
-
-const styles = StyleSheet.create({
- tabBar: {
- backgroundColor: MainColor.darkblue,
- borderTopColor: AccentColor.blue,
- borderTopWidth: 1,
- // borderTopEndRadius: 10,
- // borderTopStartRadius: 10,
- // tintColor: MainColor.yellow
- // paddingBottom: 20,
- // paddingTop: 10,
- // shadowColor: AccentColor.blue,
- // shadowOffset: {
- // width: 0,
- // height: -2,
- // },
- // shadowOpacity: 0.9,
- // shadowRadius: 3,
- // elevation: 5,
- },
- tabContainer: {
- flexDirection: "row",
- justifyContent: "space-around",
- alignItems: "center",
- paddingHorizontal: 0,
- },
- 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: 10,
- color: "#666",
- fontWeight: "500",
- },
- activeTabLabel: {
- color: MainColor.white,
- fontWeight: "600",
- },
- activeIndicator: {
- position: "absolute",
- bottom: -2,
- width: 4,
- height: 4,
- borderRadius: 2,
- backgroundColor: "#007AFF",
- },
-});
diff --git a/screens/Home/tabSection.tsx b/screens/Home/tabSection.tsx
new file mode 100644
index 0000000..1e23c7d
--- /dev/null
+++ b/screens/Home/tabSection.tsx
@@ -0,0 +1,56 @@
+import { ITabs } from "@/components/_Interface/types";
+import { Styles } from "@/styles/global-styles";
+import { Ionicons } from "@expo/vector-icons";
+import { router } from "expo-router";
+import React from "react";
+import { Text, TouchableOpacity, View } from "react-native";
+
+interface ICustomTab {
+ icon: string;
+ label: string;
+ isActive: boolean;
+ onPress: () => void;
+}
+const CustomTab = ({ icon, label, isActive, onPress }: ICustomTab) => (
+
+
+
+
+
+ {label}
+
+
+);
+
+export default function TabSection({ tabs }: { tabs: ITabs[] }) {
+ return (
+ <>
+
+
+ {tabs.map((e) => (
+ {
+ // eslint-disable-next-line no-unused-expressions
+ e.disabled ? console.log("disabled") : router.push(e.path);
+ }}
+ />
+ ))}
+
+
+ >
+ );
+}
diff --git a/screens/Home/tabsList.ts b/screens/Home/tabsList.ts
new file mode 100644
index 0000000..e1677bf
--- /dev/null
+++ b/screens/Home/tabsList.ts
@@ -0,0 +1,40 @@
+import { ITabs } from "@/components/_Interface/types";
+
+export const tabsHome: ITabs[] = [
+ {
+ id: "forum",
+ icon: "chatbubble-ellipses-outline",
+ activeIcon: "chatbubble-ellipses",
+ label: "Forum",
+ path: "/forum",
+ isActive: true,
+ disabled: false,
+ },
+ {
+ id: "marketplace",
+ icon: "cart-outline",
+ activeIcon: "cart",
+ label: "Marketplace",
+ path: "/marketplace",
+ isActive: false,
+ disabled: true,
+ },
+ {
+ id: "maps",
+ icon: "map-outline",
+ activeIcon: "map",
+ label: "Maps",
+ path: "/maps",
+ isActive: true,
+ disabled: false,
+ },
+ {
+ id: "profile",
+ icon: "person-outline",
+ activeIcon: "person",
+ label: "Profile",
+ path: "/profile",
+ isActive: true,
+ disabled: false,
+ },
+];
\ No newline at end of file
diff --git a/styles/global-styles.ts b/styles/global-styles.ts
index 9281469..cd56a74 100644
--- a/styles/global-styles.ts
+++ b/styles/global-styles.ts
@@ -1,5 +1,7 @@
-import { StyleSheet } from "react-native";
-import { MainColor } from "../constants/color-palet";
+import { Dimensions, StyleSheet } from "react-native";
+import { AccentColor, MainColor } from "../constants/color-palet";
+
+const { width } = Dimensions.get("window");
export const Styles = StyleSheet.create({
container: {
@@ -17,7 +19,7 @@ export const Styles = StyleSheet.create({
height: "100%",
width: "100%",
},
-
+
// AUTHENTICATION
authContainer: {
flex: 1,
@@ -37,7 +39,7 @@ export const Styles = StyleSheet.create({
color: MainColor.yellow,
fontWeight: "bold",
},
-
+
// TEXT & LABEL
textLabel: {
fontSize: 14,
@@ -61,4 +63,75 @@ export const Styles = StyleSheet.create({
paddingBlock: 10,
backgroundColor: MainColor.darkblue,
},
+
+ // =============== TAB =============== //
+ tabBar: {
+ backgroundColor: MainColor.darkblue,
+ borderTopColor: AccentColor.blue,
+ borderTopWidth: 1,
+ // borderTopEndRadius: 10,
+ // borderTopStartRadius: 10,
+ // tintColor: MainColor.yellow
+ // paddingBottom: 20,
+ // paddingTop: 10,
+ // shadowColor: AccentColor.blue,
+ // shadowOffset: {
+ // width: 0,
+ // height: -2,
+ // },
+ // shadowOpacity: 0.9,
+ // shadowRadius: 3,
+ // elevation: 5,
+ },
+ tabContainer: {
+ flexDirection: "row",
+ justifyContent: "space-around",
+ alignItems: "center",
+ paddingHorizontal: 0,
+ },
+ 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: 10,
+ color: "#666",
+ fontWeight: "500",
+ },
+ activeTabLabel: {
+ color: MainColor.white,
+ fontWeight: "600",
+ },
+ activeIndicator: {
+ position: "absolute",
+ bottom: -2,
+ width: 4,
+ height: 4,
+ borderRadius: 2,
+ backgroundColor: "#007AFF",
+ },
+ // =============== TAB =============== //
});