Módulo:Gb

De Wiki Gla
Revisão de 04h26min de 27 de agosto de 2025 por GhoulBlack (discussão | contribs)
Ir para navegação Ir para pesquisar

A documentação para este módulo pode ser criada em Módulo:Gb/doc

local p = {}

function p.render(frame)
    local args = frame.args

    -- Parâmetros básicos
    local imagem      = args.imagem or ""
    local titulo      = args.titulo or "Título"
    local botao       = args.botao or "Ler agora"
    local link        = args.link or "#"

    -- Parâmetros opcionais
    local largura     = args.largura or "216px"
    local altura      = args.altura or "292px"
    local fundoPadrao = args.fundo or "#111"
    local corBotao    = args.corBotao or "#1f8b4c"
    local corTextoBotao = args.corTextoBotao or "#eafff3"
    local fonte       = args.fonte or "Inter,Segoe UI,Roboto,Arial,sans-serif"

    -- Monta URL da imagem (se existir)
    local imagemUrl = ""
    if imagem ~= "" then
        local status, fileTitle = pcall(mw.title.makeTitle, "File", imagem)
        if status and fileTitle and fileTitle.exists then
            imagemUrl = fileTitle:fullUrl()
        end
    end

    -- Container principal
    local html = mw.html.create("div")
        :css("position", "relative")
        :css("width", largura)
        :css("height", altura)
        :css("border-radius", "14px")
        :css("overflow", "hidden")
        :css("font-family", fonte)
        :css("color", "#fff")
        :css("box-shadow", "0 6px 18px rgba(0,0,0,.35)")
        :css("background", imagemUrl ~= "" and ("url(" .. imagemUrl .. ") center/cover no-repeat " .. fundoPadrao) or fundoPadrao)

    -- Título
    html:tag("div")
        :css("position", "absolute")
        :css("left", "12px")
        :css("right", "12px")
        :css("bottom", "70px")
        :css("font-size", "16px")
        :css("font-weight", "800")
        :wikitext(titulo)

    -- Botão
    html:tag("a")
        :attr("href", link)
        :css("position", "absolute")
        :css("left", "12px")
        :css("right", "12px")
        :css("bottom", "14px")
        :css("display", "block")
        :css("text-align", "center")
        :css("padding", "10px 12px")
        :css("background", corBotao)
        :css("color", corTextoBotao)
        :css("font-weight", "800")
        :css("font-size", "14px")
        :css("text-decoration", "none")
        :css("border-radius", "10px")
        :tag("span")
        :wikitext(botao)

    return tostring(html)
end

return p