//
// GOV.UK Design System (govuk@1.0.0)
// Palette: govuk@1.0.0
// Fonts:   heading=inter@1.0.0, body=inter@1.0.0, mono=roboto-mono@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 {
    /// Text — GOV.UK Black — primary text ink on every page.
    public static let text = Color(.sRGB, red: 0.0431, green: 0.0471, blue: 0.0471, opacity: 1.0000)
    /// Secondary Text — Secondary text and hints; quiet metadata.
    public static let secondaryText = Color(.sRGB, red: 0.2824, green: 0.2863, blue: 0.2863, opacity: 1.0000)
    /// Link — Default link colour on the GOV.UK template background.
    public static let link = Color(.sRGB, red: 0.1020, green: 0.3961, blue: 0.6510, opacity: 1.0000)
    /// Link Hover — Hover state for links.
    public static let linkHover = Color(.sRGB, red: 0.0588, green: 0.2196, blue: 0.3608, opacity: 1.0000)
    /// Link Visited — Visited link state — sourced from web-palette Purple.
    public static let linkVisited = Color(.sRGB, red: 0.3294, green: 0.1922, blue: 0.6235, opacity: 1.0000)
    /// Link Active — Active link state — GOV.UK Black for highest emphasis.
    public static let linkActive = Color(.sRGB, red: 0.0431, green: 0.0471, blue: 0.0471, opacity: 1.0000)
    /// Border — Default border on quiet dividers and cards.
    public static let border = Color(.sRGB, red: 0.8078, green: 0.8078, blue: 0.8078, opacity: 1.0000)
    /// Input Border — Form-control border — full-strength GOV.UK Black.
    public static let inputBorder = Color(.sRGB, red: 0.0431, green: 0.0471, blue: 0.0471, opacity: 1.0000)
    /// Hover — Hover surface for interactive rows and list items.
    public static let hover = Color(.sRGB, red: 0.8078, green: 0.8078, blue: 0.8078, opacity: 1.0000)
    /// Focus — GOV.UK Yellow focus indicator — the signature accessibility affordance.
    public static let focus = Color(.sRGB, red: 1.0000, green: 0.8667, blue: 0.0000, opacity: 1.0000)
    /// Focus Text — Text ink rendered on the yellow focus background.
    public static let focusText = Color(.sRGB, red: 0.0431, green: 0.0471, blue: 0.0471, opacity: 1.0000)
    /// Error — Validation and error messaging colour.
    public static let error = Color(.sRGB, red: 0.7922, green: 0.2078, blue: 0.2078, opacity: 1.0000)
    /// Success — Success / confirmation colour.
    public static let success = Color(.sRGB, red: 0.0588, green: 0.4784, blue: 0.3216, opacity: 1.0000)
    /// Brand — GOV.UK Blue — the system's brand link / primary blue.
    public static let brand = Color(.sRGB, red: 0.1137, green: 0.4392, blue: 0.7216, opacity: 1.0000)
    /// Body Background — Default page background — white.
    public static let bodyBackground = Color(.sRGB, red: 1.0000, green: 1.0000, blue: 1.0000, opacity: 1.0000)
    /// Template Background — The pale-blue GOV.UK template background.
    public static let templateBackground = Color(.sRGB, red: 0.9569, green: 0.9725, blue: 0.9843, opacity: 1.0000)
    /// Surface Background — Default surface background for cards and panels.
    public static let surfaceBackground = Color(.sRGB, red: 0.9569, green: 0.9725, blue: 0.9843, opacity: 1.0000)
    /// Surface Text — Default text colour on a surface panel.
    public static let surfaceText = Color(.sRGB, red: 0.0431, green: 0.0471, blue: 0.0471, opacity: 1.0000)
    /// Surface Border — Default border colour on a surface panel.
    public static let surfaceBorder = Color(.sRGB, red: 0.5569, green: 0.7216, blue: 0.8627, opacity: 1.0000)
    /// Web Blue — Web-palette Blue — identical to brand.
    public static let webBlue = Color(.sRGB, red: 0.1137, green: 0.4392, blue: 0.7216, opacity: 1.0000)
    /// Web Green — Web-palette Green — identical to success.
    public static let webGreen = Color(.sRGB, red: 0.0588, green: 0.4784, blue: 0.3216, opacity: 1.0000)
    /// Web Teal — Web-palette Teal.
    public static let webTeal = Color(.sRGB, red: 0.0824, green: 0.5059, blue: 0.5294, opacity: 1.0000)
    /// Web Purple — Web-palette Purple — identical to link-visited.
    public static let webPurple = Color(.sRGB, red: 0.3294, green: 0.1922, blue: 0.6235, opacity: 1.0000)
    /// Web Magenta — Web-palette Magenta.
    public static let webMagenta = Color(.sRGB, red: 0.7922, green: 0.2078, blue: 0.4863, opacity: 1.0000)
    /// Web Red — Web-palette Red — identical to error.
    public static let webRed = Color(.sRGB, red: 0.7922, green: 0.2078, blue: 0.2078, opacity: 1.0000)
    /// Web Orange — Web-palette Orange.
    public static let webOrange = Color(.sRGB, red: 0.9569, green: 0.4667, blue: 0.2196, opacity: 1.0000)
    /// Web Yellow — Web-palette Yellow — identical to focus.
    public static let webYellow = Color(.sRGB, red: 1.0000, green: 0.8667, blue: 0.0000, opacity: 1.0000)
    /// Web Brown — Web-palette Brown.
    public static let webBrown = Color(.sRGB, red: 0.6000, green: 0.4392, blue: 0.2902, opacity: 1.0000)
    /// Web Black — Web-palette Black — identical to text.
    public static let webBlack = Color(.sRGB, red: 0.0431, green: 0.0471, blue: 0.0471, opacity: 1.0000)
    /// Web White — Web-palette White — identical to body-background.
    public static let webWhite = 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.bodyBackground
    public static let surface = BrandSwatch.templateBackground
    public static let surfaceElevated = BrandSwatch.bodyBackground
    public static let textPrimary = BrandSwatch.text
    public static let textSecondary = BrandSwatch.secondaryText
    public static let textTertiary = BrandSwatch.secondaryText
    public static let primary = BrandSwatch.brand
    public static let primaryHover = BrandSwatch.linkHover
    public static let accent = BrandSwatch.focus
    public static let accentHover = BrandSwatch.focus
    public static let warning = BrandSwatch.webOrange
    public static let warningHover = BrandSwatch.webOrange
    public static let error = BrandSwatch.error
    public static let success = BrandSwatch.success
    public static let border = BrandSwatch.border
}

/// Semantic color roles for dark mode.
public enum BrandDark {
    public static let background = BrandSwatch.text
    public static let surface = BrandSwatch.text
    public static let surfaceElevated = BrandSwatch.secondaryText
    public static let textPrimary = BrandSwatch.bodyBackground
    public static let textSecondary = BrandSwatch.border
    public static let textTertiary = BrandSwatch.border
    public static let primary = BrandSwatch.webBlue
    public static let primaryHover = BrandSwatch.webBlue
    public static let accent = BrandSwatch.focus
    public static let accentHover = BrandSwatch.focus
    public static let warning = BrandSwatch.webOrange
    public static let warningHover = BrandSwatch.webOrange
    public static let error = BrandSwatch.error
    public static let success = BrandSwatch.success
    public static let border = BrandSwatch.secondaryText
}

/// Brand-level color role overrides.
public enum BrandColor {
    public static let identity = BrandSwatch.bodyBackground
    public static let onIdentity = BrandSwatch.text
    public static let primary = BrandSwatch.brand
    public static let primaryHover = BrandSwatch.linkHover
    public static let accent = BrandSwatch.focus
    public static let accentHover = BrandSwatch.focus
    public static let mark = BrandSwatch.text
    public static let success = BrandSwatch.success
    public static let warning = BrandSwatch.webOrange
    public static let error = BrandSwatch.error
    public static let textPrimaryLight = BrandSwatch.text
    public static let textPrimaryDark = BrandSwatch.bodyBackground
    public static let backgroundLight = BrandSwatch.bodyBackground
    public static let backgroundDark = BrandSwatch.text
    public static let surfaceLight = BrandSwatch.templateBackground
    public static let surfaceDark = BrandSwatch.text
    public static let textSecondaryLight = BrandSwatch.secondaryText
    public static let textTertiaryLight = BrandSwatch.secondaryText
    public static let borderLight = BrandSwatch.border
}

/// 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"
    /// Roboto Mono (roboto-mono@1.0.0)
    public static let mono = "Roboto Mono"
}
