add screens

This commit is contained in:
Jordan Hewitt
2025-02-01 07:37:41 -08:00
parent 7f60c25393
commit 5c5cf48f6e
6 changed files with 227 additions and 0 deletions

57
app/(screens)/_layout.tsx Normal file
View 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
View 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',
},
});

View File