{"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-04T18:30:28","modified_gmt":"2026-09-04T18:30:28","slug":"axismundi-theme-switcher","status":"publish","type":"plugin","link":"https:\/\/co.wordpress.org\/plugins\/axismundi-theme-switcher\/","author":21128503,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.1.7","stable_tag":"0.1.7","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-04 18:30:28","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":209,"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}},"upgrade_notice":[],"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3681702,"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.7","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"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"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_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>Axismundi Theme Switcher provides the <code>axismundi\/theme-switcher<\/code> block and the\nearly color-scheme bridge that applies the persisted <code>axismundi_theme<\/code> cookie\nbefore paint. The Axismundi theme owns the <code>data-theme<\/code> token selectors; this\nplugin owns the UI, persistence, and editor preview sync.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the Axismundi theme.<\/li>\n<li>Upload and activate this plugin.<\/li>\n<li>Insert the Theme Switcher block where a light \/ dark \/ auto control is\nneeded.<\/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.7<\/h4>\n\n<ul>\n<li>Add a Cycle button visibility setting -- off, mobile or always -- so the\nswitcher can show its three-button group on wide screens and compress to a\nsingle cycling button on narrow ones. It replaces the block style that used to\nmake that choice; existing content keeps rendering as it did.<\/li>\n<li>On mobile, switch at the breakpoint the active theme declares, or WordPress's\nown default where a theme declares none.<\/li>\n<li>Require WordPress 7.1, which is where a theme can declare that breakpoint.<\/li>\n<li>Add a Size setting with the five Material Design sizes, from extra small to\nextra large.<\/li>\n<li>Add a Show labels setting for the button group, so its three modes can show\nicons alone. The names stay available to screen readers either way.<\/li>\n<li>Add a Show tooltips setting. A button with no visible name shows one on hover,\non keyboard focus, or on a press and hold on a touchscreen.<\/li>\n<li>Add a Standard icon button setting for the cycling button, which drops its\ncontainer so the symbol alone carries the color scheme.<\/li>\n<li>Add alignment and justification, so the control can sit wide, full width, or\nto one side of the space it is given.<\/li>\n<li>Rebuild the button group as Material Design's connected group: separate\nsegments with rounded ends, an inner corner that shrinks while pressed, and a\nfully rounded segment for the mode in use.<\/li>\n<li>Add Filled, Tonal and Outlined block styles, which color the mode in use\ndifferently from the rest.<\/li>\n<li>Take colors, corner sizes and motion from the Material Design system\nproperties directly, so the block looks right under any theme that publishes\nthem rather than only under one palette. The border radius control is gone\nfrom the sidebar with them: the corners now follow the theme's shape scale.<\/li>\n<li>Show the cycling button as unselected while the color scheme is Auto, and as\nselected once a reader chooses Light or Dark. A filled symbol now means\nselected on both surfaces, and a group segment fills its symbol on hover.<\/li>\n<li>Gather the settings into a Display panel with an options menu and Reset all,\nso a changed setting can be put back without remembering what it was.<\/li>\n<li>Send the switcher already carrying its icon, its name and the current scheme,\ninstead of leaving them blank until scripts run.<\/li>\n<li>Fix several switchers on one screen disagreeing in the editor, and the block\nappearing empty in the editor's mobile preview.<\/li>\n<li>Version the block's editor script by its own file, so an updated editor is\nnever served from a stale cache.<\/li>\n<\/ul>\n\n<p>Earlier releases are listed in changelog.txt.<\/p>","raw_excerpt":"Companion block and color-scheme bridge for the Axismundi light \/ dark \/ auto theme switcher.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/336512","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=336512"}],"author":[{"embeddable":true,"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/kimjiwoon"}],"wp:attachment":[{"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=336512"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=336512"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=336512"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=336512"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=336512"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=336512"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}