#pragma once

#include "Color.h"

#include <unordered_map>
#include <string>

namespace Theme
{
    namespace Ref
    {
        enum class Color
        {
            Primary_10,
            Primary_20,
            Primary_30,
            Primary_40,
            Primary_80,
            Primary_90,
            Primary_100,
            Secondary_10,
            Secondary_20,
            Secondary_30,
            Secondary_40,
            Secondary_80,
            Secondary_90,
            Secondary_100,
            Tertiary_10,
            Tertiary_20,
            Tertiary_30,
            Tertiary_40,
            Tertiary_80,
            Tertiary_90,
            Tertiary_100,
            Neutral_0,
            Neutral_10,
            Neutral_20,
            Neutral_30,
            Neutral_80,
            Neutral_90,
            Neutral_95,
            Neutral_99,
            Neutral_Variant_30,
            Neutral_Variant_50,
            Neutral_Variant_60,
            Neutral_Variant_80,
            Neutral_Variant_90,
            Error_10,
            Error_20,
            Error_30,
            Error_40,
            Error_80,
            Error_90,
            Error_100
        };
    }
}

class ColorPalette
{
public:
    static Color getColor(Theme::Ref::Color token);

private:
    static const std::unordered_map<Theme::Ref::Color, std::string> mPaletteColors;
};