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');		$('body').removeClass('light');	}	window.matchMedia('(prefers-color-scheme: dark)').addListener(function(e) { if (e.matches) { $('body').addClass('dark'); $('body').removeClass('light'); } else { $('body').addClass('light'); $('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').after('Toggle night theme'); } else if (mw.config.get('skin') == 'timeless') $('#footer-places').append('Toggle night theme'); $('#themeToggle').click(function {		if (isDark)			setCookie('darkTheme', '', -1);		else			setCookie('darkTheme', 'on', 999);		location.reload;	}); });