Parcourir la Source

Make card borders more visible across paywall and home screens.

Use a darker paywall border color and slightly thicker strokes so plan cards, trust badges, feature cards, and quick start cards read more clearly against light backgrounds.

Co-authored-by: Cursor <cursoragent@cursor.com>
AhtashamShahzad1 il y a 4 heures
Parent
commit
d74cbd78ea

+ 5 - 1
smart_printer/AppTheme.swift

@@ -154,7 +154,11 @@ enum AppTheme {
154 154
     static let paywallGold = NSColor(red: 0.96, green: 0.90, blue: 0.78, alpha: 1)
155 155
     static let paywallGoldText = NSColor(red: 0.65, green: 0.48, blue: 0.22, alpha: 1)
156 156
 
157
-    static var paywallBorder: NSColor { border }
157
+    static var paywallBorder: NSColor {
158
+        isDark
159
+            ? NSColor(calibratedWhite: 0.36, alpha: 1)
160
+            : NSColor(calibratedWhite: 0.80, alpha: 1)
161
+    }
158 162
 
159 163
     static var paywallBackground: NSColor { cardBackground }
160 164
 

+ 3 - 3
smart_printer/PaywallView.swift

@@ -300,12 +300,12 @@ private final class PaywallPlanCard: NSControl, AppearanceRefreshable {
300 300
             layer?.borderWidth = 2
301 301
             layer?.borderColor = AppTheme.green.cgColor
302 302
         } else if isHovered {
303
-            layer?.borderWidth = 1.5
303
+            layer?.borderWidth = 2
304 304
             let hoverBorder = AppTheme.paywallBorder.blended(withFraction: 0.35, of: AppTheme.paywallAccent)
305 305
                 ?? AppTheme.paywallBorder
306 306
             layer?.borderColor = hoverBorder.cgColor
307 307
         } else {
308
-            layer?.borderWidth = 1
308
+            layer?.borderWidth = 1.5
309 309
             layer?.borderColor = AppTheme.paywallBorder.cgColor
310 310
         }
311 311
     }
@@ -683,7 +683,7 @@ final class PaywallView: NSView, AppearanceRefreshable {
683 683
         trustStack.translatesAutoresizingMaskIntoConstraints = false
684 684
         trustStack.wantsLayer = true
685 685
         trustStack.layer?.cornerRadius = 12
686
-        trustStack.layer?.borderWidth = 1
686
+        trustStack.layer?.borderWidth = 1.5
687 687
         trustStack.layer?.masksToBounds = true
688 688
         trustStack.edgeInsets = NSEdgeInsets(top: 12, left: 14, bottom: 12, right: 14)
689 689
         trustStack.translatesAutoresizingMaskIntoConstraints = false

+ 18 - 2
smart_printer/UIComponents.swift

@@ -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)