Skip to content
Snippets Groups Projects
SearchLeftPlaceholderView.swift 2.02 KiB
Newer Older
import UIKit
import Shared
final class SearchLeftPlaceholderView: UIView {
    let titleLabel = UILabel()
    let subtitleWithInfo = TextWithInfoView()

    var infoPublisher: AnyPublisher<Void, Never> {
        infoSubject.eraseToAnyPublisher()
    }

    private let infoSubject = PassthroughSubject<Void, Never>()

    init() {
        super.init(frame: .zero)

        let attrString = NSMutableAttributedString(
            string: Localized.Ud.Search.Placeholder.title,
            attributes: [
                .foregroundColor: Asset.neutralDark.color,
                .font: Fonts.Mulish.bold.font(size: 32.0)
            ]
        )

        attrString.addAttribute(
            name: .foregroundColor,
            value: Asset.brandPrimary.color,
            betweenCharacters: "#"
        )

        titleLabel.numberOfLines = 0
        titleLabel.attributedText = attrString

        let paragraph = NSMutableParagraphStyle()
        paragraph.lineHeightMultiple = 1.3

        subtitleWithInfo.setup(
            text: Localized.Ud.Search.Placeholder.subtitle,
            attributes: [
                .paragraphStyle: paragraph,
                .foregroundColor: Asset.neutralBody.color,
                .font: Fonts.Mulish.regular.font(size: 16.0)
            ],
            didTapInfo: { [weak self] in
                guard let self = self else { return }
                self.infoSubject.send(())
            }
        )

        addSubview(titleLabel)
        addSubview(subtitleWithInfo)
    }

    required init?(coder: NSCoder) { nil }

    private func setupConstraints() {
        titleLabel.snp.makeConstraints {
            $0.top.equalToSuperview().offset(50)
            $0.left.equalToSuperview()
            $0.right.equalToSuperview()
        }

        subtitleWithInfo.snp.makeConstraints {
            $0.top.equalTo(titleLabel.snp.bottom).offset(30)
            $0.left.equalToSuperview()
            $0.right.equalToSuperview()
            $0.bottom.equalToSuperview()
        }
    }