// Shallows (light) — OpenVibe design tokens, from openvibe.design. Regenerate instead of editing. import SwiftUI extension Color { /// A colour from a 0xAARRGGBB literal (opaque when the alpha byte is FF). init(hex: UInt32) { self.init(.sRGB, red: Double((hex >> 16) & 0xFF) / 255, green: Double((hex >> 8) & 0xFF) / 255, blue: Double(hex & 0xFF) / 255, opacity: Double((hex >> 24) & 0xFF) / 255) } } /// OpenVibe's tokens for Shallows (light). public enum OVTokens { /// The page behind everything public static let bgBase = Color(hex: 0xFFF0FAFB) /// Bands and side panels public static let bgSurface = Color(hex: 0xFFE4F4F6) /// Wells, tracks and quiet fills public static let bgSubtle = Color(hex: 0xFFD5ECEF) /// Cards, rows and sheets public static let bgRaised = Color(hex: 0xFFF7FCFD) /// A control under the pointer or finger public static let bgHover = Color(hex: 0xFFDCF0F2) /// Text fields public static let bgInput = Color(hex: 0xFFEBF7F8) /// Body text and titles public static let textPrimary = Color(hex: 0xFF0C2226) /// Supporting text public static let textSecondary = Color(hex: 0xFF3A5458) /// Hints and meta lines public static let textMuted = Color(hex: 0xFF516B70) /// Links, icons, focus rings public static let accentBase = Color(hex: 0xFF007384) /// The accent a step lighter public static let accentLight = Color(hex: 0xFF00737F) /// The accent a step darker public static let accentDark = Color(hex: 0xFF005662) /// Filled buttons public static let accentStrong = Color(hex: 0xFF007384) /// Text on the accent public static let accentOn = Color(hex: 0xFFFFFFFF) /// Text on a filled button public static let accentOnStrong = Color(hex: 0xFFFFFFFF) /// Glows and halos public static let accentGlow = Color(hex: 0x59007384) /// Dividers and outlines public static let lineBase = Color(hex: 0xFFC9E3E7) /// Outlines that must show public static let lineStrong = Color(hex: 0xFFB4D6DB) /// Success fills public static let statusOkBase = Color(hex: 0xFF22C55E) /// Success text on any surface public static let statusOkText = Color(hex: 0xFF147638) /// Warning fills public static let statusWarnBase = Color(hex: 0xFFF59E0B) /// Warning text on any surface public static let statusWarnText = Color(hex: 0xFF8E5C06) /// Danger fills public static let statusBadBase = Color(hex: 0xFFEF4444) /// Danger text on any surface public static let statusBadText = Color(hex: 0xFFBA3535) /// Information fills public static let statusInfoBase = Color(hex: 0xFF38BDF8) /// Information text on any surface public static let statusInfoText = Color(hex: 0xFF206E90) /// LIVE badges public static let statusLiveBase = Color(hex: 0xFFEF4444) /// LIVE text on any surface public static let statusLiveText = Color(hex: 0xFFBA3535) /// The kit's motion: --ov-dur-1 (120 ms). public static let duration1: TimeInterval = 0.12 /// The kit's motion: --ov-dur-2 (200 ms). public static let duration2: TimeInterval = 0.2 /// The kit's motion: --ov-dur-3 (320 ms). public static let duration3: TimeInterval = 0.32 /// The kit's motion: --ov-dur-4 (520 ms). public static let duration4: TimeInterval = 0.52 /// The kit's motion: --ov-ease-out. public static let easeOut = Animation.timingCurve(0.2, 0.8, 0.2, 1) /// The kit's motion: --ov-ease-spring. public static let easeSpring = Animation.timingCurve(0.34, 1.56, 0.64, 1) /// The kit's motion: --ov-ease-in-out. public static let easeInOut = Animation.timingCurve(0.65, 0, 0.35, 1) /// The kit's shape: --ov-radius-1, small things: chips, inputs, rows. public static let radius1: CGFloat = 10 /// The kit's shape: --ov-radius-2, cards, sections, panels. public static let radius2: CGFloat = 14 /// The kit's shape: --ov-radius-3, sheets, dialogs, big surfaces. public static let radius3: CGFloat = 20 /// The mark's O public static let brandO = Color(hex: 0xFF4F7CFF) /// The mark's V public static let brandV = Color(hex: 0xFF8B5CF6) }