Add Neon/Synthwave style and 4 paywall themes

- Add 4 distinct paywall themes (Celestial, Garden, Neon, Minimal) with
  preview/switcher in debug settings
- Add Neon voting layout with synthwave equalizer bar design
- Upgrade Neon entry style with grid background, cyan/magenta gradients,
  scanline effects, and mini equalizer visualization
- Add PaywallPreviewSettingsView for testing different paywall styles
- Use consistent synthwave color palette (cyan #00FFD0, magenta #FF00CC)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Trey t
2025-12-26 23:05:45 -06:00
parent f45f52ccbf
commit 53eb953b77
9 changed files with 2144 additions and 117 deletions

View File

@@ -54,6 +54,7 @@ struct SettingsContentView: View {
debugSectionHeader
trialDateButton
animationLabButton
paywallPreviewButton
#endif
Spacer()
@@ -245,6 +246,7 @@ struct SettingsContentView: View {
}
@State private var showAnimationLab = false
@State private var showPaywallPreview = false
private var animationLabButton: some View {
ZStack {
@@ -284,6 +286,51 @@ struct SettingsContentView: View {
}
}
}
private var paywallPreviewButton: some View {
ZStack {
theme.currentTheme.secondaryBGColor
Button {
showPaywallPreview = true
} label: {
HStack(spacing: 12) {
Image(systemName: "paintpalette.fill")
.font(.title2)
.foregroundStyle(
LinearGradient(
colors: [.purple, .pink, .orange],
startPoint: .topLeading,
endPoint: .bottomTrailing
)
)
.frame(width: 32)
VStack(alignment: .leading, spacing: 2) {
Text("Paywall Styles")
.foregroundColor(textColor)
Text("Preview subscription themes")
.font(.caption)
.foregroundStyle(.secondary)
}
Spacer()
Image(systemName: "chevron.right")
.font(.caption)
.foregroundStyle(.tertiary)
}
.padding()
}
}
.fixedSize(horizontal: false, vertical: true)
.cornerRadius(Constants.viewsCornerRaidus, corners: [.topLeft, .topRight, .bottomLeft, .bottomRight])
.sheet(isPresented: $showPaywallPreview) {
NavigationStack {
PaywallPreviewSettingsView()
}
}
}
#endif
// MARK: - Privacy Lock Toggle