spb/zyquo-atlas Public License
The AI-native macOS web browser — every surface, intelligent.
Swift 75.2%
JavaScript 22%
Shell 2%
Makefile 0.9%
1//2// BuiltInThemes.swift3// Zyquo Atlas4//5// Author: Simon-Pierre Boucher6// Mail: contact@spboucher.ai7//8// The shipped theme gallery (Phase 4.2): the flagship teal-indigo "Atlas9// Light" (the Phase 4.1 base spec) and its derived dark, plus eight more10// light/dark themes. The custom-theme editor starts from a copy of any of11// these. Status colors stay legible on every background.12//1314import Foundation1516enum BuiltInThemes {17 static let all: [AtlasTheme] = [18 atlasLight, atlasDark, cartographer, midnight, meridian,19 terra, slate, nocturne, roseQuartz, aurora,20 ]2122 static let defaultLightID = "atlas-light"23 static let defaultDarkID = "atlas-dark"2425 static func theme(id: String) -> AtlasTheme? { all.first { $0.id == id } }2627 // MARK: - Flagship (Phase 4.1 base spec)2829 static let atlasLight = AtlasTheme(30 id: "atlas-light", name: "Atlas Light", appearance: .light,31 palette: AtlasPalette(32 background: 0xFAFBFC, surface: 0xFFFFFF, surfaceSecondary: 0xF1F4F6,33 accent: 0x1FA9A0, accentIndigo: 0x4E63E0, accentSubtle: 0xE6F5F3,34 textPrimary: 0x1A1D22, textSecondary: 0x6B7280, textTertiary: 0x9CA3AF,35 border: 0xE5E9EC, success: 0x2FA36B, warning: 0xD9822B, danger: 0xD64545),36 background: BackgroundStyle(kind: .solid, colorA: 0xFAFBFC))3738 static let atlasDark = AtlasTheme(39 id: "atlas-dark", name: "Atlas Dark", appearance: .dark,40 palette: AtlasPalette(41 background: 0x14171C, surface: 0x1C2029, surfaceSecondary: 0x252A34,42 accent: 0x35C3B8, accentIndigo: 0x6E80EE, accentSubtle: 0x1B3330,43 textPrimary: 0xE8EBF0, textSecondary: 0x9AA1AE, textTertiary: 0x69707E,44 border: 0x2B303A, success: 0x43BD83, warning: 0xE59A4D, danger: 0xE36363),45 background: BackgroundStyle(kind: .solid, colorA: 0x14171C))4647 // MARK: - Light themes4849 static let cartographer = AtlasTheme(50 id: "cartographer", name: "Cartographer", appearance: .light,51 palette: AtlasPalette(52 background: 0xF7F1E6, surface: 0xFFFBF3, surfaceSecondary: 0xEFE7D6,53 accent: 0xB5742B, accentIndigo: 0x3F6B7D, accentSubtle: 0xF0E4CD,54 textPrimary: 0x2C2418, textSecondary: 0x6E6350, textTertiary: 0x9B8F79,55 border: 0xE3D8C2, success: 0x5C8A4A, warning: 0xC57A1E, danger: 0xBB4A3A),56 background: BackgroundStyle(kind: .gradient, colorA: 0xF7F1E6, colorB: 0xEFE4CE))5758 static let meridian = AtlasTheme(59 id: "meridian", name: "Meridian", appearance: .light,60 palette: AtlasPalette(61 background: 0xF7FAFD, surface: 0xFFFFFF, surfaceSecondary: 0xEDF3FA,62 accent: 0x2D6FE0, accentIndigo: 0x5B4FE0, accentSubtle: 0xE2ECFB,63 textPrimary: 0x172233, textSecondary: 0x5E6B7E, textTertiary: 0x94A0B2,64 border: 0xDCE6F1, success: 0x2FA36B, warning: 0xD9822B, danger: 0xD64545),65 background: BackgroundStyle(kind: .solid, colorA: 0xF7FAFD))6667 static let terra = AtlasTheme(68 id: "terra", name: "Terra", appearance: .light,69 palette: AtlasPalette(70 background: 0xF6F9F3, surface: 0xFFFFFF, surfaceSecondary: 0xEAF1E4,71 accent: 0x3E8E5A, accentIndigo: 0x4E63E0, accentSubtle: 0xE1F0E5,72 textPrimary: 0x1B2419, textSecondary: 0x5D6B58, textTertiary: 0x93A08C,73 border: 0xDDE8D6, success: 0x2FA36B, warning: 0xD9822B, danger: 0xD64545),74 background: BackgroundStyle(kind: .solid, colorA: 0xF6F9F3))7576 static let slate = AtlasTheme(77 id: "slate", name: "Slate", appearance: .light,78 palette: AtlasPalette(79 background: 0xF4F5F7, surface: 0xFFFFFF, surfaceSecondary: 0xEAECEF,80 accent: 0x4B5563, accentIndigo: 0x6366F1, accentSubtle: 0xE7E9ED,81 textPrimary: 0x1B1F27, textSecondary: 0x646B78, textTertiary: 0x99A0AD,82 border: 0xE0E3E8, success: 0x2FA36B, warning: 0xD9822B, danger: 0xD64545),83 background: BackgroundStyle(kind: .solid, colorA: 0xF4F5F7))8485 static let roseQuartz = AtlasTheme(86 id: "rose-quartz", name: "Rose Quartz", appearance: .light,87 palette: AtlasPalette(88 background: 0xFCF5F7, surface: 0xFFFFFF, surfaceSecondary: 0xF7E9EE,89 accent: 0xC64B7B, accentIndigo: 0x7C5CE0, accentSubtle: 0xF9E3EC,90 textPrimary: 0x2A1C22, textSecondary: 0x74606A, textTertiary: 0xA892A0,91 border: 0xEFD9E1, success: 0x2FA36B, warning: 0xD9822B, danger: 0xD64545),92 background: BackgroundStyle(kind: .gradient, colorA: 0xFCF5F7, colorB: 0xF7E6EE))9394 // MARK: - Dark themes9596 static let midnight = AtlasTheme(97 id: "midnight", name: "Midnight Atlas", appearance: .dark,98 palette: AtlasPalette(99 background: 0x0F1524, surface: 0x18203A, surfaceSecondary: 0x212C4A,100 accent: 0x5C7CFA, accentIndigo: 0x8B6DF0, accentSubtle: 0x22305C,101 textPrimary: 0xE7ECF7, textSecondary: 0x96A0BC, textTertiary: 0x646E8C,102 border: 0x2A3557, success: 0x43BD83, warning: 0xE59A4D, danger: 0xE36363),103 background: BackgroundStyle(kind: .gradient, colorA: 0x0F1524, colorB: 0x161E38))104105 static let nocturne = AtlasTheme(106 id: "nocturne", name: "Nocturne", appearance: .dark,107 palette: AtlasPalette(108 background: 0x000000, surface: 0x0E0E10, surfaceSecondary: 0x18181B,109 accent: 0x2DD4BF, accentIndigo: 0x818CF8, accentSubtle: 0x0E2A28,110 textPrimary: 0xF4F4F5, textSecondary: 0x9BA0A8, textTertiary: 0x5C6069,111 border: 0x232327, success: 0x43BD83, warning: 0xE59A4D, danger: 0xE36363),112 background: BackgroundStyle(kind: .solid, colorA: 0x000000))113114 static let aurora = AtlasTheme(115 id: "aurora", name: "Aurora", appearance: .dark,116 palette: AtlasPalette(117 background: 0x10141A, surface: 0x171D26, surfaceSecondary: 0x1F2833,118 accent: 0x36D399, accentIndigo: 0xA78BFA, accentSubtle: 0x123028,119 textPrimary: 0xE9F1EE, textSecondary: 0x93A2A0, textTertiary: 0x5F6E6C,120 border: 0x27313D, success: 0x36D399, warning: 0xE5B04D, danger: 0xE36363),121 background: BackgroundStyle(kind: .gradient, colorA: 0x10141A, colorB: 0x14201C))122}123