using HellionChat.Util;

namespace HellionChat.Themes.Builtin;

internal static class CrystalNocturne
{
    public const string Slug = "crystal-nocturne";

    public static Theme Build() =>
        new(
            Slug: Slug,
            Name: "Crystal Nocturne",
            Author: "CRYSTALLITE",
            Description: "Royal sapphire and electric magenta over obsidian — a nocturne for the crystal-lit dance floor.",
            Colors: new ThemeColors(
                PrimaryDark: ColourUtil.HexToRgba("#1D4ED8"),
                Primary: ColourUtil.HexToRgba("#3B82F6"),
                PrimaryLight: ColourUtil.HexToRgba("#93C5FD"),
                PrimaryGlow: ColourUtil.HexToRgba("#3B82F699"),
                AccentDark: ColourUtil.HexToRgba("#A21CAF"),
                Accent: ColourUtil.HexToRgba("#D946EF"),
                AccentLight: ColourUtil.HexToRgba("#F0ABFC"),
                Identity: ColourUtil.HexToRgba("#3B82F6"),
                WindowBg: ColourUtil.HexToRgba("#08070F"),
                ChildBg: ColourUtil.HexToRgba("#11101F"),
                FrameBg: ColourUtil.HexToRgba("#1C1A33"),
                Surface: ColourUtil.HexToRgba("#262340"),
                SurfaceHover: ColourUtil.HexToRgba("#332D55"),
                Border: ColourUtil.HexToRgba("#D946EF55"),
                TextPrimary: ColourUtil.HexToRgba("#F5F3FF"),
                TextMuted: ColourUtil.HexToRgba("#A5A0C0"),
                TextDim: ColourUtil.HexToRgba("#4B4763"),
                StatusSuccess: ColourUtil.HexToRgba("#10B981"),
                StatusDanger: ColourUtil.HexToRgba("#F43F5E"),
                StatusWarning: ColourUtil.HexToRgba("#FACC15"),
                StatusInfo: ColourUtil.HexToRgba("#3B82F6")
            ),
            Layout: new ThemeLayout(
                WindowRounding: 2f,
                ChildRounding: 1f,
                PopupRounding: 2f,
                FrameRounding: 1f,
                GrabRounding: 1f,
                TabRounding: 1f,
                ScrollbarRounding: 2f,
                WindowBorderSize: 1f,
                FrameBorderSize: 1f
            ),
            Typography: new ThemeTypography(),
            IsBuiltIn: true,
            ChatColors: new ThemeChatColors(
                new Dictionary<HellionChat.Code.ChatType, uint>
                {
                    // Crystal Nocturne — sapphire-blue identity for party/team channels,
                    // accent-magenta for tells, with mint/peach accents on linkshells
                    // so the eight LS slots stay individually distinguishable on the
                    // dark obsidian background.
                    [HellionChat.Code.ChatType.Say] = ColourUtil.HexToRgba("#F5F3FF"),
                    [HellionChat.Code.ChatType.Yell] = ColourUtil.HexToRgba("#FACC15"),
                    [HellionChat.Code.ChatType.Shout] = ColourUtil.HexToRgba("#F0B090"),
                    [HellionChat.Code.ChatType.TellIncoming] = ColourUtil.HexToRgba("#F0ABFC"),
                    [HellionChat.Code.ChatType.TellOutgoing] = ColourUtil.HexToRgba("#F0ABFC"),
                    [HellionChat.Code.ChatType.Party] = ColourUtil.HexToRgba("#93C5FD"),
                    [HellionChat.Code.ChatType.Alliance] = ColourUtil.HexToRgba("#F0B090"),
                    [HellionChat.Code.ChatType.FreeCompany] = ColourUtil.HexToRgba("#A8C8E8"),
                    [HellionChat.Code.ChatType.NoviceNetwork] = ColourUtil.HexToRgba("#10B981"),
                    [HellionChat.Code.ChatType.CrossParty] = ColourUtil.HexToRgba("#93C5FD"),
                    [HellionChat.Code.ChatType.Linkshell1] = ColourUtil.HexToRgba("#10B981"),
                    [HellionChat.Code.ChatType.Linkshell2] = ColourUtil.HexToRgba("#FACC15"),
                    [HellionChat.Code.ChatType.Linkshell3] = ColourUtil.HexToRgba("#F0ABFC"),
                    [HellionChat.Code.ChatType.Linkshell4] = ColourUtil.HexToRgba("#93C5FD"),
                    [HellionChat.Code.ChatType.Linkshell5] = ColourUtil.HexToRgba("#F0B090"),
                    [HellionChat.Code.ChatType.Linkshell6] = ColourUtil.HexToRgba("#A5A0C0"),
                    [HellionChat.Code.ChatType.Linkshell7] = ColourUtil.HexToRgba("#D946EF"),
                    [HellionChat.Code.ChatType.Linkshell8] = ColourUtil.HexToRgba("#3B82F6"),
                    [HellionChat.Code.ChatType.CustomEmote] = ColourUtil.HexToRgba("#F0B090"),
                    [HellionChat.Code.ChatType.StandardEmote] = ColourUtil.HexToRgba("#F0B090"),
                    [HellionChat.Code.ChatType.Echo] = ColourUtil.HexToRgba("#A5A0C0"),
                }
            )
        );
}
