@@ -497,35 +497,37 @@ export function AddExpenseScreen({
497497 case 3 :
498498 return (
499499 < Animated . View key = "step3" entering = { enterAnim } exiting = { exitAnim } style = { styles . stepContent } >
500- < View style = { styles . defaultSplitSection } >
501- < View style = { { flex : 1 } } >
502- < Text style = { [ typography . bodyLarge , { color : colors . text_primary , fontWeight : '700' } ] } > Default split</ Text >
503- < Text style = { [ typography . bodyMedium , { color : colors . text_secondary } ] } > Save the current split setup for this group.</ Text >
504- </ View >
505- < View style = { styles . defaultSplitActions } >
506- < Button variant = "secondary" onPress = { ( ) => void resetDefaultSplit ( ) } loading = { savingDefault } style = { styles . defaultSplitButton } >
507- Reset
508- </ Button >
509- < Button variant = "primary" onPress = { ( ) => void saveDefaultSplit ( ) } loading = { savingDefault } style = { styles . defaultSplitButton } >
510- Save Default
511- </ Button >
500+ < ScrollView showsVerticalScrollIndicator = { false } contentContainerStyle = { { paddingBottom : spacing . xl } } >
501+ < View style = { styles . defaultSplitSection } >
502+ < View style = { { flex : 1 } } >
503+ < Text style = { [ typography . bodyLarge , { color : colors . text_primary , fontWeight : '700' } ] } > Default split</ Text >
504+ < Text style = { [ typography . bodyMedium , { color : colors . text_secondary } ] } > Save the current split setup for this group.</ Text >
505+ </ View >
506+ < View style = { styles . defaultSplitActions } >
507+ < Button variant = "secondary" onPress = { ( ) => void resetDefaultSplit ( ) } loading = { savingDefault } style = { styles . defaultSplitButton } >
508+ Reset
509+ </ Button >
510+ < Button variant = "primary" onPress = { ( ) => void saveDefaultSplit ( ) } loading = { savingDefault } style = { styles . defaultSplitButton } >
511+ Save Default
512+ </ Button >
513+ </ View >
512514 </ View >
513- </ View >
514- < SplitSelector
515- members = { members }
516- splitType = { splitType }
517- selectedParticipantIds = { selectedParticipantIds }
518- exactByUser = { exactByUser }
519- percentagesByUser = { percentagesByUser }
520- onSplitTypeChange = { setSplitType }
521- onParticipantsChange = { setSelectedParticipantIds }
522- onExactChange = { ( userId , value ) =>
523- setExactByUser ( ( state ) => ( { ... state , [ userId ] : value } ) )
524- }
525- onPercentageChange = { ( userId , value ) =>
526- setPercentagesByUser ( ( state ) => ( { ... state , [ userId ] : value } ) )
527- }
528- / >
515+ < SplitSelector
516+ members = { members }
517+ splitType = { splitType }
518+ selectedParticipantIds = { selectedParticipantIds }
519+ exactByUser = { exactByUser }
520+ percentagesByUser = { percentagesByUser }
521+ onSplitTypeChange = { setSplitType }
522+ onParticipantsChange = { setSelectedParticipantIds }
523+ onExactChange = { ( userId , value ) =>
524+ setExactByUser ( ( state ) => ( { ... state , [ userId ] : value } ) )
525+ }
526+ onPercentageChange = { ( userId , value ) =>
527+ setPercentagesByUser ( ( state ) => ( { ... state , [ userId ] : value } ) )
528+ }
529+ />
530+ </ ScrollView >
529531 </ Animated . View >
530532 ) ;
531533
@@ -534,62 +536,64 @@ export function AddExpenseScreen({
534536 const shares = totalAmount > 0 ? buildShares ( totalAmount ) : { } ;
535537 return (
536538 < Animated . View key = "step4" entering = { enterAnim } exiting = { exitAnim } style = { styles . stepContent } >
537- < Card variant = "elevated" style = { styles . reviewCard } >
538- < View style = { styles . reviewItem } >
539- < Text style = { [ typography . caption , { color : colors . muted } ] } > DESCRIPTION</ Text >
540- < Text style = { [ typography . h3 , { color : colors . text_primary } ] } > { watchedDescription } </ Text >
541- </ View >
542- < View style = { styles . reviewItem } >
543- < Text style = { [ typography . caption , { color : colors . muted } ] } > CATEGORY</ Text >
544- < Text style = { [ typography . bodyLarge , { color : colors . text_primary , fontWeight : '700' } ] } >
545- { category ? categoryLabels [ category ] : 'Uncategorized' }
546- </ Text >
547- </ View >
548- < View style = { styles . reviewItem } >
549- < Text style = { [ typography . caption , { color : colors . muted } ] } > RECURRING</ Text >
550- < Text style = { [ typography . bodyLarge , { color : colors . text_primary , fontWeight : '700' } ] } >
551- { recurringEnabled ? recurringFrequencyLabels [ recurringFrequency ] : 'One-time' }
552- </ Text >
553- </ View >
554- < View style = { styles . reviewItem } >
555- < Text style = { [ typography . caption , { color : colors . muted } ] } > TOTAL AMOUNT</ Text >
556- < Text style = { [ typography . h1 , { color : colors . primary } ] } >
557- { formatCurrencyFromCents ( totalAmount , group ?. currency ?? 'USD' ) }
558- </ Text >
559- </ View >
560- < View style = { styles . reviewItem } >
561- < Text style = { [ typography . caption , { color : colors . muted } ] } > PAID BY</ Text >
562- < View style = { styles . payerRow } >
563- < Avatar name = { payerMember ?. name ?? 'U' } size = { 24 } />
539+ < ScrollView showsVerticalScrollIndicator = { false } contentContainerStyle = { { paddingBottom : spacing . xl } } >
540+ < Card variant = "elevated" style = { styles . reviewCard } >
541+ < View style = { styles . reviewItem } >
542+ < Text style = { [ typography . caption , { color : colors . muted } ] } > DESCRIPTION</ Text >
543+ < Text style = { [ typography . h3 , { color : colors . text_primary } ] } > { watchedDescription } </ Text >
544+ </ View >
545+ < View style = { styles . reviewItem } >
546+ < Text style = { [ typography . caption , { color : colors . muted } ] } > CATEGORY</ Text >
564547 < Text style = { [ typography . bodyLarge , { color : colors . text_primary , fontWeight : '700' } ] } >
565- { payerMember ?. name ?? 'Unknown '}
548+ { category ? categoryLabels [ category ] : 'Uncategorized '}
566549 </ Text >
567550 </ View >
568- </ View >
551+ < View style = { styles . reviewItem } >
552+ < Text style = { [ typography . caption , { color : colors . muted } ] } > RECURRING</ Text >
553+ < Text style = { [ typography . bodyLarge , { color : colors . text_primary , fontWeight : '700' } ] } >
554+ { recurringEnabled ? recurringFrequencyLabels [ recurringFrequency ] : 'One-time' }
555+ </ Text >
556+ </ View >
557+ < View style = { styles . reviewItem } >
558+ < Text style = { [ typography . caption , { color : colors . muted } ] } > TOTAL AMOUNT</ Text >
559+ < Text style = { [ typography . h1 , { color : colors . primary } ] } >
560+ { formatCurrencyFromCents ( totalAmount , group ?. currency ?? 'USD' ) }
561+ </ Text >
562+ </ View >
563+ < View style = { styles . reviewItem } >
564+ < Text style = { [ typography . caption , { color : colors . muted } ] } > PAID BY</ Text >
565+ < View style = { styles . payerRow } >
566+ < Avatar name = { payerMember ?. name ?? 'U' } size = { 24 } />
567+ < Text style = { [ typography . bodyLarge , { color : colors . text_primary , fontWeight : '700' } ] } >
568+ { payerMember ?. name ?? 'Unknown' }
569+ </ Text >
570+ </ View >
571+ </ View >
572+
573+ < View style = { [ styles . divider , { backgroundColor : colors . border } ] } />
569574
570- < View style = { [ styles . divider , { backgroundColor : colors . border } ] } />
571-
572- < Text style = { [ typography . caption , { color : colors . muted , marginBottom : spacing . md } ] } >
573- SPLITS ({ splitType . toUpperCase ( ) } )
574- </ Text >
575- { selectedParticipantIds . map ( ( userId ) => {
576- const member = members . find ( ( m ) => m . userId === userId ) ;
577- const shareAmount = shares [ userId ] ?? 0 ;
578- return (
579- < View key = { userId } style = { styles . splitRow } >
580- < View style = { styles . splitUserCol } >
581- < Avatar name = { member ?. name ?? 'U' } size = { 20 } />
582- < Text style = { [ typography . bodyMedium , { color : colors . text_primary , fontWeight : '600' } ] } >
583- { member ?. name ?? 'Unknown' }
575+ < Text style = { [ typography . caption , { color : colors . muted , marginBottom : spacing . md } ] } >
576+ SPLITS ({ splitType . toUpperCase ( ) } )
577+ </ Text >
578+ { selectedParticipantIds . map ( ( userId ) => {
579+ const member = members . find ( ( m ) => m . userId === userId ) ;
580+ const shareAmount = shares [ userId ] ?? 0 ;
581+ return (
582+ < View key = { userId } style = { styles . splitRow } >
583+ < View style = { styles . splitUserCol } >
584+ < Avatar name = { member ?. name ?? 'U' } size = { 20 } />
585+ < Text style = { [ typography . bodyMedium , { color : colors . text_primary , fontWeight : '600' } ] } >
586+ { member ?. name ?? 'Unknown' }
587+ </ Text >
588+ </ View >
589+ < Text style = { [ typography . bodyMedium , { color : colors . text_primary , fontWeight : '800' } ] } >
590+ { formatCurrencyFromCents ( shareAmount , group ?. currency ?? 'USD' ) }
584591 </ Text >
585592 </ View >
586- < Text style = { [ typography . bodyMedium , { color : colors . text_primary , fontWeight : '800' } ] } >
587- { formatCurrencyFromCents ( shareAmount , group ?. currency ?? 'USD' ) }
588- </ Text >
589- </ View >
590- ) ;
591- } ) }
592- </ Card >
593+ ) ;
594+ } ) }
595+ </ Card >
596+ </ ScrollView >
593597 </ Animated . View >
594598 ) ;
595599 }
0 commit comments