Files
HausApp/apps/native/app/(app)/mehr/index.tsx
René Schober 9ddc7c6d7a Production deployment setup + feature complete
- Dockerfile + deploy.sh for Hetzner server
- Email verification via Better Auth + Resend
- Invite code flow (6-digit OTP, generate/join)
- Settlement share percent fix (payer vs debtor)
- OCR scanner fixes (date display, retry, viewfinder)
- app.json icon/splash/adaptive-icon configured
- iOS deployment target 15.5 (ML Kit requirement)
- DB migration 0014: household_invitations table

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-20 11:54:22 +01:00

69 lines
2.3 KiB
TypeScript

import { Ionicons } from "@expo/vector-icons";
import { Pressable, ScrollView, Text, View } from "react-native";
import { useSafeAreaInsets } from "react-native-safe-area-context";
import { useRouter } from "expo-router";
import { useTranslation } from "react-i18next";
export default function MehrScreen() {
const insets = useSafeAreaInsets();
const router = useRouter();
const { t } = useTranslation();
type MenuItem = {
icon: React.ComponentProps<typeof Ionicons>["name"];
label: string;
subtitle: string;
color: string;
route: string;
};
const MENU_ITEMS: MenuItem[] = [
{
icon: "airplane-outline",
label: t('mehr.vacation'),
subtitle: t('mehr.vacationSubtitle'),
color: "#0ea5e9",
route: "/(app)/urlaub",
},
{
icon: "settings-outline",
label: t('settings.title'),
subtitle: t('mehr.settingsSubtitle'),
color: "#6b7280",
route: "/(app)/settings",
},
];
return (
<ScrollView
className="flex-1 bg-gray-50"
contentContainerStyle={{ paddingTop: insets.top + 16, paddingBottom: insets.bottom + 24 }}
>
<Text className="text-2xl font-bold text-gray-900 px-4 mb-6">{t('tabs.more')}</Text>
<View className="mx-4 bg-white rounded-2xl overflow-hidden" style={{ borderWidth: 1, borderColor: "#f3f4f6" }}>
{MENU_ITEMS.map((item, index) => (
<Pressable
key={item.route}
onPress={() => router.push(item.route as Parameters<typeof router.push>[0])}
className="flex-row items-center px-4 py-4 active:bg-gray-50"
style={index < MENU_ITEMS.length - 1 ? { borderBottomWidth: 1, borderBottomColor: "#f3f4f6" } : undefined}
>
<View
className="w-10 h-10 rounded-xl items-center justify-center mr-4"
style={{ backgroundColor: `${item.color}18` }}
>
<Ionicons name={item.icon} size={22} color={item.color} />
</View>
<View className="flex-1">
<Text className="text-base font-semibold text-gray-900">{item.label}</Text>
<Text className="text-xs text-gray-400 mt-0.5">{item.subtitle}</Text>
</View>
<Ionicons name="chevron-forward" size={16} color="#d1d5db" />
</Pressable>
))}
</View>
</ScrollView>
);
}