58 lines
1.8 KiB
TypeScript
58 lines
1.8 KiB
TypeScript
import React from "react";
|
|
import FontAwesome from "@expo/vector-icons/FontAwesome";
|
|
import { Link, Tabs } from "expo-router";
|
|
import { Pressable } from "react-native";
|
|
import Colors from "@/constants/Colors";
|
|
import { useColorScheme } from "@/components/useColorScheme";
|
|
import { useClientOnlyValue } from "@/components/useClientOnlyValue";
|
|
import { TAB_CONFIG } from "@/constants/config";
|
|
|
|
// You can explore the built-in icon families and icons on the web at https://icons.expo.fyi/
|
|
function TabBarIcon(props: {
|
|
name: React.ComponentProps<typeof FontAwesome>['name'];
|
|
color: string;
|
|
}) {
|
|
return <FontAwesome size={28} style={{ marginBottom: -3 }} {...props} />;
|
|
}
|
|
|
|
export default function TabLayout() {
|
|
const colorScheme = useColorScheme();
|
|
|
|
return (
|
|
<Tabs
|
|
screenOptions={{
|
|
tabBarActiveTintColor: Colors[colorScheme ?? "light"].tint,
|
|
headerShown: useClientOnlyValue(false, true),
|
|
}}>
|
|
<Tabs.Screen
|
|
name="index"
|
|
options={{
|
|
title: 'Tab One',
|
|
tabBarIcon: ({ color }) => <TabBarIcon name="code" color={color} />,
|
|
headerRight: () => (
|
|
<Link href="/modal" asChild>
|
|
<Pressable>
|
|
{({ pressed }) => (
|
|
<FontAwesome
|
|
name="info-circle"
|
|
size={25}
|
|
color={Colors[colorScheme ?? 'light'].text}
|
|
style={{ marginRight: 15, opacity: pressed ? 0.5 : 1 }}
|
|
/>
|
|
)}
|
|
</Pressable>
|
|
</Link>
|
|
),
|
|
}}
|
|
/>
|
|
<Tabs.Screen
|
|
name="two"
|
|
options={{
|
|
title: 'Tab Two',
|
|
tabBarIcon: ({ color }) => <TabBarIcon name="code" color={color} />,
|
|
}}
|
|
/>
|
|
</Tabs>
|
|
);
|
|
}
|