diff --git a/app/assets/javascripts/discourse/app/components/glimmer-header/contents.gjs b/app/assets/javascripts/discourse/app/components/glimmer-header/contents.gjs
index 429af099f2d..328f2187ff3 100644
--- a/app/assets/javascripts/discourse/app/components/glimmer-header/contents.gjs
+++ b/app/assets/javascripts/discourse/app/components/glimmer-header/contents.gjs
@@ -3,8 +3,8 @@ import { hash } from "@ember/helper";
import { inject as service } from "@ember/service";
import and from "truth-helpers/helpers/and";
import BootstrapModeNotice from "../bootstrap-mode-notice";
-import MountWidget from "../mount-widget";
import PluginOutlet from "../plugin-outlet";
+import HomeLogo from "./home-logo";
import SidebarToggle from "./sidebar-toggle";
import TopicInfo from "./topic/info";
@@ -28,10 +28,7 @@ export default class Contents extends Component {
-
+
diff --git a/app/assets/javascripts/discourse/app/components/glimmer-header/home-logo.gjs b/app/assets/javascripts/discourse/app/components/glimmer-header/home-logo.gjs
new file mode 100644
index 00000000000..dcd7fc5e71f
--- /dev/null
+++ b/app/assets/javascripts/discourse/app/components/glimmer-header/home-logo.gjs
@@ -0,0 +1,118 @@
+import Component from "@glimmer/component";
+import { on } from "@ember/modifier";
+import { action } from "@ember/object";
+import { inject as service } from "@ember/service";
+import concatClass from "discourse/helpers/concat-class";
+import { wantsNewWindow } from "discourse/lib/intercept-click";
+import DiscourseURL from "discourse/lib/url";
+import icon from "discourse-common/helpers/d-icon";
+import getURL from "discourse-common/lib/get-url";
+import Logo from "./logo";
+
+export default class HomeLogo extends Component {
+ @service session;
+ @service site;
+ @service siteSettings;
+
+ href = getURL("/");
+ darkModeAvailable = this.session.darkModeAvailable;
+
+ get showMobileLogo() {
+ return this.site.mobileView && this.logoResolver("mobile_logo").length > 0;
+ }
+
+ get logoUrl() {
+ return this.logoResolver("logo");
+ }
+
+ get logoUrlDark() {
+ return this.logoResolver("logo", { dark: this.darkModeAvailable });
+ }
+
+ get logoSmallUrl() {
+ return this.logoResolver("logo_small");
+ }
+
+ get logoSmallUrlDark() {
+ return this.logoResolver("logo_small", { dark: this.darkModeAvailable });
+ }
+
+ get mobileLogoUrl() {
+ return this.logoResolver("mobile_logo");
+ }
+
+ get mobileLogoUrlDark() {
+ return this.logoResolver("mobile_logo", { dark: this.darkModeAvailable });
+ }
+
+ logoResolver(name, opts = {}) {
+ // get alternative logos for browser dark dark mode switching
+ if (opts.dark) {
+ return this.siteSettings[`site_${name}_dark_url`];
+ }
+
+ // try dark logos first when color scheme is dark
+ // this is independent of browser dark mode
+ // hence the fallback to normal logos
+ if (this.session.defaultColorSchemeIsDark) {
+ return (
+ this.siteSettings[`site_${name}_dark_url`] ||
+ this.siteSettings[`site_${name}_url`] ||
+ ""
+ );
+ }
+
+ return this.siteSettings[`site_${name}_url`] || "";
+ }
+
+ @action
+ click(e) {
+ if (wantsNewWindow(e)) {
+ return false;
+ }
+
+ e.preventDefault();
+ DiscourseURL.routeToTag(e.target.closest("a"));
+ }
+
+
+ {{! template-lint-disable no-invalid-interactive }}
+