//
// Cursor (cursor@1.0.0)
// Palette: cursor@1.0.0
// Fonts:   heading=inter@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 {
    /// Sand Canvas — Page canvas — the warm near-paper surface cursor.com reads against.
    public static let sandCanvas = Color(.sRGB, red: 0.9686, green: 0.9686, blue: 0.9569, opacity: 1.0000)
    /// Sand Card — Subtle elevated card surface; one step warmer than canvas.
    public static let sandCard = Color(.sRGB, red: 0.9490, green: 0.9451, blue: 0.9294, opacity: 1.0000)
    /// Sand Card Hover — Hover state for card surfaces on the sand canvas.
    public static let sandCardHover = Color(.sRGB, red: 0.9216, green: 0.9176, blue: 0.8980, opacity: 1.0000)
    /// Sand Border — Quiet divider on the sand canvas; near-canvas border.
    public static let sandBorder = Color(.sRGB, red: 0.8824, green: 0.8784, blue: 0.8588, opacity: 1.0000)
    /// Cursor Ink — Primary text on sand canvas; dark-mode canvas inversion.
    public static let cursorInk = Color(.sRGB, red: 0.1490, green: 0.1451, blue: 0.1176, opacity: 1.0000)
    /// Cursor Ink Secondary — Secondary text; muted ink for body copy de-emphasis.
    public static let cursorInkSecondary = Color(.sRGB, red: 0.2902, green: 0.2667, blue: 0.2314, opacity: 1.0000)
    /// Cursor Ink Tertiary — Tertiary text / caption ink; quiet metadata.
    public static let cursorInkTertiary = Color(.sRGB, red: 0.4627, green: 0.4431, blue: 0.4157, opacity: 1.0000)
    /// Cursor Orange — Cursor's signature hot orange accent — the brand's primary action color.
    public static let cursorOrange = Color(.sRGB, red: 0.9608, green: 0.3059, blue: 0.0000, opacity: 1.0000)
    /// Cursor Orange Pressed — Pressed / muted variant of cursor orange used on hover-secondary surfaces.
    public static let cursorOrangePressed = Color(.sRGB, red: 0.8588, green: 0.4392, blue: 0.2588, opacity: 1.0000)
    /// Cursor Green — ANSI-aligned success green from the product UI.
    public static let cursorGreen = Color(.sRGB, red: 0.1216, green: 0.5412, blue: 0.3961, opacity: 1.0000)
    /// Cursor Red — ANSI-aligned error red from the product UI.
    public static let cursorRed = Color(.sRGB, red: 0.8118, green: 0.1765, blue: 0.3373, opacity: 1.0000)
    /// Cursor Night — Dark-mode canvas — the inverted product chrome surface.
    public static let cursorNight = Color(.sRGB, red: 0.1020, green: 0.1020, blue: 0.0902, opacity: 1.0000)
    /// Cursor Night Elevated — Elevated surface in dark mode; one step above canvas.
    public static let cursorNightElevated = Color(.sRGB, red: 0.1490, green: 0.1451, blue: 0.1176, opacity: 1.0000)
    /// Cursor Night Border — Quiet divider on the cursor-night canvas.
    public static let cursorNightBorder = Color(.sRGB, red: 0.2353, green: 0.2235, blue: 0.2000, opacity: 1.0000)
}

/// Semantic color roles for light mode.
public enum BrandLight {
    public static let background = BrandSwatch.sandCanvas
    public static let surface = BrandSwatch.sandCard
    public static let surfaceElevated = BrandSwatch.sandCardHover
    public static let textPrimary = BrandSwatch.cursorInk
    public static let textSecondary = BrandSwatch.cursorInkSecondary
    public static let textTertiary = BrandSwatch.cursorInkTertiary
    public static let primary = BrandSwatch.cursorOrange
    public static let primaryHover = BrandSwatch.cursorOrangePressed
    public static let accent = BrandSwatch.cursorOrange
    public static let accentHover = BrandSwatch.cursorOrangePressed
    public static let success = BrandSwatch.cursorGreen
    public static let warning = BrandSwatch.cursorOrange
    public static let error = BrandSwatch.cursorRed
    public static let border = BrandSwatch.sandBorder
}

/// Semantic color roles for dark mode.
public enum BrandDark {
    public static let background = BrandSwatch.cursorNight
    public static let surface = BrandSwatch.cursorNightElevated
    public static let surfaceElevated = BrandSwatch.cursorInkSecondary
    public static let textPrimary = BrandSwatch.sandCanvas
    public static let textSecondary = BrandSwatch.sandCardHover
    public static let textTertiary = BrandSwatch.cursorInkTertiary
    public static let primary = BrandSwatch.cursorOrange
    public static let primaryHover = BrandSwatch.cursorOrangePressed
    public static let accent = BrandSwatch.cursorOrange
    public static let accentHover = BrandSwatch.cursorOrangePressed
    public static let success = BrandSwatch.cursorGreen
    public static let warning = BrandSwatch.cursorOrange
    public static let error = BrandSwatch.cursorRed
    public static let border = BrandSwatch.cursorNightBorder
}

/// Brand-level color role overrides.
public enum BrandColor {
    public static let identity = BrandSwatch.sandCanvas
    public static let onIdentity = BrandSwatch.cursorInk
    public static let primary = BrandSwatch.cursorOrange
    public static let primaryHover = BrandSwatch.cursorOrangePressed
    public static let accent = BrandSwatch.cursorOrange
    public static let accentHover = BrandSwatch.cursorOrangePressed
    public static let mark = BrandSwatch.cursorInk
    public static let success = BrandSwatch.cursorGreen
    public static let warning = BrandSwatch.cursorOrange
    public static let error = BrandSwatch.cursorRed
    public static let textPrimaryLight = BrandSwatch.cursorInk
    public static let textPrimaryDark = BrandSwatch.sandCanvas
    public static let backgroundLight = BrandSwatch.sandCanvas
    public static let backgroundDark = BrandSwatch.cursorNight
    public static let surfaceLight = BrandSwatch.sandCard
    public static let surfaceDark = BrandSwatch.cursorNightElevated
    public static let textSecondaryLight = BrandSwatch.cursorInkSecondary
    public static let textTertiaryLight = BrandSwatch.cursorInkTertiary
    public static let borderLight = BrandSwatch.sandBorder
}

/// 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"
    /// JetBrainsMono Nerd Font (jetbrainsmono-nerdfont@1.0.0)
    public static let mono = "JetBrainsMono Nerd Font"
}
