#pragma once

#include "ColorPalette.h"

namespace Theme
{
    namespace Sys 
    {
        enum class Color
        {
            Primary,
            Primary_Container,
            Secondary,
            Secondary_Container,
            Tertiary,
            Tertiary_Container,
            Surface,
            Surface_Variant,
            Background,
            Error,
            Error_Container,
            On_Primary,
            On_Primary_Container,
            On_Secondary,
            On_Secondary_Container,
            On_Tertiary,
            On_Tertiary_Container,
            On_Surface,
            On_Surface_Variant,
            On_Error,
            On_Error_Container,
            On_Background,
            Outline,
            Ouline_Variant,
            Shadow,
            Surface_Tint_Color,
            Inverse_Surface,
            Inverse_On_Surface,
            Inverse_Primary,
            Scrim,
            None
        };
    }
}

class ITheme
{
public:
    virtual Color getColor(Theme::Sys::Color token) const = 0;

    virtual ~ITheme() = default;
};
