import React from 'react'; import { Text, useBreakpointValue, useTheme } from 'native-base'; import ProfileSettings from './SettingsProfile'; import PrivacySettings from './PrivacySettings'; import PreferencesSettings from './PreferencesSettings'; import { useWindowDimensions } from 'react-native'; import { TabView, SceneMap, TabBar, NavigationState, Route, SceneRendererProps, } from 'react-native-tab-view'; import { HeartEdit, UserEdit, SecurityUser, FolderCross } from 'iconsax-react-native'; import { Scene } from 'react-native-tab-view/lib/typescript/src/types'; import { translate } from '../../i18n/i18n'; const renderScene = SceneMap({ profile: ProfileSettings, preferences: PreferencesSettings, privacy: PrivacySettings, }); const getTabData = (key: string) => { switch (key) { case 'profile': return { index: 0, icon: UserEdit }; case 'preferences': return { index: 1, icon: HeartEdit }; case 'privacy': return { index: 2, icon: SecurityUser }; default: return { index: 3, icon: FolderCross }; } }; const SettingsTab = () => { const layout = useWindowDimensions(); const [index, setIndex] = React.useState(0); const { colors } = useTheme(); const routes = [ { key: 'profile', title: 'settingsTabProfile' }, { key: 'preferences', title: 'settingsTabPreferences' }, { key: 'privacy', title: 'settingsTabPrivacy' }, ]; const screenSize = useBreakpointValue({ base: 'small', md: 'big' }); const isSmallScreen = screenSize === 'small'; const renderTabBar = ( props: SceneRendererProps & { navigationState: NavigationState } ) => ( & { focused: boolean; color: string; } ) => { const tabHeader = getTabData(scene.route!.key); return ( ); }} renderLabel={({ route, color }) => layout.width > 1100 && ( {translate( route.title as | 'settingsTabProfile' | 'settingsTabPreferences' | 'settingsTabPrivacy' )} ) } tabStyle={{ flexDirection: 'row' }} /> ); return ( ); }; export default SettingsTab;