@@ -520,6 +520,13 @@ export function FeaturesSection() {
520520 currentLanguage ,
521521 ) ,
522522 ) }
523+ { name === 'Apple Pay' &&
524+ String (
525+ t (
526+ 'features.card1.apple_pay_description' ,
527+ currentLanguage ,
528+ ) ,
529+ ) }
523530 </ p >
524531 </ div >
525532 </ div >
@@ -648,7 +655,7 @@ export function FeaturesSection() {
648655 < span className = "text-xs text-muted-foreground" >
649656 { String ( t ( 'features.card4.balance' , currentLanguage ) ) }
650657 </ span >
651- < div className = "flex items-center gap-2 rounded-sm p-1.5 bg-green-50 dark:bg-green-900/30 border w-48 h-8 justify-center" >
658+ < div className = "flex items-center gap-2 rounded-sm p-1.5 bg-green-50 dark:bg-green-900/30 border-none w-48 h-8 justify-center" >
652659 < span className = "font-mono text-[11px] font-bold text-green-700 dark:text-green-300" >
653660 { ( 49847392 )
654661 . toLocaleString ( 'fr-FR' )
@@ -987,16 +994,17 @@ export function FeaturesSection() {
987994 }
988995 } ;
989996
990- const providerNames = [ 'SPI' , 'Visa' , 'PayPal ' , 'Google Pay' ] as const ;
997+ const providerNames = [ 'SPI' , 'Visa' , 'Apple Pay ' , 'Google Pay' , 'PayPal '] as const ;
991998
992999 // Payment method toggle states
9931000 const [ paymentToggles , setPaymentToggles ] = React . useState <
9941001 Record < string , boolean >
9951002 > ( {
9961003 SPI : true ,
9971004 Visa : true ,
998- PayPal : false ,
999- 'Google Pay' : true ,
1005+ PayPal : true ,
1006+ 'Google Pay' : false ,
1007+ 'Apple Pay' : true ,
10001008 } ) ;
10011009
10021010 // Phone numbers hover state - separate for each field
@@ -1055,22 +1063,45 @@ export function FeaturesSection() {
10551063 } ) ) ;
10561064 } ;
10571065
1058- // Visa image rotation effect
1066+ // Helper function to get random interval
1067+ const getRandomInterval = ( min : number , max : number ) => {
1068+ return Math . random ( ) * ( max - min ) + min ;
1069+ } ;
1070+
1071+ // Visa image rotation effect - randomize between 3-6 seconds
10591072 React . useEffect ( ( ) => {
1060- const interval = setInterval ( ( ) => {
1061- setVisaImageIndex ( ( prev ) => ( prev + 1 ) % visaImages . length ) ;
1062- } , 4000 ) ; // Change every 4 seconds
1073+ let timeoutId : ReturnType < typeof setTimeout > ;
1074+
1075+ const scheduleNextRotation = ( ) => {
1076+ timeoutId = setTimeout ( ( ) => {
1077+ setVisaImageIndex ( ( prev ) => ( prev + 1 ) % visaImages . length ) ;
1078+ scheduleNextRotation ( ) ; // Schedule the next rotation
1079+ } , getRandomInterval ( 3000 , 6000 ) ) ;
1080+ } ;
1081+
1082+ scheduleNextRotation ( ) ; // Start the first rotation
10631083
1064- return ( ) => clearInterval ( interval ) ;
1084+ return ( ) => {
1085+ if ( timeoutId ) clearTimeout ( timeoutId ) ;
1086+ } ;
10651087 } , [ visaImages . length ] ) ;
10661088
1067- // SPI image rotation effect
1089+ // SPI image rotation effect - randomize between 6-10 seconds
10681090 React . useEffect ( ( ) => {
1069- const interval = setInterval ( ( ) => {
1070- setSpiImageIndex ( ( prev ) => ( prev + 1 ) % spiImages . length ) ;
1071- } , 8000 ) ; // Change every 8 seconds
1091+ let timeoutId : ReturnType < typeof setTimeout > ;
1092+
1093+ const scheduleNextRotation = ( ) => {
1094+ timeoutId = setTimeout ( ( ) => {
1095+ setSpiImageIndex ( ( prev ) => ( prev + 1 ) % spiImages . length ) ;
1096+ scheduleNextRotation ( ) ; // Schedule the next rotation
1097+ } , getRandomInterval ( 6000 , 10000 ) ) ;
1098+ } ;
1099+
1100+ scheduleNextRotation ( ) ; // Start the first rotation
10721101
1073- return ( ) => clearInterval ( interval ) ;
1102+ return ( ) => {
1103+ if ( timeoutId ) clearTimeout ( timeoutId ) ;
1104+ } ;
10741105 } , [ spiImages . length ] ) ;
10751106
10761107 const productCode = `{
0 commit comments