xref: /MusicFree/src/pages/home/index.tsx (revision 9c72192f09e3e71b70c1fb446447ba438c4fffbd)
1import React from 'react';
2import {StyleSheet, View} from 'react-native';
3
4import NavBar from './components/navBar';
5import Operations from './components/operations';
6import MySheets from './components/mySheets';
7import MusicBar from '@/components/musicBar';
8import {createDrawerNavigator} from '@react-navigation/drawer';
9import HomeDrawer from './components/drawer';
10import {SafeAreaView} from 'react-native-safe-area-context';
11import StatusBar from '@/components/base/statusBar';
12import useOrientation from '@/hooks/useOrientation';
13import HorizonalSafeAreaView from '@/components/base/horizonalSafeAreaView';
14import globalStyle from '@/constants/globalStyle';
15import Divider from '@/components/base/divider';
16import Theme from '@/core/theme';
17
18function Home() {
19    return (
20        <SafeAreaView edges={['top', 'bottom']} style={styles.appWrapper}>
21            <HomeStatusBar />
22            <HorizonalSafeAreaView style={globalStyle.flex1}>
23                <>
24                    <NavBar />
25                    <Divider />
26                    <Body />
27                </>
28            </HorizonalSafeAreaView>
29            <MusicBar />
30        </SafeAreaView>
31    );
32}
33
34function HomeStatusBar() {
35    const theme = Theme.useTheme();
36
37    return (
38        <StatusBar
39            backgroundColor="transparent"
40            barStyle={theme.dark ? undefined : 'dark-content'}
41        />
42    );
43}
44
45function Body() {
46    const orientation = useOrientation();
47    return (
48        <View
49            style={[
50                styles.appWrapper,
51                orientation === 'horizonal' ? styles.flexRow : null,
52            ]}>
53            <Operations orientation={orientation} />
54            <MySheets />
55        </View>
56    );
57}
58
59const LeftDrawer = createDrawerNavigator();
60export default function App() {
61    return (
62        <LeftDrawer.Navigator
63            screenOptions={{
64                headerShown: false,
65                drawerStyle: {
66                    width: '80%',
67                },
68            }}
69            initialRouteName="HOME-MAIN"
70            drawerContent={props => <HomeDrawer {...props} />}>
71            <LeftDrawer.Screen name="HOME-MAIN" component={Home} />
72        </LeftDrawer.Navigator>
73    );
74}
75
76const styles = StyleSheet.create({
77    appWrapper: {
78        flexDirection: 'column',
79        flex: 1,
80    },
81    flexRow: {
82        flexDirection: 'row',
83    },
84});
85