Add:
- app/(application)/(user)/job/

Event:
Fix:
- app/(application)/(user)/event/(tabs)/_layout.tsx : penggunaan icon terpusat

Collaboration:
Fix:
- app/(application)/(user)/collaboration/(tabs)/_layout.tsx : penggunaan icon terpusat

Home
Fix:
- Penambahan onPres ke job

Component
Add:
- Icon: home, status

# No Issue
This commit is contained in:
2025-07-25 10:53:31 +08:00
parent 603003865b
commit ed87d4a3f3
12 changed files with 156 additions and 41 deletions

View File

@@ -150,6 +150,24 @@ export default function UserLayout() {
{/* ========== End Collaboration Section ========= */} {/* ========== End Collaboration Section ========= */}
{/* ========== Job Section ========= */}
<Stack.Screen
name="job/create"
options={{
title: "Tambah Lowongan Pekerjaan",
headerLeft: () => <BackButton />,
}}
/>
<Stack.Screen
name="job/(tabs)"
options={{
title: "Job Vacancy",
headerLeft: () => <BackButton />,
}}
/>
{/* ========== End Job Section ========= */}
{/* ========== Forum Section ========= */} {/* ========== Forum Section ========= */}
<Stack.Screen <Stack.Screen
name="forum/create" name="forum/create"

View File

@@ -1,3 +1,4 @@
import { IconHome } from "@/components/_Icon";
import { TabsStyles } from "@/styles/tabs-styles"; import { TabsStyles } from "@/styles/tabs-styles";
import { Ionicons } from "@expo/vector-icons"; import { Ionicons } from "@expo/vector-icons";
import { Tabs } from "expo-router"; import { Tabs } from "expo-router";
@@ -9,9 +10,7 @@ export default function CollaborationTabsLayout() {
name="index" name="index"
options={{ options={{
title: "Beranda", title: "Beranda",
tabBarIcon: ({ color }) => ( tabBarIcon: ({ color }) => <IconHome color={color} />,
<Ionicons size={20} name="home" color={color} />
),
}} }}
/> />
<Tabs.Screen <Tabs.Screen

View File

@@ -1,3 +1,4 @@
import { IconHome, IconStatus } from "@/components/_Icon";
import { TabsStyles } from "@/styles/tabs-styles"; import { TabsStyles } from "@/styles/tabs-styles";
import { FontAwesome5, Ionicons } from "@expo/vector-icons"; import { FontAwesome5, Ionicons } from "@expo/vector-icons";
import { Tabs } from "expo-router"; import { Tabs } from "expo-router";
@@ -12,7 +13,7 @@ export default function EventTabsLayout() {
options={{ options={{
title: "Beranda", title: "Beranda",
tabBarIcon: ({ color }) => ( tabBarIcon: ({ color }) => (
<Ionicons size={20} name="home" color={color} /> <IconHome color={color}/>
), ),
}} }}
/> />
@@ -21,7 +22,7 @@ export default function EventTabsLayout() {
options={{ options={{
title: "Status", title: "Status",
tabBarIcon: ({ color }) => ( tabBarIcon: ({ color }) => (
<Ionicons size={20} name="list" color={color} /> <IconStatus color={color}/>
), ),
}} }}
/> />

View File

@@ -0,0 +1,34 @@
import { IconHome, IconStatus } from "@/components/_Icon";
import { TabsStyles } from "@/styles/tabs-styles";
import { Ionicons } from "@expo/vector-icons";
import { Tabs } from "expo-router";
export default function JobTabsLayout() {
return (
<Tabs screenOptions={TabsStyles}>
<Tabs.Screen
name="index"
options={{
title: "Beranda",
tabBarIcon: ({ color }) => <IconHome color={color} />,
}}
/>
<Tabs.Screen
name="status"
options={{
title: "Status",
tabBarIcon: ({ color }) => <IconStatus color={color} />,
}}
/>
<Tabs.Screen
name="archive"
options={{
title: "Arsip",
tabBarIcon: ({ color }) => (
<Ionicons size={20} name="archive" color={color} />
),
}}
/>
</Tabs>
);
}

View File

@@ -0,0 +1,9 @@
import { TextCustom, ViewWrapper } from "@/components";
export default function JobArchive() {
return (
<ViewWrapper>
<TextCustom>Job Archive</TextCustom>
</ViewWrapper>
);
}

View File

@@ -0,0 +1,9 @@
import { TextCustom, ViewWrapper } from "@/components";
export default function JobBeranda() {
return (
<ViewWrapper>
<TextCustom>Job Beranda</TextCustom>
</ViewWrapper>
);
}

View File

@@ -0,0 +1,9 @@
import { TextCustom, ViewWrapper } from "@/components";
export default function JobStatus() {
return (
<ViewWrapper>
<TextCustom>Job Status</TextCustom>
</ViewWrapper>
);
}

View File

@@ -0,0 +1,9 @@
import { TextCustom, ViewWrapper } from "@/components";
export default function JobCreate() {
return (
<ViewWrapper>
<TextCustom>Job Create</TextCustom>
</ViewWrapper>
);
}

View File

@@ -0,0 +1,10 @@
import { ICON_SIZE_SMALL } from "@/constants/constans-value";
import { Ionicons } from "@expo/vector-icons";
export default function IconHome({ color }: { color?: string }) {
return (
<>
<Ionicons name="home" size={ICON_SIZE_SMALL} color={color || "white"} />
</>
);
}

View File

@@ -0,0 +1,12 @@
import { ICON_SIZE_SMALL } from "@/constants/constans-value";
import { MaterialIcons } from "@expo/vector-icons";
export default function IconStatus({ color }: { color?: string }) {
return (
<MaterialIcons
size={ICON_SIZE_SMALL}
name="checklist-rtl"
color={color || "white"}
/>
);
}

View File

@@ -1,3 +1,5 @@
import IconEdit from "./IconEdit"; import IconEdit from "./IconEdit";
import IconHome from "./IconHome";
import IconStatus from "./IconStatus";
export { IconEdit }; export { IconEdit, IconHome, IconStatus };

View File

@@ -1,52 +1,55 @@
import { TextCustom } from "@/components"; import { ClickableCustom, TextCustom } from "@/components";
import Spacing from "@/components/_ShareComponent/Spacing"; import Spacing from "@/components/_ShareComponent/Spacing";
import React from "react"; import React from "react";
import { View } from "react-native"; import { View } from "react-native";
import Icon from "react-native-vector-icons/FontAwesome"; import Icon from "react-native-vector-icons/FontAwesome";
import { stylesHome } from "./homeViewStyle"; import { stylesHome } from "./homeViewStyle";
import { router } from "expo-router";
export default function Home_BottomFeatureSection() { export default function Home_BottomFeatureSection() {
return ( return (
<> <>
<View style={stylesHome.jobVacancyContainer}> <ClickableCustom onPress={() => router.push("/job")}>
<View style={stylesHome.jobVacancyHeader}> <View style={stylesHome.jobVacancyContainer}>
<Icon name="briefcase" size={24} color="white" /> <View style={stylesHome.jobVacancyHeader}>
<Spacing width={10}/> <Icon name="briefcase" size={24} color="white" />
<TextCustom bold size="large"> <Spacing width={10} />
Job Vacancy <TextCustom bold size="large">
</TextCustom> Job Vacancy
</View> </TextCustom>
<View style={stylesHome.vacancyList}>
{/* Vacancy Item 1 */}
<View style={stylesHome.vacancyItem}>
{/* <Icon name="user" size={20} color="#FFD700" /> */}
<View style={stylesHome.vacancyDetails}>
<TextCustom bold color="yellow" truncate size="large">
Bagas_banuna
</TextCustom>
<Spacing height={5} />
<TextCustom truncate={2}>
Dicari perawat kucing dan perawat anjing
</TextCustom>
</View>
</View> </View>
{/* Vacancy Item 2 */} <View style={stylesHome.vacancyList}>
<View style={stylesHome.vacancyItem}> {/* Vacancy Item 1 */}
{/* <Icon name="user" size={20} color="#FFD700" /> */} <View style={stylesHome.vacancyItem}>
<View style={stylesHome.vacancyDetails}> {/* <Icon name="user" size={20} color="#FFD700" /> */}
<TextCustom bold color="yellow" truncate size="large"> <View style={stylesHome.vacancyDetails}>
fibramarcell <TextCustom bold color="yellow" truncate size="large">
</TextCustom> Bagas_banuna
<Spacing height={5} /> </TextCustom>
<TextCustom truncate={2}> <Spacing height={5} />
Di Butuhkan Seorang Programer dan Designer <TextCustom truncate={2}>
</TextCustom> Dicari perawat kucing dan perawat anjing
</TextCustom>
</View>
</View>
{/* Vacancy Item 2 */}
<View style={stylesHome.vacancyItem}>
{/* <Icon name="user" size={20} color="#FFD700" /> */}
<View style={stylesHome.vacancyDetails}>
<TextCustom bold color="yellow" truncate size="large">
fibramarcell
</TextCustom>
<Spacing height={5} />
<TextCustom truncate={2}>
Di Butuhkan Seorang Programer dan Designer
</TextCustom>
</View>
</View> </View>
</View> </View>
</View> </View>
</View> </ClickableCustom>
</> </>
); );
} }