Pragmatic color utilities for SwiftUI and UIKit.
ColorsKit helps you parse hex colors, check accessibility contrast, generate palettes, build gradients, and simulate color‑vision deficiencies — all with a tiny, focused API that feels at home in Swift.
Add the package to Xcode or your Package.swift using the public repo and a tag.
- URL:
https://github.com/ckdash-git/ColorsKit.git - Minimum platforms: iOS 13+, macOS 12+, tvOS 13+, watchOS 6+
// Package.swift
.dependencies: [
.package(url: "https://github.com/ckdash-git/ColorsKit.git", from: "0.1.2")
]
.targets: [
.target(
name: "App",
dependencies: [
.product(name: "ColorsKit", package: "ColorsKit")
]
)
]In Xcode: File → Add Packages… → paste the URL → add the ColorsKit product.
Add to your Podfile (iOS example):
platform :ios, '13.0'
use_frameworks!
target 'App' do
pod 'ColorsKit', '~> 0.1'
endThen run pod install and import the module:
import ColorsKitColorsKit is an open source project that helps developers build better color experiences in their apps. Your support helps maintain and improve this library for the entire Swift community.
- 🚀 Faster Development: Sponsorship enables dedicated time for new features, bug fixes, and performance improvements
- 📚 Better Documentation: More comprehensive guides, examples, and API documentation
- 🔧 Enhanced Tooling: Additional utilities, CLI tools, and developer experience improvements
- 🌟 Community Growth: Support for community contributions, issue triage, and user support
- Monthly Support: Recurring sponsorship with tiered benefits
- One-time Contributions: Flexible support options
- Sponsor Recognition: Listed in project documentation and releases
- Early Access: Preview new features and provide feedback
- Quick Support: Simple one-time or recurring donations
- Personal Messages: Send encouragement and feature requests
- Community Building: Join a supportive community of users
- Flexible Amounts: Choose what works for your budget
| Tier | Monthly | Benefits |
|---|---|---|
| ☕ Coffee | $5 | Sponsor badge, early access to releases |
| 🌟 Supporter | $15 | Above + priority issue responses |
| 🚀 Advocate | $50 | Above + feature request priority |
| 💎 Champion | $100+ | Above + direct consultation access |
Thank you to all our amazing sponsors! Your support makes ColorsKit possible.
Become our first sponsor and see your name here!
import ColorsKit
// Hex → RGBA
let fg = try HexColorFormatter.parse("#1A73E8")
let bg = try HexColorFormatter.parse("#FFFFFF")
// Contrast ratio + WCAG
let ratio = ColorMath.contrastRatio(fg, bg)
let isAA = Accessibility.meets(.AA, foreground: fg, background: bg)
let isAAA = Accessibility.meets(.AAA, foreground: fg, background: bg)
// Palette around a base color
let palette = PaletteGenerator.generate(from: "#1A73E8", steps: 6, range: 0.25)
// Simulate color‑vision deficiency
let protanopia = ColorBlindnessSimulator.simulate(.protanopia, rgba: fg)
// 🚀 Advanced Features
// Data visualization palettes
let scientificColors = DataVisualizationPalettes.viridis
let heatmapColors = DataVisualizationPalettes.heatmap
// Color harmony generation
let complementary = ColorHarmony.complementary(from: "#1A73E8")
let analogous = ColorHarmony.analogous(from: "#1A73E8", count: 5)
// Color psychology
let calmColors = ColorPsychology.colorsFor(emotion: .calm)
let primaryEmotion = ColorPsychology.primaryEmotion(for: fg)
// Perceptual color operations
let perceptualGradient = PerceptualColorMath.perceptualGradient(from: fg, to: bg, steps: 10)
let deltaE = PerceptualColorMath.deltaE2000(fg, bg)ColorsKit goes beyond basic color utilities with powerful advanced features for professional color work:
Professional color schemes optimized for charts, graphs, and scientific visualization:
// Sequential palettes for continuous data
let blues = DataVisualizationPalettes.blues
let greens = DataVisualizationPalettes.greens
// Diverging palettes for data with meaningful center
let redBlue = DataVisualizationPalettes.redBlue
let purpleGreen = DataVisualizationPalettes.purpleGreen
// Scientific colormaps (perceptually uniform)
let viridis = DataVisualizationPalettes.viridis
let plasma = DataVisualizationPalettes.plasma
// Accessibility-friendly palettes
let colorblindSafe = DataVisualizationPalettes.colorblindSafe
let highContrast = DataVisualizationPalettes.highContrastAdvanced color space conversions and perceptually uniform operations:
// Convert between color spaces
let xyz = ColorSpaceConverter.rgbaToXYZ(rgba)
let lab = ColorSpaceConverter.xyzToLAB(xyz)
let luv = ColorSpaceConverter.xyzToLUV(xyz)
// Perceptually uniform gradients
let gradient = PerceptualColorMath.perceptualGradient(from: color1, to: color2, steps: 10)
// Perceptual color blending
let blended = PerceptualColorMath.perceptualBlend(color1, color2, ratio: 0.5)
// Delta E color difference (CIE Delta E 2000)
let difference = PerceptualColorMath.deltaE2000(color1, color2)Generate harmonious color schemes based on color theory:
// Generate complementary colors
let complementary = ColorHarmony.complementary(from: "#FF6B6B")
// Create analogous color schemes
let analogous = ColorHarmony.analogous(from: "#4ECDC4", count: 5)
// Generate triadic and tetradic schemes
let triadic = ColorHarmony.triadic(from: "#45B7D1")
let tetradic = ColorHarmony.tetradic(from: "#96CEB4")
// Split complementary for balanced contrast
let splitComplementary = ColorHarmony.splitComplementary(from: "#FFEAA7")Professional blend modes for sophisticated color mixing:
// Multiple blend modes available
let multiplied = BlendMode.multiply.blend(base: baseColor, overlay: overlayColor)
let screened = BlendMode.screen.blend(base: baseColor, overlay: overlayColor)
let overlayed = BlendMode.overlay.blend(base: baseColor, overlay: overlayColor)
// Soft light, hard light, color dodge, color burn, and more
let softLight = BlendMode.softLight.blend(base: baseColor, overlay: overlayColor)
let colorDodge = BlendMode.colorDodge.blend(base: baseColor, overlay: overlayColor)Emotion-based color generation and analysis:
// Generate colors for specific emotions
let calmColors = ColorPsychology.colorsFor(emotion: .calm)
let energeticColors = ColorPsychology.colorsFor(emotion: .energetic)
let professionalColors = ColorPsychology.colorsFor(emotion: .professional)
// Analyze emotional properties of colors
let primaryEmotion = ColorPsychology.primaryEmotion(for: rgba)
let emotionalProfile = ColorPsychology.emotionalProfile(for: rgba)
// Generate multi-emotion palettes
let palette = ColorPsychology.generatePalette(for: [.trustworthy, .creative], count: 8)Multiple interpolation methods and temperature-based color schemes:
// Different interpolation methods
let linearGradient = GradientGenerator.generate(from: color1, to: color2, steps: 10, method: .linear)
let perceptualGradient = GradientGenerator.generate(from: color1, to: color2, steps: 10, method: .perceptual)
let hslGradient = GradientGenerator.generate(from: color1, to: color2, steps: 10, method: .hsl)
// Temperature-based gradients
let thermal = TemperatureGradient.thermal(steps: 20)
let coolToWarm = TemperatureGradient.coolToWarm(steps: 15)import SwiftUI
import ColorsKit
// Create Color from hex
let primary = Color(hex: "#0A84FF")
// Dynamic light/dark Color (bridges via UIKit on iOS)
let dynamic = Color.dynamic(lightHex: "#FFFFFF", darkHex: "#000000")
// LinearGradient from hex list
let gradient = SwiftUIGradientBuilder.linear(hexColors: ["#0A84FF", "#5E5CE6"]) import UIKit
import ColorsKit
let primary = UIColor(hex: "#0A84FF")
let dynamic = UIColor.dynamic(lightHex: "#FFFFFF", darkHex: "#000000")A tiny command‑line demo lives in Example/ConsumerSample/.
- Run:
cd Example/ConsumerSample && swift run - Shows: hex parsing, contrast ratio, palette generation, and color‑blindness simulation.
Explore all ColorsKit features with our full-featured SwiftUI demo app in Example/iOSAppDemo/:
- 🎨 Color Harmony: Generate complementary, analogous, triadic, and tetradic color schemes
- 🔬 Perceptual Colors: Color space conversions, perceptual gradients, and Delta E analysis
- 🎭 Blending Modes: 12 different blend modes with real-time preview
- 🧠 Color Psychology: Emotion-based color generation and analysis
- 📊 Data Visualization: Scientific colormaps, heatmaps, and specialized gradients
- 🌡️ Temperature Gradients: Multiple interpolation methods and thermal imaging colors
cd Example/iOSAppDemo
open ColorsKitDemo.xcodeproj
# Build and run in Xcode or iOS SimulatorThe demo app serves as both a showcase and reference implementation for integrating ColorsKit's advanced features into iOS applications.
ColorCore:RGBA,HexColorFormatter,ColorMath,Accessibility,Theme,ThemeManager,PerceptualColorMath,ColorSpaceConverter,ColorHarmony,BlendModeColorUtilities:PaletteGenerator,AccessibilityUtils,ColorBlindnessSimulator,ColorPsychology,EmotionalCategory,GradientGenerator,TemperatureGradient,WhiteBalancePresetsColorExtensions: SwiftUI/UIColor helpers, gradients,GradientBuilder,SwiftUIGradientBuilderColorPalettes:DataVisualizationPalettes, predefined themes (defaultLight,defaultDark,materialBlue), scientific colormaps
Color.dynamicbridges toColor(uiColor:)on iOS/tvOS.- On iOS/tvOS < 15,
Color.dynamicfalls back to the light variant. - CocoaPods support: iOS and macOS in
0.1.0; tvOS/watchOS coming in a follow‑up release.
This repo follows semantic versioning. Start with 0.1.0 and evolve via tags.
Apache-2.0. See LICENSE and NOTICE. "ColorsKit" is a trademark — see TRADEMARKS.md.
Community: See CONTRIBUTING.md (DCO) and CODE_OF_CONDUCT.md.