//
// Node.js (nodejs@1.0.0)
// Palette: nodejs@1.0.0
// Fonts:   heading=inter@1.0.0, body=inter@1.0.0, mono=source-code-pro@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 {
    /// Node Green — Primary brand color — the hexagon mark fill, post-2024 refresh. Source: nodejs.org current logo / simple-icons.

    public static let nodeGreen = Color(.sRGB, red: 0.3725, green: 0.6275, blue: 0.3059, opacity: 1.0000)
    /// Node Green Classic — Historic Node Green used in earlier marks and still common across badges and community materials. Preserved for legacy surfaces.

    public static let nodeGreenClassic = Color(.sRGB, red: 0.2000, green: 0.6000, blue: 0.2000, opacity: 1.0000)
    /// Node Green Foundation — Node Green as published in the original Foundation Visual Identity Guidelines PDF. PANTONE 7741 C.

    public static let nodeGreenFoundation = Color(.sRGB, red: 0.4078, green: 0.6275, blue: 0.3882, opacity: 1.0000)
    /// Node Dark Green — Deep green used for hover states and shadowed accents per the Foundation guidelines. PANTONE 361 C (approx).

    public static let nodeDarkGreen = Color(.sRGB, red: 0.0000, green: 0.4078, blue: 0.2157, opacity: 1.0000)
    /// Node Light Green — Lighter green used for highlights per the Foundation guidelines. PANTONE 360 C (approx).

    public static let nodeLightGreen = Color(.sRGB, red: 0.2235, green: 0.7098, blue: 0.2902, opacity: 1.0000)
    /// Node Black — Pure black per Foundation guidelines.
    public static let nodeBlack = Color(.sRGB, red: 0.0000, green: 0.0000, blue: 0.0000, opacity: 1.0000)
    /// Node Charcoal — Dark-mode page canvas (brand-atoms inversion).
    public static let nodeCharcoal = Color(.sRGB, red: 0.1098, green: 0.1098, blue: 0.1098, opacity: 1.0000)
    /// Node Gray — Mid neutral.
    public static let nodeGray = Color(.sRGB, red: 0.4000, green: 0.4000, blue: 0.4000, opacity: 1.0000)
    /// Node Light Gray — Hairline borders.
    public static let nodeLightGray = Color(.sRGB, red: 0.8353, green: 0.8353, blue: 0.8353, opacity: 1.0000)
    /// Node Off-White — Subtle layered surface.
    public static let nodeOffWhite = Color(.sRGB, red: 0.9569, green: 0.9569, blue: 0.9569, opacity: 1.0000)
    /// Node White — Page canvas in light mode.
    public static let nodeWhite = Color(.sRGB, red: 1.0000, green: 1.0000, blue: 1.0000, opacity: 1.0000)
}

/// Semantic color roles for light mode.
public enum BrandLight {
    public static let background = BrandSwatch.nodeWhite
    public static let surface = BrandSwatch.nodeOffWhite
    public static let surfaceElevated = BrandSwatch.nodeWhite
    public static let textPrimary = BrandSwatch.nodeBlack
    public static let textSecondary = BrandSwatch.nodeGray
    public static let textTertiary = BrandSwatch.nodeDarkGreen
    public static let primary = BrandSwatch.nodeGreen
    public static let primaryHover = BrandSwatch.nodeDarkGreen
    public static let accent = BrandSwatch.nodeLightGreen
    public static let accentHover = BrandSwatch.nodeGreen
    public static let warning = BrandSwatch.nodeLightGreen
    public static let warningHover = BrandSwatch.nodeGreen
    public static let error = BrandSwatch.nodeDarkGreen
    public static let success = BrandSwatch.nodeGreen
}

/// Semantic color roles for dark mode.
public enum BrandDark {
    public static let background = BrandSwatch.nodeCharcoal
    public static let surface = BrandSwatch.nodeBlack
    public static let surfaceElevated = BrandSwatch.nodeCharcoal
    public static let textPrimary = BrandSwatch.nodeWhite
    public static let textSecondary = BrandSwatch.nodeLightGray
    public static let textTertiary = BrandSwatch.nodeLightGreen
    public static let primary = BrandSwatch.nodeLightGreen
    public static let primaryHover = BrandSwatch.nodeGreen
    public static let accent = BrandSwatch.nodeGreen
    public static let accentHover = BrandSwatch.nodeLightGreen
    public static let warning = BrandSwatch.nodeLightGreen
    public static let warningHover = BrandSwatch.nodeGreen
    public static let error = BrandSwatch.nodeDarkGreen
    public static let success = BrandSwatch.nodeGreen
}

/// Brand-level color role overrides.
public enum BrandColor {
    public static let identity = BrandSwatch.nodeGreen
    public static let onIdentity = BrandSwatch.nodeWhite
    public static let primary = BrandSwatch.nodeGreen
    public static let primaryHover = BrandSwatch.nodeDarkGreen
    public static let accent = BrandSwatch.nodeLightGreen
    public static let accentHover = BrandSwatch.nodeGreen
    public static let background = BrandSwatch.nodeWhite
    public static let surface = BrandSwatch.nodeOffWhite
    public static let textPrimary = BrandSwatch.nodeBlack
    public static let textSecondary = BrandSwatch.nodeGray
}

/// Typography family names by brand role.
public enum BrandFont {
    /// Inter (inter@1.0.0)
    public static let heading = "Inter"
    /// Inter (inter@1.0.0)
    public static let body = "Inter"
    /// Source Code Pro (source-code-pro@1.0.0)
    public static let mono = "Source Code Pro"
}
