Path: blob/a-new-beginning/Folium-iOS/Extensions/Color.swift
2 views
//
// Color.swift
// Folium-iOS
//
// Created by Jarrod Norwell on 2/7/2025.
//
import SwiftUI
import UIKit
extension Color {
static let vibrantBlues: [Self] = [
.init(red: 0.70, green: 0.85, blue: 1.00), // sky blue
.init(red: 0.55, green: 0.75, blue: 1.00),
.init(red: 0.40, green: 0.65, blue: 1.00),
.init(red: 0.30, green: 0.55, blue: 0.95),
.init(red: 0.20, green: 0.45, blue: 0.90), // vibrant mid blue
.init(red: 0.15, green: 0.40, blue: 0.80),
.init(red: 0.10, green: 0.35, blue: 0.70),
.init(red: 0.05, green: 0.30, blue: 0.60),
.init(red: 0.00, green: 0.25, blue: 0.50) // deep navy/teal
]
static let vibrantBrowns: [Self] = [
.init(red: 0.95, green: 0.90, blue: 0.80), // light beige
.init(red: 0.90, green: 0.80, blue: 0.65),
.init(red: 0.85, green: 0.70, blue: 0.50),
.init(red: 0.80, green: 0.60, blue: 0.40),
.init(red: 0.70, green: 0.50, blue: 0.30), // rich caramel
.init(red: 0.60, green: 0.40, blue: 0.25),
.init(red: 0.50, green: 0.30, blue: 0.20),
.init(red: 0.40, green: 0.25, blue: 0.15),
.init(red: 0.30, green: 0.20, blue: 0.10) // deep chocolate
]
static let vibrantGolds: [Self] = [
.init(red: 1.00, green: 0.95, blue: 0.80), // pale champagne gold
.init(red: 1.00, green: 0.90, blue: 0.60),
.init(red: 1.00, green: 0.85, blue: 0.45),
.init(red: 0.98, green: 0.80, blue: 0.30),
.init(red: 0.95, green: 0.75, blue: 0.15), // vibrant metallic gold
.init(red: 0.90, green: 0.65, blue: 0.10),
.init(red: 0.85, green: 0.55, blue: 0.05),
.init(red: 0.75, green: 0.45, blue: 0.05),
.init(red: 0.65, green: 0.35, blue: 0.05) // deep antique gold
]
static let vibrantGreens: [Self] = [
.init(red: 0.70, green: 1.00, blue: 0.70), // bright mint
.init(red: 0.55, green: 0.95, blue: 0.55),
.init(red: 0.40, green: 0.90, blue: 0.50),
.init(red: 0.30, green: 0.85, blue: 0.45),
.init(red: 0.20, green: 0.80, blue: 0.40), // strong mid green
.init(red: 0.10, green: 0.75, blue: 0.35),
.init(red: 0.05, green: 0.65, blue: 0.35),
.init(red: 0.00, green: 0.55, blue: 0.35),
.init(red: 0.00, green: 0.45, blue: 0.30) // deep emerald
]
static let vibrantMints: [Self] = [
.init(red: 0.85, green: 1.00, blue: 0.90), // soft icy mint
.init(red: 0.75, green: 1.00, blue: 0.85),
.init(red: 0.65, green: 1.00, blue: 0.80),
.init(red: 0.55, green: 0.95, blue: 0.75),
.init(red: 0.45, green: 0.90, blue: 0.70), // vibrant mint green
.init(red: 0.35, green: 0.85, blue: 0.65),
.init(red: 0.25, green: 0.75, blue: 0.60),
.init(red: 0.20, green: 0.65, blue: 0.55),
.init(red: 0.15, green: 0.55, blue: 0.50) // deep teal
]
static let vibrantOranges: [Self] = [
.init(red: 1.00, green: 0.85, blue: 0.70), // light peach
.init(red: 1.00, green: 0.75, blue: 0.55),
.init(red: 1.00, green: 0.65, blue: 0.40),
.init(red: 1.00, green: 0.55, blue: 0.25),
.init(red: 1.00, green: 0.45, blue: 0.10), // vibrant orange
.init(red: 0.90, green: 0.40, blue: 0.05),
.init(red: 0.80, green: 0.35, blue: 0.05),
.init(red: 0.70, green: 0.30, blue: 0.05),
.init(red: 0.60, green: 0.25, blue: 0.05) // deep burnt orange
]
static let vibrantPinks: [Self] = [
.init(red: 1.00, green: 0.85, blue: 0.90), // soft pastel pink
.init(red: 1.00, green: 0.75, blue: 0.85),
.init(red: 1.00, green: 0.65, blue: 0.80),
.init(red: 1.00, green: 0.55, blue: 0.75),
.init(red: 1.00, green: 0.45, blue: 0.70), // vibrant hot pink
.init(red: 0.95, green: 0.35, blue: 0.65),
.init(red: 0.90, green: 0.25, blue: 0.60),
.init(red: 0.80, green: 0.20, blue: 0.55),
.init(red: 0.70, green: 0.10, blue: 0.50) // deep magenta
]
static let vibrantPurples: [Self] = [
.init(red: 0.90, green: 0.85, blue: 1.00), // soft lavender
.init(red: 0.80, green: 0.70, blue: 1.00),
.init(red: 0.70, green: 0.55, blue: 1.00),
.init(red: 0.60, green: 0.45, blue: 0.95),
.init(red: 0.55, green: 0.35, blue: 0.90), // vibrant royal purple
.init(red: 0.50, green: 0.30, blue: 0.80),
.init(red: 0.45, green: 0.25, blue: 0.70),
.init(red: 0.40, green: 0.20, blue: 0.60),
.init(red: 0.35, green: 0.15, blue: 0.50) // deep plum
]
static let vibrantRainbow: [Self] = [
.init(red: 1.00, green: 0.30, blue: 0.30), // red
.init(red: 1.00, green: 0.55, blue: 0.20), // orange
.init(red: 1.00, green: 0.90, blue: 0.25), // yellow
.init(red: 0.30, green: 0.85, blue: 0.30), // green
.init(red: 0.00, green: 0.65, blue: 0.85), // cyan / turquoise
.init(red: 0.20, green: 0.45, blue: 0.90), // blue
.init(red: 0.45, green: 0.35, blue: 0.85), // indigo
.init(red: 0.70, green: 0.40, blue: 0.85), // violet
.init(red: 0.90, green: 0.35, blue: 0.70) // magenta
]
static let vibrantReds: [Self] = [
.init(red: 1.00, green: 0.75, blue: 0.75), // light pink
.init(red: 1.00, green: 0.60, blue: 0.60),
.init(red: 1.00, green: 0.50, blue: 0.50),
.init(red: 0.95, green: 0.40, blue: 0.40),
.init(red: 0.90, green: 0.30, blue: 0.30), // vibrant mid red
.init(red: 0.80, green: 0.20, blue: 0.20),
.init(red: 0.70, green: 0.15, blue: 0.15),
.init(red: 0.60, green: 0.10, blue: 0.10),
.init(red: 0.50, green: 0.05, blue: 0.05) // deep crimson
]
static let vibrantViolets: [Self] = [
.init(red: 0.90, green: 0.80, blue: 1.00), // soft lilac
.init(red: 0.80, green: 0.65, blue: 1.00),
.init(red: 0.70, green: 0.55, blue: 1.00),
.init(red: 0.60, green: 0.45, blue: 0.95),
.init(red: 0.50, green: 0.35, blue: 0.90), // vibrant mid violet
.init(red: 0.45, green: 0.30, blue: 0.80),
.init(red: 0.40, green: 0.25, blue: 0.70),
.init(red: 0.35, green: 0.20, blue: 0.60),
.init(red: 0.30, green: 0.15, blue: 0.50) // deep indigo
]
static let vibrantYellows: [Self] = [
.init(red: 1.00, green: 0.98, blue: 0.80), // pale lemon
.init(red: 1.00, green: 0.95, blue: 0.60),
.init(red: 1.00, green: 0.90, blue: 0.40),
.init(red: 1.00, green: 0.85, blue: 0.25),
.init(red: 1.00, green: 0.80, blue: 0.10), // vibrant golden yellow
.init(red: 0.95, green: 0.75, blue: 0.05),
.init(red: 0.90, green: 0.65, blue: 0.00),
.init(red: 0.80, green: 0.55, blue: 0.00),
.init(red: 0.70, green: 0.45, blue: 0.00) // deep amber
]
}
extension Color {
var uiColour: UIColor { .init(self) }
static let coldWarm: [Self] = [
.init(red: 0.85, green: 0.55, blue: 0.52),
.init(red: 0.92, green: 0.75, blue: 0.50),
.init(red: 0.90, green: 0.85, blue: 0.60),
.init(red: 0.55, green: 0.70, blue: 0.55),
.init(red: 0.45, green: 0.65, blue: 0.75),
.init(red: 0.55, green: 0.50, blue: 0.75),
.init(red: 0.75, green: 0.55, blue: 0.75),
.init(red: 0.80, green: 0.60, blue: 0.65),
.init(red: 0.75, green: 0.75, blue: 0.78)
]
static let blues: [Self] = [
.init(red: 0.85, green: 0.92, blue: 1.00),
.init(red: 0.68, green: 0.80, blue: 0.90),
.init(red: 0.58, green: 0.70, blue: 0.82),
.init(red: 0.50, green: 0.60, blue: 0.75),
.init(red: 0.42, green: 0.52, blue: 0.68),
.init(red: 0.35, green: 0.45, blue: 0.60),
.init(red: 0.28, green: 0.38, blue: 0.55),
.init(red: 0.22, green: 0.32, blue: 0.50),
.init(red: 0.18, green: 0.26, blue: 0.42)
]
static let grays: [Self] = [
.init(red: 0.95, green: 0.95, blue: 0.95),
.init(red: 0.85, green: 0.85, blue: 0.85),
.init(red: 0.75, green: 0.75, blue: 0.75),
.init(red: 0.60, green: 0.60, blue: 0.60),
.init(red: 0.50, green: 0.50, blue: 0.50),
.init(red: 0.40, green: 0.40, blue: 0.40),
.init(red: 0.30, green: 0.30, blue: 0.30),
.init(red: 0.20, green: 0.20, blue: 0.20),
.init(red: 0.10, green: 0.10, blue: 0.10)
]
static let graysWithBlue: [Self] = [
.init(red: 0.94, green: 0.94, blue: 0.97),
.init(red: 0.83, green: 0.83, blue: 0.88),
.init(red: 0.73, green: 0.73, blue: 0.78),
.init(red: 0.58, green: 0.58, blue: 0.65),
.init(red: 0.48, green: 0.48, blue: 0.55),
.init(red: 0.38, green: 0.38, blue: 0.45),
.init(red: 0.28, green: 0.28, blue: 0.35),
.init(red: 0.18, green: 0.18, blue: 0.25),
.init(red: 0.08, green: 0.08, blue: 0.15)
]
static let graysWithGreen: [Self] = [
.init(red: 0.94, green: 0.96, blue: 0.94),
.init(red: 0.83, green: 0.86, blue: 0.83),
.init(red: 0.73, green: 0.76, blue: 0.73),
.init(red: 0.58, green: 0.62, blue: 0.58),
.init(red: 0.48, green: 0.52, blue: 0.48),
.init(red: 0.38, green: 0.42, blue: 0.38),
.init(red: 0.28, green: 0.33, blue: 0.28),
.init(red: 0.18, green: 0.23, blue: 0.18),
.init(red: 0.08, green: 0.13, blue: 0.08)
]
static let graysWithOrange: [Self] = [
.init(red: 0.97, green: 0.95, blue: 0.90),
.init(red: 0.88, green: 0.85, blue: 0.80),
.init(red: 0.78, green: 0.75, blue: 0.70),
.init(red: 0.63, green: 0.60, blue: 0.55),
.init(red: 0.53, green: 0.50, blue: 0.45),
.init(red: 0.43, green: 0.40, blue: 0.35),
.init(red: 0.33, green: 0.30, blue: 0.25),
.init(red: 0.23, green: 0.20, blue: 0.15),
.init(red: 0.13, green: 0.10, blue: 0.05)
]
static let greens: [Self] = [
.init(red: 0.90, green: 0.95, blue: 0.90),
.init(red: 0.75, green: 0.90, blue: 0.75),
.init(red: 0.65, green: 0.85, blue: 0.65),
.init(red: 0.55, green: 0.75, blue: 0.55),
.init(red: 0.45, green: 0.65, blue: 0.45),
.init(red: 0.40, green: 0.60, blue: 0.40),
.init(red: 0.35, green: 0.50, blue: 0.35),
.init(red: 0.30, green: 0.40, blue: 0.30),
.init(red: 0.25, green: 0.35, blue: 0.25)
]
static let oranges: [Self] = [
.init(red: 1.00, green: 0.93, blue: 0.88),
.init(red: 0.95, green: 0.82, blue: 0.72),
.init(red: 0.88, green: 0.72, blue: 0.60),
.init(red: 0.80, green: 0.62, blue: 0.48),
.init(red: 0.72, green: 0.52, blue: 0.38),
.init(red: 0.65, green: 0.45, blue: 0.32),
.init(red: 0.55, green: 0.40, blue: 0.28),
.init(red: 0.45, green: 0.35, blue: 0.22),
.init(red: 0.38, green: 0.30, blue: 0.18)
]
static let purples: [Self] = [
.init(red: 0.95, green: 0.88, blue: 0.98),
.init(red: 0.88, green: 0.78, blue: 0.95),
.init(red: 0.80, green: 0.68, blue: 0.90),
.init(red: 0.72, green: 0.58, blue: 0.85),
.init(red: 0.62, green: 0.48, blue: 0.78),
.init(red: 0.52, green: 0.40, blue: 0.70),
.init(red: 0.45, green: 0.35, blue: 0.62),
.init(red: 0.38, green: 0.30, blue: 0.55),
.init(red: 0.32, green: 0.25, blue: 0.48)
]
static let reds: [Self] = [
.init(red: 1.00, green: 0.90, blue: 0.90),
.init(red: 0.95, green: 0.75, blue: 0.75),
.init(red: 0.85, green: 0.65, blue: 0.65),
.init(red: 0.75, green: 0.55, blue: 0.55),
.init(red: 0.65, green: 0.45, blue: 0.45),
.init(red: 0.58, green: 0.38, blue: 0.38),
.init(red: 0.50, green: 0.32, blue: 0.32),
.init(red: 0.42, green: 0.26, blue: 0.26),
.init(red: 0.35, green: 0.20, blue: 0.20)
]
static let warm: [Self] = [
.init(red: 0.78, green: 0.72, blue: 0.60),
.init(red: 0.72, green: 0.60, blue: 0.48),
.init(red: 0.64, green: 0.48, blue: 0.38),
.init(red: 0.58, green: 0.40, blue: 0.42),
.init(red: 0.50, green: 0.34, blue: 0.50),
.init(red: 0.42, green: 0.28, blue: 0.58),
.init(red: 0.36, green: 0.24, blue: 0.54),
.init(red: 0.28, green: 0.18, blue: 0.44),
.init(red: 0.20, green: 0.14, blue: 0.34)
]
}