package com.rosetta.messenger.ui.settings

import androidx.compose.ui.graphics.Color

/**
 * Модель для варианта фона blur в профиле
 * @param id Уникальный идентификатор (сохраняется в PreferencesManager)
 * @param colors Список цветов. Если 1 — сплошной цвет, если 2+ — градиент
 * @param label Человекочитаемое название
 */
data class BackgroundBlurOption(
    val id: String,
    val colors: List<Color>,
    val label: String
)

/**
 * Предустановленные варианты цвета/градиента для background blur в профиле.
 * Референс: сетка цветных кружков как в desktop-версии.
 */
object BackgroundBlurPresets {

    /** Вариант "по умолчанию" — используется blur аватарки без цветного overlay */
    val avatarDefault = BackgroundBlurOption(
        id = "avatar",
        colors = emptyList(),
        label = "Avatar"
    )

    /** Вариант "none" — стандартные цвета шапки без blur и без overlay */
    val noneDefault = BackgroundBlurOption(
        id = "none",
        colors = emptyList(),
        label = "None"
    )

    /** Сплошные цвета */
    private val solidColors = listOf(
        BackgroundBlurOption("solid_blue",     listOf(Color(0xFF0D8CF4)), "Blue"),
        BackgroundBlurOption("solid_green",    listOf(Color(0xFF4CAF50)), "Green"),
        BackgroundBlurOption("solid_orange",   listOf(Color(0xFFFF9800)), "Orange"),
        BackgroundBlurOption("solid_red",      listOf(Color(0xFFE53935)), "Red"),
        BackgroundBlurOption("solid_purple",   listOf(Color(0xFF7C4DFF)), "Purple"),
        BackgroundBlurOption("solid_teal",     listOf(Color(0xFF009688)), "Teal"),
        BackgroundBlurOption("solid_pink",     listOf(Color(0xFFE91E63)), "Pink"),
        BackgroundBlurOption("solid_grey",     listOf(Color(0xFF78909C)), "Grey"),
    )

    /** Градиенты (по 2 цвета, как на референсе) */
    private val gradients = listOf(
        BackgroundBlurOption("grad_blue_cyan",     listOf(Color(0xFF2979FF), Color(0xFF00BCD4)), "Blue|Cyan"),
        BackgroundBlurOption("grad_green_lime",    listOf(Color(0xFF4CAF50), Color(0xFFCDDC39)), "Green|Lime"),
        BackgroundBlurOption("grad_orange_yellow", listOf(Color(0xFFFF9800), Color(0xFFFFEB3B)), "Orange|Yellow"),
        BackgroundBlurOption("grad_red_pink",      listOf(Color(0xFFE53935), Color(0xFFFF4081)), "Red|Pink"),
        BackgroundBlurOption("grad_purple_blue",   listOf(Color(0xFF7C4DFF), Color(0xFF536DFE)), "Purple|Blue"),
        BackgroundBlurOption("grad_teal_green",    listOf(Color(0xFF009688), Color(0xFF69F0AE)), "Teal|Green"),
        BackgroundBlurOption("grad_pink_magenta",  listOf(Color(0xFFE91E63), Color(0xFFCE93D8)), "Pink|Magenta"),
        BackgroundBlurOption("grad_mono",          listOf(Color(0xFF546E7A), Color(0xFFB0BEC5)), "Mono"),
    )

    /** Все варианты в порядке отображения: сначала сплошные, потом градиенты */
    val all: List<BackgroundBlurOption> = solidColors + gradients

    /** Все варианты включая "Avatar" и "None" */
    val allWithDefault: List<BackgroundBlurOption> = listOf(noneDefault, avatarDefault) + all

    /**
     * Найти вариант по id. Возвращает [avatarDefault] если не найден.
     */
    fun findById(id: String): BackgroundBlurOption {
        return allWithDefault.find { it.id == id } ?: noneDefault
    }

    /**
     * Получить список цветов для overlay по id.
     * Возвращает null если id == "avatar" или "none" (без overlay).
     */
    fun getOverlayColors(id: String): List<Color>? {
        val option = findById(id)
        return if (option.colors.isEmpty()) null else option.colors
    }
}
