Basculer le menu
Changer de menu des préférences
Basculer le menu personnel
Non connecté(e)
Votre adresse IP sera visible au public si vous faites des modifications.

La documentation pour ce module peut être créée à Module:NavCard/doc

local p = {}

function p.main(frame)
    local args = frame:getParent().args
    
    local titre = args['titre'] or 'Titre'
    local description = args['description'] or 'Description'
    local lien = args['lien'] or titre
    local image = args['image'] or ''
    local couleur = args['couleur'] or '#3b82f6'
    
    -- Lien cliquable avec div dedans
    local html = mw.html.create('a')
        :attr('href', mw.uri.encode(lien, 'WIKI'))
        :addClass('nav-card-link')
        :css('text-decoration', 'none')
        :css('display', 'inline-block')
        
    local card = html:tag('div')
        :addClass('nav-card')
        :css('background', couleur)
        :css('width', '280px')
        :css('height', '160px')
        :css('border-radius', '12px')
        :css('position', 'relative')
        :css('overflow', 'hidden')
        :css('margin', '10px')

    -- Image de fond si présente
    if image ~= '' then
        card:tag('div')
            :addClass('nav-card-bg')
            :css('background-image', 'url(/images/' .. image .. ')')
            :css('background-size', 'cover')
            :css('position', 'absolute')
            :css('top', '0')
            :css('left', '0')
            :css('width', '100%')
            :css('height', '100%')
            :css('opacity', '0.3')
    end

    -- Contenu texte
    local content = card:tag('div')
        :addClass('nav-card-content')
        :css('position', 'absolute')
        :css('bottom', '0')
        :css('left', '0')
        :css('right', '0')
        :css('padding', '20px')
        :css('background', 'linear-gradient(transparent, rgba(0,0,0,0.7))')
        
    content:tag('h3')
        :css('color', 'white')
        :css('margin', '0 0 8px 0')
        :wikitext(titre)
        
    content:tag('p')
        :css('color', 'rgba(255,255,255,0.9)')
        :css('margin', '0')
        :wikitext(description)
    
    return tostring(html)
end

return p