import React from 'react'; import { useNavigate } from 'react-router-dom'; import { useTranslation } from 'react-i18next'; import { LogOut, User, Settings, Shield, Globe, Moon } from 'lucide-react'; import { YStack, XStack } from '@tamagui/stacks'; import { SizableText as Text } from '@tamagui/text'; import { Pressable } from '@tamagui/react-native-web-lite'; import { useTheme } from '@tamagui/core'; import { MobileShell } from './components/MobileShell'; import { MobileCard, CTAButton } from './components/Primitives'; import { useAuth } from '../auth/context'; import { fetchTenantProfile } from '../api'; import { adminPath } from '../constants'; import i18n from '../i18n'; import { useAppearance } from '@/hooks/use-appearance'; export default function MobileProfilePage() { const { user, logout } = useAuth(); const navigate = useNavigate(); const { t } = useTranslation('management'); const { appearance, updateAppearance } = useAppearance(); const theme = useTheme(); const textColor = String(theme.color?.val ?? '#111827'); const mutedText = String(theme.gray?.val ?? '#4b5563'); const borderColor = String(theme.borderColor?.val ?? '#e5e7eb'); const avatarBg = String(theme.surface?.val ?? '#e0f2fe'); const primary = String(theme.primary?.val ?? '#2563eb'); const [name, setName] = React.useState(user?.name ?? t('events.members.roles.guest', 'Guest')); const [email, setEmail] = React.useState(user?.email ?? ''); const [role, setRole] = React.useState(user?.role ?? ''); const [language, setLanguage] = React.useState(i18n.language || 'de'); React.useEffect(() => { (async () => { try { const profile = await fetchTenantProfile(); setName(profile.name ?? name); setEmail(profile.email ?? email); setRole((profile as any)?.role ?? role); } catch { // non-fatal for mobile profile view } })(); }, [email, name, role]); return ( navigate(-1)} > {name} {email} {role ? ( {role} ) : null} {t('mobileProfile.settings', 'Settings')} navigate(adminPath('/mobile/settings'))}> {t('mobileProfile.account', 'Account & security')} navigate(adminPath('/mobile/billing#packages'))}> {t('billing.sections.packages.title', 'Packages & Billing')} navigate(adminPath('/mobile/billing#invoices'))}> {t('billing.sections.invoices.title', 'Invoices & Payments')} {t('mobileProfile.language', 'Language')} {t('mobileProfile.theme', 'Theme')} { logout(); navigate(adminPath('/logout')); }} /> ); }