fix(ui): keyboard-first-tap, Teilen-Button bigger, Header-Icon hitSlop
(app)/index.tsx: - FlatList keyboardShouldPersistTaps="handled" — Bild-Icon im ComposeCard reagiert ab erstem Tap auch wenn Tastatur offen. Vorher dismisste der Tap nur die Tastatur (RN-Default "never"). ComposeCard.tsx Teilen-Button: - height 44→52, px-5→px-6, paper-plane-outline-Icon size 18 + text-base Nunito_700Bold. Standard-iOS-Filled-Primary-Button-Style. AppHeader.tsx Bell + Avatar: - hitSlop 4pt allseitig auf beiden Pressables — effective tap-area 36→44pt ohne Layout-Verschiebung - Bell-Icon size 18→22 (konsistent mit Avatar-36pt-Kreis) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
192f67cd07
commit
0d52cb1846
@ -87,6 +87,7 @@ export default function HomeScreen() {
|
||||
keyExtractor={keyExtractor}
|
||||
contentContainerStyle={{ paddingHorizontal: 16, paddingTop: 12, paddingBottom: 32 }}
|
||||
showsVerticalScrollIndicator={false}
|
||||
keyboardShouldPersistTaps="handled"
|
||||
// Performance tuning — measured on Galaxy A50 (older mid-range):
|
||||
// VirtualizedList warned with dt=2.26s for ~7k content. These props
|
||||
// shrink the per-batch render cost and reclaim off-screen views.
|
||||
|
||||
@ -71,10 +71,11 @@ export function AppHeader({ notifCount, showBack, title }: Props = {}) {
|
||||
<View className="flex-row items-center gap-1">
|
||||
<Pressable
|
||||
onPress={() => setNotifOpen(true)}
|
||||
hitSlop={{ top: 4, bottom: 4, left: 4, right: 4 }}
|
||||
className="w-9 h-9 rounded-full bg-white items-center justify-center"
|
||||
style={({ pressed }) => ({ opacity: pressed ? 0.7 : 1 })}
|
||||
>
|
||||
<Ionicons name="notifications-outline" size={18} color="#737373" />
|
||||
<Ionicons name="notifications-outline" size={22} color="#737373" />
|
||||
{badge > 0 && (
|
||||
<View className="absolute top-0 right-0 w-4 h-4 rounded-full bg-rebreak-500 items-center justify-center">
|
||||
<Text className="text-white text-[9px]" style={{ fontFamily: 'Nunito_700Bold' }}>
|
||||
@ -87,6 +88,7 @@ export function AppHeader({ notifCount, showBack, title }: Props = {}) {
|
||||
{/* Avatar = Trigger für Dropdown-Menu (kein separates 3-Punkte-Icon) */}
|
||||
<Pressable
|
||||
onPress={() => setMenuOpen(true)}
|
||||
hitSlop={{ top: 4, bottom: 4, left: 4, right: 4 }}
|
||||
className={`w-9 h-9 rounded-full items-center justify-center overflow-hidden ${showAvatarImage ? 'bg-neutral-100' : 'bg-rebreak-500'}`}
|
||||
style={({ pressed }) => ({ opacity: pressed ? 0.7 : 1 })}
|
||||
>
|
||||
|
||||
@ -163,16 +163,19 @@ export function ComposeCard({ onPosted }: Props) {
|
||||
<Pressable
|
||||
onPress={submit}
|
||||
disabled={!content.trim() || posting}
|
||||
className="px-5 rounded-full bg-rebreak-500 items-center justify-center flex-row gap-1.5"
|
||||
className="px-6 rounded-full bg-rebreak-500 items-center justify-center flex-row gap-2"
|
||||
style={({ pressed }) => ({
|
||||
height: 44,
|
||||
height: 52,
|
||||
opacity: pressed || !content.trim() || posting ? 0.5 : 1,
|
||||
})}
|
||||
>
|
||||
{posting ? (
|
||||
<ActivityIndicator size="small" color="#fff" />
|
||||
) : (
|
||||
<Text className="text-white text-sm" style={{ fontFamily: 'Nunito_600SemiBold' }}>{t('community.share')}</Text>
|
||||
<>
|
||||
<Ionicons name="paper-plane-outline" size={18} color="#fff" />
|
||||
<Text className="text-white text-base" style={{ fontFamily: 'Nunito_700Bold' }}>{t('community.share')}</Text>
|
||||
</>
|
||||
)}
|
||||
</Pressable>
|
||||
</View>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user