|
@@ -64,12 +64,9 @@ struct PremiumFeaturesView: View {
|
|
|
|
|
|
|
|
var body: some View {
|
|
var body: some View {
|
|
|
ZStack {
|
|
ZStack {
|
|
|
- LinearGradient(
|
|
|
|
|
- colors: backgroundGradientColors,
|
|
|
|
|
- startPoint: .topLeading,
|
|
|
|
|
- endPoint: .bottomTrailing
|
|
|
|
|
- )
|
|
|
|
|
- .ignoresSafeArea()
|
|
|
|
|
|
|
+ // Solid base + subtle gradients for a more "premium" backdrop.
|
|
|
|
|
+ paywallBackground
|
|
|
|
|
+ .ignoresSafeArea()
|
|
|
|
|
|
|
|
GeometryReader { geo in
|
|
GeometryReader { geo in
|
|
|
let useWideLayout = geo.size.width >= PremiumPaywallMetrics.wideLayoutMinWidth
|
|
let useWideLayout = geo.size.width >= PremiumPaywallMetrics.wideLayoutMinWidth
|
|
@@ -98,6 +95,45 @@ struct PremiumFeaturesView: View {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ private var paywallBackground: some View {
|
|
|
|
|
+ ZStack {
|
|
|
|
|
+ (colorScheme == .dark
|
|
|
|
|
+ ? Color(red: 0.05, green: 0.06, blue: 0.08)
|
|
|
|
|
+ : Color(red: 0.965, green: 0.975, blue: 0.995))
|
|
|
|
|
+
|
|
|
|
|
+ LinearGradient(
|
|
|
|
|
+ colors: backgroundGradientColors,
|
|
|
|
|
+ startPoint: .topLeading,
|
|
|
|
|
+ endPoint: .bottomTrailing
|
|
|
|
|
+ )
|
|
|
|
|
+ .opacity(colorScheme == .dark ? 0.6 : 0.55)
|
|
|
|
|
+
|
|
|
|
|
+ RadialGradient(
|
|
|
|
|
+ colors: [
|
|
|
|
|
+ Color.blue.opacity(colorScheme == .dark ? 0.24 : 0.18),
|
|
|
|
|
+ Color.clear,
|
|
|
|
|
+ ],
|
|
|
|
|
+ center: .topTrailing,
|
|
|
|
|
+ startRadius: 10,
|
|
|
|
|
+ endRadius: 520
|
|
|
|
|
+ )
|
|
|
|
|
+ .blendMode(.plusLighter)
|
|
|
|
|
+ .opacity(colorScheme == .dark ? 0.85 : 0.65)
|
|
|
|
|
+
|
|
|
|
|
+ RadialGradient(
|
|
|
|
|
+ colors: [
|
|
|
|
|
+ Color.purple.opacity(colorScheme == .dark ? 0.14 : 0.10),
|
|
|
|
|
+ Color.clear,
|
|
|
|
|
+ ],
|
|
|
|
|
+ center: .bottomLeading,
|
|
|
|
|
+ startRadius: 10,
|
|
|
|
|
+ endRadius: 560
|
|
|
|
|
+ )
|
|
|
|
|
+ .blendMode(.plusLighter)
|
|
|
|
|
+ .opacity(colorScheme == .dark ? 0.7 : 0.55)
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
private var paywallTopBar: some View {
|
|
private var paywallTopBar: some View {
|
|
|
HStack {
|
|
HStack {
|
|
|
Button(action: { dismissPremiumUI() }) {
|
|
Button(action: { dismissPremiumUI() }) {
|