@ -14,39 +14,20 @@ struct ImageInfoView: View {
@ State var text : String = " "
@ State var text : String = " "
@ State var textColor : Color = . black
@ State var textColor : Color = . black
@ State var backgroundColor : Color = . blue . opacity ( 0.2 )
@ State var backgroundColor : Color = . blue . opacity ( 0.2 )
@ State var textOnTap : String ? = nil
@ State var showPopover : Bool = false
@ State var showPopover : Bool = false
var tip : ( any Tip ) ? = nil
var tip : ( any Tip ) ? = nil
var body : some View {
var body : some View {
Group {
HStack {
if #available ( iOS 18.4 , * ) {
Image ( systemName : self . systemImage )
HStack {
. font ( . title )
Image ( systemName : self . systemImage )
. foregroundStyle ( . white )
. font ( . title )
Text ( self . text )
. foregroundStyle ( . white )
. foregroundStyle ( self . textColor )
Text ( self . text )
. fontWeight ( . semibold )
. foregroundStyle ( self . textColor )
. frame ( maxWidth : . infinity )
. fontWeight ( . semibold )
. frame ( maxWidth : . infinity )
} . popoverTip ( self . tip )
} else {
HStack {
Image ( systemName : self . systemImage )
. font ( . title )
. foregroundStyle ( . white )
Text ( self . text )
. fontWeight ( . semibold )
. frame ( maxWidth : . infinity )
} . onTapGesture {
if self . tip != nil {
self . showPopover = true
}
}
}
}
}
. alert ( " Message " , isPresented : self . $ showPopover , actions : { } , message : {
. alert ( " Message " , isPresented : self . $ showPopover , actions : { } , message : {
if let tip {
if let tip {
@ -58,8 +39,7 @@ struct ImageInfoView: View {
. frame ( maxWidth : . infinity )
. frame ( maxWidth : . infinity )
. padding ( )
. padding ( )
. background ( self . backgroundColor )
. background ( self . backgroundColor )
. listRowInsets ( EdgeInsets ( ) )
. listRowInsets ( EdgeInsets ( ) ) // R e m o v e d e f a u l t i n s e t s
}
}
}
}
@ -76,10 +56,8 @@ struct PaymentStatusView: View {
let end = remaining > 1 ? " s " : " "
let end = remaining > 1 ? " s " : " "
let text = " Tournoi offert ( \( remaining ) restant \( end ) ) "
let text = " Tournoi offert ( \( remaining ) restant \( end ) ) "
ImageInfoView ( systemImage : " gift.fill " , text : text , tip : FreeTournamentTip ( ) )
ImageInfoView ( systemImage : " gift.fill " , text : text , tip : FreeTournamentTip ( ) )
// T i p V i e w ( F r e e T o u r n a m e n t T i p ( ) ) . t i p S t y l e ( t i n t : n i l , b a c k g r o u n d : . b l u e . o p a c i t y ( 0 . 2 ) )
case nil :
case nil :
ImageInfoView ( systemImage : " exclamationmark.bubble.fill " , text : " Veuillez souscrire à une offre pour convoquer ou entrer un résultat " , textColor : . white , backgroundColor : . logoRed , tip : NoPaymentTip ( ) )
ImageInfoView ( systemImage : " exclamationmark.bubble.fill " , text : " Veuillez souscrire à une offre pour convoquer ou entrer un résultat " , textColor : . white , backgroundColor : . logoRed , tip : NoPaymentTip ( ) )
// T i p V i e w ( N o P a y m e n t T i p ( ) ) . t i p S t y l e ( t i n t : n i l , b a c k g r o u n d : . l o g o R e d )
default :
default :
EmptyView ( )
EmptyView ( )
}
}