import React from 'react'; import { View, StyleSheet } from 'react-native'; import Text from '~/components/atoms/Text'; import BaseModal from '~/components/atoms/BaseModal'; import { useTheme } from '~/features/theme/ThemeProvider'; import Icon from '~/components/atoms/Icon'; interface Feature { icon: string; title: string; description: string; } interface PageOnboardingModalProps { visible: boolean; onClose: () => void; title: string; message: string; features: Feature[]; actionLabel: string; } /** * Page-specific onboarding modal that explains features of a page */ const PageOnboardingModal = ({ visible, onClose, title, message, features, actionLabel, }: PageOnboardingModalProps): React.ReactElement => { const { colors } = useTheme(); return ( {message && {message}} {features.map((feature, index) => ( {feature.title} {feature.description} ))} ); }; const styles = StyleSheet.create({ contentContainer: { width: '100%', }, message: { fontSize: 16, lineHeight: 24, marginBottom: 20, }, featuresContainer: { gap: 12, }, featureCard: { borderRadius: 12, padding: 12, borderWidth: 1, }, featureItem: { flexDirection: 'row', alignItems: 'flex-start', }, iconContainer: { width: 40, height: 40, borderRadius: 10, justifyContent: 'center', alignItems: 'center', marginRight: 12, }, featureTextContainer: { flex: 1, }, featureTitle: { marginBottom: 4, }, featureDescription: { // Keine fontSize/lineHeight, damit variant="caption" diese steuert }, }); export default PageOnboardingModal;