// // IndeedLogoView.swift // App for Indeed // import Cocoa /// App logo from the asset catalog for splash and branding surfaces. enum IndeedBrandLogo { enum Variant { case standard case compact } static func logoImage(variant: Variant = .standard) -> NSImage? { switch variant { case .standard: NSImage(named: NSImage.Name("IndeedLogo")) case .compact: NSImage(named: NSImage.Name("IndeedLogoSmall")) } } } final class IndeedLogoView: NSView { private let imageView = NSImageView() private let variant: IndeedBrandLogo.Variant private var displayHeight: CGFloat private var sizeConstraints: [NSLayoutConstraint] = [] override var intrinsicContentSize: NSSize { NSSize(width: displayHeight, height: displayHeight) } init(displayHeight: CGFloat = 44, variant: IndeedBrandLogo.Variant = .standard) { self.displayHeight = displayHeight self.variant = variant super.init(frame: .zero) setUp() } @available(*, unavailable) required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } func setDisplayHeight(_ height: CGFloat) { displayHeight = height sizeConstraints.forEach { $0.constant = height } invalidateIntrinsicContentSize() } private func setUp() { translatesAutoresizingMaskIntoConstraints = false setContentHuggingPriority(.required, for: .horizontal) setContentHuggingPriority(.required, for: .vertical) setContentCompressionResistancePriority(.defaultLow, for: .horizontal) setContentCompressionResistancePriority(.defaultLow, for: .vertical) imageView.translatesAutoresizingMaskIntoConstraints = false imageView.imageScaling = .scaleProportionallyUpOrDown imageView.image = IndeedBrandLogo.logoImage(variant: variant) addSubview(imageView) let width = widthAnchor.constraint(equalToConstant: displayHeight) let height = heightAnchor.constraint(equalToConstant: displayHeight) sizeConstraints = [width, height] NSLayoutConstraint.activate(sizeConstraints + [ imageView.leadingAnchor.constraint(equalTo: leadingAnchor), imageView.trailingAnchor.constraint(equalTo: trailingAnchor), imageView.topAnchor.constraint(equalTo: topAnchor), imageView.bottomAnchor.constraint(equalTo: bottomAnchor) ]) setAccessibilityElement(true) setAccessibilityRole(.image) setAccessibilityLabel(AppMarketingLinks.displayName) } }