package com.tsmobile.app.ui.theme

import androidx.compose.material3.darkColorScheme
import androidx.compose.material3.lightColorScheme
import androidx.compose.ui.graphics.Color

// Fluent-inspired blue and cool-neutral palette.
private val Blue10 = Color(0xFF001A41)
private val Blue20 = Color(0xFF002E6B)
private val Blue30 = Color(0xFF004A99)
private val Blue40 = Color(0xFF0067B8)
private val Blue50 = Color(0xFF0078D4)
private val Blue60 = Color(0xFF0F6CBD)
private val Blue70 = Color(0xFF2899F5)
private val Blue80 = Color(0xFF5EB3F6)
private val Blue90 = Color(0xFFA9D7FF)
private val Blue95 = Color(0xFFD7ECFF)
private val Blue99 = Color(0xFFF7FBFF)

private val Neutral0 = Color(0xFF000000)
private val Neutral10 = Color(0xFF161616)
private val Neutral20 = Color(0xFF242424)
private val Neutral30 = Color(0xFF383838)
private val Neutral40 = Color(0xFF525252)
private val Neutral50 = Color(0xFF707070)
private val Neutral60 = Color(0xFF8A8A8A)
private val Neutral70 = Color(0xFFA6A6A6)
private val Neutral80 = Color(0xFFC2C2C2)
private val Neutral90 = Color(0xFFE0E0E0)
private val Neutral94 = Color(0xFFEEEEEE)
private val Neutral96 = Color(0xFFF5F5F5)
private val Neutral98 = Color(0xFFFAFAFA)
private val Neutral100 = Color(0xFFFFFFFF)

private val Red40 = Color(0xFFC42B1C)
private val Red80 = Color(0xFFFFB4AB)
private val Green40 = Color(0xFF107C10)
private val Green80 = Color(0xFF8DE08D)
private val Amber40 = Color(0xFF8A5A00)
private val Amber80 = Color(0xFFFFD68A)

internal val LightColorScheme = lightColorScheme(
    primary = Blue50,
    onPrimary = Neutral100,
    primaryContainer = Blue95,
    onPrimaryContainer = Blue10,
    inversePrimary = Blue80,
    secondary = Blue40,
    onSecondary = Neutral100,
    secondaryContainer = Color(0xFFD9E9F8),
    onSecondaryContainer = Blue10,
    tertiary = Color(0xFF4C5D78),
    onTertiary = Neutral100,
    tertiaryContainer = Color(0xFFDCE5F7),
    onTertiaryContainer = Color(0xFF101C2E),
    background = Neutral98,
    onBackground = Neutral10,
    surface = Neutral100,
    onSurface = Neutral10,
    surfaceVariant = Color(0xFFE1E7EF),
    onSurfaceVariant = Color(0xFF42474E),
    surfaceTint = Blue50,
    inverseSurface = Neutral20,
    inverseOnSurface = Neutral96,
    error = Red40,
    onError = Neutral100,
    errorContainer = Color(0xFFFFDAD6),
    onErrorContainer = Color(0xFF410002),
    outline = Color(0xFF73777F),
    outlineVariant = Color(0xFFC3C7CF),
    scrim = Neutral0,
)

internal val DarkColorScheme = darkColorScheme(
    primary = Blue80,
    onPrimary = Blue20,
    primaryContainer = Blue30,
    onPrimaryContainer = Blue90,
    inversePrimary = Blue50,
    secondary = Blue80,
    onSecondary = Blue20,
    secondaryContainer = Color(0xFF1F4E75),
    onSecondaryContainer = Color(0xFFD9E9F8),
    tertiary = Color(0xFFB7C8E5),
    onTertiary = Color(0xFF203047),
    tertiaryContainer = Color(0xFF364764),
    onTertiaryContainer = Color(0xFFDCE5F7),
    background = Neutral10,
    onBackground = Neutral90,
    surface = Neutral10,
    onSurface = Neutral90,
    surfaceVariant = Color(0xFF42474E),
    onSurfaceVariant = Color(0xFFC3C7CF),
    surfaceTint = Blue80,
    inverseSurface = Neutral90,
    inverseOnSurface = Neutral20,
    error = Red80,
    onError = Color(0xFF690005),
    errorContainer = Color(0xFF93000A),
    onErrorContainer = Color(0xFFFFDAD6),
    outline = Color(0xFF8D9199),
    outlineVariant = Color(0xFF42474E),
    scrim = Neutral0,
)

internal val LightSemanticColors = SemanticColors(
    success = Green40,
    onSuccess = Neutral100,
    successContainer = Color(0xFFD6F4D4),
    onSuccessContainer = Color(0xFF003A00),
    warning = Amber40,
    onWarning = Neutral100,
    warningContainer = Color(0xFFFFE0A6),
    onWarningContainer = Color(0xFF2B1A00),
    info = Blue50,
    onInfo = Neutral100,
    infoContainer = Blue95,
    onInfoContainer = Blue10,
)

internal val DarkSemanticColors = SemanticColors(
    success = Green80,
    onSuccess = Color(0xFF003A00),
    successContainer = Color(0xFF005A00),
    onSuccessContainer = Color(0xFFD6F4D4),
    warning = Amber80,
    onWarning = Color(0xFF402600),
    warningContainer = Color(0xFF684400),
    onWarningContainer = Color(0xFFFFE0A6),
    info = Blue80,
    onInfo = Blue20,
    infoContainer = Blue30,
    onInfoContainer = Blue90,
)
