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

@@ -587,6 +587,27 @@ struct VotingLayoutPickerCompact: View {
.offset(orbitOffset(index: index, total: 5, radius: 16))
}
}
case .neon:
// Equalizer bars
ZStack {
RoundedRectangle(cornerRadius: 4)
.fill(Color.black)
.frame(width: 36, height: 36)
HStack(spacing: 2) {
ForEach(0..<5, id: \.self) { index in
let heights: [CGFloat] = [24, 18, 14, 10, 8]
RoundedRectangle(cornerRadius: 1)
.fill(
LinearGradient(
colors: [Color(red: 0, green: 1, blue: 0.82), Color(red: 1, green: 0, blue: 0.8)],
startPoint: .top,
endPoint: .bottom
)
)
.frame(width: 4, height: heights[index])
}
}
}
}
}

View File

@@ -151,6 +151,30 @@ struct VotingLayoutPickerView: View {
.offset(orbitOffset(index: index, total: 5, radius: 16))
}
}
case .neon:
// Equalizer bars
ZStack {
// Grid background hint
RoundedRectangle(cornerRadius: 4)
.fill(Color.black)
.frame(width: 36, height: 36)
// Equalizer bars
HStack(spacing: 2) {
ForEach(0..<5, id: \.self) { index in
let heights: [CGFloat] = [24, 18, 14, 10, 8]
RoundedRectangle(cornerRadius: 1)
.fill(
LinearGradient(
colors: [Color(red: 0, green: 1, blue: 0.82), Color(red: 1, green: 0, blue: 0.8)],
startPoint: .top,
endPoint: .bottom
)
)
.frame(width: 4, height: heights[index])
}
}
}
}
}