<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://neowiki.dev/w/index.php?action=history&amp;feed=atom&amp;title=Module%3ACard</id>
	<title>Module:Card - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://neowiki.dev/w/index.php?action=history&amp;feed=atom&amp;title=Module%3ACard"/>
	<link rel="alternate" type="text/html" href="https://neowiki.dev/w/index.php?title=Module:Card&amp;action=history"/>
	<updated>2026-05-11T21:58:30Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://neowiki.dev/w/index.php?title=Module:Card&amp;diff=260&amp;oldid=prev</id>
		<title>NeoWiki: Importing NeoWiki demo data</title>
		<link rel="alternate" type="text/html" href="https://neowiki.dev/w/index.php?title=Module:Card&amp;diff=260&amp;oldid=prev"/>
		<updated>2026-05-11T14:24:50Z</updated>

		<summary type="html">&lt;p&gt;Importing NeoWiki demo data&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Codex tokens read live via CSS custom properties so cards adapt to dark mode&lt;br /&gt;
-- where Codex CSS is loaded. Hex/px fallbacks reproduce the light-mode values&lt;br /&gt;
-- on pages that don&amp;#039;t load Codex (and for tokens not yet exposed by Vector,&lt;br /&gt;
-- e.g. --spacing-* and --border-radius-*).&lt;br /&gt;
local C = {&lt;br /&gt;
	background = &amp;#039;var(--background-color-base, #ffffff)&amp;#039;,&lt;br /&gt;
	border = &amp;#039;var(--border-color-base, #a2a9b1)&amp;#039;,&lt;br /&gt;
	borderRadius = &amp;#039;var(--border-radius-base, 2px)&amp;#039;,&lt;br /&gt;
	paddingLg = &amp;#039;var(--spacing-100, 16px)&amp;#039;,&lt;br /&gt;
	titleColor = &amp;#039;var(--color-base, #202122)&amp;#039;,&lt;br /&gt;
	descColor = &amp;#039;var(--color-subtle, #54595d)&amp;#039;,&lt;br /&gt;
	titleSize = &amp;#039;1.125rem&amp;#039;,&lt;br /&gt;
	descSize = &amp;#039;0.875rem&amp;#039;,&lt;br /&gt;
	gap = &amp;#039;var(--spacing-75, 12px)&amp;#039;,&lt;br /&gt;
	flexBasis = &amp;#039;240px&amp;#039;,&lt;br /&gt;
	minWidth = &amp;#039;200px&amp;#039;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Inline-level spans (with display:block) let MediaWiki&amp;#039;s wikitext link&lt;br /&gt;
-- syntax wrap the whole card body in a single sanitizer-approved &amp;lt;a&amp;gt;.&lt;br /&gt;
local function cardBody( title, description )&lt;br /&gt;
	local bodyStyle = table.concat( {&lt;br /&gt;
		&amp;#039;display:block&amp;#039;,&lt;br /&gt;
		&amp;#039;background:&amp;#039; .. C.background,&lt;br /&gt;
		&amp;#039;border:1px solid &amp;#039; .. C.border,&lt;br /&gt;
		&amp;#039;border-radius:&amp;#039; .. C.borderRadius,&lt;br /&gt;
		&amp;#039;padding:&amp;#039; .. C.paddingLg,&lt;br /&gt;
		&amp;#039;color:inherit&amp;#039;,&lt;br /&gt;
		&amp;#039;text-decoration:none&amp;#039;,&lt;br /&gt;
		&amp;#039;height:100%&amp;#039;,&lt;br /&gt;
		&amp;#039;box-sizing:border-box&amp;#039;,&lt;br /&gt;
	}, &amp;#039;;&amp;#039; )&lt;br /&gt;
&lt;br /&gt;
	local titleStyle = table.concat( {&lt;br /&gt;
		&amp;#039;display:block&amp;#039;,&lt;br /&gt;
		&amp;#039;font-size:&amp;#039; .. C.titleSize,&lt;br /&gt;
		&amp;#039;font-weight:600&amp;#039;,&lt;br /&gt;
		&amp;#039;color:&amp;#039; .. C.titleColor,&lt;br /&gt;
		&amp;#039;margin-bottom:4px&amp;#039;,&lt;br /&gt;
	}, &amp;#039;;&amp;#039; )&lt;br /&gt;
&lt;br /&gt;
	local descStyle = table.concat( {&lt;br /&gt;
		&amp;#039;display:block&amp;#039;,&lt;br /&gt;
		&amp;#039;font-size:&amp;#039; .. C.descSize,&lt;br /&gt;
		&amp;#039;color:&amp;#039; .. C.descColor,&lt;br /&gt;
		&amp;#039;line-height:1.4&amp;#039;,&lt;br /&gt;
	}, &amp;#039;;&amp;#039; )&lt;br /&gt;
&lt;br /&gt;
	return string.format(&lt;br /&gt;
		&amp;#039;&amp;lt;span style=&amp;quot;%s&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;%s&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;%s&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;#039;,&lt;br /&gt;
		bodyStyle,&lt;br /&gt;
		titleStyle,&lt;br /&gt;
		mw.text.encode( title ),&lt;br /&gt;
		descStyle,&lt;br /&gt;
		mw.text.encode( description )&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function cardHtml( args )&lt;br /&gt;
	local title = args.title or &amp;#039;&amp;#039;&lt;br /&gt;
	local description = args.description or &amp;#039;&amp;#039;&lt;br /&gt;
	local link = args.link or &amp;#039;&amp;#039;&lt;br /&gt;
	local body = cardBody( title, description )&lt;br /&gt;
&lt;br /&gt;
	-- Flex sizing lives on an outer wrapper so it applies to the link itself,&lt;br /&gt;
	-- not to a child of the link (since wikitext link syntax forbids attributes&lt;br /&gt;
	-- on the produced &amp;lt;a&amp;gt;).&lt;br /&gt;
	local wrapperStyle = table.concat( {&lt;br /&gt;
		&amp;#039;display:block&amp;#039;,&lt;br /&gt;
		&amp;#039;flex:1 1 &amp;#039; .. C.flexBasis,&lt;br /&gt;
		&amp;#039;min-width:&amp;#039; .. C.minWidth,&lt;br /&gt;
	}, &amp;#039;;&amp;#039; )&lt;br /&gt;
&lt;br /&gt;
	if link == &amp;#039;&amp;#039; then&lt;br /&gt;
		return string.format( &amp;#039;&amp;lt;span style=&amp;quot;%s&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&amp;#039;, wrapperStyle, body )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return string.format( &amp;#039;&amp;lt;span style=&amp;quot;%s&amp;quot;&amp;gt;[[%s|%s]]&amp;lt;/span&amp;gt;&amp;#039;, wrapperStyle, link, body )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.card( frame )&lt;br /&gt;
	return cardHtml( frame.args )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.cards( frame )&lt;br /&gt;
	-- Reads card1_title, card1_description, card1_link, card2_*, card3_*. Up to 9.&lt;br /&gt;
	local out = { &amp;#039;&amp;lt;div style=&amp;quot;display:flex;gap:&amp;#039; .. C.gap .. &amp;#039;;flex-wrap:wrap;margin:1em 0&amp;quot;&amp;gt;&amp;#039; }&lt;br /&gt;
&lt;br /&gt;
	for i = 1, 9 do&lt;br /&gt;
		local title = frame.args[&amp;#039;card&amp;#039; .. i .. &amp;#039;_title&amp;#039;]&lt;br /&gt;
		if title then&lt;br /&gt;
			out[#out + 1] = cardHtml( {&lt;br /&gt;
				title = title,&lt;br /&gt;
				description = frame.args[&amp;#039;card&amp;#039; .. i .. &amp;#039;_description&amp;#039;],&lt;br /&gt;
				link = frame.args[&amp;#039;card&amp;#039; .. i .. &amp;#039;_link&amp;#039;],&lt;br /&gt;
			} )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	out[#out + 1] = &amp;#039;&amp;lt;/div&amp;gt;&amp;#039;&lt;br /&gt;
	return table.concat( out )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>NeoWiki</name></author>
	</entry>
</feed>