// components/TermsOfServiceModal.tsx import React from 'react'; import { View, ScrollView, Modal, TouchableOpacity, StyleSheet, Text } from 'react-native'; import { useSafeAreaInsets } from 'react-native-safe-area-context'; import { format } from 'date-fns'; import { X } from 'lucide-react-native'; import { Button } from '@/components/ui/button'; import { useColorScheme } from '@/lib/theme/useColorScheme'; interface TermsOfServiceModalProps { visible: boolean; onClose: () => void; } export default function TermsOfServiceModal({ visible, onClose }: TermsOfServiceModalProps) { const insets = useSafeAreaInsets(); const { isDarkColorScheme } = useColorScheme(); const currentDate = format(new Date(), 'MMMM d, yyyy'); const textColor = isDarkColorScheme ? '#FFFFFF' : '#000000'; const backgroundColor = isDarkColorScheme ? '#1c1c1e' : '#FFFFFF'; const mutedTextColor = isDarkColorScheme ? '#A1A1A1' : '#6B7280'; return ( Terms of Service POWR App Terms of Service POWR is a local-first fitness tracking application that integrates with the Nostr protocol. Data Storage and Privacy • POWR stores your workout data, exercise templates, and preferences locally on your device. • We do not collect, store, or track any personal data on our servers. • Any content you choose to publish to Nostr relays (such as workouts or templates) will be publicly available to anyone with access to those relays. Think of Nostr posts as public broadcasts. • Your private keys are stored locally on your device and are never transmitted to us. User Responsibility • You are responsible for safeguarding your private keys. • You are solely responsible for any content you publish to Nostr relays. • Exercise caution when sharing personal information through public Nostr posts. Fitness Disclaimer • POWR provides fitness tracking tools, not medical advice. Consult a healthcare professional before starting any fitness program. • You are solely responsible for any injuries or health issues that may result from exercises tracked using this app. Changes to Terms We may update these terms from time to time. Continued use of the app constitutes acceptance of any changes. Last Updated: {currentDate} ); } const styles = StyleSheet.create({ modalContainer: { flex: 1, justifyContent: 'center', alignItems: 'center', backgroundColor: 'rgba(0, 0, 0, 0.7)', }, modalContent: { width: '90%', maxHeight: '80%', borderRadius: 12, padding: 20, shadowColor: '#000', shadowOffset: { width: 0, height: 2 }, shadowOpacity: 0.25, shadowRadius: 3.84, elevation: 5, }, header: { flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center', marginBottom: 16, }, title: { fontSize: 20, fontWeight: 'bold', }, closeButton: { padding: 4, }, scrollView: { flex: 1, marginBottom: 16, }, heading: { fontSize: 18, fontWeight: 'bold', marginTop: 16, marginBottom: 8, }, sectionTitle: { fontSize: 16, fontWeight: '600', marginTop: 16, marginBottom: 8, }, paragraph: { marginBottom: 16, lineHeight: 20, }, bulletPoint: { marginBottom: 8, lineHeight: 20, }, lastUpdated: { fontSize: 12, marginTop: 16, marginBottom: 8, }, });