/**
 * @file Theme.h
 * @brief Catppuccin-Mocha dark theme + trace color palette.
 */

#pragma once

#include <QColor>

class QApplication;

namespace shq {

/** Apply the Catppuccin-Mocha palette + stylesheet to the application. */
void applyTheme(QApplication& app);

/** Catppuccin-Mocha trace palette (8 colors, cycles). */
QColor tracePalette(int idx);

/* Named palette entries used across widgets. */
namespace col {
    inline QColor crust()    { return QColor(0x11, 0x11, 0x1b); }
    inline QColor mantle()   { return QColor(0x18, 0x18, 0x25); }
    inline QColor base()     { return QColor(0x1e, 0x1e, 0x2e); }
    inline QColor surface0() { return QColor(0x31, 0x32, 0x44); }
    inline QColor surface1() { return QColor(0x45, 0x47, 0x5a); }
    inline QColor surface2() { return QColor(0x58, 0x5b, 0x70); }
    inline QColor overlay0() { return QColor(0x6c, 0x70, 0x86); }
    inline QColor text()     { return QColor(0xcd, 0xd6, 0xf4); }
    inline QColor subtext()  { return QColor(0xa6, 0xad, 0xc8); }
    inline QColor blue()     { return QColor(0x89, 0xb4, 0xfa); }
    inline QColor green()    { return QColor(0xa6, 0xe3, 0xa1); }
    inline QColor red()      { return QColor(0xf3, 0x8b, 0xa8); }
    inline QColor peach()    { return QColor(0xfa, 0xb3, 0x87); }
    inline QColor mauve()    { return QColor(0xcb, 0xa6, 0xf7); }
    inline QColor yellow()   { return QColor(0xf9, 0xe2, 0xaf); }
}

} /* namespace shq */
