package dev.meloda.fast.ui.theme

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

object ClassicColorScheme {
    private val primaryLight = Color(0xFF405F90)
    private val onPrimaryLight = Color(0xFFFFFFFF)
    private val primaryContainerLight = Color(0xFFD6E3FF)
    private val onPrimaryContainerLight = Color(0xFF001B3D)
    private val secondaryLight = Color(0xFF555F71)
    private val onSecondaryLight = Color(0xFFFFFFFF)
    private val secondaryContainerLight = Color(0xFFDAE2F9)
    private val onSecondaryContainerLight = Color(0xFF121C2B)
    private val tertiaryLight = Color(0xFF6F5575)
    private val onTertiaryLight = Color(0xFFFFFFFF)
    private val tertiaryContainerLight = Color(0xFFF9D8FD)
    private val onTertiaryContainerLight = Color(0xFF28132F)
    private val errorLight = Color(0xFFBA1A1A)
    private val onErrorLight = Color(0xFFFFFFFF)
    private val errorContainerLight = Color(0xFFFFDAD6)
    private val onErrorContainerLight = Color(0xFF410002)
    private val backgroundLight = Color(0xFFF9F9FF)
    private val onBackgroundLight = Color(0xFF191C20)
    private val surfaceLight = Color(0xFFF9F9FF)
    private val onSurfaceLight = Color(0xFF191C20)
    private val surfaceVariantLight = Color(0xFFE0E2EC)
    private val onSurfaceVariantLight = Color(0xFF44474E)
    private val outlineLight = Color(0xFF74777F)
    private val outlineVariantLight = Color(0xFFC4C6CF)
    private val scrimLight = Color(0xFF000000)
    private val inverseSurfaceLight = Color(0xFF2E3036)
    private val inverseOnSurfaceLight = Color(0xFFF0F0F7)
    private val inversePrimaryLight = Color(0xFFA9C7FF)
    private val surfaceDimLight = Color(0xFFD9D9E0)
    private val surfaceBrightLight = Color(0xFFF9F9FF)
    private val surfaceContainerLowestLight = Color(0xFFFFFFFF)
    private val surfaceContainerLowLight = Color(0xFFF3F3FA)
    private val surfaceContainerLight = Color(0xFFEDEDF4)
    private val surfaceContainerHighLight = Color(0xFFE7E8EE)
    private val surfaceContainerHighestLight = Color(0xFFE2E2E9)

    private val primaryDark = Color(0xFFA9C7FF)
    private val onPrimaryDark = Color(0xFF08305F)
    private val primaryContainerDark = Color(0xFF274777)
    private val onPrimaryContainerDark = Color(0xFFD6E3FF)
    private val secondaryDark = Color(0xFFBDC7DC)
    private val onSecondaryDark = Color(0xFF283141)
    private val secondaryContainerDark = Color(0xFF3E4758)
    private val onSecondaryContainerDark = Color(0xFFDAE2F9)
    private val tertiaryDark = Color(0xFFDCBCE1)
    private val onTertiaryDark = Color(0xFF3F2845)
    private val tertiaryContainerDark = Color(0xFF563E5C)
    private val onTertiaryContainerDark = Color(0xFFF9D8FD)
    private val errorDark = Color(0xFFFFB4AB)
    private val onErrorDark = Color(0xFF690005)
    private val errorContainerDark = Color(0xFF93000A)
    private val onErrorContainerDark = Color(0xFFFFDAD6)
    private val backgroundDark = Color(0xFF111318)
    private val onBackgroundDark = Color(0xFFE2E2E9)
    private val surfaceDark = Color(0xFF111318)
    private val onSurfaceDark = Color(0xFFE2E2E9)
    private val surfaceVariantDark = Color(0xFF44474E)
    private val onSurfaceVariantDark = Color(0xFFC4C6CF)
    private val outlineDark = Color(0xFF8E9099)
    private val outlineVariantDark = Color(0xFF44474E)
    private val scrimDark = Color(0xFF000000)
    private val inverseSurfaceDark = Color(0xFFE2E2E9)
    private val inverseOnSurfaceDark = Color(0xFF2E3036)
    private val inversePrimaryDark = Color(0xFF405F90)
    private val surfaceDimDark = Color(0xFF111318)
    private val surfaceBrightDark = Color(0xFF37393E)
    private val surfaceContainerLowestDark = Color(0xFF0C0E13)
    private val surfaceContainerLowDark = Color(0xFF191C20)
    private val surfaceContainerDark = Color(0xFF1D2024)
    private val surfaceContainerHighDark = Color(0xFF282A2F)
    private val surfaceContainerHighestDark = Color(0xFF33353A)

    val darkScheme = darkColorScheme(
        primary = primaryDark,
        onPrimary = onPrimaryDark,
        primaryContainer = primaryContainerDark,
        onPrimaryContainer = onPrimaryContainerDark,
        secondary = secondaryDark,
        onSecondary = onSecondaryDark,
        secondaryContainer = secondaryContainerDark,
        onSecondaryContainer = onSecondaryContainerDark,
        tertiary = tertiaryDark,
        onTertiary = onTertiaryDark,
        tertiaryContainer = tertiaryContainerDark,
        onTertiaryContainer = onTertiaryContainerDark,
        error = errorDark,
        onError = onErrorDark,
        errorContainer = errorContainerDark,
        onErrorContainer = onErrorContainerDark,
        background = backgroundDark,
        onBackground = onBackgroundDark,
        surface = surfaceDark,
        onSurface = onSurfaceDark,
        surfaceVariant = surfaceVariantDark,
        onSurfaceVariant = onSurfaceVariantDark,
        outline = outlineDark,
        outlineVariant = outlineVariantDark,
        scrim = scrimDark,
        inverseSurface = inverseSurfaceDark,
        inverseOnSurface = inverseOnSurfaceDark,
        inversePrimary = inversePrimaryDark,
        surfaceDim = surfaceDimDark,
        surfaceBright = surfaceBrightDark,
        surfaceContainerLowest = surfaceContainerLowestDark,
        surfaceContainerLow = surfaceContainerLowDark,
        surfaceContainer = surfaceContainerDark,
        surfaceContainerHigh = surfaceContainerHighDark,
        surfaceContainerHighest = surfaceContainerHighestDark,
    )

    val lightScheme = lightColorScheme(
        primary = primaryLight,
        onPrimary = onPrimaryLight,
        primaryContainer = primaryContainerLight,
        onPrimaryContainer = onPrimaryContainerLight,
        secondary = secondaryLight,
        onSecondary = onSecondaryLight,
        secondaryContainer = secondaryContainerLight,
        onSecondaryContainer = onSecondaryContainerLight,
        tertiary = tertiaryLight,
        onTertiary = onTertiaryLight,
        tertiaryContainer = tertiaryContainerLight,
        onTertiaryContainer = onTertiaryContainerLight,
        error = errorLight,
        onError = onErrorLight,
        errorContainer = errorContainerLight,
        onErrorContainer = onErrorContainerLight,
        background = backgroundLight,
        onBackground = onBackgroundLight,
        surface = surfaceLight,
        onSurface = onSurfaceLight,
        surfaceVariant = surfaceVariantLight,
        onSurfaceVariant = onSurfaceVariantLight,
        outline = outlineLight,
        outlineVariant = outlineVariantLight,
        scrim = scrimLight,
        inverseSurface = inverseSurfaceLight,
        inverseOnSurface = inverseOnSurfaceLight,
        inversePrimary = inversePrimaryLight,
        surfaceDim = surfaceDimLight,
        surfaceBright = surfaceBrightLight,
        surfaceContainerLowest = surfaceContainerLowestLight,
        surfaceContainerLow = surfaceContainerLowLight,
        surfaceContainer = surfaceContainerLight,
        surfaceContainerHigh = surfaceContainerHighLight,
        surfaceContainerHighest = surfaceContainerHighestLight,
    )
}
