<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://wiki.shroudforge.net/index.php?action=history&amp;feed=atom&amp;title=Module%3ABadgeLua</id>
	<title>Module:BadgeLua - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.shroudforge.net/index.php?action=history&amp;feed=atom&amp;title=Module%3ABadgeLua"/>
	<link rel="alternate" type="text/html" href="https://wiki.shroudforge.net/index.php?title=Module:BadgeLua&amp;action=history"/>
	<updated>2026-11-05T03:22:55Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.46.2</generator>
	<entry>
		<id>https://wiki.shroudforge.net/index.php?title=Module:BadgeLua&amp;diff=40&amp;oldid=prev</id>
		<title>Bonsaibauer: 1 revision imported: Import of Star-Citizen-Modules</title>
		<link rel="alternate" type="text/html" href="https://wiki.shroudforge.net/index.php?title=Module:BadgeLua&amp;diff=40&amp;oldid=prev"/>
		<updated>2026-11-04T21:58:41Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported: Import of Star-Citizen-Modules&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en-GB&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 21:58, 4 November 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;en-GB&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key mediawiki-mediawiki:diff:1.41:old-39:rev-40 --&gt;
&lt;/table&gt;</summary>
		<author><name>Bonsaibauer</name></author>
	</entry>
	<entry>
		<id>https://wiki.shroudforge.net/index.php?title=Module:BadgeLua&amp;diff=39&amp;oldid=prev</id>
		<title>starcitizen&gt;Alistar Bot: Icon via Module:Icon (+ optional mask); add whole-badge link prop (via update-page on MediaWiki MCP Server)</title>
		<link rel="alternate" type="text/html" href="https://wiki.shroudforge.net/index.php?title=Module:BadgeLua&amp;diff=39&amp;oldid=prev"/>
		<updated>2026-06-27T21:17:51Z</updated>

		<summary type="html">&lt;p&gt;Icon via Module:Icon (+ optional mask); add whole-badge link prop (via update-page on MediaWiki MCP Server)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;require(&amp;#039;strict&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
--- Lua interface for building a badge.&lt;br /&gt;
&lt;br /&gt;
local Icon = require(&amp;#039;Module:Icon&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
--- @class BadgeProps&lt;br /&gt;
--- @field text string&lt;br /&gt;
--- @field variant &amp;#039;error&amp;#039;|&amp;#039;success&amp;#039;|&amp;#039;warning&amp;#039;&lt;br /&gt;
--- @field color string&lt;br /&gt;
--- @field backgroundColor string&lt;br /&gt;
--- @field icon string&lt;br /&gt;
--- @field mask boolean             Render the icon as a currentColor mask (matches the badge colour)&lt;br /&gt;
--- @field link string             Wrap the whole badge in a link to this page&lt;br /&gt;
--- @field class string&lt;br /&gt;
&lt;br /&gt;
local VARIANTS = {&lt;br /&gt;
	error = true,&lt;br /&gt;
	success = true,&lt;br /&gt;
	warning = true,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
--- @param props BadgeProps&lt;br /&gt;
--- @return string&lt;br /&gt;
function p.render(props)&lt;br /&gt;
	local root = mw.html.create(&amp;#039;span&amp;#039;):addClass(&amp;#039;t-badge&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	if type(props.variant) == &amp;#039;string&amp;#039; and VARIANTS[props.variant] then&lt;br /&gt;
		root:addClass(&amp;#039;t-badge--&amp;#039; .. props.variant)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if type(props.class) == &amp;#039;string&amp;#039; then&lt;br /&gt;
		root:addClass(props.class)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if type(props.color) == &amp;#039;string&amp;#039; then&lt;br /&gt;
		root:css(&amp;#039;color&amp;#039;, props.color)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if type(props.backgroundColor) == &amp;#039;string&amp;#039; then&lt;br /&gt;
		root:css(&amp;#039;background-color&amp;#039;, props.backgroundColor)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if type(props.icon) == &amp;#039;string&amp;#039; then&lt;br /&gt;
		root:wikitext(Icon.render({&lt;br /&gt;
			icon = props.icon,&lt;br /&gt;
			size = &amp;#039;16px&amp;#039;,&lt;br /&gt;
			mask = props.mask,&lt;br /&gt;
			class = &amp;#039;t-badge__icon&amp;#039;,&lt;br /&gt;
		}))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	root:tag(&amp;#039;span&amp;#039;):addClass(&amp;#039;t-badge__text&amp;#039;):wikitext(props.text)&lt;br /&gt;
&lt;br /&gt;
	local frame = mw.getCurrentFrame()&lt;br /&gt;
	local styles = frame:extensionTag({&lt;br /&gt;
		name = &amp;#039;templatestyles&amp;#039;,&lt;br /&gt;
		args = { src = &amp;#039;Module:BadgeLua/styles.css&amp;#039; },&lt;br /&gt;
	})&lt;br /&gt;
	-- Icon ships its own stylesheet; only needed when the badge has an icon.&lt;br /&gt;
	if type(props.icon) == &amp;#039;string&amp;#039; then&lt;br /&gt;
		styles = styles&lt;br /&gt;
			.. frame:extensionTag({&lt;br /&gt;
				name = &amp;#039;templatestyles&amp;#039;,&lt;br /&gt;
				args = { src = &amp;#039;Module:Icon/styles.css&amp;#039; },&lt;br /&gt;
			})&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local badge = tostring(root)&lt;br /&gt;
	-- Wrap the whole pill in one anchor so the entire badge is the link, not just&lt;br /&gt;
	-- its text. The templatestyles tags stay outside the link label.&lt;br /&gt;
	if type(props.link) == &amp;#039;string&amp;#039; and props.link ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		badge = string.format(&amp;#039;[[%s|%s]]&amp;#039;, props.link, badge)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return styles .. badge&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Wikitext entry point for the module&lt;br /&gt;
---&lt;br /&gt;
--- Accepts shorthand argument names for the most common props:&lt;br /&gt;
--- - first positional argument is the badge text&lt;br /&gt;
--- - `bg` is an alias for `backgroundColor`&lt;br /&gt;
---&lt;br /&gt;
--- @param frame mw.frame&lt;br /&gt;
--- @return string&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
&lt;br /&gt;
	if args.text == nil then&lt;br /&gt;
		args.text = args[1]&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args.backgroundColor == nil then&lt;br /&gt;
		args.backgroundColor = args.bg&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args.mask ~= nil then&lt;br /&gt;
		args.mask = require(&amp;#039;Module:Yesno&amp;#039;)(args.mask)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return p.render(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>starcitizen&gt;Alistar Bot</name></author>
	</entry>
</feed>