Mudanças entre as edições de "Módulo:Gb"

De Wiki Gla
Ir para navegação Ir para pesquisar
Linha 4: Linha 4:
     local args = frame.args
     local args = frame.args


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


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


     -- Monta URL da imagem (se existir)
     -- Verifica se a imagem existe
     local imagemUrl = ""
     local imagemUrl = ""
     if imagem ~= "" then
     if imagem ~= "" then
Linha 27: Linha 27:
     end
     end


     -- Container principal
     -- Container do card
     local html = mw.html.create("div")
     local html = mw.html.create("div")
         :css("position", "relative")
         :css("position", "relative")
Linha 39: Linha 39:
         :css("background", imagemUrl ~= "" and ("url(" .. imagemUrl .. ") center/cover no-repeat " .. fundoPadrao) or fundoPadrao)
         :css("background", imagemUrl ~= "" and ("url(" .. imagemUrl .. ") center/cover no-repeat " .. fundoPadrao) or fundoPadrao)


     -- Título
     -- Título do card
     html:tag("div")
     html:tag("div")
         :css("position", "absolute")
         :css("position", "absolute")

Edição das 04h28min de 27 de agosto de 2025

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 principais
    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"

    -- Verifica se a imagem existe
    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 do card
    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 do card
    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