Fix form keyboard issues and sticky footers in agent screens

This commit is contained in:
Abin Toppo
2026-05-26 16:34:05 +05:30
commit 9ac5e95d52
410 changed files with 86650 additions and 0 deletions
@@ -0,0 +1,93 @@
import React, { useMemo } from 'react';
import { StyleSheet, Text, View } from 'react-native';
import type { NativeStackScreenProps } from '@react-navigation/native-stack';
import type { ServicesStackParamList } from '../../../navigation/types';
import { ScreenShell } from '../../../components';
import { ServiceGridItem } from '../../home/components/ServiceGridItem';
import { useTheme } from '../../../theme';
import { ChequeAnimation } from '../components/ChequeAnimation';
type Props = NativeStackScreenProps<ServicesStackParamList, 'ChequeServicesHub'>;
export default function ChequeServicesHubScreen({ navigation }: Props) {
const theme = useTheme();
const options = useMemo(
() => [
{
id: 'request',
title: 'Book Request',
icon: 'book-outline',
iconColor: '#3B82F6',
onPress: () => navigation.navigate('ChequeBookRequest'),
},
{
id: 'stop',
title: 'Stop Payment',
icon: 'stop-circle-outline',
iconColor: '#EF4444',
onPress: () => navigation.navigate('StopPayment'),
},
{
id: 'track',
title: 'Track Cheques',
icon: 'git-compare-outline',
iconColor: '#10B981',
onPress: () => navigation.navigate('ChequeTracking'),
},
],
[navigation]
);
return (
<ScreenShell title="Cheque Services" subtitle="Manage all your cheque-related needs">
{/* Animated cheque illustration */}
<ChequeAnimation />
{/* Quick info strip */}
<View style={[styles.infoStrip, { backgroundColor: `${theme.colors.primary}08`, borderColor: `${theme.colors.primary}12` }]}>
<View style={[styles.infoDot, { backgroundColor: theme.colors.accent }]} />
<Text style={[styles.infoText, { color: theme.colors.textSecondary }]}>
Request, track, or manage cheques — all in one place
</Text>
</View>
{/* Service grid */}
<View style={styles.grid}>
{options.map((opt) => (
<ServiceGridItem key={opt.id} {...opt} />
))}
</View>
</ScreenShell>
);
}
const styles = StyleSheet.create({
grid: {
flexDirection: 'row',
flexWrap: 'wrap',
justifyContent: 'space-between',
paddingTop: 8,
},
infoStrip: {
flexDirection: 'row',
alignItems: 'center',
gap: 10,
borderRadius: 12,
borderWidth: 1,
paddingHorizontal: 14,
paddingVertical: 12,
marginBottom: 16,
},
infoDot: {
width: 6,
height: 6,
borderRadius: 3,
},
infoText: {
fontSize: 12,
fontWeight: '600',
flex: 1,
lineHeight: 17,
},
});