add screens
This commit is contained in:
57
app/(screens)/_layout.tsx
Normal file
57
app/(screens)/_layout.tsx
Normal file
@ -0,0 +1,57 @@
|
||||
import React, { useEffect } from 'react';
|
||||
import { View, StyleSheet, TouchableOpacity } from 'react-native';
|
||||
import { useFonts } from 'expo-font';
|
||||
import * as SplashScreen from 'expo-splash-screen';
|
||||
import { ThemeProvider, DarkTheme, DefaultTheme, NavigationContainer } from '@react-navigation/native';
|
||||
import Settings from '@/components/Settings';
|
||||
import { createNativeStackNavigator } from '@react-navigation/native-stack';
|
||||
import HomeScreen from '.';
|
||||
import { LanguageSelection } from '@/components/LanguageSelection';
|
||||
import { language_matrix_entry } from '../i18n/api';
|
||||
import ConversationThread from '@/components/ConversationThread';
|
||||
|
||||
|
||||
const Stack = createNativeStackNavigator();
|
||||
|
||||
export default function _layout() {
|
||||
const [loaded] = useFonts({
|
||||
SpaceMono: require('../assets/fonts/SpaceMono-Regular.ttf'),
|
||||
});
|
||||
|
||||
useEffect(() => {
|
||||
if (loaded) {
|
||||
SplashScreen.hideAsync();
|
||||
}
|
||||
}, [loaded]);
|
||||
|
||||
if (!loaded) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return (
|
||||
<NavigationContainer>
|
||||
<Stack.Navigator>
|
||||
<Stack.Screen
|
||||
name="Home"
|
||||
component={HomeScreen}
|
||||
options={{title: 'Welcome'}}
|
||||
/>
|
||||
<Stack.Screen
|
||||
name="LanguageSelection"
|
||||
component={LanguageSelection}
|
||||
/>
|
||||
<Stack.Screen
|
||||
name="Conversation"
|
||||
component={ConversationThread}
|
||||
/>
|
||||
<Stack.Screen name="Settings" component={Settings} />
|
||||
</Stack.Navigator>
|
||||
</NavigationContainer>
|
||||
);
|
||||
}
|
||||
|
||||
const styles = StyleSheet.create({
|
||||
settingsIconContainer: {
|
||||
marginLeft: 16,
|
||||
},
|
||||
});
|
45
app/(screens)/index.tsx
Normal file
45
app/(screens)/index.tsx
Normal file
@ -0,0 +1,45 @@
|
||||
import { LanguageSelection } from '@/components/LanguageSelection';
|
||||
import { useState } from 'react';
|
||||
import { Button, Text, View } from 'react-native';
|
||||
import { Image, StyleSheet, Platform } from 'react-native';
|
||||
import { Conversation, Speaker } from '../lib/conversation';
|
||||
import { language_matrix_entry, Translator } from '../i18n/api';
|
||||
import ConversationThread from '@/components/ConversationThread';
|
||||
import { NavigationContainerProps, NavigationProp, ParamListBase } from '@react-navigation/native';
|
||||
|
||||
export default function HomeScreen({navigation} : {navigation: NavigationProp<ParamListBase>}) {
|
||||
|
||||
const [language, setLanguage] = useState<language_matrix_entry | undefined>()
|
||||
const [conversation, setConversation] = useState<Conversation | undefined>();
|
||||
|
||||
return (
|
||||
conversation ? <ConversationThread conversation={conversation} /> :
|
||||
<View>
|
||||
<Button
|
||||
title="Settings"
|
||||
onPress={() =>
|
||||
navigation.navigate('Settings')
|
||||
}
|
||||
/>
|
||||
</View>
|
||||
);
|
||||
}
|
||||
|
||||
const styles = StyleSheet.create({
|
||||
titleContainer: {
|
||||
flexDirection: 'row',
|
||||
alignItems: 'center',
|
||||
gap: 8,
|
||||
},
|
||||
stepContainer: {
|
||||
gap: 8,
|
||||
marginBottom: 8,
|
||||
},
|
||||
reactLogo: {
|
||||
height: 178,
|
||||
width: 290,
|
||||
bottom: 0,
|
||||
left: 0,
|
||||
position: 'absolute',
|
||||
},
|
||||
});
|
0
app/(screens)/settings.tsx
Normal file
0
app/(screens)/settings.tsx
Normal file
Reference in New Issue
Block a user