chahinebrini 534f978b4e fix(onboarding): FAQ-answers + iOS-screen-time pointer alignment
FAQ-Bug-Fix + Component-Extraction:
- DoneSlide nutzte qkey.replace('q','a') → 'faq_q1'.replace('q','a')='faa_q1'
  weil .replace nur das ERSTE q matched (in "fa**q**"), nicht das in "q1".
  → Antworten resolved gegen non-existent key, raw key gerendert.
- Fix: explizite ID-Array [1,2,4,5,8] mit `help.faq_q\${id}` / `help.faq_a\${id}`.
- Shared FaqAccordion-Component extrahiert (components/FaqAccordion.tsx)
  mit 2 Varianten: 'card' (help/faq.tsx) + 'pills' (DoneSlide inline).
- app/help/faq.tsx + DoneSlide nutzen jetzt beide den shared component.

ScreenshotPointer-Alignment für iOS Screen-Time-Permission:
- iOS Family-Controls-Dialog: "Continue/Continuer/Fortfahren" ist LINKS-grau,
  "Don't Allow" ist RECHTS-blau (Apple platziert decline prominent, accept
  zurückhaltend bei Screen-Time-Permission). Pointer muss daher nach LINKS,
  nicht zentriert wie beim NEFilter-Dialog.
- ScreenshotPointer: neuer alignment-Prop ('left'|'center'|'right') →
  translateX (-80|0|+80 dp).
- ProtectionSlide iOS Phase B: pointerAlignment="left" durchgereicht.
- Phase A (url_filter) + alle Android-Phasen bleiben center.

Release-Prep (zied):
- CHANGELOG.md v0.3.0-Block erweitert (TTS, Stripe-Pricing, Keyboard-Fix,
  Single-Banner, FAQ-Extraktion, i18n-Status, Backend-Pending-Migration).
- version 0.3.0 + buildNumber 10 + versionCode 10 schon vorher gesetzt.
- eas.json production-Profil ready; Android-serviceAccountKeyPath bleibt
  TODO (User-Action: Google-Cloud-Service-Account anlegen).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-17 23:59:56 +02:00

42 lines
1.3 KiB
TypeScript

import { ScrollView, 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 { FaqAccordion, type FaqItem } from '../../components/FaqAccordion';
export default function FaqScreen() {
const { t } = useTranslation();
const colors = useColors();
const insets = useSafeAreaInsets();
const items: FaqItem[] = [
{ q: t('help.faq_q1'), a: t('help.faq_a1') },
{ q: t('help.faq_q2'), a: t('help.faq_a2') },
{ q: t('help.faq_q3'), a: t('help.faq_a3') },
{ q: t('help.faq_q4'), a: t('help.faq_a4') },
{ q: t('help.faq_q5'), a: t('help.faq_a5') },
{ q: t('help.faq_q6'), a: t('help.faq_a6') },
{ q: t('help.faq_q7'), a: t('help.faq_a7') },
{ q: t('help.faq_q8'), a: t('help.faq_a8') },
];
return (
<View style={{ flex: 1, backgroundColor: colors.groupedBg }}>
<AppHeader showBack title={t('help.faq_title')} />
<ScrollView
style={{ flex: 1 }}
contentContainerStyle={{
paddingHorizontal: 16,
paddingTop: 20,
paddingBottom: insets.bottom + 40,
}}
showsVerticalScrollIndicator={false}
>
<FaqAccordion items={items} />
</ScrollView>
</View>
);
}