Quellcode durchsuchen

Spread paywall footer links evenly across the full panel width.

Co-authored-by: Cursor <cursoragent@cursor.com>
AhtashamShahzad1 vor 1 Monat
Ursprung
Commit
2f43d479d6
1 geänderte Dateien mit 32 neuen und 14 gelöschten Zeilen
  1. 32 14
      smart_printer/PaywallView.swift

+ 32 - 14
smart_printer/PaywallView.swift

@@ -645,7 +645,8 @@ final class PaywallView: NSView, AppearanceRefreshable {
             ctaButton.heightAnchor.constraint(equalToConstant: 48),
             ctaButton.bottomAnchor.constraint(lessThanOrEqualTo: footerLinks.topAnchor, constant: -14),
 
-            footerLinks.centerXAnchor.constraint(equalTo: panel.centerXAnchor),
+            footerLinks.leadingAnchor.constraint(equalTo: panel.leadingAnchor, constant: 28),
+            footerLinks.trailingAnchor.constraint(equalTo: panel.trailingAnchor, constant: -28),
             footerLinks.bottomAnchor.constraint(equalTo: panel.bottomAnchor, constant: -20),
         ])
 
@@ -707,32 +708,49 @@ final class PaywallView: NSView, AppearanceRefreshable {
         let termsLink = PaywallFooterLink(title: "Terms of Service")
         let supportLink = PaywallFooterLink(title: "Support")
 
-        let separator1 = makeFooterSeparator()
-        let separator2 = makeFooterSeparator()
-        let separator3 = makeFooterSeparator()
-        let separator4 = makeFooterSeparator()
+        let links: [(PaywallFooterLink, Bool)] = [
+            (continueWithFreePlanLink, true),
+            (restoreLink, true),
+            (privacyLink, true),
+            (termsLink, true),
+            (supportLink, false),
+        ]
 
-        let linksStack = NSStackView(views: [
-            continueWithFreePlanLink, separator1, restoreLink, separator2, privacyLink, separator3, termsLink, separator4, supportLink,
-        ])
+        let linkGroups = links.map { link, showsSeparator in
+            makeFooterLinkGroup(link: link, showsSeparator: showsSeparator)
+        }
+
+        let linksStack = NSStackView(views: linkGroups)
         linksStack.orientation = .horizontal
-        linksStack.spacing = 8
+        linksStack.spacing = 0
         linksStack.alignment = .centerY
-        linksStack.distribution = .fillProportionally
+        linksStack.distribution = .equalSpacing
         linksStack.translatesAutoresizingMaskIntoConstraints = false
 
         container.addSubview(linksStack)
         NSLayoutConstraint.activate([
-            linksStack.centerXAnchor.constraint(equalTo: container.centerXAnchor),
-            linksStack.leadingAnchor.constraint(greaterThanOrEqualTo: container.leadingAnchor),
-            linksStack.trailingAnchor.constraint(lessThanOrEqualTo: container.trailingAnchor),
+            linksStack.leadingAnchor.constraint(equalTo: container.leadingAnchor),
+            linksStack.trailingAnchor.constraint(equalTo: container.trailingAnchor),
             linksStack.topAnchor.constraint(equalTo: container.topAnchor),
-            linksStack.bottomAnchor.constraint(equalTo: container.bottomAnchor)
+            linksStack.bottomAnchor.constraint(equalTo: container.bottomAnchor),
         ])
 
         return container
     }
 
+    private func makeFooterLinkGroup(link: PaywallFooterLink, showsSeparator: Bool) -> NSView {
+        let group = NSStackView()
+        group.orientation = .horizontal
+        group.spacing = 8
+        group.alignment = .centerY
+        group.translatesAutoresizingMaskIntoConstraints = false
+        group.addArrangedSubview(link)
+        if showsSeparator {
+            group.addArrangedSubview(makeFooterSeparator())
+        }
+        return group
+    }
+
     private func makeFooterSeparator() -> NSView {
         let separator = NSView()
         separator.translatesAutoresizingMaskIntoConstraints = false