{"id":336512,"date":"2026-07-08T10:04:11","date_gmt":"2026-07-08T10:04:11","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/axismundi-theme-switcher\/"},"modified":"2026-09-06T07:07:35","modified_gmt":"2026-09-06T07:07:35","slug":"axismundi-theme-switcher","status":"publish","type":"plugin","link":"https:\/\/ky.wordpress.org\/plugins\/axismundi-theme-switcher\/","author":21128503,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.1.9","stable_tag":"0.1.9","tested":"7.1","requires":"7.1","requires_php":"8.1","requires_plugins":null,"header_name":"Axismundi Theme Switcher","header_author":"KIM JIWOON","header_description":"Light \/ dark \/ auto theme switcher block and color-scheme bridge for Axismundi.","assets_banners_color":"","last_updated":"2026-09-06 07:07:35","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/Jiwoon-Kim\/axismundi\/tree\/main\/products\/distributables\/plugins\/axismundi-theme-switcher","header_author_uri":"https:\/\/designbusan.ai.kr","rating":0,"author_block_rating":0,"active_installs":0,"downloads":356,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.1.5":{"tag":"0.1.5","author":"kimjiwoon","date":"2026-07-08 10:03:55","revision":3600115},"0.1.6":{"tag":"0.1.6","author":"kimjiwoon","date":"2026-08-01 02:34:32","revision":3630594},"0.1.7":{"tag":"0.1.7","author":"kimjiwoon","date":"2026-09-04 18:30:28","revision":3681670},"0.1.8":{"tag":"0.1.8","author":"kimjiwoon","date":"2026-09-06 06:05:58","revision":3683031},"0.1.9":{"tag":"0.1.9","author":"kimjiwoon","date":"2026-09-06 07:07:35","revision":3683073}},"upgrade_notice":[],"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3683073,"resolution":false,"location":"assets","locale":"","contents":"{\"$schema\":\"https:\\\/\\\/playground.wordpress.net\\\/blueprint-schema.json\",\"landingPage\":\"\\\/\",\"preferredVersions\":{\"php\":\"8.3\",\"wp\":\"latest\"},\"steps\":[{\"step\":\"login\",\"username\":\"admin\",\"password\":\"password\"},{\"step\":\"installTheme\",\"options\":{\"activate\":true},\"themeData\":{\"resource\":\"wordpress.org\\\/themes\",\"slug\":\"axismundi\"}},{\"step\":\"installPlugin\",\"options\":{\"activate\":true},\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"axismundi-theme-switcher\"}},{\"step\":\"runPHP\",\"code\":\"<?php\\nrequire_once 'wordpress\\\/wp-load.php';\\n\\n$content = implode( \\\"\\\\n\\\", array(\\n        '<!-- wp:heading -->',\\n        '<h2 class=\\\"wp-block-heading\\\">Pick a colour scheme<\\\/h2>',\\n        '<!-- \\\/wp:heading -->',\\n        '',\\n        '<!-- wp:paragraph -->',\\n        '<p>Each control below switches this whole site between Auto, Light and Dark. They are one block wearing the Material 3 treatments and settings it offers. Try one, then scroll: the page follows immediately, and the choice is remembered.<\\\/p>',\\n        '<!-- \\\/wp:paragraph -->',\\n        '',\\n        '<!-- wp:heading {\\\"level\\\":3} -->',\\n        '<h3 class=\\\"wp-block-heading\\\">Filled<\\\/h3>',\\n        '<!-- \\\/wp:heading -->',\\n        '',\\n        '<!-- wp:axismundi\\\/theme-switcher \\\/-->',\\n        '',\\n        '<!-- wp:heading {\\\"level\\\":3} -->',\\n        '<h3 class=\\\"wp-block-heading\\\">Tonal, icons only<\\\/h3>',\\n        '<!-- \\\/wp:heading -->',\\n        '',\\n        '<!-- wp:paragraph -->',\\n        '<p>With the labels off, each segment carries a tooltip instead. Hover one, or hold it on a touchscreen. Screen readers get the name either way.<\\\/p>',\\n        '<!-- \\\/wp:paragraph -->',\\n        '',\\n        '<!-- wp:axismundi\\\/theme-switcher {\\\"showLabels\\\":false,\\\"className\\\":\\\"is-style-tonal\\\"} \\\/-->',\\n        '',\\n        '<!-- wp:heading {\\\"level\\\":3} -->',\\n        '<h3 class=\\\"wp-block-heading\\\">Outlined<\\\/h3>',\\n        '<!-- \\\/wp:heading -->',\\n        '',\\n        '<!-- wp:axismundi\\\/theme-switcher {\\\"className\\\":\\\"is-style-outlined\\\"} \\\/-->',\\n        '',\\n        '<!-- wp:heading {\\\"level\\\":3} -->',\\n        '<h3 class=\\\"wp-block-heading\\\">One button that cycles<\\\/h3>',\\n        '<!-- \\\/wp:heading -->',\\n        '',\\n        '<!-- wp:paragraph -->',\\n        '<p>The same three schemes, advanced one press at a time. This one is a standard icon button: no container, the symbol carrying the state.<\\\/p>',\\n        '<!-- \\\/wp:paragraph -->',\\n        '',\\n        '<!-- wp:axismundi\\\/theme-switcher {\\\"cycleButtonVisibility\\\":\\\"always\\\",\\\"cycleButtonStandard\\\":true} \\\/-->',\\n        '',\\n        '<!-- wp:heading {\\\"level\\\":3} -->',\\n        '<h3 class=\\\"wp-block-heading\\\">Group on wide screens, one button on narrow<\\\/h3>',\\n        '<!-- \\\/wp:heading -->',\\n        '',\\n        '<!-- wp:paragraph -->',\\n        '<p>Narrow the window past 600 pixels to watch this one compress. Only one of the two is ever in the page, so only one is ever announced.<\\\/p>',\\n        '<!-- \\\/wp:paragraph -->',\\n        '',\\n        '<!-- wp:axismundi\\\/theme-switcher {\\\"cycleButtonVisibility\\\":\\\"mobile\\\"} \\\/-->',\\n) );\\n\\n$page = wp_insert_post( array(\\n    'post_title'   => 'Pick a colour scheme',\\n    'post_name'    => 'theme-switcher-demo',\\n    'post_type'    => 'page',\\n    'post_status'  => 'publish',\\n    'post_content' => $content,\\n) );\\n\\nif ( $page && ! is_wp_error( $page ) ) {\\n    update_option( 'show_on_front', 'page' );\\n    update_option( 'page_on_front', $page );\\n}\\n\"}]}"}},"all_blocks":{"axismundi\/theme-switcher":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"axismundi\/theme-switcher","version":"0.1.9","title":"Theme Switcher","category":"design","icon":"admin-appearance","description":"Switches between Auto, Light, and Dark theme modes.","keywords":["theme","dark mode","color scheme","appearance","light","dark"],"textdomain":"axismundi-theme-switcher","attributes":{"cycleButtonVisibility":{"type":"string","default":""},"cycleButtonStandard":{"type":"boolean","default":false},"showLabels":{"type":"boolean","default":true},"showTooltips":{"type":"boolean","default":true},"size":{"type":"string","default":"small"}},"example":{"attributes":{}},"styles":[{"name":"filled","label":"Filled","isDefault":true},{"name":"tonal","label":"Tonal"},{"name":"outlined","label":"Outlined"}],"supports":{"html":false,"align":["wide","full"],"interactivity":true,"color":{"text":true,"background":true},"spacing":{"padding":true},"layout":{"allowSwitching":false,"allowInheriting":false,"allowEditing":true,"allowOrientation":false,"allowVerticalAlignment":false,"allowWrap":false,"default":{"type":"flex"}}},"editorScript":"file:.\/edit.js","style":"file:.\/style.css","render":"file:.\/render.php","viewScript":"file:.\/tooltip.js","viewScriptModule":"file:.\/view.js"}},"tagged_versions":["0.1.5","0.1.6","0.1.7","0.1.8","0.1.9"],"block_files":["\/tags\/0.1.9\/blocks\/theme-switcher\/edit.js","\/tags\/0.1.9\/blocks\/theme-switcher\/style.css"],"assets_screenshots":[],"screenshots":[]},"plugin_section":[172757],"plugin_tags":[2769,1220,3706,173231,1332],"plugin_category":[46],"plugin_contributors":[270183],"plugin_business_model":[],"class_list":["post-336512","plugin","type-plugin","status-publish","hentry","plugin_section-block","plugin_tags-appearance","plugin_tags-block","plugin_tags-color-scheme","plugin_tags-dark-mode","plugin_tags-editor","plugin_category-editor-and-writing","plugin_contributors-kimjiwoon","plugin_committers-kimjiwoon"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/axismundi-theme-switcher.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>The <code>axismundi\/theme-switcher<\/code> block puts an Auto \/ Light \/ Dark control on the\npage, as a connected button group or a single cycling button, and writes the\nchoice to <code>html[data-theme]<\/code>. The choice is kept in a first-party cookie and\nreapplied before the next page paints, so returning to the site does not flash\nthe wrong scheme.<\/p>\n\n<p>The block reads its colors, corner sizes and motion from the Material Design\nsystem custom properties, so it looks as intended under any theme that publishes\nthem, and falls back to Material's own baseline where a theme publishes none.\nThe Axismundi theme supports the <code>html[data-theme]<\/code> contract natively.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the plugin.<\/li>\n<li>Insert the Theme Switcher block wherever a light \/ dark \/ auto control is\nneeded -- a header template part, a footer, or a page.<\/li>\n<li>For the switch to repaint the whole site, use a theme or stylesheet that\nresponds to <code>html[data-theme]<\/code>. The Axismundi theme does so natively.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20require%20an%20external%20service%3F\"><h3>Does this plugin require an external service?<\/h3><\/dt>\n<dd><p>No. The switcher runs locally in WordPress and stores the selected mode in a\nfirst-party cookie named <code>axismundi_theme<\/code>.<\/p><\/dd>\n<dt id=\"can%20this%20plugin%20be%20used%20without%20the%20axismundi%20theme%3F\"><h3>Can this plugin be used without the Axismundi theme?<\/h3><\/dt>\n<dd><p>Yes. The block reads its colors, corner sizes and motion from the Material\nDesign system custom properties -- <code>--md-sys-color-*<\/code> and the shape and motion\nscales beside it -- so it looks as intended under any theme that publishes them.\nUnder a theme that publishes none it falls back to Material's own baseline\ncolors, and it still renders and still toggles the <code>data-theme<\/code> attribute; the\nsite around it changes only if something consumes <code>html[data-theme]<\/code>.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.1.9<\/h4>\n\n<ul>\n<li>Stop the browser painting its own highlight over a button when a finger lands\non it. The control answers a touch with its pressed state and nothing else.<\/li>\n<li>Show the focus state layer only for keyboard focus. A tap focuses a button\ntoo, so the layer used to stay on the cycling button after the finger lifted,\nuntil something else was touched.<\/li>\n<\/ul>\n\n<p>Earlier releases are listed in changelog.txt.<\/p>","raw_excerpt":"A light, dark, and auto color-scheme switcher block that remembers what the reader picked.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/336512","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=336512"}],"author":[{"embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/kimjiwoon"}],"wp:attachment":[{"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=336512"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=336512"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=336512"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=336512"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=336512"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=336512"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}