|
|
@@ -72,7 +72,7 @@ struct PremiumFeaturesView: View {
|
|
|
.ignoresSafeArea()
|
|
|
|
|
|
GeometryReader { geo in
|
|
|
- let useWideLayout = geo.size.width >= 620
|
|
|
+ let useWideLayout = geo.size.width >= PremiumPaywallMetrics.wideLayoutMinWidth
|
|
|
VStack(spacing: 0) {
|
|
|
paywallTopBar
|
|
|
.padding(.horizontal, useWideLayout ? 22 : 16)
|
|
|
@@ -505,6 +505,16 @@ struct PremiumFeaturesView: View {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+enum PremiumPaywallMetrics {
|
|
|
+ /// Below this width `PremiumFeaturesView` uses single-column (“compact”) layout.
|
|
|
+ static let wideLayoutMinWidth: CGFloat = 620
|
|
|
+ /// SwiftUI `.sheet` defaults narrower than this; constrain so Upgrade matches launch/browser paywall.
|
|
|
+ static let sheetMinWidth: CGFloat = 900
|
|
|
+ static let sheetIdealWidth: CGFloat = 920
|
|
|
+ static let sheetMinHeight: CGFloat = 600
|
|
|
+ static let sheetIdealHeight: CGFloat = 640
|
|
|
+}
|
|
|
+
|
|
|
enum PremiumPaywallWindowSizing {
|
|
|
/// Sizes the paywall to sit inside the parent window (launcher default content ~980×700, browser ~1200×800).
|
|
|
static func contentSize(forParentWindow parent: NSWindow) -> NSSize {
|
|
|
@@ -522,6 +532,6 @@ enum PremiumPaywallWindowSizing {
|
|
|
#Preview {
|
|
|
PremiumFeaturesView()
|
|
|
.environmentObject(PremiumStore.shared)
|
|
|
- .frame(width: 920, height: 620)
|
|
|
+ .frame(width: PremiumPaywallMetrics.sheetIdealWidth, height: PremiumPaywallMetrics.sheetMinHeight + 20)
|
|
|
}
|
|
|
#endif
|