|
1 | | -import { createMaterialTopTabNavigator } from '@react-navigation/material-top-tabs'; |
| 1 | +import { useMemo } from 'react'; |
| 2 | + |
| 3 | +import { Dimensions } from 'react-native'; |
| 4 | + |
| 5 | +import { |
| 6 | + createMaterialTopTabNavigator, |
| 7 | + MaterialTopTabNavigationOptions, |
| 8 | +} from '@react-navigation/material-top-tabs'; |
2 | 9 |
|
3 | 10 | import { useTopTabsConfig } from '@/hooks/navigation/useTopTabsConfig'; |
| 11 | +import { useTheme } from '@/hooks/useTheme'; |
4 | 12 | import SearchLatestScreen from '@/screens/search/tabs/SearchLatestScreen'; |
5 | 13 | import SearchMediaScreen from '@/screens/search/tabs/SearchMediaScreen'; |
6 | 14 | import SearchPeopleScreen from '@/screens/search/tabs/SearchPeopleScreen'; |
7 | 15 | import SearchTopScreen from '@/screens/search/tabs/SearchTopScreen'; |
8 | 16 | import { SearchTabsParamList } from '@/types/navigation'; |
9 | 17 | import { SearchResultTab } from '@/types/search'; |
| 18 | +import { colors } from '@/utils'; |
10 | 19 | import { SEARCH_TABS } from '@/utils/navigation/routeNames'; |
11 | 20 |
|
12 | 21 | const Tab = createMaterialTopTabNavigator<SearchTabsParamList>(); |
@@ -37,14 +46,37 @@ export function SearchResultsNavigator({ |
37 | 46 | onTabChange, |
38 | 47 | }: SearchResultsNavigatorProps) { |
39 | 48 | const topTabsConfig = useTopTabsConfig(); |
| 49 | + const { theme } = useTheme(); |
40 | 50 | const trimmedQuery = query.trim(); |
41 | 51 |
|
42 | 52 | const initialRouteName = tabToRoute[initialTab]; |
43 | 53 |
|
| 54 | + const screenOptions: MaterialTopTabNavigationOptions = useMemo(() => { |
| 55 | + const colorscheme = colors[theme]; |
| 56 | + |
| 57 | + return { |
| 58 | + ...topTabsConfig, |
| 59 | + tabBarItemStyle: { |
| 60 | + width: undefined, |
| 61 | + }, |
| 62 | + tabBarIndicatorStyle: { |
| 63 | + backgroundColor: colorscheme.primary, |
| 64 | + borderColor: colorscheme.background, |
| 65 | + marginHorizontal: 10, |
| 66 | + height: 3, |
| 67 | + borderRadius: 2, |
| 68 | + width: Dimensions.get('window').width / 5, |
| 69 | + }, |
| 70 | + tabBarIndicatorContainerStyle: { |
| 71 | + alignItems: 'center', |
| 72 | + }, |
| 73 | + }; |
| 74 | + }, [theme, topTabsConfig]); |
| 75 | + |
44 | 76 | return ( |
45 | 77 | <Tab.Navigator |
46 | 78 | initialRouteName={initialRouteName} |
47 | | - screenOptions={topTabsConfig} |
| 79 | + screenOptions={screenOptions} |
48 | 80 | screenListeners={{ |
49 | 81 | state: (e) => { |
50 | 82 | const state = e.data.state; |
|
0 commit comments