Mudanças entre as edições de "Módulo:Gb"
Ir para navegação
Ir para pesquisar
| Linha 4: | Linha 4: | ||
local args = frame:getParent().args | local args = frame:getParent().args | ||
local normal_nivel | local normal_nivel = mw.text.trim(args['normal_nivel'] or '140') | ||
local normal_equip | local normal_equip = mw.text.trim(args['normal_equip'] or 'Set +8') | ||
local hard_personagem | local hard_personagem = mw.text.trim(args['hard_personagem'] or 'personagem 4 ou 5 estrelas (Diamante)') | ||
local hard_equip | local hard_equip = mw.text.trim(args['hard_equip'] or 'Set +16') | ||
local | local root = mw.html.create('div') | ||
root:addClass('gb-wrap') | |||
-- CSS via TemplateStyles (recomendado) ou inline | |||
-- Botões (tabs) | |||
local btns = root:tag('div'):addClass('gb-btns') | |||
btns:tag('button') | |||
:addClass('gb-btn'):addClass('active') | |||
:attr('onclick', "gbSwitch('n',this)") | |||
:wikitext('Normal ') | |||
:tag('span'):addClass('gb-badge'):addClass('badge-n') | |||
:wikitext('Nível ' .. normal_nivel) | |||
btns:tag('button') | |||
:addClass('gb-btn') | |||
:attr('onclick', "gbSwitch('h',this)") | |||
:wikitext('Hard ') | |||
:tag('span'):addClass('gb-badge'):addClass('badge-h') | |||
:wikitext(hard_equip) | |||
-- Painel Normal | |||
local pn = root:tag('div'):addClass('gb-panel'):addClass('active'):attr('id', 'gbpanel-n') | |||
pn:tag('div'):addClass('gb-title'):wikitext('Requisitos — Normal') | |||
local ln = pn:tag('ul'):addClass('gb-list') | |||
ln:tag('li') | |||
:tag('span'):addClass('gb-dot'):addClass('dot-n'):done() | |||
:tag('span'):wikitext('Nível mínimo: '):tag('b'):wikitext(normal_nivel) | |||
ln:tag('li') | |||
:tag('span'):addClass('gb-dot'):addClass('dot-n'):done() | |||
:tag('span'):wikitext('Equipamento recomendado: '):tag('b'):wikitext(normal_equip) | |||
-- Painel Hard | |||
local ph = root:tag('div'):addClass('gb-panel'):attr('id', 'gbpanel-h') | |||
ph:tag('div'):addClass('gb-title'):wikitext('Requisitos — Hard') | |||
local lh = ph:tag('ul'):addClass('gb-list') | |||
lh:tag('li') | |||
:tag('span'):addClass('gb-dot'):addClass('dot-h'):done() | |||
:tag('span'):wikitext('Recomendado utilizar um '):tag('b'):wikitext(hard_personagem) | |||
lh:tag('li') | |||
:tag('span'):addClass('gb-dot'):addClass('dot-h'):done() | |||
:tag('span'):wikitext('Equipamento recomendado: '):tag('b'):wikitext(hard_equip) | |||
-- Script | |||
local script = mw.html.create('script') | |||
script:wikitext([[ | |||
function gbSwitch(tab,btn){ | |||
['n','h'].forEach(function(t){document.getElementById('gbpanel-'+t).classList.remove('active');}); | |||
document.querySelectorAll('.gb-btn').forEach(function(b){b.classList.remove('active');}); | |||
document.getElementById('gbpanel-'+tab).classList.add('active'); | |||
btn.classList.add('active'); | |||
}]]) | |||
-- CSS inline | |||
local style = mw.html.create('style') | |||
style:wikitext([[ | |||
.gb-wrap{font-family:sans-serif;max-width:600px} | .gb-wrap{font-family:sans-serif;max-width:600px} | ||
.gb-btns{display:flex;border-bottom:2px solid #a2a9b1;margin-bottom:0} | .gb-btns{display:flex;border-bottom:2px solid #a2a9b1;margin-bottom:0} | ||
| Linha 26: | Linha 81: | ||
.dot-n{background:#3680b0} | .dot-n{background:#3680b0} | ||
.dot-h{background:#e24b4a} | .dot-h{background:#e24b4a} | ||
@media(max-width:480px){.gb-btn{padding:8px 14px;font-size:13px}} | @media(max-width:480px){.gb-btn{padding:8px 14px;font-size:13px}}]]) | ||
return | return tostring(style) .. tostring(root) .. tostring(script) | ||
end | end | ||
return p | return p | ||
Edição atual tal como às 04h47min de 17 de março de 2026
A documentação para este módulo pode ser criada em Módulo:Gb/doc
local p = {}
function p.main(frame)
local args = frame:getParent().args
local normal_nivel = mw.text.trim(args['normal_nivel'] or '140')
local normal_equip = mw.text.trim(args['normal_equip'] or 'Set +8')
local hard_personagem = mw.text.trim(args['hard_personagem'] or 'personagem 4 ou 5 estrelas (Diamante)')
local hard_equip = mw.text.trim(args['hard_equip'] or 'Set +16')
local root = mw.html.create('div')
root:addClass('gb-wrap')
-- CSS via TemplateStyles (recomendado) ou inline
-- Botões (tabs)
local btns = root:tag('div'):addClass('gb-btns')
btns:tag('button')
:addClass('gb-btn'):addClass('active')
:attr('onclick', "gbSwitch('n',this)")
:wikitext('Normal ')
:tag('span'):addClass('gb-badge'):addClass('badge-n')
:wikitext('Nível ' .. normal_nivel)
btns:tag('button')
:addClass('gb-btn')
:attr('onclick', "gbSwitch('h',this)")
:wikitext('Hard ')
:tag('span'):addClass('gb-badge'):addClass('badge-h')
:wikitext(hard_equip)
-- Painel Normal
local pn = root:tag('div'):addClass('gb-panel'):addClass('active'):attr('id', 'gbpanel-n')
pn:tag('div'):addClass('gb-title'):wikitext('Requisitos — Normal')
local ln = pn:tag('ul'):addClass('gb-list')
ln:tag('li')
:tag('span'):addClass('gb-dot'):addClass('dot-n'):done()
:tag('span'):wikitext('Nível mínimo: '):tag('b'):wikitext(normal_nivel)
ln:tag('li')
:tag('span'):addClass('gb-dot'):addClass('dot-n'):done()
:tag('span'):wikitext('Equipamento recomendado: '):tag('b'):wikitext(normal_equip)
-- Painel Hard
local ph = root:tag('div'):addClass('gb-panel'):attr('id', 'gbpanel-h')
ph:tag('div'):addClass('gb-title'):wikitext('Requisitos — Hard')
local lh = ph:tag('ul'):addClass('gb-list')
lh:tag('li')
:tag('span'):addClass('gb-dot'):addClass('dot-h'):done()
:tag('span'):wikitext('Recomendado utilizar um '):tag('b'):wikitext(hard_personagem)
lh:tag('li')
:tag('span'):addClass('gb-dot'):addClass('dot-h'):done()
:tag('span'):wikitext('Equipamento recomendado: '):tag('b'):wikitext(hard_equip)
-- Script
local script = mw.html.create('script')
script:wikitext([[
function gbSwitch(tab,btn){
['n','h'].forEach(function(t){document.getElementById('gbpanel-'+t).classList.remove('active');});
document.querySelectorAll('.gb-btn').forEach(function(b){b.classList.remove('active');});
document.getElementById('gbpanel-'+tab).classList.add('active');
btn.classList.add('active');
}]])
-- CSS inline
local style = mw.html.create('style')
style:wikitext([[
.gb-wrap{font-family:sans-serif;max-width:600px}
.gb-btns{display:flex;border-bottom:2px solid #a2a9b1;margin-bottom:0}
.gb-btn{padding:8px 22px;font-size:14px;font-weight:bold;color:#54595d;background:transparent;border:none;border-bottom:3px solid transparent;margin-bottom:-2px;cursor:pointer;display:flex;align-items:center;gap:6px}
.gb-btn:hover{color:#202122}
.gb-btn.active{color:#202122;border-bottom-color:#3680b0}
.gb-badge{font-size:11px;padding:2px 8px;border-radius:20px;font-weight:bold}
.badge-n{background:#ddeeff;color:#185FA5}
.badge-h{background:#fce8e8;color:#a32d2d}
.gb-panel{display:none;padding:14px 2px}
.gb-panel.active{display:block}
.gb-title{font-size:11px;font-weight:bold;color:#72777d;text-transform:uppercase;letter-spacing:.06em;margin-bottom:10px}
.gb-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px}
.gb-list li{display:flex;align-items:flex-start;gap:8px;font-size:14px;color:#202122;line-height:1.5}
.gb-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0;margin-top:5px}
.dot-n{background:#3680b0}
.dot-h{background:#e24b4a}
@media(max-width:480px){.gb-btn{padding:8px 14px;font-size:13px}}]])
return tostring(style) .. tostring(root) .. tostring(script)
end
return p