import React from 'react'; import { createBottomTabNavigator, BottomTabNavigationProp } from '@react-navigation/bottom-tabs'; import { createStackNavigator, StackNavigationProp } from '@react-navigation/stack'; import { CompositeNavigationProp } from '@react-navigation/native'; import SetJellyfinServer from './modals/SetJellyfinServer'; import Player from './Player'; import Music from './Music'; import Settings from './Settings'; import PlayPauseIcon from 'assets/play-pause-fill.svg'; import NotesIcon from 'assets/notes.svg'; import GearIcon from 'assets/gear.svg'; import { THEME_COLOR } from 'CONSTANTS'; const Stack = createStackNavigator(); const Tab = createBottomTabNavigator(); type Screens = { NowPlaying: undefined; Music: undefined; Settings: undefined; } function getIcon(route: string): React.FC | null { switch(route) { case 'NowPlaying': return PlayPauseIcon; case 'Music': return NotesIcon; case 'Settings': return GearIcon; default: return null; } } function Screens() { return ( ({ tabBarIcon: function TabBarIcon({ color, size }) { const Icon = getIcon(route.name); if (!Icon) { return null; } return ; } })} tabBarOptions={{ activeTintColor: THEME_COLOR, inactiveTintColor: 'gray', }} > ); } type Routes = { Screens: undefined; SetJellyfinServer: undefined; } export default function Routes() { return ( ); } export type NavigationProp = CompositeNavigationProp< StackNavigationProp, BottomTabNavigationProp >;