// // Line.swift // VDS // // Created by Nadigadda, Sumanth on 24/03/23. // import Foundation import UIKit import VDSColorTokens @objc(VDSLine) open class Line: View { //-------------------------------------------------- // MARK: - Enums //-------------------------------------------------- public enum Style: String, CaseIterable { case primary, secondary } //-------------------------------------------------- // MARK: - Public Properties //-------------------------------------------------- open var lineView = UIView().with { $0.translatesAutoresizingMaskIntoConstraints = false } open var style: Style = .primary { didSet { setNeedsUpdate() } } //-------------------------------------------------- // MARK: - Lifecycle //-------------------------------------------------- open override func setup() { super.setup() addSubview(lineView) lineView.height(1) lineView.pinToSuperView() } /// Resets back to this objects default settings. open override func reset() { super.reset() style = .primary } //-------------------------------------------------- // MARK: - Configuration //-------------------------------------------------- public var lineViewColorConfiguration: AnyColorable = { let config = KeyedColorConfiguration(keyPath: \.style) config.setSurfaceColors(VDSColor.elementsPrimaryOnlight, VDSColor.elementsPrimaryOndark, forKey: .primary) config.setSurfaceColors(VDSColor.elementsLowcontrastOnlight, VDSColor.elementsLowcontrastOndark, forKey: .secondary) return config.eraseToAnyColorable() }() //-------------------------------------------------- // MARK: - State //-------------------------------------------------- open override func updateView() { lineView.backgroundColor = lineViewColorConfiguration.getColor(self) } }