//
// Linear (linear@1.0.0)
// Palette: linear@1.0.0
// Fonts:   heading=inter-tight@1.0.0, body=inter@1.0.0, mono=jetbrainsmono-nerdfont@1.0.0
// Generated by brand-atoms converter — do not edit by hand.
//

import SwiftUI

/// Source-of-truth color swatches from the referenced palette.
public enum BrandSwatch {
    /// Linear Indigo — Signature desaturated indigo-violet. Primary brand accent — used on the wordmark, primary buttons, and key interactive surfaces.

    public static let linearIndigo = Color(.sRGB, red: 0.3686, green: 0.4157, blue: 0.8235, opacity: 1.0000)
    /// Mercury White — Light-mode canvas — a cool off-white documented in Linear's brand guide.
    public static let mercuryWhite = Color(.sRGB, red: 0.9569, green: 0.9608, blue: 0.9725, opacity: 1.0000)
    /// Nordic Gray — Dark-mode canvas — the canonical product surface for Linear's dark-first identity.
    public static let nordicGray = Color(.sRGB, red: 0.1333, green: 0.1373, blue: 0.1490, opacity: 1.0000)
    /// Linear Near-Black — Authored deepest canvas — used below Nordic Gray for the most-recessed surfaces.
    public static let linearNearBlack = Color(.sRGB, red: 0.0314, green: 0.0353, blue: 0.0392, opacity: 1.0000)
    /// Linear Surface Dark — Authored elevated surface on dark mode.
    public static let linearSurfaceDark = Color(.sRGB, red: 0.1020, green: 0.1059, blue: 0.1216, opacity: 1.0000)
    /// Linear Surface Elevated (Dark) — Authored modal / popover surface on dark mode.
    public static let linearSurfaceElevatedDark = Color(.sRGB, red: 0.1725, green: 0.1765, blue: 0.1922, opacity: 1.0000)
    /// Linear Text on Dark — Primary text on Nordic Gray.
    public static let linearTextOnDark = Color(.sRGB, red: 0.9686, green: 0.9725, blue: 0.9725, opacity: 1.0000)
    /// Linear Text Secondary (Dark) — Secondary text on dark canvas.
    public static let linearTextSecondaryDark = Color(.sRGB, red: 0.7059, green: 0.7373, blue: 0.8157, opacity: 1.0000)
    /// Linear Text Tertiary (Dark) — Tertiary / muted text on dark canvas.
    public static let linearTextTertiaryDark = Color(.sRGB, red: 0.5412, green: 0.5608, blue: 0.5961, opacity: 1.0000)
    /// Linear Text on Light — Primary text on Mercury White.
    public static let linearTextOnLight = Color(.sRGB, red: 0.0431, green: 0.0471, blue: 0.0627, opacity: 1.0000)
    /// Linear Text Secondary (Light) — Secondary text on Mercury White.
    public static let linearTextSecondaryLight = Color(.sRGB, red: 0.2471, green: 0.2627, blue: 0.3137, opacity: 1.0000)
    /// Linear Text Tertiary (Light) — Tertiary / muted text on Mercury White.
    public static let linearTextTertiaryLight = Color(.sRGB, red: 0.4196, green: 0.4471, blue: 0.5020, opacity: 1.0000)
    /// Linear Surface Elevated (Light) — Authored elevated surface for light mode.
    public static let linearSurfaceLightElevated = Color(.sRGB, red: 1.0000, green: 1.0000, blue: 1.0000, opacity: 1.0000)
    /// Linear Indigo Hover — Authored softer indigo for hover / active states.
    public static let linearIndigoHover = Color(.sRGB, red: 0.4784, green: 0.5294, blue: 0.9412, opacity: 1.0000)
    /// Linear Success — Authored success / completed accent.
    public static let linearSuccess = Color(.sRGB, red: 0.2980, green: 0.7176, blue: 0.5098, opacity: 1.0000)
    /// Linear Warning — Authored warning accent.
    public static let linearWarning = Color(.sRGB, red: 0.9490, green: 0.7882, blue: 0.2980, opacity: 1.0000)
    /// Linear Error — Authored error accent.
    public static let linearError = Color(.sRGB, red: 0.8980, green: 0.2824, blue: 0.3020, opacity: 1.0000)
}

/// Semantic color roles for light mode.
public enum BrandLight {
    public static let background = BrandSwatch.mercuryWhite
    public static let surface = BrandSwatch.linearSurfaceLightElevated
    public static let surfaceElevated = BrandSwatch.linearSurfaceLightElevated
    public static let textPrimary = BrandSwatch.linearTextOnLight
    public static let textSecondary = BrandSwatch.linearTextSecondaryLight
    public static let textTertiary = BrandSwatch.linearTextTertiaryLight
    public static let primary = BrandSwatch.linearIndigo
    public static let primaryHover = BrandSwatch.linearIndigoHover
    public static let accent = BrandSwatch.linearIndigo
    public static let accentHover = BrandSwatch.linearIndigoHover
    public static let warning = BrandSwatch.linearWarning
    public static let warningHover = BrandSwatch.linearWarning
    public static let error = BrandSwatch.linearError
    public static let success = BrandSwatch.linearSuccess
}

/// Semantic color roles for dark mode.
public enum BrandDark {
    public static let background = BrandSwatch.nordicGray
    public static let surface = BrandSwatch.linearSurfaceDark
    public static let surfaceElevated = BrandSwatch.linearSurfaceElevatedDark
    public static let textPrimary = BrandSwatch.linearTextOnDark
    public static let textSecondary = BrandSwatch.linearTextSecondaryDark
    public static let textTertiary = BrandSwatch.linearTextTertiaryDark
    public static let primary = BrandSwatch.linearIndigo
    public static let primaryHover = BrandSwatch.linearIndigoHover
    public static let accent = BrandSwatch.linearIndigo
    public static let accentHover = BrandSwatch.linearIndigoHover
    public static let warning = BrandSwatch.linearWarning
    public static let warningHover = BrandSwatch.linearWarning
    public static let error = BrandSwatch.linearError
    public static let success = BrandSwatch.linearSuccess
}

/// Brand-level color role overrides.
public enum BrandColor {
    public static let identity = BrandSwatch.nordicGray
    public static let onIdentity = BrandSwatch.linearTextOnDark
    public static let background = BrandSwatch.nordicGray
    public static let surface = BrandSwatch.linearSurfaceDark
    public static let surfaceElevated = BrandSwatch.linearSurfaceElevatedDark
    public static let textPrimary = BrandSwatch.linearTextOnDark
    public static let textSecondary = BrandSwatch.linearTextSecondaryDark
    public static let textTertiary = BrandSwatch.linearTextTertiaryDark
    public static let primary = BrandSwatch.linearIndigo
    public static let primaryHover = BrandSwatch.linearIndigoHover
    public static let accent = BrandSwatch.linearIndigo
    public static let accentHover = BrandSwatch.linearIndigoHover
    public static let success = BrandSwatch.linearSuccess
    public static let warning = BrandSwatch.linearWarning
    public static let error = BrandSwatch.linearError
}

/// Typography family names by brand role.
public enum BrandFont {
    /// Inter Tight (inter-tight@1.0.0)
    public static let heading = "Inter Tight"
    /// Inter (inter@1.0.0)
    public static let body = "Inter"
    /// JetBrainsMono Nerd Font (jetbrainsmono-nerdfont@1.0.0)
    public static let mono = "JetBrainsMono Nerd Font"
}
