//
// Slack (slack@1.0.0)
// Palette: slack@1.0.0
// Fonts:   heading=slack-sans@1.0.0, body=slack-sans@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 {
    /// Slack Aubergine — Signature deep-purple corporate color. The institutional voice of the brand — used for the wordmark on light backgrounds, primary typographic blocks, and the brand's identity surfaces.

    public static let aubergine = Color(.sRGB, red: 0.2902, green: 0.0824, blue: 0.2941, opacity: 1.0000)
    /// Slack Green — Top-right quadrant of the Slack mark. Success / positive accent.
    public static let slackGreen = Color(.sRGB, red: 0.1804, green: 0.7137, blue: 0.4902, opacity: 1.0000)
    /// Slack Blue — Bottom-right quadrant of the Slack mark. Cool informational accent.
    public static let slackBlue = Color(.sRGB, red: 0.2118, green: 0.7725, blue: 0.9412, opacity: 1.0000)
    /// Slack Yellow — Bottom-left quadrant of the Slack mark. Warm attention / warning accent.
    public static let slackYellow = Color(.sRGB, red: 0.9255, green: 0.6980, blue: 0.1804, opacity: 1.0000)
    /// Slack Red — Top-left quadrant of the Slack mark. Hot pink-red used for errors and emphasis.
    public static let slackRed = Color(.sRGB, red: 0.8784, green: 0.1176, blue: 0.3529, opacity: 1.0000)
    /// Slack White — Page background on light surfaces; reversed wordmark fill on aubergine.
    public static let slackWhite = Color(.sRGB, red: 1.0000, green: 1.0000, blue: 1.0000, opacity: 1.0000)
    /// Slack Black — Near-black body text on light backgrounds; canvas on dark surfaces.
    public static let slackBlack = Color(.sRGB, red: 0.1137, green: 0.1098, blue: 0.1137, opacity: 1.0000)
    /// Slack Surface Light — Subtle panel surface on light mode.
    public static let slackSurfaceLight = Color(.sRGB, red: 0.9569, green: 0.9569, blue: 0.9569, opacity: 1.0000)
    /// Slack Surface Dark — Elevated surface on dark mode (sidebar / channels surface).
    public static let slackSurfaceDark = Color(.sRGB, red: 0.1725, green: 0.1765, blue: 0.1882, opacity: 1.0000)
    /// Slack Text Secondary — Secondary text on light backgrounds.
    public static let slackTextSecondary = Color(.sRGB, red: 0.3804, green: 0.3765, blue: 0.3804, opacity: 1.0000)
    /// Slack Text Tertiary — Tertiary / muted text.
    public static let slackTextTertiary = Color(.sRGB, red: 0.5255, green: 0.5255, blue: 0.5255, opacity: 1.0000)
    /// Slack Text Secondary (Dark) — Secondary text on dark backgrounds.
    public static let slackTextOnDarkSecondary = Color(.sRGB, red: 0.6706, green: 0.6706, blue: 0.6784, opacity: 1.0000)
}

/// Semantic color roles for light mode.
public enum BrandLight {
    public static let background = BrandSwatch.slackWhite
    public static let surface = BrandSwatch.slackSurfaceLight
    public static let surfaceElevated = BrandSwatch.slackWhite
    public static let textPrimary = BrandSwatch.slackBlack
    public static let textSecondary = BrandSwatch.slackTextSecondary
    public static let textTertiary = BrandSwatch.slackTextTertiary
    public static let primary = BrandSwatch.aubergine
    public static let primaryHover = BrandSwatch.aubergine
    public static let accent = BrandSwatch.slackGreen
    public static let accentHover = BrandSwatch.slackGreen
    public static let warning = BrandSwatch.slackYellow
    public static let warningHover = BrandSwatch.slackYellow
    public static let error = BrandSwatch.slackRed
    public static let success = BrandSwatch.slackGreen
}

/// Semantic color roles for dark mode.
public enum BrandDark {
    public static let background = BrandSwatch.aubergine
    public static let surface = BrandSwatch.slackSurfaceDark
    public static let surfaceElevated = BrandSwatch.slackBlack
    public static let textPrimary = BrandSwatch.slackWhite
    public static let textSecondary = BrandSwatch.slackTextOnDarkSecondary
    public static let textTertiary = BrandSwatch.slackTextTertiary
    public static let primary = BrandSwatch.slackBlue
    public static let primaryHover = BrandSwatch.slackBlue
    public static let accent = BrandSwatch.slackGreen
    public static let accentHover = BrandSwatch.slackGreen
    public static let warning = BrandSwatch.slackYellow
    public static let warningHover = BrandSwatch.slackYellow
    public static let error = BrandSwatch.slackRed
    public static let success = BrandSwatch.slackGreen
}

/// Brand-level color role overrides.
public enum BrandColor {
    public static let identity = BrandSwatch.aubergine
    public static let onIdentity = BrandSwatch.slackWhite
    public static let primary = BrandSwatch.aubergine
    public static let primaryHover = BrandSwatch.aubergine
    public static let accent = BrandSwatch.slackGreen
    public static let accentHover = BrandSwatch.slackGreen
    public static let accentBlue = BrandSwatch.slackBlue
    public static let accentYellow = BrandSwatch.slackYellow
    public static let accentRed = BrandSwatch.slackRed
    public static let success = BrandSwatch.slackGreen
    public static let warning = BrandSwatch.slackYellow
    public static let error = BrandSwatch.slackRed
    public static let backgroundLight = BrandSwatch.slackWhite
    public static let backgroundDark = BrandSwatch.aubergine
    public static let surfaceLight = BrandSwatch.slackSurfaceLight
    public static let surfaceDark = BrandSwatch.slackSurfaceDark
    public static let textPrimaryLight = BrandSwatch.slackBlack
    public static let textPrimaryDark = BrandSwatch.slackWhite
}

/// Typography family names by brand role.
public enum BrandFont {
    /// Slack Sans (slack-sans@1.0.0)
    public static let heading = "Slack Sans"
    /// Slack Sans (slack-sans@1.0.0)
    public static let body = "Slack Sans"
    /// JetBrainsMono Nerd Font (jetbrainsmono-nerdfont@1.0.0)
    public static let mono = "JetBrainsMono Nerd Font"
}
