Components/Pricing/Trial + Annual Paywall
Trial + Annual Paywall

Trial + Annual Paywall

NFrom Nibware

A two-option paywall with a highlighted free-trial annual plan and a monthly alternative.

Pricing · 33 lines · SwiftUI · iOS 17+

The actual source

TrialAnnualPaywall.swift
import SwiftUI

func prButton(_ label: String, bg: Color, fg: Color = .white, radius: CGFloat = 12, size: CGFloat = 16) -> some View {
    Text(label).font(.system(size: size, weight: .semibold)).foregroundStyle(fg).frame(maxWidth: .infinity).padding(.vertical, 15).background(bg, in: RoundedRectangle(cornerRadius: radius, style: .continuous))
}

/// The Athletic - two-plan selector paywall (7-day trial / monthly), red CTA.
struct PricingAthletic: View {
    let red = Color(red: 0.90, green: 0.28, blue: 0.29)
    let green = Color(red: 0.20, green: 0.78, blue: 0.45)
    var body: some View {
        VStack(spacing: 0) {

What it needs

Self-contained SwiftUI - system materials, SF Symbols, no external dependencies. Everything it needs - tokens, sub-views, models - is carried in the copy-paste source above.