package cl.homelogic.platform.designsystem.foundations

import cl.homelogic.platform.designsystem.themes.BaseTheme
import cl.homelogic.platform.designsystem.themes.ColorPair

enum class Themes(
    val definition: BaseTheme,
) {
    ClassicVibes(Classic),
    MintVibes(Mint),
}

private object Classic : BaseTheme() {
    override val primary = ColorPair(Palette.Mono.At950, Palette.Mono.At0)
    override val primaryContainer = ColorPair(Palette.Mono.At0, Palette.Mono.At950)
    override val onPrimary = ColorPair(Palette.Mono.At950, Palette.Mono.At0)
    override val onPrimaryContainer = ColorPair(Palette.Mono.At0, Palette.Mono.At950)
    override val secondary = ColorPair(Palette.Mono.At950, Palette.Mono.At0)
    override val secondaryContainer = ColorPair(Palette.Mono.At250, Palette.Mono.At900)
    override val tertiary = ColorPair(Palette.Sky.Clear, Palette.Sky.Deep)
    override val tertiaryContainer = ColorPair(Palette.Mono.At250, Palette.Mono.At900)
    override val onTertiary = ColorPair(Palette.Mono.At0, Palette.Mono.At0)
    override val surfaceContainer = ColorPair(Palette.Mono.At0, Palette.Mono.At950)
    override val error = ColorPair(Palette.Hazard.Fire, Palette.Hazard.Fire)
    override val surface = ColorPair(Palette.Mono.At0, Palette.Mono.At950)
    override val surfaceVariant = ColorPair(Palette.Mono.At200, Palette.Mono.At900)
    override val onSurface = ColorPair(Palette.Mono.At950, Palette.Mono.At0)
    override val onSurfaceVariant = ColorPair(Palette.Mono.At600, Palette.Mono.At0)
    override val background = ColorPair(Palette.Mono.At0, Palette.Mono.At950)
    override val outline = ColorPair(Palette.Mono.At250, Palette.Mono.At850)
}

private object Mint : BaseTheme() {
    override val primary = ColorPair(Palette.Brand.Monica, Palette.Brand.Joey)
    override val primaryContainer = ColorPair(Palette.Mono.At0, Palette.Brand.Joey)
    override val onPrimary = ColorPair(Palette.Mono.At950, Palette.Mono.At0)
    override val onPrimaryContainer = ColorPair(Palette.Mono.At0, Palette.Mono.At950)
    override val secondary = ColorPair(Palette.Mono.At950, Palette.Mono.At0)
    override val secondaryContainer = ColorPair(Palette.Mono.At250, Palette.Mono.At900)
    override val tertiary = ColorPair(Palette.Brand.Phoebe, Palette.Brand.Joey)
    override val tertiaryContainer = ColorPair(Palette.Mono.At250, Palette.Mono.At900)
    override val onTertiary = ColorPair(Palette.Mono.At0, Palette.Mono.At0)
    override val surfaceContainer = ColorPair(Palette.Mono.At0, Palette.Mono.At950)
    override val error = ColorPair(Palette.Hazard.Fire, Palette.Hazard.Fire)
    override val surface = ColorPair(Palette.Mono.At0, Palette.Mono.At950)
    override val surfaceVariant = ColorPair(Palette.Mono.At200, Palette.Mono.At850)
    override val onSurface = ColorPair(Palette.Mono.At950, Palette.Mono.At0)
    override val onSurfaceVariant = ColorPair(Palette.Mono.At600, Palette.Mono.At0)
    override val background = ColorPair(Palette.Mono.At0, Palette.Mono.At950)
    override val outline = ColorPair(Palette.Mono.At250, Palette.Mono.At850)
}
