// Nord (dark) — 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 Nord (dark). public enum OVTokens { /// The page behind everything public static let bgBase = Color(hex: 0xFF2E3440) /// Bands and side panels public static let bgSurface = Color(hex: 0xFF272C36) /// Wells, tracks and quiet fills public static let bgSubtle = Color(hex: 0xFF3B4252) /// Cards, rows and sheets public static let bgRaised = Color(hex: 0xFF333A48) /// A control under the pointer or finger public static let bgHover = Color(hex: 0xFF434C5E) /// Text fields public static let bgInput = Color(hex: 0xFF2A303C) /// Body text and titles public static let textPrimary = Color(hex: 0xFFECEFF4) /// Supporting text public static let textSecondary = Color(hex: 0xFFD8DEE9) /// Hints and meta lines public static let textMuted = Color(hex: 0xFFB5BCCA) /// Links, icons, focus rings public static let accentBase = Color(hex: 0xFF88C0D0) /// The accent a step lighter public static let accentLight = Color(hex: 0xFF8FBCBB) /// The accent a step darker public static let accentDark = Color(hex: 0xFF5E81AC) /// Filled buttons public static let accentStrong = Color(hex: 0xFF88C0D0) /// Text on the accent public static let accentOn = Color(hex: 0xFF0B0D10) /// Text on a filled button public static let accentOnStrong = Color(hex: 0xFF0B0D10) /// Glows and halos public static let accentGlow = Color(hex: 0x5988C0D0) /// Dividers and outlines public static let lineBase = Color(hex: 0xFF3B4252) /// Outlines that must show public static let lineStrong = Color(hex: 0xFF4C566A) /// Success fills public static let statusOkBase = Color(hex: 0xFFA3BE8C) /// Success text on any surface public static let statusOkText = Color(hex: 0xFFACC598) /// Warning fills public static let statusWarnBase = Color(hex: 0xFFEBCB8B) /// Warning text on any surface public static let statusWarnText = Color(hex: 0xFFEBCB8B) /// Danger fills public static let statusBadBase = Color(hex: 0xFFBF616A) /// Danger text on any surface public static let statusBadText = Color(hex: 0xFFDFB0B5) /// Information fills public static let statusInfoBase = Color(hex: 0xFF81A1C1) /// Information text on any surface public static let statusInfoText = Color(hex: 0xFFA9BFD5) /// LIVE badges public static let statusLiveBase = Color(hex: 0xFFEF4444) /// LIVE text on any surface public static let statusLiveText = Color(hex: 0xFFF8A9A9) /// 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 = 4 /// The kit's shape: --ov-radius-2, cards, sections, panels. public static let radius2: CGFloat = 6 /// The kit's shape: --ov-radius-3, sheets, dialogs, big surfaces. public static let radius3: CGFloat = 10 /// The mark's O public static let brandO = Color(hex: 0xFF4F7CFF) /// The mark's V public static let brandV = Color(hex: 0xFF8B5CF6) }