#include "WidgetFactory.hpp"
#include "LabelWidget.hpp"
#include "ButtonWidget.hpp"
#include "LedWidget.hpp"
#include "IconWidget.hpp"
#include "TabViewWidget.hpp"
#include "TabPageWidget.hpp"

std::unique_ptr<Widget> WidgetFactory::create(const WidgetConfig& config) {
    if (!config.visible) return nullptr;

    switch (config.type) {
        case WidgetType::LABEL:
            return std::make_unique<LabelWidget>(config);
        case WidgetType::BUTTON:
            return std::make_unique<ButtonWidget>(config);
        case WidgetType::LED:
            return std::make_unique<LedWidget>(config);
        case WidgetType::ICON:
            return std::make_unique<IconWidget>(config);
        case WidgetType::TABVIEW:
            return std::make_unique<TabViewWidget>(config);
        case WidgetType::TABPAGE:
            return std::make_unique<TabPageWidget>(config);
        default:
            return nullptr;
    }
}
