import SwiftUI

public struct SafePaddingViewModifier: ViewModifier {
    private let padding: CGFloat
    @State private var hasBottomSafeInset: Bool = false

    init(padding: CGFloat) {
        self.padding = padding
    }

    public func body(content: Content) -> some View {
        content
            .padding(.bottom, hasBottomSafeInset ? 0 : padding)
            .background {
                GeometryReader { proxy in
                    Color.clear.onAppear {
                        hasBottomSafeInset = proxy.safeAreaInsets.bottom != 0
                    }
                }
            }
    }
}

public extension View {
    func safePadding(_ padding: CGFloat = 8) -> some View {
        modifier(SafePaddingViewModifier(padding: padding))
    }
}
