#pragma once

#include "native_ui/ui_types.hpp"
#include "security/license_validator.hpp"

#include <string>
#include <vector>

namespace poe2::ui {

struct PanelToggle {
    std::string id;
    std::string label;
    bool checked{false};
    Rect hitBox;
};

struct SettingsPanelState {
    bool isVisible{false};
    bool zoomEnabled{true};
    float zoomCap{2.8f};
    bool fogDisabled{true};
    bool minimapReveal{true};
    bool itemInspector{true};
    bool streamerMode{false};
    bool poiRadar{true};
    bool modColorizer{true};
    bool particleReducer{true};

    std::string hwid;
    std::string licenseKey;
    security::LicenseInfo licenseInfo;
};

struct SettingsPanelLayout {
    Rect bounds;
    std::vector<PanelToggle> toggles;
    Rect panicButtonBox;
    Rect langButtonBox;
    std::string statusText;
    Color statusColor{colors::White};
};

class SettingsPanel {
public:
    /// @brief Xây dựng bố cục hiển thị bảng điều khiển cấu hình trực quan
    static SettingsPanelLayout BuildLayout(
        const SettingsPanelState& state,
        int screenW,
        int screenH
    );
};

} // namespace poe2::ui
