//
//  CLIconLabel.swift

//
//  Created by Leon on 2025/7/22.
//

import UIKit

/// icon: 12x12 textLabel: txt.label.s
class CLIconLabel: UIView {
    // MARK: - Properties

    /// Default: 12x12 icon image view
    let iconImageView: UIImageView = {
        let view = UIImageView()
        view.translatesAutoresizingMaskIntoConstraints = false
        return view
    }()

    /// Label with default text style
    let contentLabel: UILabel = {
        let label = UILabel()
        label.translatesAutoresizingMaskIntoConstraints = false
        label.textColor = .c.ctpn
        label.font = .t.tls // 12
        label.textAlignment = .left
        return label
    }()

    private let stackView: UIStackView = {
        let stackView = UIStackView()
        stackView.translatesAutoresizingMaskIntoConstraints = false
        stackView.spacing = 4
        stackView.distribution = .equalSpacing
        stackView.axis = .horizontal
        stackView.alignment = .center
        stackView.setContentHuggingPriority(UILayoutPriority(rawValue: 256), for: .horizontal)
        return stackView
    }()
    
    /// Default: 12x12
    var iconSize: CGSize?{
        didSet{
            iconImageView.snp.remakeConstraints { make in
                make.size.equalTo(iconSize ?? CGSize(width: 12, height: 12))
            }
        }
    }

    /// Configurable left and right padding for the stack view
    var innerLRPadding: CGFloat = 0 {
        didSet {
            // Update stack view constraints when padding changes
            stackView.snp.remakeConstraints { make in
                make.centerY.equalTo(self)
                make.leading.equalTo(self).offset(self.innerLRPadding)
                make.trailing.equalTo(self).offset(-self.innerLRPadding)
                make.top.greaterThanOrEqualToSuperview()
                make.bottom.lessThanOrEqualToSuperview()
            }
        }
    }
    
    var spacing:CGFloat = 4{
        didSet{
            stackView.spacing = spacing
        }
    }

    // MARK: - Initialization

    override init(frame: CGRect) {
        super.init(frame: frame)
        setupViews()
    }

    required init?(coder: NSCoder) {
        super.init(coder: coder)
        setupViews()
    }

    // MARK: - Setup

    private func setupViews() {
        stackView.setContentHuggingPriority(UILayoutPriority(258), for: .horizontal)
        iconImageView.setContentHuggingPriority(UILayoutPriority(rawValue: 254), for: .horizontal)
        iconImageView.setContentCompressionResistancePriority(UILayoutPriority(rawValue: 754), for: .horizontal)
        contentLabel.setContentHuggingPriority(UILayoutPriority(rawValue: 254), for: .horizontal)
        contentLabel.setContentCompressionResistancePriority(UILayoutPriority(rawValue: 754), for: .horizontal)
        
        addSubview(stackView)

        // Configure stack view constraints
        stackView.snp.makeConstraints { make in
            make.leading.equalTo(self).offset(innerLRPadding)
            make.trailing.equalTo(self).offset(-innerLRPadding)
            make.centerY.equalTo(self)
            make.top.greaterThanOrEqualToSuperview()
            make.bottom.lessThanOrEqualToSuperview()
        }

        // Add subviews to stack view
        stackView.addArrangedSubview(iconImageView)
        stackView.addArrangedSubview(contentLabel)

        // Set icon image view size (12x12 as per original)
        iconImageView.snp.makeConstraints { make in
            make.size.equalTo(CGSize(width: 12, height: 12))
        }
    }
    
    // MARK: - Helper
    
    private func commonCoinAndLabel(){
        
    }
}
