Massive/App.tsx

75 lines
1.9 KiB
TypeScript
Raw Normal View History

2022-06-30 06:50:52 +00:00
import {
2022-07-15 06:06:33 +00:00
DarkTheme as NavigationDarkTheme,
DefaultTheme as NavigationDefaultTheme,
2022-07-03 01:50:01 +00:00
NavigationContainer,
} from '@react-navigation/native';
import React, {useState} from 'react';
import {useColorScheme} from 'react-native';
import {
2022-07-15 06:06:33 +00:00
DarkTheme as PaperDarkTheme,
DefaultTheme as PaperDefaultTheme,
Provider,
} from 'react-native-paper';
import Ionicon from 'react-native-vector-icons/MaterialIcons';
import {lightColors} from './colors';
import MassiveSnack from './MassiveSnack';
2022-07-15 04:34:06 +00:00
import Routes from './Routes';
2022-07-03 01:50:01 +00:00
2022-08-26 01:54:51 +00:00
export const CombinedDefaultTheme = {
2022-07-15 06:06:33 +00:00
...NavigationDefaultTheme,
...PaperDefaultTheme,
2022-07-15 06:06:33 +00:00
colors: {
...NavigationDefaultTheme.colors,
...PaperDefaultTheme.colors,
2022-07-15 06:06:33 +00:00
},
};
2022-08-26 01:54:51 +00:00
export const CombinedDarkTheme = {
2022-07-15 06:06:33 +00:00
...NavigationDarkTheme,
...PaperDarkTheme,
2022-07-15 06:06:33 +00:00
colors: {
...NavigationDarkTheme.colors,
...PaperDarkTheme.colors,
primary: lightColors[0].hex,
background: '#0E0E0E',
2022-07-15 06:06:33 +00:00
},
};
export const CustomTheme = React.createContext({
color: '',
setColor: (_value: string) => {},
});
2022-07-01 01:42:42 +00:00
const App = () => {
const dark = useColorScheme() === 'dark';
const [color, setColor] = useState(
dark
? CombinedDarkTheme.colors.primary.toUpperCase()
: CombinedDefaultTheme.colors.primary.toUpperCase(),
);
const theme = dark
? {
...CombinedDarkTheme,
colors: {...CombinedDarkTheme.colors, primary: color},
}
: {
...CombinedDefaultTheme,
colors: {...CombinedDefaultTheme.colors, primary: color},
};
2022-06-30 06:50:52 +00:00
return (
<CustomTheme.Provider value={{color, setColor}}>
<Provider
theme={theme}
settings={{icon: props => <Ionicon {...props} />}}>
<NavigationContainer theme={theme}>
<MassiveSnack>
<Routes />
</MassiveSnack>
</NavigationContainer>
</Provider>
</CustomTheme.Provider>
2022-06-30 06:50:52 +00:00
);
};
export default App;