feat(mobile): Netralax landing screen with runtime version + nav smoke test

This commit is contained in:
byGalax
2026-05-13 23:36:31 +02:00
parent 5e483368ec
commit 574436ab71
+32 -12
View File
@@ -1,17 +1,29 @@
// Landing / Login screen. import * as Application from 'expo-application';
import { Link } from 'expo-router';
import { Pressable, StyleSheet, Text, View } from 'react-native';
// Phase 0 landing screen. Just enough to prove the app boots and routes:
// * Netralax brand wordmark (replaces the previous "ChatApp" string).
// * Runtime version from expo-application so we can spot stale builds
// on a TestFlight tester's device at a glance.
// * Placeholder nav link into (app)/chats — exercises Expo Router so a
// routing regression shows up here instead of mid-Phase-1.
// //
// Milestone 1 TODO: // Phase 1 replaces this with the actual magic-link login form.
// - Show app logo + "Enter your email" field.
// - On submit, call shared/auth requestMagicLink(email).
// - Handle deep link return in app/_layout.tsx (or a dedicated auth callback route).
import { StyleSheet, Text, View } from 'react-native';
export default function Landing() { export default function Landing() {
const version = Application.nativeApplicationVersion ?? '0.0.0';
return ( return (
<View style={styles.container}> <View style={styles.container}>
<Text style={styles.title}>ChatApp</Text> <Text style={styles.title}>Netralax</Text>
<Text style={styles.subtitle}>Login placeholder magic link flow goes here.</Text> <Text style={styles.subtitle}>Phase 0 Deployment-Fundament</Text>
<Text style={styles.version}>v{version}</Text>
<Link href="/(app)/chats" asChild>
<Pressable style={styles.button}>
<Text style={styles.buttonText}>Weiter (Smoke-Test)</Text>
</Pressable>
</Link>
</View> </View>
); );
} }
@@ -24,6 +36,14 @@ const styles = StyleSheet.create({
backgroundColor: '#0b0b0f', backgroundColor: '#0b0b0f',
padding: 24, padding: 24,
}, },
title: { color: '#fff', fontSize: 28, fontWeight: '600' }, title: { color: '#fff', fontSize: 32, fontWeight: '700', letterSpacing: 1 },
subtitle: { color: '#9ca3af', marginTop: 8, textAlign: 'center' }, subtitle: { color: '#9ca3af', marginTop: 8, marginBottom: 4 },
version: { color: '#6b7280', fontSize: 12, marginBottom: 32 },
button: {
backgroundColor: '#5865f2',
paddingHorizontal: 24,
paddingVertical: 14,
borderRadius: 12,
},
buttonText: { color: '#fff', fontWeight: '600', fontSize: 15 },
}); });