//
//  OnboardingViewControllerAppearance.swift
//  Mastodon
//
//  Created by sxiaojian on 2021/2/25.
//

import UIKit

protocol OnboardingViewControllerAppearance: UIViewController {
    static var viewBottomPaddingHeight: CGFloat { get }
    func setupOnboardingAppearance()
    func setupNavigationBarAppearance()
}

extension OnboardingViewControllerAppearance {
    
    static var actionButtonHeight: CGFloat { return 46 }
    static var actionButtonMargin: CGFloat { return 12 }
    static var viewBottomPaddingHeight: CGFloat { return 11 }
    
    func setupOnboardingAppearance() {
        view.backgroundColor = Asset.Colors.Background.systemGroupedBackground.color

        setupNavigationBarAppearance()
        
        let backItem = UIBarButtonItem()
        backItem.title = L10n.Common.Controls.Actions.back
        navigationItem.backBarButtonItem = backItem
    }
    
    func setupNavigationBarAppearance() {
        // use TransparentBackground so view push / dismiss will be more visual nature
        // please add opaque background for status bar manually if needs
        let barAppearance = UINavigationBarAppearance()
        barAppearance.configureWithTransparentBackground()
        navigationController?.navigationBar.standardAppearance = barAppearance
        navigationController?.navigationBar.compactAppearance = barAppearance
        navigationController?.navigationBar.scrollEdgeAppearance = barAppearance
    }
    
    func setupNavigationBarBackgroundView() {
        let navigationBarBackgroundView: UIView = {
            let view = UIView()
            view.backgroundColor = Asset.Colors.Background.systemGroupedBackground.color
            return view
        }()
        
        navigationBarBackgroundView.translatesAutoresizingMaskIntoConstraints = false
        view.addSubview(navigationBarBackgroundView)
        NSLayoutConstraint.activate([
            navigationBarBackgroundView.topAnchor.constraint(equalTo: view.topAnchor),
            navigationBarBackgroundView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
            navigationBarBackgroundView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
            navigationBarBackgroundView.bottomAnchor.constraint(equalTo: view.layoutMarginsGuide.topAnchor),
        ])
    }
    
}
