import SwiftUI

public struct Toolbar: View {
    private let title: ToolbarTitle
    private let leading: AnyView?
    private let trailing: AnyView?

    public init(
        title: ToolbarTitle,
        leading: (() -> some View) = { EmptyView() },
        trailing: (() -> some View) = { EmptyView() }
    ) {
        self.title = title
        self.leading = AnyView(leading())
        self.trailing = AnyView(trailing())
    }

    public init(
        _ titleString: String,
        leading: (() -> some View) = { EmptyView() },
        trailing: (() -> some View) = { EmptyView() }
    ) {
        self.init(
            title: ToolbarTitle(titleString),
            leading: leading,
            trailing: trailing
        )
    }

    public var body: some View {
        title
            .frame(maxWidth: .infinity, alignment: .center)
            .overlay(alignment: .leading) {
                leading
            }
            .overlay(alignment: .trailing) {
                trailing
            }
            .padding(.top, 30)
            .padding(.horizontal, 16)
    }
}
