|
|
@@ -324,12 +324,13 @@ struct QuickStartCardData {
|
|
324
|
324
|
let iconKind: QuickStartIconKind
|
|
325
|
325
|
}
|
|
326
|
326
|
|
|
327
|
|
-final class QuickStartCardView: NSView {
|
|
|
327
|
+final class QuickStartCardView: NSView, AppearanceRefreshable {
|
|
328
|
328
|
private let iconView: QuickStartIconView
|
|
329
|
329
|
private let gradientView: GradientCardView
|
|
330
|
330
|
private var iconWidthConstraint: NSLayoutConstraint!
|
|
331
|
331
|
private var iconHeightConstraint: NSLayoutConstraint!
|
|
332
|
332
|
private var hoverTracker: HoverTracker?
|
|
|
333
|
+ private var isHovered = false
|
|
333
|
334
|
|
|
334
|
335
|
init(data: QuickStartCardData) {
|
|
335
|
336
|
iconView = QuickStartIconView(kind: data.iconKind)
|
|
|
@@ -392,13 +393,25 @@ final class QuickStartCardView: NSView {
|
|
392
|
393
|
hoverTracker = HoverTracker(view: self) { [weak self] hovering in
|
|
393
|
394
|
self?.setHovered(hovering)
|
|
394
|
395
|
}
|
|
|
396
|
+ refreshAppearance()
|
|
395
|
397
|
}
|
|
396
|
398
|
|
|
397
|
399
|
@available(*, unavailable)
|
|
398
|
400
|
required init?(coder: NSCoder) { nil }
|
|
399
|
401
|
|
|
|
402
|
+ func refreshAppearance() {
|
|
|
403
|
+ gradientView.layer?.cornerRadius = AppTheme.cardCornerRadius
|
|
|
404
|
+ gradientView.layer?.borderWidth = isHovered ? 2 : 1.5
|
|
|
405
|
+ gradientView.layer?.borderColor = AppTheme.paywallBorder.cgColor
|
|
|
406
|
+ if isHovered {
|
|
|
407
|
+ applyHoverLift(true, on: gradientView.layer)
|
|
|
408
|
+ }
|
|
|
409
|
+ }
|
|
|
410
|
+
|
|
400
|
411
|
private func setHovered(_ hovering: Bool) {
|
|
|
412
|
+ isHovered = hovering
|
|
401
|
413
|
applyHoverLift(hovering, on: gradientView.layer)
|
|
|
414
|
+ gradientView.layer?.borderWidth = hovering ? 2 : 1.5
|
|
402
|
415
|
}
|
|
403
|
416
|
|
|
404
|
417
|
override func layout() {
|
|
|
@@ -502,14 +515,17 @@ final class FeatureCardView: NSView, AppearanceRefreshable {
|
|
502
|
515
|
private func setHovered(_ hovering: Bool) {
|
|
503
|
516
|
isHovered = hovering
|
|
504
|
517
|
applyHoverLift(hovering)
|
|
|
518
|
+ layer?.borderWidth = hovering ? 2 : 1.5
|
|
505
|
519
|
}
|
|
506
|
520
|
|
|
507
|
521
|
func refreshAppearance() {
|
|
508
|
522
|
layer?.backgroundColor = AppTheme.cardBackground.cgColor
|
|
|
523
|
+ layer?.borderWidth = isHovered ? 2 : 1.5
|
|
|
524
|
+ layer?.borderColor = AppTheme.paywallBorder.cgColor
|
|
509
|
525
|
titleLabel.refreshThemeLabelColor()
|
|
510
|
526
|
subtitleLabel.refreshThemeLabelColor()
|
|
511
|
527
|
arrowButton.layer?.backgroundColor = AppTheme.elevatedBackground.cgColor
|
|
512
|
|
- arrowButton.layer?.borderColor = AppTheme.border.cgColor
|
|
|
528
|
+ arrowButton.layer?.borderColor = AppTheme.paywallBorder.cgColor
|
|
513
|
529
|
arrowButton.contentTintColor = AppTheme.textSecondary
|
|
514
|
530
|
if isHovered {
|
|
515
|
531
|
applyHoverLift(true)
|