local ADDON_NAME, addonTable = ...
local L = addonTable.L

function addonTable.CreateConfigUI()
    local panel = CreateFrame("Frame", "WoWTranslatorPanel", UIParent)
    panel.name = "WoW Translator"
    
    local title = panel:CreateFontString(nil, "ARTWORK", "GameFontNormalLarge")
    title:SetPoint("TOPLEFT", 16, -16)
    title:SetText(L["UI_TITLE"])

    -- 1. ACTIVAR / DESACTIVAR GLOBAL
    local mainCB = CreateFrame("CheckButton", "WT_MainEnableCB", panel, "InterfaceOptionsCheckButtonTemplate")
    mainCB:SetPoint("TOPLEFT", title, "BOTTOMLEFT", 0, -10)
    _G[mainCB:GetName() .. "Text"]:SetText(L["UI_ENABLE_TEXT"])
    mainCB:SetChecked(WoWTranslatorDB.enabled)
    mainCB:SetScript("OnClick", function(self) WoWTranslatorDB.enabled = self:GetChecked() end)

    -- 2. SECCIÓN DE COLOR
    local colorLabel = panel:CreateFontString(nil, "ARTWORK", "GameFontHighlight")
    colorLabel:SetPoint("TOPLEFT", mainCB, "BOTTOMLEFT", 0, -15)
    colorLabel:SetText(L["UI_COLOR_LABEL"])

    local colorBtn = CreateFrame("Button", "WT_ColorBtn", panel, "UIPanelButtonTemplate")
    colorBtn:SetPoint("TOPLEFT", colorLabel, "BOTTOMLEFT", 0, -5)
    colorBtn:SetSize(120, 22)
    colorBtn:SetText(L["UI_COLOR_BTN"])

    local colorPreview = colorBtn:CreateTexture(nil, "OVERLAY")
    colorPreview:SetPoint("LEFT", colorBtn, "RIGHT", 10, 0)
    colorPreview:SetSize(18, 18)
    
    local function UpdateColorPreview()
        local hex = WoWTranslatorDB.chatColor or "00ff00"
        local r = tonumber(hex:sub(1,2), 16) / 255
        local g = tonumber(hex:sub(3,4), 16) / 255
        local b = tonumber(hex:sub(5,6), 16) / 255
        colorPreview:SetColorTexture(r, g, b)
    end

    colorBtn:SetScript("OnClick", function()
        local hex = WoWTranslatorDB.chatColor or "00ff00"
        ColorPickerFrame:SetupColorPickerAndShow({
            swatchFunc = function()
                local r, g, b = ColorPickerFrame:GetColorRGB()
                WoWTranslatorDB.chatColor = string.format("%02x%02x%02x", r*255, g*255, b*255)
                UpdateColorPreview()
            end,
            hasOpacity = false,
            r = tonumber(hex:sub(1,2), 16) / 255, 
            g = tonumber(hex:sub(3,4), 16) / 255, 
            b = tonumber(hex:sub(5,6), 16) / 255
        })
    end)
    UpdateColorPreview()

    -- 3. SECCIÓN DE FILTROS (Checkboxes)
    local filterHeader = panel:CreateFontString(nil, "ARTWORK", "GameFontNormal")
    filterHeader:SetPoint("TOPLEFT", colorBtn, "BOTTOMLEFT", 0, -25)
    filterHeader:SetText(L["CAT_HEADER"])

    local checkboxes = {
        { text = L["CAT_MAZZ"], key = "showMazz" },
        { text = L["CAT_SOCIAL"], key = "showSocial" },
        { text = L["CAT_CLASSES"], key = "showClases" },
        { text = L["CAT_ROLES"], key = "showRoles" },
        { text = L["CAT_STATS"], key = "showStats" },
        { text = L["CAT_PROF"], key = "showProfesiones" },
        { text = L["CAT_COMBAT"], key = "showCombate" },
        { text = L["CAT_TRADE"], key = "showComercio" },
        { text = L["CAT_STATUS"], key = "showEstado" },
        { text = L["CAT_GROUPS"], key = "showGrupos" },
        { text = L["CAT_GUILD"], key = "showHermandad" },
        { text = L["CAT_ZONES"], key = "showZones" },
        { text = L["CAT_SETS"], key = "showSets" },
    }

    for i, info in ipairs(checkboxes) do
        local cb = CreateFrame("CheckButton", "WT_CB_"..info.key, panel, "InterfaceOptionsCheckButtonTemplate")
        if i == 1 then
            cb:SetPoint("TOPLEFT", filterHeader, "BOTTOMLEFT", 0, -5)
        elseif i % 2 == 1 then
            cb:SetPoint("TOPLEFT", _G["WT_CB_"..checkboxes[i-2].key], "BOTTOMLEFT", 0, -2)
        else
            cb:SetPoint("LEFT", _G["WT_CB_"..checkboxes[i-1].key], "RIGHT", 180, 0)
        end
        
        _G[cb:GetName() .. "Text"]:SetText(info.text)
        cb:SetChecked(WoWTranslatorDB.settings[info.key])
        cb:SetScript("OnClick", function(self) 
            WoWTranslatorDB.settings[info.key] = self:GetChecked()
            addonTable.RebuildMasterDict() 
        end)
    end

    -- 4. IDIOMA DE DESTINO
    local langLabel = panel:CreateFontString(nil, "ARTWORK", "GameFontNormal")
    langLabel:SetPoint("TOPLEFT", _G["WT_CB_showHermandad"], "BOTTOMLEFT", 0, -25)
    langLabel:SetText(L["UI_LANG_LABEL"])

    local dropdown = CreateFrame("Frame", "WT_LangDrop", panel, "UIDropDownMenuTemplate")
    dropdown:SetPoint("TOPLEFT", langLabel, "BOTTOMLEFT", -15, -5)
    
    local langNames = {
        esES="Español (ES)", esMX="Español (AL)", enUS="English", deDE="Deutsch",
        frFR="Français", itIT="Italiano", ptBR="Português", ruRU="Русский",
        koKR="한국어", zhCN="简体中文", zhTW="繁體中文"
    }

    local function OnClick(self)
        WoWTranslatorDB.targetLocale = self.value
        UIDropDownMenu_SetSelectedValue(dropdown, self.value)
        UIDropDownMenu_SetText(dropdown, langNames[self.value])
    end

    UIDropDownMenu_Initialize(dropdown, function(self, level)
        for val, name in pairs(langNames) do
            local info = UIDropDownMenu_CreateInfo()
            info.text = name
            info.value = val
            info.func = OnClick
            info.checked = (WoWTranslatorDB.targetLocale == val)
            UIDropDownMenu_AddButton(info)
        end
    end)
    
    UIDropDownMenu_SetSelectedValue(dropdown, WoWTranslatorDB.targetLocale)
    UIDropDownMenu_SetText(dropdown, langNames[WoWTranslatorDB.targetLocale] or "Español (ES)")

    -- Registro final
    local config_category = Settings.RegisterCanvasLayoutCategory(panel, panel.name)
    Settings.RegisterAddOnCategory(config_category)
    addonTable.categoryID = config_category:GetID()
end