theme
parent
2c2d661583
commit
dde6178c8f
|
@ -4,12 +4,14 @@ import {
|
||||||
ImageSourcePropType,
|
ImageSourcePropType,
|
||||||
ImageStyle,
|
ImageStyle,
|
||||||
StyleProp,
|
StyleProp,
|
||||||
Text,
|
|
||||||
TouchableOpacity,
|
TouchableOpacity,
|
||||||
ViewStyle,
|
ViewStyle,
|
||||||
} from 'react-native';
|
} from 'react-native';
|
||||||
import LinearGradient from 'react-native-linear-gradient';
|
import LinearGradient from 'react-native-linear-gradient';
|
||||||
import {MyIcon} from './MyIcon';
|
import {MyIcon} from './MyIcon';
|
||||||
|
import {useSelector} from 'react-redux';
|
||||||
|
import {RootState} from '@redux/store';
|
||||||
|
import { Text } from '@gluestack-ui/themed';
|
||||||
|
|
||||||
interface MyImageButtonProps {
|
interface MyImageButtonProps {
|
||||||
image: ImageSourcePropType;
|
image: ImageSourcePropType;
|
||||||
|
@ -18,10 +20,14 @@ interface MyImageButtonProps {
|
||||||
}
|
}
|
||||||
|
|
||||||
export function MyImageButton({image, imageStyle, text}: MyImageButtonProps) {
|
export function MyImageButton({image, imageStyle, text}: MyImageButtonProps) {
|
||||||
|
const currentTheme = useSelector(
|
||||||
|
(state: RootState) => state.nonSaveVariables.themeColors,
|
||||||
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<TouchableOpacity
|
<TouchableOpacity
|
||||||
style={{
|
style={{
|
||||||
backgroundColor: '#26263f',
|
backgroundColor: currentTheme.backgroundDark300,
|
||||||
alignItems: 'center',
|
alignItems: 'center',
|
||||||
padding: 10,
|
padding: 10,
|
||||||
flexDirection: 'row',
|
flexDirection: 'row',
|
||||||
|
@ -32,7 +38,6 @@ export function MyImageButton({image, imageStyle, text}: MyImageButtonProps) {
|
||||||
style={{
|
style={{
|
||||||
flex: 1,
|
flex: 1,
|
||||||
textAlign: 'center',
|
textAlign: 'center',
|
||||||
color: '#fff',
|
|
||||||
fontSize: 18,
|
fontSize: 18,
|
||||||
fontWeight: 'bold',
|
fontWeight: 'bold',
|
||||||
}}>
|
}}>
|
||||||
|
@ -50,8 +55,12 @@ interface MyButtonProps {
|
||||||
}
|
}
|
||||||
|
|
||||||
export function MyButton({style, type, text, onPress}: MyButtonProps) {
|
export function MyButton({style, type, text, onPress}: MyButtonProps) {
|
||||||
|
const currentTheme = useSelector(
|
||||||
|
(state: RootState) => state.nonSaveVariables.themeColors,
|
||||||
|
);
|
||||||
|
|
||||||
const ButtonText = () => (
|
const ButtonText = () => (
|
||||||
<Text style={{color: '#fff', fontSize: 18, fontWeight: 'bold'}}>
|
<Text style={{color: currentTheme.white, fontSize: 18, fontWeight: 'bold'}}>
|
||||||
{text}
|
{text}
|
||||||
</Text>
|
</Text>
|
||||||
);
|
);
|
||||||
|
@ -67,7 +76,7 @@ export function MyButton({style, type, text, onPress}: MyButtonProps) {
|
||||||
onPress={onPress}>
|
onPress={onPress}>
|
||||||
{type === 'primary' ? (
|
{type === 'primary' ? (
|
||||||
<LinearGradient
|
<LinearGradient
|
||||||
colors={['#931278', '#6030da']}
|
colors={[currentTheme.secondary, currentTheme.primary]}
|
||||||
start={{x: 0, y: 1}}
|
start={{x: 0, y: 1}}
|
||||||
end={{x: 1, y: 0}}
|
end={{x: 1, y: 0}}
|
||||||
style={{
|
style={{
|
||||||
|
@ -80,7 +89,7 @@ export function MyButton({style, type, text, onPress}: MyButtonProps) {
|
||||||
) : (
|
) : (
|
||||||
<View
|
<View
|
||||||
style={{
|
style={{
|
||||||
backgroundColor: '#37375c',
|
backgroundColor: currentTheme.backgroundDark200,
|
||||||
alignItems: 'center',
|
alignItems: 'center',
|
||||||
padding: 10,
|
padding: 10,
|
||||||
borderRadius: 10,
|
borderRadius: 10,
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import {StyleProp, Text, TextStyle} from 'react-native';
|
import { Text } from '@gluestack-ui/themed';
|
||||||
|
import {StyleProp, TextStyle} from 'react-native';
|
||||||
import {TouchableOpacity} from 'react-native';
|
import {TouchableOpacity} from 'react-native';
|
||||||
|
|
||||||
interface MyClickableTextProps {
|
interface MyClickableTextProps {
|
||||||
|
|
|
@ -1,7 +1,22 @@
|
||||||
import {Text, View} from 'react-native';
|
import { Text } from '@gluestack-ui/themed';
|
||||||
|
import {RootState} from '@redux/store';
|
||||||
|
import {View} from 'react-native';
|
||||||
|
import {useSelector} from 'react-redux';
|
||||||
|
|
||||||
export function MyDivider() {
|
export function MyDivider() {
|
||||||
return <View style={{flex: 1, height: 1, backgroundColor: '#3b3b60'}} />;
|
const currentTheme = useSelector(
|
||||||
|
(state: RootState) => state.nonSaveVariables.themeColors,
|
||||||
|
);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<View
|
||||||
|
style={{
|
||||||
|
flex: 1,
|
||||||
|
height: 1,
|
||||||
|
backgroundColor: currentTheme.backgroundDark200,
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
interface MyDividerWithTextProps {
|
interface MyDividerWithTextProps {
|
||||||
|
@ -9,16 +24,34 @@ interface MyDividerWithTextProps {
|
||||||
}
|
}
|
||||||
|
|
||||||
export function MyDividerWithText({text}: MyDividerWithTextProps) {
|
export function MyDividerWithText({text}: MyDividerWithTextProps) {
|
||||||
|
const currentTheme = useSelector(
|
||||||
|
(state: RootState) => state.nonSaveVariables.themeColors,
|
||||||
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<View style={{flexDirection: 'row', alignItems: 'center'}}>
|
<View style={{flexDirection: 'row', alignItems: 'center'}}>
|
||||||
<MyDivider />
|
<MyDivider />
|
||||||
<Text style={{color: '#909090', marginHorizontal: 10}}>{text}</Text>
|
<Text color={currentTheme.warmGray400} style={{marginHorizontal: 10}}>
|
||||||
|
{text}
|
||||||
|
</Text>
|
||||||
<MyDivider />
|
<MyDivider />
|
||||||
</View>
|
</View>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function MyVerticalDivider() {
|
||||||
|
const currentTheme = useSelector(
|
||||||
|
(state: RootState) => state.nonSaveVariables.themeColors,
|
||||||
|
);
|
||||||
|
|
||||||
export function MyVerticalDivider(){
|
return (
|
||||||
return <View style={{height: 44, marginTop: 2, backgroundColor: "#444444", width: 1}} />
|
<View
|
||||||
}
|
style={{
|
||||||
|
height: 44,
|
||||||
|
marginTop: 2,
|
||||||
|
backgroundColor: currentTheme.warmGray600,
|
||||||
|
width: 1,
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
import {KeyboardTypeOptions, Text, TextInput, View} from 'react-native';
|
import {KeyboardTypeOptions, TextInput, View} from 'react-native';
|
||||||
import {MyIcon} from './MyIcon';
|
import {MyIcon} from './MyIcon';
|
||||||
|
import {useSelector} from 'react-redux';
|
||||||
|
import {RootState} from '@redux/store';
|
||||||
|
import { Text } from '@gluestack-ui/themed';
|
||||||
|
|
||||||
interface MyIconInputProps {
|
interface MyIconInputProps {
|
||||||
text: string;
|
text: string;
|
||||||
|
@ -11,13 +14,31 @@ interface MyIconInputProps {
|
||||||
disableContainer?: boolean;
|
disableContainer?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function MyIconInput({text, iconName, keyboardType, secureTextEntry, value, onChangeText, disableContainer}: MyIconInputProps) {
|
export function MyIconInput({
|
||||||
|
text,
|
||||||
|
iconName,
|
||||||
|
keyboardType,
|
||||||
|
secureTextEntry,
|
||||||
|
value,
|
||||||
|
onChangeText,
|
||||||
|
disableContainer,
|
||||||
|
}: MyIconInputProps) {
|
||||||
|
const currentTheme = useSelector(
|
||||||
|
(state: RootState) => state.nonSaveVariables.themeColors,
|
||||||
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<View
|
<View
|
||||||
style={[{
|
style={[
|
||||||
flexDirection: 'row',
|
{
|
||||||
alignItems: 'center',
|
flexDirection: 'row',
|
||||||
}, !disableContainer && { backgroundColor: '#26263f', borderRadius: 10}]}>
|
alignItems: 'center',
|
||||||
|
},
|
||||||
|
!disableContainer && {
|
||||||
|
backgroundColor: currentTheme.backgroundDark300,
|
||||||
|
borderRadius: 10,
|
||||||
|
},
|
||||||
|
]}>
|
||||||
<View style={{marginLeft: 12}}>
|
<View style={{marginLeft: 12}}>
|
||||||
<MyIcon name={iconName} size={32} />
|
<MyIcon name={iconName} size={32} />
|
||||||
</View>
|
</View>
|
||||||
|
@ -26,10 +47,10 @@ export function MyIconInput({text, iconName, keyboardType, secureTextEntry, valu
|
||||||
<Text>{text}</Text>
|
<Text>{text}</Text>
|
||||||
<TextInput
|
<TextInput
|
||||||
style={{
|
style={{
|
||||||
backgroundColor: '#212137',
|
backgroundColor: currentTheme.backgroundDark400,
|
||||||
height: 40,
|
height: 40,
|
||||||
borderRadius: 10,
|
borderRadius: 10,
|
||||||
paddingLeft: 10
|
paddingLeft: 10,
|
||||||
}}
|
}}
|
||||||
keyboardType={keyboardType}
|
keyboardType={keyboardType}
|
||||||
secureTextEntry={secureTextEntry}
|
secureTextEntry={secureTextEntry}
|
||||||
|
|
|
@ -2,7 +2,7 @@ import {ReactNode} from 'react';
|
||||||
import {ScrollView, StyleProp, View, ViewStyle} from 'react-native';
|
import {ScrollView, StyleProp, View, ViewStyle} from 'react-native';
|
||||||
|
|
||||||
import { useSelector } from 'react-redux';
|
import { useSelector } from 'react-redux';
|
||||||
import {RootState, store} from '@redux/store';
|
import {RootState} from '@redux/store';
|
||||||
|
|
||||||
|
|
||||||
interface MyScreenContainerProps {
|
interface MyScreenContainerProps {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import { Text } from "react-native";
|
import { Text } from "@gluestack-ui/themed";
|
||||||
|
|
||||||
export function MyTitle({text}: {text: string}) {
|
export function MyTitle({text}: {text: string}) {
|
||||||
return (
|
return (
|
||||||
|
@ -7,7 +7,6 @@ export function MyTitle({text}: {text: string}) {
|
||||||
fontSize: 24,
|
fontSize: 24,
|
||||||
fontWeight: 'bold',
|
fontWeight: 'bold',
|
||||||
textAlign: 'center',
|
textAlign: 'center',
|
||||||
color: '#fff',
|
|
||||||
padding: 20,
|
padding: 20,
|
||||||
}}>
|
}}>
|
||||||
{text}
|
{text}
|
||||||
|
|
|
@ -211,9 +211,9 @@ export const gluestackUIConfig = createConfig({
|
||||||
warmGray100: '#f5f5f4',
|
warmGray100: '#f5f5f4',
|
||||||
warmGray200: '#e7e5e4',
|
warmGray200: '#e7e5e4',
|
||||||
warmGray300: '#d6d3d1',
|
warmGray300: '#d6d3d1',
|
||||||
warmGray400: '#a8a29e',
|
warmGray400: '#a8a29e', // divider with text
|
||||||
warmGray500: '#78716c',
|
warmGray500: '#78716c',
|
||||||
warmGray600: '#57534e',
|
warmGray600: '#57534e', // vertical divider
|
||||||
warmGray700: '#44403c',
|
warmGray700: '#44403c',
|
||||||
warmGray800: '#292524',
|
warmGray800: '#292524',
|
||||||
warmGray900: '#1c1917',
|
warmGray900: '#1c1917',
|
||||||
|
@ -311,6 +311,8 @@ export const gluestackUIConfig = createConfig({
|
||||||
light700: '#44403c',
|
light700: '#44403c',
|
||||||
light800: '#292524',
|
light800: '#292524',
|
||||||
light900: '#1c1917',
|
light900: '#1c1917',
|
||||||
|
primary: '#6030da',
|
||||||
|
/*
|
||||||
primary0: '#E5F1FB',
|
primary0: '#E5F1FB',
|
||||||
primary50: '#CCE9FF',
|
primary50: '#CCE9FF',
|
||||||
primary100: '#ADDBFF',
|
primary100: '#ADDBFF',
|
||||||
|
@ -322,8 +324,8 @@ export const gluestackUIConfig = createConfig({
|
||||||
primary700: '#004282',
|
primary700: '#004282',
|
||||||
primary800: '#002851',
|
primary800: '#002851',
|
||||||
primary900: '#011838',
|
primary900: '#011838',
|
||||||
primary950: '#000711',
|
primary950: '#000711', */
|
||||||
secondary0: '#F6F6F6',
|
/*secondary0: '#F6F6F6',
|
||||||
secondary50: '#F3F3F3',
|
secondary50: '#F3F3F3',
|
||||||
secondary100: '#E9E9E9',
|
secondary100: '#E9E9E9',
|
||||||
secondary200: '#DADADA',
|
secondary200: '#DADADA',
|
||||||
|
@ -334,7 +336,8 @@ export const gluestackUIConfig = createConfig({
|
||||||
secondary700: '#404040',
|
secondary700: '#404040',
|
||||||
secondary800: '#262626',
|
secondary800: '#262626',
|
||||||
secondary900: '#171717',
|
secondary900: '#171717',
|
||||||
secondary950: '#0C0C0C',
|
secondary950: '#0C0C0C', */
|
||||||
|
secondary: '#931278',
|
||||||
textLight0: '#FCFCFC',
|
textLight0: '#FCFCFC',
|
||||||
textLight50: '#F5F5F5',
|
textLight50: '#F5F5F5',
|
||||||
textLight100: '#E5E5E5',
|
textLight100: '#E5E5E5',
|
||||||
|
@ -343,7 +346,7 @@ export const gluestackUIConfig = createConfig({
|
||||||
textLight400: '#A3A3A3',
|
textLight400: '#A3A3A3',
|
||||||
textLight500: '#8C8C8C',
|
textLight500: '#8C8C8C',
|
||||||
textLight600: '#737373',
|
textLight600: '#737373',
|
||||||
textLight700: '#525252',
|
textLight700: '#fff', // text
|
||||||
textLight800: '#404040',
|
textLight800: '#404040',
|
||||||
textLight900: '#262626',
|
textLight900: '#262626',
|
||||||
textLight950: '#171717',
|
textLight950: '#171717',
|
||||||
|
@ -383,11 +386,10 @@ export const gluestackUIConfig = createConfig({
|
||||||
borderLight800: '#404040',
|
borderLight800: '#404040',
|
||||||
borderLight900: '#262626',
|
borderLight900: '#262626',
|
||||||
borderLight950: '#171717',
|
borderLight950: '#171717',
|
||||||
|
|
||||||
backgroundDark50: '#3e3e88',
|
backgroundDark50: '#3e3e88',
|
||||||
backgroundDark100: '#393972',
|
backgroundDark100: '#393972',
|
||||||
backgroundDark200: '#32325c',
|
backgroundDark200: '#37375c', // divider
|
||||||
backgroundDark300: '#2b2b48',
|
backgroundDark300: '#26263f', // container
|
||||||
backgroundDark400: '#212137', // primary background
|
backgroundDark400: '#212137', // primary background
|
||||||
backgroundDark500: '#1c1c2a',
|
backgroundDark500: '#1c1c2a',
|
||||||
backgroundDark600: '#16161f',
|
backgroundDark600: '#16161f',
|
||||||
|
|
|
@ -13,7 +13,7 @@ import ProfileTab, {
|
||||||
ProfileStackNavigatorParamList,
|
ProfileStackNavigatorParamList,
|
||||||
} from './tabs/main/ProfileTab';
|
} from './tabs/main/ProfileTab';
|
||||||
import {FadeInView} from '@helper/animations';
|
import {FadeInView} from '@helper/animations';
|
||||||
import {Text, TouchableOpacity, View} from 'react-native';
|
import {TouchableOpacity, View} from 'react-native';
|
||||||
import LinearGradient from 'react-native-linear-gradient';
|
import LinearGradient from 'react-native-linear-gradient';
|
||||||
import {
|
import {
|
||||||
RegistrationScreenAnim,
|
RegistrationScreenAnim,
|
||||||
|
@ -23,6 +23,7 @@ import {NativeStackNavigationProp} from '@react-navigation/native-stack';
|
||||||
import {MyIcon} from '@components/MyIcon';
|
import {MyIcon} from '@components/MyIcon';
|
||||||
import {useSelector} from 'react-redux';
|
import {useSelector} from 'react-redux';
|
||||||
import {RootState, store as reduxStore} from '@redux/store';
|
import {RootState, store as reduxStore} from '@redux/store';
|
||||||
|
import { Text } from '@gluestack-ui/themed';
|
||||||
|
|
||||||
export type RootStackNavigatorParamList = {
|
export type RootStackNavigatorParamList = {
|
||||||
Home: NavigatorScreenParams<HomeStackNavigatorParamList>;
|
Home: NavigatorScreenParams<HomeStackNavigatorParamList>;
|
||||||
|
@ -90,12 +91,16 @@ function ChatsTabAnim(props: any) {
|
||||||
const tabBarIcons = ['account-circle', 'calendar-month', 'map', 'chat'];
|
const tabBarIcons = ['account-circle', 'calendar-month', 'map', 'chat'];
|
||||||
|
|
||||||
function CustomTabBar(props: BottomTabBarProps) {
|
function CustomTabBar(props: BottomTabBarProps) {
|
||||||
const {state, descriptors, navigation} = props;
|
const {state, navigation} = props;
|
||||||
|
|
||||||
const lang = useSelector(
|
const lang = useSelector(
|
||||||
(state: RootState) => state.appVariables.lang.navigation.home,
|
(state: RootState) => state.appVariables.lang.navigation.home,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const currentTheme = useSelector(
|
||||||
|
(state: RootState) => state.nonSaveVariables.themeColors,
|
||||||
|
);
|
||||||
|
|
||||||
const tabNames = [
|
const tabNames = [
|
||||||
lang.profile.tabName,
|
lang.profile.tabName,
|
||||||
lang.calendar.tabName,
|
lang.calendar.tabName,
|
||||||
|
@ -104,12 +109,12 @@ function CustomTabBar(props: BottomTabBarProps) {
|
||||||
];
|
];
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<View style={{backgroundColor: '#212137'}}>
|
<View style={{backgroundColor: currentTheme.backgroundDark400}}>
|
||||||
<View
|
<View
|
||||||
style={{
|
style={{
|
||||||
flexDirection: 'row',
|
flexDirection: 'row',
|
||||||
margin: 10,
|
margin: 10,
|
||||||
backgroundColor: '#26263f',
|
backgroundColor: currentTheme.backgroundDark300,
|
||||||
borderRadius: 20,
|
borderRadius: 20,
|
||||||
}}>
|
}}>
|
||||||
{state.routes.map((route, index) => {
|
{state.routes.map((route, index) => {
|
||||||
|
@ -136,8 +141,8 @@ function CustomTabBar(props: BottomTabBarProps) {
|
||||||
|
|
||||||
// TODO: retrieve colors from theme
|
// TODO: retrieve colors from theme
|
||||||
const gradientColors = isFocused
|
const gradientColors = isFocused
|
||||||
? ['#931278', '#6030da']
|
? [currentTheme.secondary, currentTheme.primary]
|
||||||
: ['#26263f', '#26263f'];
|
: [currentTheme.backgroundDark300, currentTheme.backgroundDark300];
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<TouchableOpacity
|
<TouchableOpacity
|
||||||
|
@ -165,11 +170,11 @@ function CustomTabBar(props: BottomTabBarProps) {
|
||||||
}}>
|
}}>
|
||||||
<MyIcon
|
<MyIcon
|
||||||
name={tabBarIcons[index]}
|
name={tabBarIcons[index]}
|
||||||
color={isFocused ? '#fff' : '#ccc'}
|
color={isFocused ? currentTheme.white : '#ccc'}
|
||||||
size={20}
|
size={20}
|
||||||
/>
|
/>
|
||||||
{isFocused && (
|
{isFocused && (
|
||||||
<Text style={{color: '#fff'}}>{tabNames[index]}</Text>
|
<Text>{tabNames[index]}</Text>
|
||||||
)}
|
)}
|
||||||
</LinearGradient>
|
</LinearGradient>
|
||||||
</TouchableOpacity>
|
</TouchableOpacity>
|
||||||
|
|
|
@ -10,7 +10,6 @@ import {
|
||||||
Image,
|
Image,
|
||||||
ScrollView,
|
ScrollView,
|
||||||
StyleSheet,
|
StyleSheet,
|
||||||
Text,
|
|
||||||
TextInput,
|
TextInput,
|
||||||
View,
|
View,
|
||||||
} from 'react-native';
|
} from 'react-native';
|
||||||
|
@ -30,6 +29,7 @@ import {KeyboardAvoidingView} from 'react-native';
|
||||||
import {MyTitle} from '@components/MyTitle';
|
import {MyTitle} from '@components/MyTitle';
|
||||||
import {useSelector} from 'react-redux';
|
import {useSelector} from 'react-redux';
|
||||||
import {RootState} from '@redux/store';
|
import {RootState} from '@redux/store';
|
||||||
|
import { Text } from '@gluestack-ui/themed';
|
||||||
|
|
||||||
export type RegistrationStackNavigatorParamList = {
|
export type RegistrationStackNavigatorParamList = {
|
||||||
SignUpPreview: undefined;
|
SignUpPreview: undefined;
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
import {MyScreenContainer} from '@components/MyScreenContainer';
|
import {MyScreenContainer} from '@components/MyScreenContainer';
|
||||||
|
import { Text } from '@gluestack-ui/themed';
|
||||||
import {
|
import {
|
||||||
createNativeStackNavigator,
|
createNativeStackNavigator,
|
||||||
NativeStackNavigationProp,
|
NativeStackNavigationProp,
|
||||||
} from '@react-navigation/native-stack';
|
} from '@react-navigation/native-stack';
|
||||||
import {RootState} from '@redux/store';
|
import {RootState} from '@redux/store';
|
||||||
import {Text} from 'react-native';
|
|
||||||
import {useSelector} from 'react-redux';
|
import {useSelector} from 'react-redux';
|
||||||
|
|
||||||
export const ChatsTabName = 'Chats';
|
export const ChatsTabName = 'Chats';
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
import { MyScreenContainer } from '@components/MyScreenContainer';
|
import { MyScreenContainer } from '@components/MyScreenContainer';
|
||||||
|
import { Text } from '@gluestack-ui/themed';
|
||||||
import {
|
import {
|
||||||
createNativeStackNavigator,
|
createNativeStackNavigator,
|
||||||
NativeStackNavigationProp,
|
NativeStackNavigationProp,
|
||||||
} from '@react-navigation/native-stack';
|
} from '@react-navigation/native-stack';
|
||||||
import {RootState} from '@redux/store';
|
import {RootState} from '@redux/store';
|
||||||
import {Text} from 'react-native';
|
|
||||||
import {useSelector} from 'react-redux';
|
import {useSelector} from 'react-redux';
|
||||||
|
|
||||||
export const MapTabName = 'Map';
|
export const MapTabName = 'Map';
|
||||||
|
|
Reference in New Issue