Add Positive Pay, statement guide v1.0, onboarding, and switch every feature on
- Positive Pay on the 12 Oct /pps contract (account number, not account ID): OTP enrollment, cheque submit, saved cheques, detail and stop payment. Full flow passed on the phone against mobile-banking-backend.lincpay. - Statement & Mini Statement guide v1.0 (14 Oct): mini statement JSON on Home and the Statement screen; dated PDF export with the password rule. - Onboarding slides and splash screen, Inter font, shared Icon and TypewriterText components, nearby branches via OpenStreetMap. - Every feature switched on; the 14 Oct switch set is kept in featureConfig.stage-2026-10-14.ts. Loans run on demo data until the backend has /loans routes. - npm run android wraps run-android for shells spawned from VS Code. - OpenProject work packages updated to 14-10-2026 status, with screenshots of Positive Pay, statement, loans and cards. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
5fbd13ba12
commit
f960a119e8
@@ -1,7 +1,7 @@
|
||||
import React from 'react';
|
||||
import { Share, StyleSheet, Text, View, Pressable, Linking } from 'react-native';
|
||||
import { NativeStackScreenProps } from '@react-navigation/native-stack';
|
||||
import Ionicons from '@react-native-vector-icons/ionicons';
|
||||
import { Icon } from '../../../components/Icon';
|
||||
|
||||
import { Card, ScreenShell, Button } from '../../../components';
|
||||
import { ServicesStackParamList } from '../../../navigation/types';
|
||||
@@ -54,13 +54,13 @@ export default function SchemeDetailScreen({ route, navigation }: Props) {
|
||||
const rightContent = (
|
||||
<View style={styles.headerActions}>
|
||||
<Pressable onPress={handleShare} style={[styles.actionBtn, { backgroundColor: theme.colors.surfaceMuted }]}>
|
||||
<Ionicons name="share-social-outline" size={20} color={theme.colors.textPrimary} />
|
||||
<Icon name="share-social-outline" size={20} color={theme.colors.textPrimary} />
|
||||
</Pressable>
|
||||
<Pressable
|
||||
onPress={() => toggleBookmark(schemeId)}
|
||||
style={[styles.actionBtn, { backgroundColor: isBookmarked ? `${theme.colors.primary}15` : theme.colors.surfaceMuted }]}
|
||||
style={[styles.actionBtn, { backgroundColor: isBookmarked ? theme.tint(theme.colors.primary, 0.08) : theme.colors.surfaceMuted }]}
|
||||
>
|
||||
<Ionicons
|
||||
<Icon
|
||||
name={isBookmarked ? 'bookmark' : 'bookmark-outline'}
|
||||
size={20}
|
||||
color={isBookmarked ? theme.colors.primary : theme.colors.textPrimary}
|
||||
@@ -77,7 +77,7 @@ export default function SchemeDetailScreen({ route, navigation }: Props) {
|
||||
>
|
||||
<View style={styles.container}>
|
||||
<View style={styles.metaRow}>
|
||||
<View style={[styles.typeBadge, { backgroundColor: `${theme.colors.primary}12` }]}>
|
||||
<View style={[styles.typeBadge, { backgroundColor: theme.tint(theme.colors.primary, 0.07) }]}>
|
||||
<Text style={[styles.typeText, { color: theme.colors.primary }]}>{scheme.type.replace('_', ' ')}</Text>
|
||||
</View>
|
||||
<View style={[styles.categoryBadge, { backgroundColor: theme.colors.surfaceMuted }]}>
|
||||
@@ -105,7 +105,7 @@ export default function SchemeDetailScreen({ route, navigation }: Props) {
|
||||
<Text style={[styles.sectionTitle, { color: theme.colors.textPrimary }]}>Key Benefits</Text>
|
||||
{scheme.benefits.map((benefit, idx) => (
|
||||
<View key={idx} style={styles.listRow}>
|
||||
<Ionicons name="checkmark-circle" size={18} color={theme.colors.success} />
|
||||
<Icon name="checkmark-circle" size={18} color={theme.colors.success} />
|
||||
<Text style={[styles.listText, { color: theme.colors.textSecondary }]}>{benefit}</Text>
|
||||
</View>
|
||||
))}
|
||||
@@ -117,7 +117,7 @@ export default function SchemeDetailScreen({ route, navigation }: Props) {
|
||||
<Text style={[styles.sectionTitle, { color: theme.colors.textPrimary }]}>Eligibility Criteria</Text>
|
||||
{scheme.eligibility.map((criterion, idx) => (
|
||||
<View key={idx} style={styles.listRow}>
|
||||
<Ionicons name="information-circle-outline" size={18} color={theme.colors.primary} />
|
||||
<Icon name="information-circle-outline" size={18} color={theme.colors.primary} />
|
||||
<Text style={[styles.listText, { color: theme.colors.textSecondary }]}>{criterion}</Text>
|
||||
</View>
|
||||
))}
|
||||
@@ -194,8 +194,7 @@ const styles = StyleSheet.create({
|
||||
typeText: {
|
||||
fontSize: 11,
|
||||
fontFamily: fontFamily.bold,
|
||||
textTransform: 'uppercase',
|
||||
letterSpacing: 0.5,
|
||||
letterSpacing: 0.1,
|
||||
},
|
||||
categoryBadge: {
|
||||
paddingHorizontal: 10,
|
||||
|
||||
Reference in New Issue
Block a user