diff --git a/.discourse-compatibility b/.discourse-compatibility
index 506a645..29da5ca 100644
--- a/.discourse-compatibility
+++ b/.discourse-compatibility
@@ -1,3 +1,4 @@
+< 3.2.0.beta2-dev: 2951c995fe669d87f157e5a1072fe548a98ae30e
3.1.999: eeeb391c88bc2226070bf479b8c58e1275e46cd2
3.1.0.beta2: a950a7fec2dafc77a54420034d6615400dd3fb7a
2.9.0.beta3: c3a26b198d64050dfc1553bb364a5e1769145101
diff --git a/javascripts/discourse/api-initializers/init-search-banner.js b/javascripts/discourse/api-initializers/init-search-banner.js
index acdfa00..94929b5 100644
--- a/javascripts/discourse/api-initializers/init-search-banner.js
+++ b/javascripts/discourse/api-initializers/init-search-banner.js
@@ -3,8 +3,16 @@ import { logSearchLinkClick } from "discourse/lib/search";
import { iconNode } from "discourse-common/lib/icon-library";
import { h } from "virtual-dom";
import I18n from "I18n";
+import SearchBanner from "../components/search-banner";
+
+export default apiInitializer("1.14.0", (api) => {
+ api.renderInOutlet(
+ settings.plugin_outlet === "above-main-container"
+ ? "above-main-container"
+ : "below-site-header",
+ SearchBanner
+ );
-export default apiInitializer("0.8", (api) => {
// Simplified version of header search theme component
const searchMenuWidget = api.container.factoryFor("widget:search-menu");
const corePanelContents = searchMenuWidget.class.prototype["panelContents"];
diff --git a/javascripts/discourse/templates/components/search-banner.hbs b/javascripts/discourse/components/search-banner.hbs
similarity index 100%
rename from javascripts/discourse/templates/components/search-banner.hbs
rename to javascripts/discourse/components/search-banner.hbs
diff --git a/javascripts/search-banner/templates/connectors/above-main-container/search-banner.hbs b/javascripts/search-banner/templates/connectors/above-main-container/search-banner.hbs
deleted file mode 100644
index 30f2f2b..0000000
--- a/javascripts/search-banner/templates/connectors/above-main-container/search-banner.hbs
+++ /dev/null
@@ -1,3 +0,0 @@
-{{#if (eq (theme-setting "plugin_outlet") "above-main-container")}}
-
-{{/if}}
\ No newline at end of file
diff --git a/javascripts/search-banner/templates/connectors/below-site-header/search-banner.hbs b/javascripts/search-banner/templates/connectors/below-site-header/search-banner.hbs
deleted file mode 100644
index 54a7f27..0000000
--- a/javascripts/search-banner/templates/connectors/below-site-header/search-banner.hbs
+++ /dev/null
@@ -1,3 +0,0 @@
-{{#if (eq (theme-setting "plugin_outlet") "below-site-header")}}
-
-{{/if}}
\ No newline at end of file
diff --git a/spec/system/viewing_search_banner_spec.rb b/spec/system/viewing_search_banner_spec.rb
new file mode 100644
index 0000000..416f877
--- /dev/null
+++ b/spec/system/viewing_search_banner_spec.rb
@@ -0,0 +1,24 @@
+# frozen_string_literal: true
+
+RSpec.describe "Viewing the search banner", type: :system do
+ fab!(:theme) { upload_theme_component }
+
+ it "should display the search banner below the site header when `plugin_outlet` theme setting is set to `below-site-header`" do
+ theme.update_setting(:plugin_outlet, "below-site-header")
+ theme.save!
+
+ visit("/")
+
+ expect(page).to have_css(".custom-search-banner")
+ expect(page).to_not have_css("#main-outlet .custom-search-banner")
+ end
+
+ it "should display the search banner above the main container when `plugin_outlet` theme setting is set to `above-main-container`" do
+ theme.update_setting(:plugin_outlet, "above-main-container")
+ theme.save!
+
+ visit("/")
+
+ expect(page).to have_css("#main-outlet .custom-search-banner")
+ end
+end