import BottomTabBar from '@app/navigation/BottomTabBar' import LibraryTopTabNavigator from '@app/navigation/LibraryTopTabNavigator' import AlbumView from '@app/screens/AlbumView' import ArtistView from '@app/screens/ArtistView' import Home from '@app/screens/Home' import PlaylistView from '@app/screens/PlaylistView' import Search from '@app/screens/Search' import SettingsView from '@app/screens/Settings' import colors from '@app/styles/colors' import font from '@app/styles/font' import { BottomTabNavigationProp, createBottomTabNavigator } from '@react-navigation/bottom-tabs' import { RouteProp, StackActions } from '@react-navigation/native' import React, { useEffect } from 'react' import { StyleSheet } from 'react-native' import { createNativeStackNavigator, NativeStackNavigationProp } from 'react-native-screens/native-stack' type TabStackParamList = { TabMain: { toTop?: boolean } AlbumView: { id: string; title: string } ArtistView: { id: string; title: string } PlaylistView: { id: string; title: string } } type AlbumScreenNavigationProp = NativeStackNavigationProp type AlbumScreenRouteProp = RouteProp type AlbumScreenProps = { route: AlbumScreenRouteProp navigation: AlbumScreenNavigationProp } const AlbumScreen: React.FC = ({ route }) => ( ) type ArtistScreenNavigationProp = NativeStackNavigationProp type ArtistScreenRouteProp = RouteProp type ArtistScreenProps = { route: ArtistScreenRouteProp navigation: ArtistScreenNavigationProp } const ArtistScreen: React.FC = ({ route }) => ( ) type PlaylistScreenNavigationProp = NativeStackNavigationProp type PlaylistScreenRouteProp = RouteProp type PlaylistScreenProps = { route: PlaylistScreenRouteProp navigation: PlaylistScreenNavigationProp } const PlaylistScreen: React.FC = ({ route }) => ( ) const styles = StyleSheet.create({ stackheaderStyle: { backgroundColor: colors.gradient.high, }, stackheaderTitleStyle: { fontSize: 18, fontFamily: font.semiBold, color: colors.text.primary, }, }) const itemScreenOptions = { title: '', headerStyle: styles.stackheaderStyle, headerHideShadow: true, headerTintColor: 'white', headerTitleStyle: styles.stackheaderTitleStyle, } function createTabStackNavigator(Component: React.ComponentType) { const Stack = createNativeStackNavigator() const Navigator: React.FC<{ navigation: BottomTabNavigationProp<{ a: undefined }, 'a'> }> = ({ navigation }) => { useEffect(() => { return navigation.addListener('tabPress', () => { navigation.dispatch(StackActions.popToTop()) }) }) return ( ) } return Navigator } const HomeTab = createTabStackNavigator(Home) const LibraryTab = createTabStackNavigator(LibraryTopTabNavigator) const SearchTab = createTabStackNavigator(Search) const Tab = createBottomTabNavigator() const BottomTabNavigator = () => { return ( ) } export default BottomTabNavigator