diff --git a/core/static/bundled/core/navbar-index.ts b/core/static/bundled/core/navbar-index.ts
new file mode 100644
index 00000000..b5330d42
--- /dev/null
+++ b/core/static/bundled/core/navbar-index.ts
@@ -0,0 +1,36 @@
+import { exportToHtml } from "#core:utils/globals";
+
+exportToHtml("showMenu", () => {
+ const navbar = document.getElementById("navbar-content");
+ const current = navbar.getAttribute("mobile-display");
+ navbar.setAttribute("mobile-display", current === "hidden" ? "revealed" : "hidden");
+});
+
+document.addEventListener("alpine:init", () => {
+ const menuItems = document.querySelectorAll(".navbar details[name='navbar'].menu");
+ const isDesktop = () => {
+ return window.innerWidth >= 500;
+ };
+ for (const item of menuItems) {
+ item.addEventListener("mouseover", () => {
+ if (isDesktop()) {
+ item.setAttribute("open", "");
+ }
+ });
+ item.addEventListener("mouseout", () => {
+ if (isDesktop()) {
+ item.removeAttribute("open");
+ }
+ });
+ item.addEventListener("click", (event: MouseEvent) => {
+ // Don't close when clicking on desktop mode
+ if ((event.target as HTMLElement).nodeName !== "SUMMARY" || event.detail === 0) {
+ return;
+ }
+
+ if (isDesktop()) {
+ event.preventDefault();
+ }
+ });
+ }
+});
diff --git a/core/templates/core/base.jinja b/core/templates/core/base.jinja
index b1953004..9b50463c 100644
--- a/core/templates/core/base.jinja
+++ b/core/templates/core/base.jinja
@@ -18,6 +18,7 @@
+
@@ -107,42 +108,6 @@
{% block script %}