{"id":318053,"date":"2026-05-25T10:13:18","date_gmt":"2026-05-25T10:13:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/lumino-dark-mode\/"},"modified":"2026-05-26T19:23:43","modified_gmt":"2026-05-26T19:23:43","slug":"lumino-dark-mode","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/lumino-dark-mode\/","author":23464094,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.2","stable_tag":"1.2","tested":"7.0","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Lumino Dark Mode","header_author":"hsarticle","header_description":"Adds a beautiful floating toggle to switch between dark and light mode on any WordPress site. Works with all themes \u2014 no coding needed.","assets_banners_color":"56596d","last_updated":"2026-05-26 19:23:43","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/hsarticle.com\/lumino-dark-mode","header_author_uri":"https:\/\/hsarticle.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":59,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1":{"tag":"1.1","author":"hsarticle","date":"2026-05-25 10:12:52"},"1.2":{"tag":"1.2","author":"hsarticle","date":"2026-05-26 19:23:43"}},"upgrade_notice":{"1.1":"<p>Bug fixes: dark site flash prevention, base theme detection, style-4 dark mode, positionThumb timing, matchMedia cleanup, reset confirmation. Improved SVG icons and all toggle styles.\n* Improved: All toggle styles refined with better colors and contrast\n* Updated: Version bumped to 1.1<\/p>","1.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3547328,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3547328,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3547328,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3547328,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.1","1.2"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Admin settings panel \u2014 Front Settings tab with position, style, and size options.","2":"Admin settings panel \u2014 Advanced Settings tab with base theme detection.","3":"Style 1 (Classic) toggle on the frontend in day mode.","4":"Style 1 (Classic) toggle on the frontend in night mode.","5":"Style 3 (Gradient) toggle example."}},"plugin_section":[],"plugin_tags":[173231,24155,264283,163960,2133],"plugin_category":[],"plugin_contributors":[263778],"plugin_business_model":[],"class_list":["post-318053","plugin","type-plugin","status-publish","hentry","plugin_tags-dark-mode","plugin_tags-dark-theme","plugin_tags-eye-strain","plugin_tags-night-mode","plugin_tags-toggle","plugin_contributors-hsarticle","plugin_committers-hsarticle"],"banners":{"banner":"https:\/\/ps.w.org\/lumino-dark-mode\/assets\/banner-772x250.png?rev=3547328","banner_2x":"https:\/\/ps.w.org\/lumino-dark-mode\/assets\/banner-1544x500.png?rev=3547328","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/lumino-dark-mode\/assets\/icon-128x128.png?rev=3547328","icon_2x":"https:\/\/ps.w.org\/lumino-dark-mode\/assets\/icon-256x256.png?rev=3547328","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Lumino Dark Mode adds a stylish floating toggle button that lets your visitors switch between dark and light mode with a single click. It works on <strong>any<\/strong> WordPress theme without touching your theme files.<\/p>\n\n<p><strong>How it works:<\/strong>\nLumino uses a smart CSS filter technique (<code>invert + hue-rotate<\/code>) applied to the entire page \u2014 not just specific elements. This means every part of your site \u2014 text, backgrounds, borders, menus, sidebars, widgets \u2014 all switch perfectly. Images and videos are automatically re-corrected so they always look natural.<\/p>\n\n<p><strong>Features:<\/strong><\/p>\n\n<ul>\n<li>Works with any WordPress theme \u2014 no CSS class knowledge needed<\/li>\n<li>5 beautiful toggle button styles (Classic, Night, Gradient, Outlined, Sunset)<\/li>\n<li>Choose toggle position: Bottom-Right, Bottom-Left, Top-Right, Top-Left<\/li>\n<li>Custom offset position (pixels from edge)<\/li>\n<li>Adjustable toggle width, height, and border radius<\/li>\n<li>Smart base theme auto-detection (light or dark)<\/li>\n<li>User preference saved in localStorage \u2014 persists across pages and sessions<\/li>\n<li>Respects OS-level dark mode preference (prefers-color-scheme)<\/li>\n<li>Flash prevention \u2014 correct mode applied before first paint<\/li>\n<li>Keyboard accessible (Tab + Enter\/Space)<\/li>\n<li>Lightweight \u2014 pure vanilla JavaScript, zero dependencies<\/li>\n<li>Fully translatable (text domain: lumino-dark-mode)<\/li>\n<\/ul>\n\n<h3>Privacy Policy<\/h3>\n\n<p>Lumino Dark Mode stores the visitor's dark\/light mode preference locally in the browser's <code>localStorage<\/code> under the key <code>lumino_mode<\/code>. This data never leaves the visitor's browser and is never sent to any server, including the website owner's server or any third-party service. No personal data is collected or processed by this plugin.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>lumino-dark-mode<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory, or install directly via <strong>Plugins &gt; Add New<\/strong> in WordPress admin.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu.<\/li>\n<li>Go to <strong>Settings &gt; Lumino Dark Mode<\/strong> to configure the toggle style, position, and behavior.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20work%20with%20all%20themes%3F\"><h3>Does it work with all themes?<\/h3><\/dt>\n<dd><p>Yes. Lumino applies a CSS filter to the entire <code>&lt;html&gt;<\/code> element, which affects every part of the page regardless of your theme's CSS structure.<\/p><\/dd>\n<dt id=\"will%20images%20look%20inverted%20in%20dark%20mode%3F\"><h3>Will images look inverted in dark mode?<\/h3><\/dt>\n<dd><p>No. Images, videos, iframes, and canvases are automatically re-inverted so they always appear in their original colors.<\/p><\/dd>\n<dt id=\"my%20site%20is%20already%20dark%20%E2%80%94%20will%20this%20work%3F\"><h3>My site is already dark \u2014 will this work?<\/h3><\/dt>\n<dd><p>Yes. Lumino auto-detects whether your site's base theme is light or dark. If your site is already dark, toggling will switch to light mode instead. You can also force this in Advanced Settings.<\/p><\/dd>\n<dt id=\"how%20is%20the%20user%27s%20preference%20saved%3F\"><h3>How is the user's preference saved?<\/h3><\/dt>\n<dd><p>The preference is saved in the browser's <code>localStorage<\/code> so it persists across all pages and sessions without needing cookies or a database.<\/p><\/dd>\n<dt id=\"can%20i%20change%20where%20the%20toggle%20button%20appears%3F\"><h3>Can I change where the toggle button appears?<\/h3><\/dt>\n<dd><p>Yes. Go to <strong>Settings &gt; Lumino Dark Mode<\/strong> and choose your preferred corner position, plus exact pixel offsets from each edge.<\/p><\/dd>\n<dt id=\"does%20it%20affect%20performance%3F\"><h3>Does it affect performance?<\/h3><\/dt>\n<dd><p>Lumino loads one small CSS file and one small JS file. You can also enable \"Enqueue Scripts in Head\" in Advanced Settings to prevent any flash of the wrong mode on page load.<\/p><\/dd>\n<dt id=\"is%20it%20mobile%20friendly%3F\"><h3>Is it mobile friendly?<\/h3><\/dt>\n<dd><p>Yes. The toggle is tap-friendly and tested on mobile browsers.<\/p><\/dd>\n<dt id=\"what%20wordpress%20version%20is%20required%3F\"><h3>What WordPress version is required?<\/h3><\/dt>\n<dd><p>WordPress 5.8 or higher.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.2<\/h4>\n\n<ul>\n<li>Fixed: Settings form no longer posts to options.php \u2014 now handled directly in plugin to prevent 503 errors on LiteSpeed and WAF-protected hosts.<\/li>\n<\/ul>\n\n<h4>1.1<\/h4>\n\n<ul>\n<li>Fixed: Flash prevention now handles dark base themes correctly (FIX #1)<\/li>\n<li>Fixed: enqueue_in_head now defaults to enabled to prevent flash (FIX #2)<\/li>\n<li>Fixed: Base theme detection now walks body then html element (FIX #3)<\/li>\n<li>Fixed: Style-4 Outlined dark mode colors no longer invert oddly (FIX #4)<\/li>\n<li>Fixed: positionThumb now uses requestAnimationFrame and ResizeObserver (FIX #5)<\/li>\n<li>Fixed: matchMedia listener now cleaned up on pagehide to prevent SPA leaks (FIX #6)<\/li>\n<li>Fixed: Reset confirmation moved from inline onclick to proper JS event listener (FIX #7)<\/li>\n<li>Improved: Sun and moon icons replaced with crisp SVGs, always visible<\/li>\n<li>Improved: All toggle styles refined with better colors and contrast<\/li>\n<li>Updated: Version bumped to 1.1<\/li>\n<\/ul>\n\n<h4>1.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>5 toggle styles: Classic, Night, Gradient, Outlined, Sunset.<\/li>\n<li>Smart base theme auto-detection.<\/li>\n<li>Flash prevention via early localStorage read.<\/li>\n<li>Full WordPress.org coding standards compliance.<\/li>\n<li>Nonce verification, input sanitization, output escaping throughout.<\/li>\n<li>Keyboard accessible toggle button.<\/li>\n<li>OS dark mode preference support (prefers-color-scheme).<\/li>\n<li>Compatible with WP Rocket, W3 Total Cache, LiteSpeed Cache, WP Super Cache, and more.<\/li>\n<\/ul>","raw_excerpt":"Adds a beautiful floating dark mode toggle to any WordPress site. Works with all themes \u2014 no coding needed.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/318053","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=318053"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/hsarticle"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=318053"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=318053"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=318053"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=318053"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=318053"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=318053"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}