MediaWiki:Gadget-DarkToggle.js

// Toggle a dark theme for supported skins

function setCookie(c_name, value, expiredays) { var exdate = new Date; exdate.setDate(exdate.getDate + expiredays); document.cookie = c_name + '=' + escape(value) + ';path=/' + ((expiredays === null) ? '' : ';expires=' + exdate.toGMTString); } function getCookie(c_name) { if (document.cookie.length > 0) { c_start = document.cookie.indexOf(c_name + '='); if (c_start != -1) { c_start = c_start + c_name.length + 1; c_end = document.cookie.indexOf(';', c_start); if (c_end == -1) c_end = document.cookie.length; return unescape(document.cookie.substring(c_start, c_end)); }	}	return ''; }

$(function {	if (window.matchMedia('(prefers-color-scheme: dark)').matches)		$('body').addClass('dark');	window.matchMedia('(prefers-color-scheme: dark)').addListener(function(e) { if (e.matches) $('body').addClass('dark'); else $('body').removeClass('dark'); });

var isDark = false; if (getCookie('darkTheme') == 'on') isDark = true; if (mw.config.get('skin') == 'nimbus') $('#wiki-login').prepend('  '); else if (mw.config.get('skin') == 'minerva') { $('#footer-places-desktop-toggle').addClass('beforeNight'); $('#footer-places-desktop-toggle').after('Toggle night theme'); } else if (mw.config.get('skin') == 'timeless') $('#f-list').append('Toggle night theme'); $('#themeToggle').click(function {		setCookie('darkTheme', isDark ? '' : 'on', 999);		location.reload;	}); });