New route group app/help/ with 4 sub-pages navigable from settings. - help/faq.tsx: accordion with 8 Q&As (drafted by UI agent, see below) - help/contact.tsx: mailto:hilfe@rebreak.org with prefilled subject, address block (Rebreak placeholder — TODO verify legal entity name) - help/about.tsx: mission text + 3 fact rows (DiGA, Hetzner, DSGVO) - help/crisis.tsx: BZgA 0800 1 372 700, check-dein-spiel.de, anonyme-spieler.org, Telefonseelsorge 0800 111 0 111, emergency 112-box with error-color border treatment. Disclaimer at bottom. All pages use AppHeader showBack for correct back-button. All strings in help.* namespace in DE/EN/FR locales. FAQ answers drafted by UI agent — pending lyra-persona tone review: faq_a1 (what is Rebreak), faq_a2 (blocker), faq_a3 (Mac DNS), faq_a4 (cancel sub), faq_a5 (data), faq_a6 (bug report), faq_a7 (whitelist), faq_a8 (DiGA). FR locale: faq answers are DE-fallback text (TODO: translate properly). Contact address block: placeholder — TODO confirm legal entity + address. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
108 lines
2.9 KiB
TypeScript
108 lines
2.9 KiB
TypeScript
import { Linking, ScrollView, Text, View } from 'react-native';
|
|
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
|
import { useTranslation } from 'react-i18next';
|
|
import { useColors } from '../../lib/theme';
|
|
import { AppHeader } from '../../components/AppHeader';
|
|
import { Button } from '../../components/Button';
|
|
|
|
export default function ContactScreen() {
|
|
const { t } = useTranslation();
|
|
const colors = useColors();
|
|
const insets = useSafeAreaInsets();
|
|
|
|
return (
|
|
<View style={{ flex: 1, backgroundColor: colors.groupedBg }}>
|
|
<AppHeader showBack title={t('help.contact_title')} />
|
|
|
|
<ScrollView
|
|
style={{ flex: 1 }}
|
|
contentContainerStyle={{
|
|
paddingHorizontal: 16,
|
|
paddingTop: 20,
|
|
paddingBottom: insets.bottom + 40,
|
|
}}
|
|
showsVerticalScrollIndicator={false}
|
|
>
|
|
<View
|
|
style={{
|
|
backgroundColor: colors.card,
|
|
borderRadius: 14,
|
|
padding: 16,
|
|
marginBottom: 16,
|
|
shadowColor: '#000',
|
|
shadowOffset: { width: 0, height: 1 },
|
|
shadowOpacity: 0.04,
|
|
shadowRadius: 3,
|
|
elevation: 1,
|
|
}}
|
|
>
|
|
<Text
|
|
style={{
|
|
fontSize: 15,
|
|
fontFamily: 'Nunito_700Bold',
|
|
color: colors.text,
|
|
marginBottom: 8,
|
|
}}
|
|
>
|
|
{t('help.contact_email_label')}
|
|
</Text>
|
|
<Text
|
|
style={{
|
|
fontSize: 14,
|
|
fontFamily: 'Nunito_400Regular',
|
|
color: colors.textMuted,
|
|
lineHeight: 21,
|
|
marginBottom: 16,
|
|
}}
|
|
>
|
|
{t('help.contact_email_desc')}
|
|
</Text>
|
|
<Button
|
|
title={t('help.contact_email_cta')}
|
|
onPress={() =>
|
|
Linking.openURL(
|
|
'mailto:hilfe@rebreak.org?subject=Support%20Anfrage',
|
|
)
|
|
}
|
|
size="md"
|
|
/>
|
|
</View>
|
|
|
|
<View
|
|
style={{
|
|
backgroundColor: colors.card,
|
|
borderRadius: 14,
|
|
padding: 16,
|
|
shadowColor: '#000',
|
|
shadowOffset: { width: 0, height: 1 },
|
|
shadowOpacity: 0.04,
|
|
shadowRadius: 3,
|
|
elevation: 1,
|
|
}}
|
|
>
|
|
<Text
|
|
style={{
|
|
fontSize: 15,
|
|
fontFamily: 'Nunito_700Bold',
|
|
color: colors.text,
|
|
marginBottom: 8,
|
|
}}
|
|
>
|
|
{t('help.contact_address_label')}
|
|
</Text>
|
|
<Text
|
|
style={{
|
|
fontSize: 14,
|
|
fontFamily: 'Nunito_400Regular',
|
|
color: colors.textMuted,
|
|
lineHeight: 22,
|
|
}}
|
|
>
|
|
{t('help.contact_address_block')}
|
|
</Text>
|
|
</View>
|
|
</ScrollView>
|
|
</View>
|
|
);
|
|
}
|