|
|
@@ -324,12 +324,13 @@ struct QuickStartCardData {
|
|
|
let iconKind: QuickStartIconKind
|
|
|
}
|
|
|
|
|
|
-final class QuickStartCardView: NSView {
|
|
|
+final class QuickStartCardView: NSView, AppearanceRefreshable {
|
|
|
private let iconView: QuickStartIconView
|
|
|
private let gradientView: GradientCardView
|
|
|
private var iconWidthConstraint: NSLayoutConstraint!
|
|
|
private var iconHeightConstraint: NSLayoutConstraint!
|
|
|
private var hoverTracker: HoverTracker?
|
|
|
+ private var isHovered = false
|
|
|
|
|
|
init(data: QuickStartCardData) {
|
|
|
iconView = QuickStartIconView(kind: data.iconKind)
|
|
|
@@ -392,13 +393,25 @@ final class QuickStartCardView: NSView {
|
|
|
hoverTracker = HoverTracker(view: self) { [weak self] hovering in
|
|
|
self?.setHovered(hovering)
|
|
|
}
|
|
|
+ refreshAppearance()
|
|
|
}
|
|
|
|
|
|
@available(*, unavailable)
|
|
|
required init?(coder: NSCoder) { nil }
|
|
|
|
|
|
+ func refreshAppearance() {
|
|
|
+ gradientView.layer?.cornerRadius = AppTheme.cardCornerRadius
|
|
|
+ gradientView.layer?.borderWidth = isHovered ? 2 : 1.5
|
|
|
+ gradientView.layer?.borderColor = AppTheme.paywallBorder.cgColor
|
|
|
+ if isHovered {
|
|
|
+ applyHoverLift(true, on: gradientView.layer)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
private func setHovered(_ hovering: Bool) {
|
|
|
+ isHovered = hovering
|
|
|
applyHoverLift(hovering, on: gradientView.layer)
|
|
|
+ gradientView.layer?.borderWidth = hovering ? 2 : 1.5
|
|
|
}
|
|
|
|
|
|
override func layout() {
|
|
|
@@ -502,14 +515,17 @@ final class FeatureCardView: NSView, AppearanceRefreshable {
|
|
|
private func setHovered(_ hovering: Bool) {
|
|
|
isHovered = hovering
|
|
|
applyHoverLift(hovering)
|
|
|
+ layer?.borderWidth = hovering ? 2 : 1.5
|
|
|
}
|
|
|
|
|
|
func refreshAppearance() {
|
|
|
layer?.backgroundColor = AppTheme.cardBackground.cgColor
|
|
|
+ layer?.borderWidth = isHovered ? 2 : 1.5
|
|
|
+ layer?.borderColor = AppTheme.paywallBorder.cgColor
|
|
|
titleLabel.refreshThemeLabelColor()
|
|
|
subtitleLabel.refreshThemeLabelColor()
|
|
|
arrowButton.layer?.backgroundColor = AppTheme.elevatedBackground.cgColor
|
|
|
- arrowButton.layer?.borderColor = AppTheme.border.cgColor
|
|
|
+ arrowButton.layer?.borderColor = AppTheme.paywallBorder.cgColor
|
|
|
arrowButton.contentTintColor = AppTheme.textSecondary
|
|
|
if isHovered {
|
|
|
applyHoverLift(true)
|