import process from 'node:process';globalThis._importMeta_=globalThis._importMeta_||{url:"file:///_entry.js",env:process.env};import { defineComponent, shallowRef, h, resolveComponent, hasInjectionContext, inject, computed, getCurrentInstance, createElementBlock, provide, cloneVNode, ref, Suspense, Fragment, createApp, shallowReactive, mergeProps, withCtx, createVNode, createTextVNode, unref, toDisplayString, toRef, onErrorCaptured, onServerPrefetch, resolveDynamicComponent, reactive, effectScope, isReadonly, isRef, isShallow, isReactive, toRaw, defineAsyncComponent, getCurrentScope, useSSRContext } from 'vue';
import { t as parseQuery, c as createError$1, v as hasProtocol, w as isScriptProtocol, p as joinURL, x as withQuery, y as sanitizeStatusCode, z as withTrailingSlash, A as withoutTrailingSlash, B as getContext, $ as $fetch$1, C as createHooks, D as executeAsync, E as toRouteMatcher, F as createRouter$1, G as defu } from '../nitro/nitro.mjs';
import { b as baseURL } from '../routes/renderer.mjs';
import { defineStore, createPinia, setActivePinia, shouldHydrate } from 'pinia';
import { RouterView, useRoute as useRoute$1, useRouter as useRouter$1, createMemoryHistory, createRouter, START_LOCATION } from 'vue-router';
import { ssrRenderAttrs, ssrRenderComponent, ssrRenderAttr, ssrRenderStyle, ssrRenderClass, ssrRenderList, ssrInterpolate, ssrRenderSuspense, ssrRenderVNode } from 'vue/server-renderer';
import { ChevronDown, X, Menu, User, ChevronUp } from 'lucide-vue-next';
import 'node:http';
import 'node:https';
import 'node:events';
import 'node:buffer';
import 'node:fs';
import 'node:path';
import 'node:crypto';
import 'node:url';
import 'vue-bundle-renderer/runtime';
import 'unhead/server';
import 'devalue';
import 'unhead/utils';

if (!globalThis.$fetch) {
  globalThis.$fetch = $fetch$1.create({
    baseURL: baseURL()
  });
}
if (!("global" in globalThis)) {
  globalThis.global = globalThis;
}
const nuxtLinkDefaults = { "componentName": "NuxtLink" };
const asyncDataDefaults = { "deep": false };
const fetchDefaults = {};
const appId = "nuxt-app";
function getNuxtAppCtx(id = appId) {
  return getContext(id, {
    asyncContext: false
  });
}
const NuxtPluginIndicator = "__nuxt_plugin";
function createNuxtApp(options) {
  let hydratingCount = 0;
  const nuxtApp = {
    _id: options.id || appId || "nuxt-app",
    _scope: effectScope(),
    provide: void 0,
    versions: {
      get nuxt() {
        return "4.1.3";
      },
      get vue() {
        return nuxtApp.vueApp.version;
      }
    },
    payload: shallowReactive({
      ...options.ssrContext?.payload || {},
      data: shallowReactive({}),
      state: reactive({}),
      once: /* @__PURE__ */ new Set(),
      _errors: shallowReactive({})
    }),
    static: {
      data: {}
    },
    runWithContext(fn) {
      if (nuxtApp._scope.active && !getCurrentScope()) {
        return nuxtApp._scope.run(() => callWithNuxt(nuxtApp, fn));
      }
      return callWithNuxt(nuxtApp, fn);
    },
    isHydrating: false,
    deferHydration() {
      if (!nuxtApp.isHydrating) {
        return () => {
        };
      }
      hydratingCount++;
      let called = false;
      return () => {
        if (called) {
          return;
        }
        called = true;
        hydratingCount--;
        if (hydratingCount === 0) {
          nuxtApp.isHydrating = false;
          return nuxtApp.callHook("app:suspense:resolve");
        }
      };
    },
    _asyncDataPromises: {},
    _asyncData: shallowReactive({}),
    _payloadRevivers: {},
    ...options
  };
  {
    nuxtApp.payload.serverRendered = true;
  }
  if (nuxtApp.ssrContext) {
    nuxtApp.payload.path = nuxtApp.ssrContext.url;
    nuxtApp.ssrContext.nuxt = nuxtApp;
    nuxtApp.ssrContext.payload = nuxtApp.payload;
    nuxtApp.ssrContext.config = {
      public: nuxtApp.ssrContext.runtimeConfig.public,
      app: nuxtApp.ssrContext.runtimeConfig.app
    };
  }
  nuxtApp.hooks = createHooks();
  nuxtApp.hook = nuxtApp.hooks.hook;
  {
    const contextCaller = async function(hooks, args) {
      for (const hook of hooks) {
        await nuxtApp.runWithContext(() => hook(...args));
      }
    };
    nuxtApp.hooks.callHook = (name, ...args) => nuxtApp.hooks.callHookWith(contextCaller, name, ...args);
  }
  nuxtApp.callHook = nuxtApp.hooks.callHook;
  nuxtApp.provide = (name, value) => {
    const $name = "$" + name;
    defineGetter(nuxtApp, $name, value);
    defineGetter(nuxtApp.vueApp.config.globalProperties, $name, value);
  };
  defineGetter(nuxtApp.vueApp, "$nuxt", nuxtApp);
  defineGetter(nuxtApp.vueApp.config.globalProperties, "$nuxt", nuxtApp);
  const runtimeConfig = options.ssrContext.runtimeConfig;
  nuxtApp.provide("config", runtimeConfig);
  return nuxtApp;
}
function registerPluginHooks(nuxtApp, plugin2) {
  if (plugin2.hooks) {
    nuxtApp.hooks.addHooks(plugin2.hooks);
  }
}
async function applyPlugin(nuxtApp, plugin2) {
  if (typeof plugin2 === "function") {
    const { provide: provide2 } = await nuxtApp.runWithContext(() => plugin2(nuxtApp)) || {};
    if (provide2 && typeof provide2 === "object") {
      for (const key in provide2) {
        nuxtApp.provide(key, provide2[key]);
      }
    }
  }
}
async function applyPlugins(nuxtApp, plugins2) {
  const resolvedPlugins = /* @__PURE__ */ new Set();
  const unresolvedPlugins = [];
  const parallels = [];
  let error = void 0;
  let promiseDepth = 0;
  async function executePlugin(plugin2) {
    const unresolvedPluginsForThisPlugin = plugin2.dependsOn?.filter((name) => plugins2.some((p) => p._name === name) && !resolvedPlugins.has(name)) ?? [];
    if (unresolvedPluginsForThisPlugin.length > 0) {
      unresolvedPlugins.push([new Set(unresolvedPluginsForThisPlugin), plugin2]);
    } else {
      const promise = applyPlugin(nuxtApp, plugin2).then(async () => {
        if (plugin2._name) {
          resolvedPlugins.add(plugin2._name);
          await Promise.all(unresolvedPlugins.map(async ([dependsOn, unexecutedPlugin]) => {
            if (dependsOn.has(plugin2._name)) {
              dependsOn.delete(plugin2._name);
              if (dependsOn.size === 0) {
                promiseDepth++;
                await executePlugin(unexecutedPlugin);
              }
            }
          }));
        }
      }).catch((e) => {
        if (!plugin2.parallel && !nuxtApp.payload.error) {
          throw e;
        }
        error ||= e;
      });
      if (plugin2.parallel) {
        parallels.push(promise);
      } else {
        await promise;
      }
    }
  }
  for (const plugin2 of plugins2) {
    if (nuxtApp.ssrContext?.islandContext && plugin2.env?.islands === false) {
      continue;
    }
    registerPluginHooks(nuxtApp, plugin2);
  }
  for (const plugin2 of plugins2) {
    if (nuxtApp.ssrContext?.islandContext && plugin2.env?.islands === false) {
      continue;
    }
    await executePlugin(plugin2);
  }
  await Promise.all(parallels);
  if (promiseDepth) {
    for (let i = 0; i < promiseDepth; i++) {
      await Promise.all(parallels);
    }
  }
  if (error) {
    throw nuxtApp.payload.error || error;
  }
}
// @__NO_SIDE_EFFECTS__
function defineNuxtPlugin(plugin2) {
  if (typeof plugin2 === "function") {
    return plugin2;
  }
  const _name = plugin2._name || plugin2.name;
  delete plugin2.name;
  return Object.assign(plugin2.setup || (() => {
  }), plugin2, { [NuxtPluginIndicator]: true, _name });
}
const definePayloadPlugin = defineNuxtPlugin;
function callWithNuxt(nuxt, setup, args) {
  const fn = () => setup();
  const nuxtAppCtx = getNuxtAppCtx(nuxt._id);
  {
    return nuxt.vueApp.runWithContext(() => nuxtAppCtx.callAsync(nuxt, fn));
  }
}
function tryUseNuxtApp(id) {
  let nuxtAppInstance;
  if (hasInjectionContext()) {
    nuxtAppInstance = getCurrentInstance()?.appContext.app.$nuxt;
  }
  nuxtAppInstance ||= getNuxtAppCtx(id).tryUse();
  return nuxtAppInstance || null;
}
function useNuxtApp(id) {
  const nuxtAppInstance = tryUseNuxtApp(id);
  if (!nuxtAppInstance) {
    {
      throw new Error("[nuxt] instance unavailable");
    }
  }
  return nuxtAppInstance;
}
// @__NO_SIDE_EFFECTS__
function useRuntimeConfig(_event) {
  return useNuxtApp().$config;
}
function defineGetter(obj, key, val) {
  Object.defineProperty(obj, key, { get: () => val });
}
const LayoutMetaSymbol = Symbol("layout-meta");
const PageRouteSymbol = Symbol("route");
globalThis._importMeta_.url.replace(/\/app\/.*$/, "/");
const useRouter = () => {
  return useNuxtApp()?.$router;
};
const useRoute = () => {
  if (hasInjectionContext()) {
    return inject(PageRouteSymbol, useNuxtApp()._route);
  }
  return useNuxtApp()._route;
};
// @__NO_SIDE_EFFECTS__
function defineNuxtRouteMiddleware(middleware) {
  return middleware;
}
const isProcessingMiddleware = () => {
  try {
    if (useNuxtApp()._processingMiddleware) {
      return true;
    }
  } catch {
    return false;
  }
  return false;
};
const URL_QUOTE_RE = /"/g;
const navigateTo = (to, options) => {
  to ||= "/";
  const toPath = typeof to === "string" ? to : "path" in to ? resolveRouteObject(to) : useRouter().resolve(to).href;
  const isExternalHost = hasProtocol(toPath, { acceptRelative: true });
  const isExternal = options?.external || isExternalHost;
  if (isExternal) {
    if (!options?.external) {
      throw new Error("Navigating to an external URL is not allowed by default. Use `navigateTo(url, { external: true })`.");
    }
    const { protocol } = new URL(toPath, "http://localhost");
    if (protocol && isScriptProtocol(protocol)) {
      throw new Error(`Cannot navigate to a URL with '${protocol}' protocol.`);
    }
  }
  const inMiddleware = isProcessingMiddleware();
  const router = useRouter();
  const nuxtApp = useNuxtApp();
  {
    if (nuxtApp.ssrContext) {
      const fullPath = typeof to === "string" || isExternal ? toPath : router.resolve(to).fullPath || "/";
      const location2 = isExternal ? toPath : joinURL((/* @__PURE__ */ useRuntimeConfig()).app.baseURL, fullPath);
      const redirect = async function(response) {
        await nuxtApp.callHook("app:redirected");
        const encodedLoc = location2.replace(URL_QUOTE_RE, "%22");
        const encodedHeader = encodeURL(location2, isExternalHost);
        nuxtApp.ssrContext._renderResponse = {
          statusCode: sanitizeStatusCode(options?.redirectCode || 302, 302),
          body: `<!DOCTYPE html><html><head><meta http-equiv="refresh" content="0; url=${encodedLoc}"></head></html>`,
          headers: { location: encodedHeader }
        };
        return response;
      };
      if (!isExternal && inMiddleware) {
        router.afterEach((final) => final.fullPath === fullPath ? redirect(false) : void 0);
        return to;
      }
      return redirect(!inMiddleware ? void 0 : (
        /* abort route navigation */
        false
      ));
    }
  }
  if (isExternal) {
    nuxtApp._scope.stop();
    if (options?.replace) {
      (void 0).replace(toPath);
    } else {
      (void 0).href = toPath;
    }
    if (inMiddleware) {
      if (!nuxtApp.isHydrating) {
        return false;
      }
      return new Promise(() => {
      });
    }
    return Promise.resolve();
  }
  return options?.replace ? router.replace(to) : router.push(to);
};
function resolveRouteObject(to) {
  return withQuery(to.path || "", to.query || {}) + (to.hash || "");
}
function encodeURL(location2, isExternalHost = false) {
  const url = new URL(location2, "http://localhost");
  if (!isExternalHost) {
    return url.pathname + url.search + url.hash;
  }
  if (location2.startsWith("//")) {
    return url.toString().replace(url.protocol, "");
  }
  return url.toString();
}
const NUXT_ERROR_SIGNATURE = "__nuxt_error";
const useError = /* @__NO_SIDE_EFFECTS__ */ () => toRef(useNuxtApp().payload, "error");
const showError = (error) => {
  const nuxtError = createError(error);
  try {
    const error2 = /* @__PURE__ */ useError();
    if (false) ;
    error2.value ||= nuxtError;
  } catch {
    throw nuxtError;
  }
  return nuxtError;
};
const isNuxtError = (error) => !!error && typeof error === "object" && NUXT_ERROR_SIGNATURE in error;
const createError = (error) => {
  const nuxtError = createError$1(error);
  Object.defineProperty(nuxtError, NUXT_ERROR_SIGNATURE, {
    value: true,
    configurable: false,
    writable: false
  });
  return nuxtError;
};
async function getRouteRules(arg) {
  const path = typeof arg === "string" ? arg : arg.path;
  {
    useNuxtApp().ssrContext._preloadManifest = true;
    const _routeRulesMatcher = toRouteMatcher(
      createRouter$1({ routes: (/* @__PURE__ */ useRuntimeConfig()).nitro.routeRules })
    );
    return defu({}, ..._routeRulesMatcher.matchAll(path).reverse());
  }
}
function definePayloadReducer(name, reduce) {
  {
    useNuxtApp().ssrContext._payloadReducers[name] = reduce;
  }
}
const payloadPlugin = definePayloadPlugin(() => {
  definePayloadReducer(
    "skipHydrate",
    // We need to return something truthy to be treated as a match
    (data) => !shouldHydrate(data) && 1
  );
});
const unhead_k2P3m_ZDyjlr2mMYnoDPwavjsDN8hBlk9cFai0bbopU = /* @__PURE__ */ defineNuxtPlugin({
  name: "nuxt:head",
  enforce: "pre",
  setup(nuxtApp) {
    const head = nuxtApp.ssrContext.head;
    nuxtApp.vueApp.use(head);
  }
});
function toArray(value) {
  return Array.isArray(value) ? value : [value];
}
const __nuxt_page_meta$8 = {
  layout: "default"
};
const __nuxt_page_meta$7 = {
  layout: "default"
};
const __nuxt_page_meta$6 = {
  layout: "default"
};
const __nuxt_page_meta$5 = {
  layout: "default"
};
const __nuxt_page_meta$4 = {
  layout: "default"
};
const __nuxt_page_meta$3 = {
  layout: "default"
};
const __nuxt_page_meta$2 = {
  layout: "default"
};
const __nuxt_page_meta$1 = {
  layout: "default"
};
const __nuxt_page_meta = {
  layout: "default"
};
const _routes = [
  {
    name: "index",
    path: "/",
    component: () => import('./index-BBW4SQ0k.mjs')
  },
  {
    name: "login",
    path: "/login",
    meta: __nuxt_page_meta$8 || {},
    component: () => import('./login-P5Yg6Pmv.mjs')
  },
  {
    name: "anlagen",
    path: "/anlagen",
    component: () => import('./anlagen-CKawgUc0.mjs')
  },
  {
    name: "galerie",
    path: "/galerie",
    component: () => import('./galerie-C4I13RVr.mjs')
  },
  {
    name: "kontakt",
    path: "/kontakt",
    component: () => import('./kontakt-CvXeOeEZ.mjs')
  },
  {
    name: "satzung",
    path: "/satzung",
    component: () => import('./satzung-MuMXhm-2.mjs')
  },
  {
    name: "termine",
    path: "/termine",
    component: () => import('./termine-DGoYF9AA.mjs')
  },
  {
    name: "vorstand",
    path: "/vorstand",
    component: () => import('./vorstand-BRGSrtx1.mjs')
  },
  {
    name: "cms",
    path: "/cms",
    meta: { ...__nuxt_page_meta$7 || {}, ...{ "middleware": "auth" } },
    component: () => import('./index-CQoOFH9O.mjs')
  },
  {
    name: "impressum",
    path: "/impressum",
    component: () => import('./impressum-BqyqWRX3.mjs')
  },
  {
    name: "spielplan",
    path: "/spielplan",
    component: () => import('./spielplan-CSMIH4ap.mjs')
  },
  {
    name: "tt-regeln",
    path: "/tt-regeln",
    component: () => import('./tt-regeln-m0OjsIij.mjs')
  },
  {
    name: "ueber-uns",
    path: "/ueber-uns",
    component: () => import('./ueber-uns-B3O5y-Y-.mjs')
  },
  {
    name: "geschichte",
    path: "/geschichte",
    component: () => import('./geschichte-DbYWx9mk.mjs')
  },
  {
    name: "cms-satzung",
    path: "/cms/satzung",
    meta: { "middleware": "auth" },
    component: () => import('./satzung-D0IvKIIa.mjs')
  },
  {
    name: "cms-termine",
    path: "/cms/termine",
    meta: { ...__nuxt_page_meta$6 || {}, ...{ "middleware": "auth" } },
    component: () => import('./termine-D0MhYqRR.mjs')
  },
  {
    name: "cms-benutzer",
    path: "/cms/benutzer",
    meta: { "middleware": "auth" },
    component: () => import('./benutzer-0MRCHBRT.mjs')
  },
  {
    name: "registrieren",
    path: "/registrieren",
    component: () => import('./registrieren-DEibgk1G.mjs')
  },
  {
    name: "spielsysteme",
    path: "/spielsysteme",
    component: () => import('./spielsysteme-CzmG1BOB.mjs')
  },
  {
    name: "cms-tt-regeln",
    path: "/cms/tt-regeln",
    meta: { "middleware": "auth" },
    component: () => import('./tt-regeln-CMXBlU5A.mjs')
  },
  {
    name: "cms-ueber-uns",
    path: "/cms/ueber-uns",
    meta: { "middleware": "auth" },
    component: () => import('./ueber-uns-DjmpTsFo.mjs')
  },
  {
    name: "cms-geschichte",
    path: "/cms/geschichte",
    meta: { "middleware": "auth" },
    component: () => import('./geschichte-CFP6IFpM.mjs')
  },
  {
    name: "mitgliedschaft",
    path: "/mitgliedschaft",
    component: () => import('./mitgliedschaft-wXqwgLLL.mjs')
  },
  {
    name: "training",
    path: "/training",
    component: () => import('./index-BiHN6eUh.mjs')
  },
  {
    name: "verein-satzung",
    path: "/verein/satzung",
    component: () => import('./satzung-DQRFjAcf.mjs')
  },
  {
    name: "cms-spielplaene",
    path: "/cms/spielplaene",
    meta: { "middleware": "auth" },
    component: () => import('./spielplaene-Cxh2kXmc.mjs')
  },
  {
    name: "training-trainer",
    path: "/training/trainer",
    component: () => import('./trainer-CNI8fhY2.mjs')
  },
  {
    name: "verein-tt-regeln",
    path: "/verein/tt-regeln",
    component: () => import('./tt-regeln-DlFgk5yz.mjs')
  },
  {
    name: "verein-ueber-uns",
    path: "/verein/ueber-uns",
    component: () => import('./ueber-uns-v9i89EAf.mjs')
  },
  {
    name: "cms-einstellungen",
    path: "/cms/einstellungen",
    meta: { ...__nuxt_page_meta$5 || {}, ...{ "middleware": "auth" } },
    component: () => import('./einstellungen-D4Ua-Zgq.mjs')
  },
  {
    name: "verein-geschichte",
    path: "/verein/geschichte",
    component: () => import('./geschichte-BQ5IVRj2.mjs')
  },
  {
    name: "mannschaften-damen",
    path: "/mannschaften/damen",
    component: () => import('./damen-CCTOqtoP.mjs')
  },
  {
    name: "mannschaften",
    path: "/mannschaften",
    component: () => import('./index-Bkex19SZ.mjs')
  },
  {
    name: "passwort-vergessen",
    path: "/passwort-vergessen",
    component: () => import('./passwort-vergessen-gQd7OBa3.mjs')
  },
  {
    name: "training-anfaenger",
    path: "/training/anfaenger",
    component: () => import('./anfaenger-DnzSVrBP.mjs')
  },
  {
    name: "mannschaften-slug",
    path: "/mannschaften/:slug()",
    component: () => import('./_slug_-CDHaEHsb.mjs')
  },
  {
    name: "mannschaften-herren",
    path: "/mannschaften/herren",
    component: () => import('./herren-CU18kIOb.mjs')
  },
  {
    name: "mannschaften-jugend",
    path: "/mannschaften/jugend",
    component: () => import('./jugend-D2PYrcrQ.mjs')
  },
  {
    name: "mitgliederbereich-api",
    path: "/mitgliederbereich/api",
    meta: { ...__nuxt_page_meta$4 || {}, ...{ "middleware": "auth" } },
    component: () => import('./api-2KvLR2u_.mjs')
  },
  {
    name: "mitgliederbereich-news",
    path: "/mitgliederbereich/news",
    meta: { ...__nuxt_page_meta$3 || {}, ...{ "middleware": "auth" } },
    component: () => import('./news-BiFez7S9.mjs')
  },
  {
    name: "vereinsmeisterschaften",
    path: "/vereinsmeisterschaften",
    component: () => import('./vereinsmeisterschaften-DdLhWIxm.mjs')
  },
  {
    name: "mitgliederbereich",
    path: "/mitgliederbereich",
    meta: { ...__nuxt_page_meta$2 || {}, ...{ "middleware": "auth" } },
    component: () => import('./index-DItzZYkA.mjs')
  },
  {
    name: "mannschaften-spielplaene",
    path: "/mannschaften/spielplaene",
    component: () => import('./spielplaene-CK95OXX8.mjs')
  },
  {
    name: "mitgliederbereich-profil",
    path: "/mitgliederbereich/profil",
    meta: { ...__nuxt_page_meta$1 || {}, ...{ "middleware": "auth" } },
    component: () => import('./profil-Dm_3uuTL.mjs')
  },
  {
    name: "cms-vereinsmeisterschaften",
    path: "/cms/vereinsmeisterschaften",
    meta: { "middleware": "auth" },
    component: () => import('./vereinsmeisterschaften-DNSbF6G8.mjs')
  },
  {
    name: "cms-mitgliedschaftsantraege",
    path: "/cms/mitgliedschaftsantraege",
    component: () => import('./mitgliedschaftsantraege-DnRsAaeb.mjs')
  },
  {
    name: "mitgliederbereich-mitglieder",
    path: "/mitgliederbereich/mitglieder",
    meta: { ...__nuxt_page_meta || {}, ...{ "middleware": "auth" } },
    component: () => import('./mitglieder-yWh5DTR0.mjs')
  }
];
const ROUTE_KEY_PARENTHESES_RE = /(:\w+)\([^)]+\)/g;
const ROUTE_KEY_SYMBOLS_RE = /(:\w+)[?+*]/g;
const ROUTE_KEY_NORMAL_RE = /:\w+/g;
function generateRouteKey(route) {
  const source = route?.meta.key ?? route.path.replace(ROUTE_KEY_PARENTHESES_RE, "$1").replace(ROUTE_KEY_SYMBOLS_RE, "$1").replace(ROUTE_KEY_NORMAL_RE, (r) => route.params[r.slice(1)]?.toString() || "");
  return typeof source === "function" ? source(route) : source;
}
function isChangingPage(to, from) {
  if (to === from || from === START_LOCATION) {
    return false;
  }
  if (generateRouteKey(to) !== generateRouteKey(from)) {
    return true;
  }
  const areComponentsSame = to.matched.every(
    (comp, index) => comp.components && comp.components.default === from.matched[index]?.components?.default
  );
  if (areComponentsSame) {
    return false;
  }
  return true;
}
const routerOptions0 = {
  scrollBehavior(to, from, savedPosition) {
    const nuxtApp = useNuxtApp();
    const hashScrollBehaviour = useRouter().options?.scrollBehaviorType ?? "auto";
    if (to.path.replace(/\/$/, "") === from.path.replace(/\/$/, "")) {
      if (from.hash && !to.hash) {
        return { left: 0, top: 0 };
      }
      if (to.hash) {
        return { el: to.hash, top: _getHashElementScrollMarginTop(to.hash), behavior: hashScrollBehaviour };
      }
      return false;
    }
    const routeAllowsScrollToTop = typeof to.meta.scrollToTop === "function" ? to.meta.scrollToTop(to, from) : to.meta.scrollToTop;
    if (routeAllowsScrollToTop === false) {
      return false;
    }
    const hookToWait = nuxtApp._runningTransition ? "page:transition:finish" : "page:loading:end";
    return new Promise((resolve) => {
      if (from === START_LOCATION) {
        resolve(_calculatePosition(to, from, savedPosition, hashScrollBehaviour));
        return;
      }
      nuxtApp.hooks.hookOnce(hookToWait, () => {
        requestAnimationFrame(() => resolve(_calculatePosition(to, from, savedPosition, hashScrollBehaviour)));
      });
    });
  }
};
function _getHashElementScrollMarginTop(selector) {
  try {
    const elem = (void 0).querySelector(selector);
    if (elem) {
      return (Number.parseFloat(getComputedStyle(elem).scrollMarginTop) || 0) + (Number.parseFloat(getComputedStyle((void 0).documentElement).scrollPaddingTop) || 0);
    }
  } catch {
  }
  return 0;
}
function _calculatePosition(to, from, savedPosition, defaultHashScrollBehaviour) {
  if (savedPosition) {
    return savedPosition;
  }
  const isPageNavigation = isChangingPage(to, from);
  if (to.hash) {
    return {
      el: to.hash,
      top: _getHashElementScrollMarginTop(to.hash),
      behavior: isPageNavigation ? defaultHashScrollBehaviour : "instant"
    };
  }
  return {
    left: 0,
    top: 0
  };
}
const configRouterOptions = {
  hashMode: false,
  scrollBehaviorType: "auto"
};
const routerOptions = {
  ...configRouterOptions,
  ...routerOptions0
};
const validate = /* @__PURE__ */ defineNuxtRouteMiddleware(async (to, from) => {
  let __temp, __restore;
  if (!to.meta?.validate) {
    return;
  }
  const result = ([__temp, __restore] = executeAsync(() => Promise.resolve(to.meta.validate(to))), __temp = await __temp, __restore(), __temp);
  if (result === true) {
    return;
  }
  const error = createError({
    fatal: false,
    statusCode: result && result.statusCode || 404,
    statusMessage: result && result.statusMessage || `Page Not Found: ${to.fullPath}`,
    data: {
      path: to.fullPath
    }
  });
  return error;
});
const useAuthStore = defineStore("auth", {
  state: () => ({
    isLoggedIn: false,
    user: null,
    role: null
  }),
  getters: {
    isAdmin: (state) => {
      return state.role === "admin" || state.role === "vorstand";
    }
  },
  actions: {
    async checkAuth() {
      try {
        const response = await $fetch("/api/auth/status");
        this.isLoggedIn = response.isLoggedIn;
        this.user = response.user;
        this.role = response.role;
        return response;
      } catch (error) {
        this.isLoggedIn = false;
        this.user = null;
        this.role = null;
        return { isLoggedIn: false };
      }
    },
    async login(email, password) {
      const response = await $fetch("/api/auth/login", {
        method: "POST",
        body: { email, password }
      });
      if (response.success) {
        await this.checkAuth();
      }
      return response;
    },
    async logout() {
      try {
        await $fetch("/api/auth/logout", { method: "POST" });
        this.isLoggedIn = false;
        this.user = null;
        this.role = null;
      } catch (error) {
        console.error("Logout fehlgeschlagen:", error);
        throw error;
      }
    }
  }
});
const auth_45global = /* @__PURE__ */ defineNuxtRouteMiddleware(async (to, from) => {
  return;
});
const manifest_45route_45rule = /* @__PURE__ */ defineNuxtRouteMiddleware(async (to) => {
  {
    return;
  }
});
const globalMiddleware = [
  validate,
  auth_45global,
  manifest_45route_45rule
];
const namedMiddleware = {
  auth: () => import('./auth-C5dE0f86.mjs')
};
const plugin$1 = /* @__PURE__ */ defineNuxtPlugin({
  name: "nuxt:router",
  enforce: "pre",
  async setup(nuxtApp) {
    let __temp, __restore;
    let routerBase = (/* @__PURE__ */ useRuntimeConfig()).app.baseURL;
    const history = routerOptions.history?.(routerBase) ?? createMemoryHistory(routerBase);
    const routes = routerOptions.routes ? ([__temp, __restore] = executeAsync(() => routerOptions.routes(_routes)), __temp = await __temp, __restore(), __temp) ?? _routes : _routes;
    let startPosition;
    const router = createRouter({
      ...routerOptions,
      scrollBehavior: (to, from, savedPosition) => {
        if (from === START_LOCATION) {
          startPosition = savedPosition;
          return;
        }
        if (routerOptions.scrollBehavior) {
          router.options.scrollBehavior = routerOptions.scrollBehavior;
          if ("scrollRestoration" in (void 0).history) {
            const unsub = router.beforeEach(() => {
              unsub();
              (void 0).history.scrollRestoration = "manual";
            });
          }
          return routerOptions.scrollBehavior(to, START_LOCATION, startPosition || savedPosition);
        }
      },
      history,
      routes
    });
    nuxtApp.vueApp.use(router);
    const previousRoute = shallowRef(router.currentRoute.value);
    router.afterEach((_to, from) => {
      previousRoute.value = from;
    });
    Object.defineProperty(nuxtApp.vueApp.config.globalProperties, "previousRoute", {
      get: () => previousRoute.value
    });
    const initialURL = nuxtApp.ssrContext.url;
    const _route = shallowRef(router.currentRoute.value);
    const syncCurrentRoute = () => {
      _route.value = router.currentRoute.value;
    };
    nuxtApp.hook("page:finish", syncCurrentRoute);
    router.afterEach((to, from) => {
      if (to.matched[to.matched.length - 1]?.components?.default === from.matched[from.matched.length - 1]?.components?.default) {
        syncCurrentRoute();
      }
    });
    const route = {};
    for (const key in _route.value) {
      Object.defineProperty(route, key, {
        get: () => _route.value[key],
        enumerable: true
      });
    }
    nuxtApp._route = shallowReactive(route);
    nuxtApp._middleware ||= {
      global: [],
      named: {}
    };
    if (!nuxtApp.ssrContext?.islandContext) {
      router.afterEach(async (to, _from, failure) => {
        delete nuxtApp._processingMiddleware;
        if (failure) {
          await nuxtApp.callHook("page:loading:end");
        }
        if (failure?.type === 4) {
          return;
        }
        if (to.redirectedFrom && to.fullPath !== initialURL) {
          await nuxtApp.runWithContext(() => navigateTo(to.fullPath || "/"));
        }
      });
    }
    try {
      if (true) {
        ;
        [__temp, __restore] = executeAsync(() => router.push(initialURL)), await __temp, __restore();
        ;
      }
      ;
      [__temp, __restore] = executeAsync(() => router.isReady()), await __temp, __restore();
      ;
    } catch (error2) {
      [__temp, __restore] = executeAsync(() => nuxtApp.runWithContext(() => showError(error2))), await __temp, __restore();
    }
    const resolvedInitialRoute = router.currentRoute.value;
    syncCurrentRoute();
    if (nuxtApp.ssrContext?.islandContext) {
      return { provide: { router } };
    }
    const initialLayout = nuxtApp.payload.state._layout;
    router.beforeEach(async (to, from) => {
      await nuxtApp.callHook("page:loading:start");
      to.meta = reactive(to.meta);
      if (nuxtApp.isHydrating && initialLayout && !isReadonly(to.meta.layout)) {
        to.meta.layout = initialLayout;
      }
      nuxtApp._processingMiddleware = true;
      if (!nuxtApp.ssrContext?.islandContext) {
        const middlewareEntries = /* @__PURE__ */ new Set([...globalMiddleware, ...nuxtApp._middleware.global]);
        for (const component of to.matched) {
          const componentMiddleware = component.meta.middleware;
          if (!componentMiddleware) {
            continue;
          }
          for (const entry2 of toArray(componentMiddleware)) {
            middlewareEntries.add(entry2);
          }
        }
        {
          const routeRules = await nuxtApp.runWithContext(() => getRouteRules({ path: to.path }));
          if (routeRules.appMiddleware) {
            for (const key in routeRules.appMiddleware) {
              if (routeRules.appMiddleware[key]) {
                middlewareEntries.add(key);
              } else {
                middlewareEntries.delete(key);
              }
            }
          }
        }
        for (const entry2 of middlewareEntries) {
          const middleware = typeof entry2 === "string" ? nuxtApp._middleware.named[entry2] || await namedMiddleware[entry2]?.().then((r) => r.default || r) : entry2;
          if (!middleware) {
            throw new Error(`Unknown route middleware: '${entry2}'.`);
          }
          try {
            if (false) ;
            const result = await nuxtApp.runWithContext(() => middleware(to, from));
            if (true) {
              if (result === false || result instanceof Error) {
                const error2 = result || createError({
                  statusCode: 404,
                  statusMessage: `Page Not Found: ${initialURL}`
                });
                await nuxtApp.runWithContext(() => showError(error2));
                return false;
              }
            }
            if (result === true) {
              continue;
            }
            if (result === false) {
              return result;
            }
            if (result) {
              if (isNuxtError(result) && result.fatal) {
                await nuxtApp.runWithContext(() => showError(result));
              }
              return result;
            }
          } catch (err) {
            const error2 = createError(err);
            if (error2.fatal) {
              await nuxtApp.runWithContext(() => showError(error2));
            }
            return error2;
          }
        }
      }
    });
    router.onError(async () => {
      delete nuxtApp._processingMiddleware;
      await nuxtApp.callHook("page:loading:end");
    });
    router.afterEach((to) => {
      if (to.matched.length === 0) {
        return nuxtApp.runWithContext(() => showError(createError({
          statusCode: 404,
          fatal: false,
          statusMessage: `Page not found: ${to.fullPath}`,
          data: {
            path: to.fullPath
          }
        })));
      }
    });
    nuxtApp.hooks.hookOnce("app:created", async () => {
      try {
        if ("name" in resolvedInitialRoute) {
          resolvedInitialRoute.name = void 0;
        }
        await router.replace({
          ...resolvedInitialRoute,
          force: true
        });
        router.options.scrollBehavior = routerOptions.scrollBehavior;
      } catch (error2) {
        await nuxtApp.runWithContext(() => showError(error2));
      }
    });
    return { provide: { router } };
  }
});
const reducers = [
  ["NuxtError", (data) => isNuxtError(data) && data.toJSON()],
  ["EmptyShallowRef", (data) => isRef(data) && isShallow(data) && !data.value && (typeof data.value === "bigint" ? "0n" : JSON.stringify(data.value) || "_")],
  ["EmptyRef", (data) => isRef(data) && !data.value && (typeof data.value === "bigint" ? "0n" : JSON.stringify(data.value) || "_")],
  ["ShallowRef", (data) => isRef(data) && isShallow(data) && data.value],
  ["ShallowReactive", (data) => isReactive(data) && isShallow(data) && toRaw(data)],
  ["Ref", (data) => isRef(data) && data.value],
  ["Reactive", (data) => isReactive(data) && toRaw(data)]
];
const revive_payload_server_MVtmlZaQpj6ApFmshWfUWl5PehCebzaBf2NuRMiIbms = /* @__PURE__ */ defineNuxtPlugin({
  name: "nuxt:revive-payload:server",
  setup() {
    for (const [reducer, fn] of reducers) {
      definePayloadReducer(reducer, fn);
    }
  }
});
defineComponent({
  name: "ServerPlaceholder",
  render() {
    return createElementBlock("div");
  }
});
const clientOnlySymbol = Symbol.for("nuxt:client-only");
defineComponent({
  name: "ClientOnly",
  inheritAttrs: false,
  props: ["fallback", "placeholder", "placeholderTag", "fallbackTag"],
  ...false,
  setup(props, { slots, attrs }) {
    const mounted = shallowRef(false);
    const vm = getCurrentInstance();
    if (vm) {
      vm._nuxtClientOnly = true;
    }
    provide(clientOnlySymbol, true);
    return () => {
      if (mounted.value) {
        const vnodes = slots.default?.();
        if (vnodes && vnodes.length === 1) {
          return [cloneVNode(vnodes[0], attrs)];
        }
        return vnodes;
      }
      const slot = slots.fallback || slots.placeholder;
      if (slot) {
        return h(slot);
      }
      const fallbackStr = props.fallback || props.placeholder || "";
      const fallbackTag = props.fallbackTag || props.placeholderTag || "span";
      return createElementBlock(fallbackTag, attrs, fallbackStr);
    };
  }
});
const firstNonUndefined = (...args) => args.find((arg) => arg !== void 0);
// @__NO_SIDE_EFFECTS__
function defineNuxtLink(options) {
  const componentName = options.componentName || "NuxtLink";
  function isHashLinkWithoutHashMode(link) {
    return typeof link === "string" && link.startsWith("#");
  }
  function resolveTrailingSlashBehavior(to, resolve, trailingSlash) {
    const effectiveTrailingSlash = trailingSlash ?? options.trailingSlash;
    if (!to || effectiveTrailingSlash !== "append" && effectiveTrailingSlash !== "remove") {
      return to;
    }
    if (typeof to === "string") {
      return applyTrailingSlashBehavior(to, effectiveTrailingSlash);
    }
    const path = "path" in to && to.path !== void 0 ? to.path : resolve(to).path;
    const resolvedPath = {
      ...to,
      name: void 0,
      // named routes would otherwise always override trailing slash behavior
      path: applyTrailingSlashBehavior(path, effectiveTrailingSlash)
    };
    return resolvedPath;
  }
  function useNuxtLink(props) {
    const router = useRouter();
    const config = /* @__PURE__ */ useRuntimeConfig();
    const hasTarget = computed(() => !!props.target && props.target !== "_self");
    const isAbsoluteUrl = computed(() => {
      const path = props.to || props.href || "";
      return typeof path === "string" && hasProtocol(path, { acceptRelative: true });
    });
    const builtinRouterLink = resolveComponent("RouterLink");
    const useBuiltinLink = builtinRouterLink && typeof builtinRouterLink !== "string" ? builtinRouterLink.useLink : void 0;
    const isExternal = computed(() => {
      if (props.external) {
        return true;
      }
      const path = props.to || props.href || "";
      if (typeof path === "object") {
        return false;
      }
      return path === "" || isAbsoluteUrl.value;
    });
    const to = computed(() => {
      const path = props.to || props.href || "";
      if (isExternal.value) {
        return path;
      }
      return resolveTrailingSlashBehavior(path, router.resolve, props.trailingSlash);
    });
    const link = isExternal.value ? void 0 : useBuiltinLink?.({ ...props, to });
    const href = computed(() => {
      const effectiveTrailingSlash = props.trailingSlash ?? options.trailingSlash;
      if (!to.value || isAbsoluteUrl.value || isHashLinkWithoutHashMode(to.value)) {
        return to.value;
      }
      if (isExternal.value) {
        const path = typeof to.value === "object" && "path" in to.value ? resolveRouteObject(to.value) : to.value;
        const href2 = typeof path === "object" ? router.resolve(path).href : path;
        return applyTrailingSlashBehavior(href2, effectiveTrailingSlash);
      }
      if (typeof to.value === "object") {
        return router.resolve(to.value)?.href ?? null;
      }
      return applyTrailingSlashBehavior(joinURL(config.app.baseURL, to.value), effectiveTrailingSlash);
    });
    return {
      to,
      hasTarget,
      isAbsoluteUrl,
      isExternal,
      //
      href,
      isActive: link?.isActive ?? computed(() => to.value === router.currentRoute.value.path),
      isExactActive: link?.isExactActive ?? computed(() => to.value === router.currentRoute.value.path),
      route: link?.route ?? computed(() => router.resolve(to.value)),
      async navigate(_e) {
        await navigateTo(href.value, { replace: props.replace, external: isExternal.value || hasTarget.value });
      }
    };
  }
  return defineComponent({
    name: componentName,
    props: {
      // Routing
      to: {
        type: [String, Object],
        default: void 0,
        required: false
      },
      href: {
        type: [String, Object],
        default: void 0,
        required: false
      },
      // Attributes
      target: {
        type: String,
        default: void 0,
        required: false
      },
      rel: {
        type: String,
        default: void 0,
        required: false
      },
      noRel: {
        type: Boolean,
        default: void 0,
        required: false
      },
      // Prefetching
      prefetch: {
        type: Boolean,
        default: void 0,
        required: false
      },
      prefetchOn: {
        type: [String, Object],
        default: void 0,
        required: false
      },
      noPrefetch: {
        type: Boolean,
        default: void 0,
        required: false
      },
      // Styling
      activeClass: {
        type: String,
        default: void 0,
        required: false
      },
      exactActiveClass: {
        type: String,
        default: void 0,
        required: false
      },
      prefetchedClass: {
        type: String,
        default: void 0,
        required: false
      },
      // Vue Router's `<RouterLink>` additional props
      replace: {
        type: Boolean,
        default: void 0,
        required: false
      },
      ariaCurrentValue: {
        type: String,
        default: void 0,
        required: false
      },
      // Edge cases handling
      external: {
        type: Boolean,
        default: void 0,
        required: false
      },
      // Slot API
      custom: {
        type: Boolean,
        default: void 0,
        required: false
      },
      // Behavior
      trailingSlash: {
        type: String,
        default: void 0,
        required: false
      }
    },
    useLink: useNuxtLink,
    setup(props, { slots }) {
      const router = useRouter();
      const { to, href, navigate, isExternal, hasTarget, isAbsoluteUrl } = useNuxtLink(props);
      shallowRef(false);
      const el = void 0;
      const elRef = void 0;
      async function prefetch(nuxtApp = useNuxtApp()) {
        {
          return;
        }
      }
      return () => {
        if (!isExternal.value && !hasTarget.value && !isHashLinkWithoutHashMode(to.value)) {
          const routerLinkProps = {
            ref: elRef,
            to: to.value,
            activeClass: props.activeClass || options.activeClass,
            exactActiveClass: props.exactActiveClass || options.exactActiveClass,
            replace: props.replace,
            ariaCurrentValue: props.ariaCurrentValue,
            custom: props.custom
          };
          if (!props.custom) {
            routerLinkProps.rel = props.rel || void 0;
          }
          return h(
            resolveComponent("RouterLink"),
            routerLinkProps,
            slots.default
          );
        }
        const target = props.target || null;
        const rel = firstNonUndefined(
          // converts `""` to `null` to prevent the attribute from being added as empty (`rel=""`)
          props.noRel ? "" : props.rel,
          options.externalRelAttribute,
          /*
          * A fallback rel of `noopener noreferrer` is applied for external links or links that open in a new tab.
          * This solves a reverse tabnapping security flaw in browsers pre-2021 as well as improving privacy.
          */
          isAbsoluteUrl.value || hasTarget.value ? "noopener noreferrer" : ""
        ) || null;
        if (props.custom) {
          if (!slots.default) {
            return null;
          }
          return slots.default({
            href: href.value,
            navigate,
            prefetch,
            get route() {
              if (!href.value) {
                return void 0;
              }
              const url = new URL(href.value, "http://localhost");
              return {
                path: url.pathname,
                fullPath: url.pathname,
                get query() {
                  return parseQuery(url.search);
                },
                hash: url.hash,
                params: {},
                name: void 0,
                matched: [],
                redirectedFrom: void 0,
                meta: {},
                href: href.value
              };
            },
            rel,
            target,
            isExternal: isExternal.value || hasTarget.value,
            isActive: false,
            isExactActive: false
          });
        }
        return h("a", {
          ref: el,
          href: href.value || null,
          // converts `""` to `null` to prevent the attribute from being added as empty (`href=""`)
          rel,
          target,
          onClick: (event) => {
            if (isExternal.value || hasTarget.value) {
              return;
            }
            event.preventDefault();
            return props.replace ? router.replace(href.value) : router.push(href.value);
          }
        }, slots.default?.());
      };
    }
    // }) as unknown as DefineComponent<NuxtLinkProps, object, object, ComputedOptions, MethodOptions, object, object, EmitsOptions, string, object, NuxtLinkProps, object, SlotsType<NuxtLinkSlots>>
  });
}
const __nuxt_component_0$1 = /* @__PURE__ */ defineNuxtLink(nuxtLinkDefaults);
function applyTrailingSlashBehavior(to, trailingSlash) {
  const normalizeFn = trailingSlash === "append" ? withTrailingSlash : withoutTrailingSlash;
  const hasProtocolDifferentFromHttp = hasProtocol(to) && !to.startsWith("http");
  if (hasProtocolDifferentFromHttp) {
    return to;
  }
  return normalizeFn(to, true);
}
const plugin = /* @__PURE__ */ defineNuxtPlugin({
  name: "pinia",
  setup(nuxtApp) {
    const pinia = createPinia();
    nuxtApp.vueApp.use(pinia);
    setActivePinia(pinia);
    {
      nuxtApp.payload.pinia = toRaw(pinia.state.value);
    }
    return {
      provide: {
        pinia
      }
    };
  }
});
const components_plugin_4kY4pyzJIYX99vmMAAIorFf3CnAaptHitJgf7JxiED8 = /* @__PURE__ */ defineNuxtPlugin({
  name: "nuxt:global-components"
});
const plugins = [
  payloadPlugin,
  unhead_k2P3m_ZDyjlr2mMYnoDPwavjsDN8hBlk9cFai0bbopU,
  plugin$1,
  revive_payload_server_MVtmlZaQpj6ApFmshWfUWl5PehCebzaBf2NuRMiIbms,
  plugin,
  components_plugin_4kY4pyzJIYX99vmMAAIorFf3CnAaptHitJgf7JxiED8
];
const defineRouteProvider = (name = "RouteProvider") => defineComponent({
  name,
  props: {
    route: {
      type: Object,
      required: true
    },
    vnode: Object,
    vnodeRef: Object,
    renderKey: String,
    trackRootNodes: Boolean
  },
  setup(props) {
    const previousKey = props.renderKey;
    const previousRoute = props.route;
    const route = {};
    for (const key in props.route) {
      Object.defineProperty(route, key, {
        get: () => previousKey === props.renderKey ? props.route[key] : previousRoute[key],
        enumerable: true
      });
    }
    provide(PageRouteSymbol, shallowReactive(route));
    return () => {
      if (!props.vnode) {
        return props.vnode;
      }
      return h(props.vnode, { ref: props.vnodeRef });
    };
  }
});
const RouteProvider = defineRouteProvider();
const __nuxt_component_0 = defineComponent({
  name: "NuxtPage",
  inheritAttrs: false,
  props: {
    name: {
      type: String
    },
    transition: {
      type: [Boolean, Object],
      default: void 0
    },
    keepalive: {
      type: [Boolean, Object],
      default: void 0
    },
    route: {
      type: Object
    },
    pageKey: {
      type: [Function, String],
      default: null
    }
  },
  setup(props, { attrs, slots, expose }) {
    const nuxtApp = useNuxtApp();
    const pageRef = ref();
    inject(PageRouteSymbol, null);
    expose({ pageRef });
    inject(LayoutMetaSymbol, null);
    nuxtApp.deferHydration();
    return () => {
      return h(RouterView, { name: props.name, route: props.route, ...attrs }, {
        default: (routeProps) => {
          return h(Suspense, { suspensible: true }, {
            default() {
              return h(RouteProvider, {
                vnode: slots.default ? normalizeSlot(slots.default, routeProps) : routeProps.Component,
                route: routeProps.route,
                vnodeRef: pageRef
              });
            }
          });
        }
      });
    };
  }
});
function normalizeSlot(slot, data) {
  const slotContent = slot(data);
  return slotContent.length === 1 ? h(slotContent[0]) : h(Fragment, void 0, slotContent);
}
const _imports_1 = "" + __buildAssetsURL("Harheimer TC.CKfYAfp1.svg");
const _sfc_main$5 = {
  __name: "Navigation",
  __ssrInlineRender: true,
  setup(__props) {
    const route = useRoute$1();
    const authStore = useAuthStore();
    const isMobileMenuOpen = ref(false);
    const mobileSubmenu = ref(null);
    const mannschaften = ref([]);
    const hasGalleryImages = ref(false);
    const showCmsDropdown = ref(false);
    const isLoggedIn = computed(() => authStore.isLoggedIn);
    const isAdmin = computed(() => authStore.isAdmin);
    const currentSubmenu = computed(() => {
      const path = route.path;
      if (path.startsWith("/verein/") || path.startsWith("/vorstand") || path.startsWith("/vereinsmeisterschaften")) {
        return "verein";
      }
      if (path.startsWith("/mannschaften") || path.startsWith("/spielsysteme")) {
        return "mannschaften";
      }
      if (path.startsWith("/training") || path.startsWith("/tt-regeln")) {
        return "training";
      }
      if (path.startsWith("/mitgliederbereich") || path.startsWith("/cms")) {
        return "intern";
      }
      return null;
    });
    ref(null);
    return (_ctx, _push, _parent, _attrs) => {
      const _component_NuxtLink = __nuxt_component_0$1;
      _push(`<nav${ssrRenderAttrs(mergeProps({ class: "fixed top-0 left-0 right-0 z-50 bg-gradient-to-r from-gray-900 via-primary-900 to-gray-900 shadow-xl h-20" }, _attrs))}><div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 h-full"><div class="flex flex-col justify-between h-full py-2"><div class="flex justify-between items-center">`);
      _push(ssrRenderComponent(_component_NuxtLink, {
        to: "/",
        class: "flex items-center space-x-3 hover:scale-105 transition-transform"
      }, {
        default: withCtx((_, _push2, _parent2, _scopeId) => {
          if (_push2) {
            _push2(`<img${ssrRenderAttr("src", _imports_1)} alt="Harheimer TC Logo" class="w-12 h-12"${_scopeId}><div class="hidden sm:block"${_scopeId}><span class="text-xl font-display font-bold text-white"${_scopeId}>Harheimer <span class="text-primary-400"${_scopeId}>TC</span></span></div>`);
          } else {
            return [
              createVNode("img", {
                src: _imports_1,
                alt: "Harheimer TC Logo",
                class: "w-12 h-12"
              }),
              createVNode("div", { class: "hidden sm:block" }, [
                createVNode("span", { class: "text-xl font-display font-bold text-white" }, [
                  createTextVNode("Harheimer "),
                  createVNode("span", { class: "text-primary-400" }, "TC")
                ])
              ])
            ];
          }
        }),
        _: 1
      }, _parent));
      _push(`<div style="${ssrRenderStyle({ "display": "flex", "flex-direction": "column" })}"><div class="hidden lg:flex items-center space-x-1">`);
      _push(ssrRenderComponent(_component_NuxtLink, {
        to: "/",
        class: "px-4 py-2 text-gray-300 hover:text-white font-medium transition-all rounded-lg hover:bg-primary-700/50",
        "active-class": "text-white bg-primary-600"
      }, {
        default: withCtx((_, _push2, _parent2, _scopeId) => {
          if (_push2) {
            _push2(` Start `);
          } else {
            return [
              createTextVNode(" Start ")
            ];
          }
        }),
        _: 1
      }, _parent));
      _push(`<button class="${ssrRenderClass([unref(route).path.startsWith("/verein/") || unref(route).path.startsWith("/vorstand") || unref(route).path.startsWith("/vereinsmeisterschaften") || currentSubmenu.value === "verein" ? "text-white bg-primary-600" : "", "px-4 py-2 text-gray-300 hover:text-white font-medium transition-all rounded-lg hover:bg-primary-700/50"])}"> Verein </button><button class="${ssrRenderClass([unref(route).path.startsWith("/mannschaften") || unref(route).path.startsWith("/spielsysteme") || currentSubmenu.value === "mannschaften" ? "text-white bg-primary-600" : "", "px-4 py-2 text-gray-300 hover:text-white font-medium transition-all rounded-lg hover:bg-primary-700/50"])}"> Mannschaften </button><button class="${ssrRenderClass([unref(route).path.startsWith("/training") || unref(route).path.startsWith("/tt-regeln") || currentSubmenu.value === "training" ? "text-white bg-primary-600" : "", "px-4 py-2 text-gray-300 hover:text-white font-medium transition-all rounded-lg hover:bg-primary-700/50"])}"> Training </button>`);
      _push(ssrRenderComponent(_component_NuxtLink, {
        to: "/mitgliedschaft",
        class: "px-4 py-2 text-gray-300 hover:text-white font-medium transition-all rounded-lg hover:bg-primary-700/50",
        "active-class": "text-white bg-primary-600"
      }, {
        default: withCtx((_, _push2, _parent2, _scopeId) => {
          if (_push2) {
            _push2(` Mitgliedschaft `);
          } else {
            return [
              createTextVNode(" Mitgliedschaft ")
            ];
          }
        }),
        _: 1
      }, _parent));
      _push(ssrRenderComponent(_component_NuxtLink, {
        to: "/termine",
        onClick: ($event) => currentSubmenu.value = null,
        class: "px-4 py-2 text-gray-300 hover:text-white font-medium transition-all rounded-lg hover:bg-primary-700/50",
        "active-class": "text-white bg-primary-600"
      }, {
        default: withCtx((_, _push2, _parent2, _scopeId) => {
          if (_push2) {
            _push2(` Termine `);
          } else {
            return [
              createTextVNode(" Termine ")
            ];
          }
        }),
        _: 1
      }, _parent));
      if (hasGalleryImages.value) {
        _push(ssrRenderComponent(_component_NuxtLink, {
          to: "/galerie",
          onClick: ($event) => currentSubmenu.value = null,
          class: "px-4 py-2 text-gray-300 hover:text-white font-medium transition-all rounded-lg hover:bg-primary-700/50",
          "active-class": "text-white bg-primary-600"
        }, {
          default: withCtx((_, _push2, _parent2, _scopeId) => {
            if (_push2) {
              _push2(` Galerie `);
            } else {
              return [
                createTextVNode(" Galerie ")
              ];
            }
          }),
          _: 1
        }, _parent));
      } else {
        _push(`<!---->`);
      }
      if (isLoggedIn.value) {
        _push(`<button class="${ssrRenderClass([unref(route).path.startsWith("/mitgliederbereich") || unref(route).path.startsWith("/cms") || currentSubmenu.value === "intern" ? "text-white bg-primary-600" : "", "px-4 py-2 text-gray-300 hover:text-white font-medium transition-all rounded-lg hover:bg-primary-700/50"])}"> Intern </button>`);
      } else {
        _push(`<!---->`);
      }
      _push(ssrRenderComponent(_component_NuxtLink, {
        to: "/kontakt",
        onClick: ($event) => currentSubmenu.value = null,
        class: "px-4 py-2 bg-primary-600 hover:bg-primary-700 text-white font-semibold transition-all rounded-lg shadow-lg"
      }, {
        default: withCtx((_, _push2, _parent2, _scopeId) => {
          if (_push2) {
            _push2(` Kontakt `);
          } else {
            return [
              createTextVNode(" Kontakt ")
            ];
          }
        }),
        _: 1
      }, _parent));
      _push(`</div><div class="hidden lg:flex items-center h-6 border-t border-primary-700/20">`);
      if (currentSubmenu.value) {
        _push(`<div class="flex items-center space-x-1">`);
        if (currentSubmenu.value === "verein") {
          _push(`<!--[-->`);
          _push(ssrRenderComponent(_component_NuxtLink, {
            to: "/verein/ueber-uns",
            class: "px-2.5 py-1 text-xs text-gray-300 hover:text-white hover:bg-primary-700/50 rounded transition-all",
            "active-class": "text-white bg-primary-600"
          }, {
            default: withCtx((_, _push2, _parent2, _scopeId) => {
              if (_push2) {
                _push2(` Über uns `);
              } else {
                return [
                  createTextVNode(" Über uns ")
                ];
              }
            }),
            _: 1
          }, _parent));
          _push(ssrRenderComponent(_component_NuxtLink, {
            to: "/vorstand",
            class: "px-2.5 py-1 text-xs text-gray-300 hover:text-white hover:bg-primary-700/50 rounded transition-all",
            "active-class": "text-white bg-primary-600"
          }, {
            default: withCtx((_, _push2, _parent2, _scopeId) => {
              if (_push2) {
                _push2(` Vorstand `);
              } else {
                return [
                  createTextVNode(" Vorstand ")
                ];
              }
            }),
            _: 1
          }, _parent));
          _push(ssrRenderComponent(_component_NuxtLink, {
            to: "/verein/geschichte",
            class: "px-2.5 py-1 text-xs text-gray-300 hover:text-white hover:bg-primary-700/50 rounded transition-all",
            "active-class": "text-white bg-primary-600"
          }, {
            default: withCtx((_, _push2, _parent2, _scopeId) => {
              if (_push2) {
                _push2(` Geschichte `);
              } else {
                return [
                  createTextVNode(" Geschichte ")
                ];
              }
            }),
            _: 1
          }, _parent));
          _push(ssrRenderComponent(_component_NuxtLink, {
            to: "/verein/satzung",
            class: "px-2.5 py-1 text-xs text-gray-300 hover:text-white hover:bg-primary-700/50 rounded transition-all",
            "active-class": "text-white bg-primary-600"
          }, {
            default: withCtx((_, _push2, _parent2, _scopeId) => {
              if (_push2) {
                _push2(` Satzung `);
              } else {
                return [
                  createTextVNode(" Satzung ")
                ];
              }
            }),
            _: 1
          }, _parent));
          _push(ssrRenderComponent(_component_NuxtLink, {
            to: "/vereinsmeisterschaften",
            class: "px-2.5 py-1 text-xs text-gray-300 hover:text-white hover:bg-primary-700/50 rounded transition-all",
            "active-class": "text-white bg-primary-600"
          }, {
            default: withCtx((_, _push2, _parent2, _scopeId) => {
              if (_push2) {
                _push2(` Vereinsmeisterschaften `);
              } else {
                return [
                  createTextVNode(" Vereinsmeisterschaften ")
                ];
              }
            }),
            _: 1
          }, _parent));
          _push(`<!--]-->`);
        } else {
          _push(`<!---->`);
        }
        if (currentSubmenu.value === "mannschaften") {
          _push(`<!--[-->`);
          _push(ssrRenderComponent(_component_NuxtLink, {
            to: "/mannschaften",
            class: "px-2.5 py-1 text-xs font-semibold text-white hover:bg-primary-700/50 rounded transition-all",
            "active-class": "bg-primary-600"
          }, {
            default: withCtx((_, _push2, _parent2, _scopeId) => {
              if (_push2) {
                _push2(` Übersicht `);
              } else {
                return [
                  createTextVNode(" Übersicht ")
                ];
              }
            }),
            _: 1
          }, _parent));
          _push(`<div class="h-3 w-px bg-primary-700"></div><!--[-->`);
          ssrRenderList(mannschaften.value, (mannschaft) => {
            _push(ssrRenderComponent(_component_NuxtLink, {
              to: `/mannschaften/${mannschaft.slug}`,
              class: "px-2.5 py-1 text-xs text-gray-300 hover:text-white hover:bg-primary-700/50 rounded transition-all",
              "active-class": "text-white bg-primary-600"
            }, {
              default: withCtx((_, _push2, _parent2, _scopeId) => {
                if (_push2) {
                  _push2(`${ssrInterpolate(mannschaft.mannschaft)}`);
                } else {
                  return [
                    createTextVNode(toDisplayString(mannschaft.mannschaft), 1)
                  ];
                }
              }),
              _: 2
            }, _parent));
          });
          _push(`<!--]--><div class="h-3 w-px bg-primary-700"></div>`);
          _push(ssrRenderComponent(_component_NuxtLink, {
            to: "/mannschaften/spielplaene",
            class: "px-2.5 py-1 text-xs text-gray-300 hover:text-white hover:bg-primary-700/50 rounded transition-all",
            "active-class": "text-white bg-primary-600"
          }, {
            default: withCtx((_, _push2, _parent2, _scopeId) => {
              if (_push2) {
                _push2(` Spielpläne `);
              } else {
                return [
                  createTextVNode(" Spielpläne ")
                ];
              }
            }),
            _: 1
          }, _parent));
          _push(ssrRenderComponent(_component_NuxtLink, {
            to: "/spielsysteme",
            class: "px-2.5 py-1 text-xs text-gray-300 hover:text-white hover:bg-primary-700/50 rounded transition-all",
            "active-class": "text-white bg-primary-600"
          }, {
            default: withCtx((_, _push2, _parent2, _scopeId) => {
              if (_push2) {
                _push2(` Spielsysteme `);
              } else {
                return [
                  createTextVNode(" Spielsysteme ")
                ];
              }
            }),
            _: 1
          }, _parent));
          _push(`<!--]-->`);
        } else {
          _push(`<!---->`);
        }
        if (currentSubmenu.value === "training") {
          _push(`<!--[-->`);
          _push(ssrRenderComponent(_component_NuxtLink, {
            to: "/training",
            class: "px-2.5 py-1 text-xs text-gray-300 hover:text-white hover:bg-primary-700/50 rounded transition-all",
            "active-class": "text-white bg-primary-600"
          }, {
            default: withCtx((_, _push2, _parent2, _scopeId) => {
              if (_push2) {
                _push2(` Trainingszeiten `);
              } else {
                return [
                  createTextVNode(" Trainingszeiten ")
                ];
              }
            }),
            _: 1
          }, _parent));
          _push(ssrRenderComponent(_component_NuxtLink, {
            to: "/training/trainer",
            class: "px-2.5 py-1 text-xs text-gray-300 hover:text-white hover:bg-primary-700/50 rounded transition-all",
            "active-class": "text-white bg-primary-600"
          }, {
            default: withCtx((_, _push2, _parent2, _scopeId) => {
              if (_push2) {
                _push2(` Trainer `);
              } else {
                return [
                  createTextVNode(" Trainer ")
                ];
              }
            }),
            _: 1
          }, _parent));
          _push(ssrRenderComponent(_component_NuxtLink, {
            to: "/training/anfaenger",
            class: "px-2.5 py-1 text-xs text-gray-300 hover:text-white hover:bg-primary-700/50 rounded transition-all",
            "active-class": "text-white bg-primary-600"
          }, {
            default: withCtx((_, _push2, _parent2, _scopeId) => {
              if (_push2) {
                _push2(` Anfänger `);
              } else {
                return [
                  createTextVNode(" Anfänger ")
                ];
              }
            }),
            _: 1
          }, _parent));
          _push(ssrRenderComponent(_component_NuxtLink, {
            to: "/tt-regeln",
            class: "px-2.5 py-1 text-xs text-gray-300 hover:text-white hover:bg-primary-700/50 rounded transition-all",
            "active-class": "text-white bg-primary-600"
          }, {
            default: withCtx((_, _push2, _parent2, _scopeId) => {
              if (_push2) {
                _push2(` TT-Regeln `);
              } else {
                return [
                  createTextVNode(" TT-Regeln ")
                ];
              }
            }),
            _: 1
          }, _parent));
          _push(`<!--]-->`);
        } else {
          _push(`<!---->`);
        }
        if (currentSubmenu.value === "intern") {
          _push(`<!--[-->`);
          _push(ssrRenderComponent(_component_NuxtLink, {
            to: "/mitgliederbereich",
            class: "px-2.5 py-1 text-xs font-semibold text-white hover:bg-primary-700/50 rounded transition-all",
            "active-class": "bg-primary-600"
          }, {
            default: withCtx((_, _push2, _parent2, _scopeId) => {
              if (_push2) {
                _push2(` Übersicht `);
              } else {
                return [
                  createTextVNode(" Übersicht ")
                ];
              }
            }),
            _: 1
          }, _parent));
          _push(`<div class="h-3 w-px bg-primary-700"></div>`);
          _push(ssrRenderComponent(_component_NuxtLink, {
            to: "/mitgliederbereich/mitglieder",
            class: "px-2.5 py-1 text-xs text-gray-300 hover:text-white hover:bg-primary-700/50 rounded transition-all",
            "active-class": "text-white bg-primary-600"
          }, {
            default: withCtx((_, _push2, _parent2, _scopeId) => {
              if (_push2) {
                _push2(` Mitgliederliste `);
              } else {
                return [
                  createTextVNode(" Mitgliederliste ")
                ];
              }
            }),
            _: 1
          }, _parent));
          _push(ssrRenderComponent(_component_NuxtLink, {
            to: "/mitgliederbereich/news",
            class: "px-2.5 py-1 text-xs text-gray-300 hover:text-white hover:bg-primary-700/50 rounded transition-all",
            "active-class": "text-white bg-primary-600"
          }, {
            default: withCtx((_, _push2, _parent2, _scopeId) => {
              if (_push2) {
                _push2(` News `);
              } else {
                return [
                  createTextVNode(" News ")
                ];
              }
            }),
            _: 1
          }, _parent));
          _push(ssrRenderComponent(_component_NuxtLink, {
            to: "/mitgliederbereich/profil",
            class: "px-2.5 py-1 text-xs text-gray-300 hover:text-white hover:bg-primary-700/50 rounded transition-all",
            "active-class": "text-white bg-primary-600"
          }, {
            default: withCtx((_, _push2, _parent2, _scopeId) => {
              if (_push2) {
                _push2(` Mein Profil `);
              } else {
                return [
                  createTextVNode(" Mein Profil ")
                ];
              }
            }),
            _: 1
          }, _parent));
          _push(`<div class="h-3 w-px bg-primary-700"></div>`);
          _push(ssrRenderComponent(_component_NuxtLink, {
            to: "/mitgliederbereich/api",
            class: "px-2.5 py-1 text-xs text-gray-300 hover:text-white hover:bg-primary-700/50 rounded transition-all",
            "active-class": "text-white bg-primary-600"
          }, {
            default: withCtx((_, _push2, _parent2, _scopeId) => {
              if (_push2) {
                _push2(` API-Dokumentation `);
              } else {
                return [
                  createTextVNode(" API-Dokumentation ")
                ];
              }
            }),
            _: 1
          }, _parent));
          if (isAdmin.value) {
            _push(`<!--[--><div class="h-3 w-px bg-primary-700"></div><div class="relative inline-block"><button class="${ssrRenderClass([unref(route).path.startsWith("/cms") ? "text-white bg-primary-600" : "", "px-2.5 py-1 text-xs text-yellow-300 hover:text-white hover:bg-primary-700/50 rounded transition-all flex items-center"])}"> CMS `);
            _push(ssrRenderComponent(unref(ChevronDown), {
              size: 12,
              class: ["ml-1", ["transition-transform", showCmsDropdown.value ? "rotate-180" : ""]]
            }, null, _parent));
            _push(`</button>`);
            if (showCmsDropdown.value) {
              _push(`<div class="absolute left-0 top-full mt-1 w-48 bg-gray-800 border border-gray-700 rounded-lg shadow-xl overflow-hidden z-50">`);
              _push(ssrRenderComponent(_component_NuxtLink, {
                to: "/cms",
                onClick: ($event) => showCmsDropdown.value = false,
                class: "block px-4 py-2 text-sm text-gray-300 hover:bg-primary-600 hover:text-white transition-colors"
              }, {
                default: withCtx((_, _push2, _parent2, _scopeId) => {
                  if (_push2) {
                    _push2(` Übersicht `);
                  } else {
                    return [
                      createTextVNode(" Übersicht ")
                    ];
                  }
                }),
                _: 1
              }, _parent));
              _push(`<div class="border-t border-gray-700 my-1"></div>`);
              _push(ssrRenderComponent(_component_NuxtLink, {
                to: "/cms/ueber-uns",
                onClick: ($event) => showCmsDropdown.value = false,
                class: "block px-4 py-2 text-sm text-gray-300 hover:bg-primary-600 hover:text-white transition-colors"
              }, {
                default: withCtx((_, _push2, _parent2, _scopeId) => {
                  if (_push2) {
                    _push2(` Über uns `);
                  } else {
                    return [
                      createTextVNode(" Über uns ")
                    ];
                  }
                }),
                _: 1
              }, _parent));
              _push(ssrRenderComponent(_component_NuxtLink, {
                to: "/cms/geschichte",
                onClick: ($event) => showCmsDropdown.value = false,
                class: "block px-4 py-2 text-sm text-gray-300 hover:bg-primary-600 hover:text-white transition-colors"
              }, {
                default: withCtx((_, _push2, _parent2, _scopeId) => {
                  if (_push2) {
                    _push2(` Geschichte `);
                  } else {
                    return [
                      createTextVNode(" Geschichte ")
                    ];
                  }
                }),
                _: 1
              }, _parent));
              _push(ssrRenderComponent(_component_NuxtLink, {
                to: "/cms/tt-regeln",
                onClick: ($event) => showCmsDropdown.value = false,
                class: "block px-4 py-2 text-sm text-gray-300 hover:bg-primary-600 hover:text-white transition-colors"
              }, {
                default: withCtx((_, _push2, _parent2, _scopeId) => {
                  if (_push2) {
                    _push2(` TT-Regeln `);
                  } else {
                    return [
                      createTextVNode(" TT-Regeln ")
                    ];
                  }
                }),
                _: 1
              }, _parent));
              _push(ssrRenderComponent(_component_NuxtLink, {
                to: "/cms/satzung",
                onClick: ($event) => showCmsDropdown.value = false,
                class: "block px-4 py-2 text-sm text-gray-300 hover:bg-primary-600 hover:text-white transition-colors"
              }, {
                default: withCtx((_, _push2, _parent2, _scopeId) => {
                  if (_push2) {
                    _push2(` Satzung `);
                  } else {
                    return [
                      createTextVNode(" Satzung ")
                    ];
                  }
                }),
                _: 1
              }, _parent));
              _push(ssrRenderComponent(_component_NuxtLink, {
                to: "/cms/vereinsmeisterschaften",
                onClick: ($event) => showCmsDropdown.value = false,
                class: "block px-4 py-2 text-sm text-gray-300 hover:bg-primary-600 hover:text-white transition-colors"
              }, {
                default: withCtx((_, _push2, _parent2, _scopeId) => {
                  if (_push2) {
                    _push2(` Vereinsmeisterschaften `);
                  } else {
                    return [
                      createTextVNode(" Vereinsmeisterschaften ")
                    ];
                  }
                }),
                _: 1
              }, _parent));
              _push(`<div class="border-t border-gray-700 my-1"></div>`);
              _push(ssrRenderComponent(_component_NuxtLink, {
                to: "/mitgliederbereich/news",
                onClick: ($event) => showCmsDropdown.value = false,
                class: "block px-4 py-2 text-sm text-gray-300 hover:bg-primary-600 hover:text-white transition-colors"
              }, {
                default: withCtx((_, _push2, _parent2, _scopeId) => {
                  if (_push2) {
                    _push2(` News `);
                  } else {
                    return [
                      createTextVNode(" News ")
                    ];
                  }
                }),
                _: 1
              }, _parent));
              _push(ssrRenderComponent(_component_NuxtLink, {
                to: "/cms/termine",
                onClick: ($event) => showCmsDropdown.value = false,
                class: "block px-4 py-2 text-sm text-gray-300 hover:bg-primary-600 hover:text-white transition-colors"
              }, {
                default: withCtx((_, _push2, _parent2, _scopeId) => {
                  if (_push2) {
                    _push2(` Termine `);
                  } else {
                    return [
                      createTextVNode(" Termine ")
                    ];
                  }
                }),
                _: 1
              }, _parent));
              _push(ssrRenderComponent(_component_NuxtLink, {
                to: "/cms/spielplaene",
                onClick: ($event) => showCmsDropdown.value = false,
                class: "block px-4 py-2 text-sm text-gray-300 hover:bg-primary-600 hover:text-white transition-colors"
              }, {
                default: withCtx((_, _push2, _parent2, _scopeId) => {
                  if (_push2) {
                    _push2(` Spielpläne `);
                  } else {
                    return [
                      createTextVNode(" Spielpläne ")
                    ];
                  }
                }),
                _: 1
              }, _parent));
              _push(ssrRenderComponent(_component_NuxtLink, {
                to: "/mitgliederbereich/mitglieder",
                onClick: ($event) => showCmsDropdown.value = false,
                class: "block px-4 py-2 text-sm text-gray-300 hover:bg-primary-600 hover:text-white transition-colors"
              }, {
                default: withCtx((_, _push2, _parent2, _scopeId) => {
                  if (_push2) {
                    _push2(` Mitglieder `);
                  } else {
                    return [
                      createTextVNode(" Mitglieder ")
                    ];
                  }
                }),
                _: 1
              }, _parent));
              _push(`<div class="border-t border-gray-700 my-1"></div>`);
              _push(ssrRenderComponent(_component_NuxtLink, {
                to: "/cms/einstellungen",
                onClick: ($event) => showCmsDropdown.value = false,
                class: "block px-4 py-2 text-sm text-gray-300 hover:bg-primary-600 hover:text-white transition-colors"
              }, {
                default: withCtx((_, _push2, _parent2, _scopeId) => {
                  if (_push2) {
                    _push2(` Einstellungen `);
                  } else {
                    return [
                      createTextVNode(" Einstellungen ")
                    ];
                  }
                }),
                _: 1
              }, _parent));
              _push(ssrRenderComponent(_component_NuxtLink, {
                to: "/cms/mitgliedschaftsantraege",
                onClick: ($event) => showCmsDropdown.value = false,
                class: "block px-4 py-2 text-sm text-gray-300 hover:bg-primary-600 hover:text-white transition-colors"
              }, {
                default: withCtx((_, _push2, _parent2, _scopeId) => {
                  if (_push2) {
                    _push2(` Mitgliedschaftsanträge `);
                  } else {
                    return [
                      createTextVNode(" Mitgliedschaftsanträge ")
                    ];
                  }
                }),
                _: 1
              }, _parent));
              _push(ssrRenderComponent(_component_NuxtLink, {
                to: "/cms/benutzer",
                onClick: ($event) => showCmsDropdown.value = false,
                class: "block px-4 py-2 text-sm text-gray-300 hover:bg-primary-600 hover:text-white transition-colors"
              }, {
                default: withCtx((_, _push2, _parent2, _scopeId) => {
                  if (_push2) {
                    _push2(` Benutzerverwaltung `);
                  } else {
                    return [
                      createTextVNode(" Benutzerverwaltung ")
                    ];
                  }
                }),
                _: 1
              }, _parent));
              _push(`</div>`);
            } else {
              _push(`<!---->`);
            }
            _push(`</div><!--]-->`);
          } else {
            _push(`<!---->`);
          }
          _push(`<!--]-->`);
        } else {
          _push(`<!---->`);
        }
        _push(`</div>`);
      } else {
        _push(`<!---->`);
      }
      _push(`</div><button class="lg:hidden p-2 rounded-lg hover:bg-primary-700/50 transition-colors" aria-label="Toggle menu">`);
      if (isMobileMenuOpen.value) {
        _push(ssrRenderComponent(unref(X), {
          size: 24,
          class: "text-white"
        }, null, _parent));
      } else {
        _push(ssrRenderComponent(unref(Menu), {
          size: 24,
          class: "text-white"
        }, null, _parent));
      }
      _push(`</button></div></div></div></div>`);
      if (isMobileMenuOpen.value) {
        _push(`<div class="lg:hidden bg-gray-800 border-t border-primary-700/30 max-h-[80vh] overflow-y-auto"><div class="px-4 py-4 space-y-2">`);
        _push(ssrRenderComponent(_component_NuxtLink, {
          to: "/",
          onClick: ($event) => isMobileMenuOpen.value = false,
          class: "block px-4 py-3 text-gray-300 hover:text-white hover:bg-primary-700/50 rounded-lg font-medium transition-colors"
        }, {
          default: withCtx((_, _push2, _parent2, _scopeId) => {
            if (_push2) {
              _push2(` Start `);
            } else {
              return [
                createTextVNode(" Start ")
              ];
            }
          }),
          _: 1
        }, _parent));
        _push(`<div><button class="w-full flex items-center justify-between px-4 py-3 text-gray-300 hover:text-white hover:bg-primary-700/50 rounded-lg font-medium transition-colors"> Verein `);
        _push(ssrRenderComponent(unref(ChevronDown), {
          size: 16,
          class: ["transition-transform", mobileSubmenu.value === "verein" ? "rotate-180" : ""]
        }, null, _parent));
        _push(`</button>`);
        if (mobileSubmenu.value === "verein") {
          _push(`<div class="pl-4 space-y-1 mt-1 bg-primary-900/30 rounded-lg p-2">`);
          _push(ssrRenderComponent(_component_NuxtLink, {
            to: "/verein/ueber-uns",
            onClick: ($event) => isMobileMenuOpen.value = false,
            class: "block px-4 py-2 text-sm text-gray-400 hover:text-white hover:bg-primary-700/50 rounded-lg transition-colors"
          }, {
            default: withCtx((_, _push2, _parent2, _scopeId) => {
              if (_push2) {
                _push2(` Über uns `);
              } else {
                return [
                  createTextVNode(" Über uns ")
                ];
              }
            }),
            _: 1
          }, _parent));
          _push(ssrRenderComponent(_component_NuxtLink, {
            to: "/vorstand",
            onClick: ($event) => isMobileMenuOpen.value = false,
            class: "block px-4 py-2 text-sm text-gray-400 hover:text-white hover:bg-primary-700/50 rounded-lg transition-colors"
          }, {
            default: withCtx((_, _push2, _parent2, _scopeId) => {
              if (_push2) {
                _push2(` Vorstand `);
              } else {
                return [
                  createTextVNode(" Vorstand ")
                ];
              }
            }),
            _: 1
          }, _parent));
          _push(ssrRenderComponent(_component_NuxtLink, {
            to: "/verein/geschichte",
            onClick: ($event) => isMobileMenuOpen.value = false,
            class: "block px-4 py-2 text-sm text-gray-400 hover:text-white hover:bg-primary-700/50 rounded-lg transition-colors"
          }, {
            default: withCtx((_, _push2, _parent2, _scopeId) => {
              if (_push2) {
                _push2(` Geschichte `);
              } else {
                return [
                  createTextVNode(" Geschichte ")
                ];
              }
            }),
            _: 1
          }, _parent));
          _push(ssrRenderComponent(_component_NuxtLink, {
            to: "/verein/satzung",
            onClick: ($event) => isMobileMenuOpen.value = false,
            class: "block px-4 py-2 text-sm text-gray-400 hover:text-white hover:bg-primary-700/50 rounded-lg transition-colors"
          }, {
            default: withCtx((_, _push2, _parent2, _scopeId) => {
              if (_push2) {
                _push2(` Satzung `);
              } else {
                return [
                  createTextVNode(" Satzung ")
                ];
              }
            }),
            _: 1
          }, _parent));
          _push(ssrRenderComponent(_component_NuxtLink, {
            to: "/vereinsmeisterschaften",
            onClick: ($event) => isMobileMenuOpen.value = false,
            class: "block px-4 py-2 text-sm text-gray-400 hover:text-white hover:bg-primary-700/50 rounded-lg transition-colors"
          }, {
            default: withCtx((_, _push2, _parent2, _scopeId) => {
              if (_push2) {
                _push2(` Vereinsmeisterschaften `);
              } else {
                return [
                  createTextVNode(" Vereinsmeisterschaften ")
                ];
              }
            }),
            _: 1
          }, _parent));
          _push(`</div>`);
        } else {
          _push(`<!---->`);
        }
        _push(`</div><div><button class="w-full flex items-center justify-between px-4 py-3 text-gray-300 hover:text-white hover:bg-primary-700/50 rounded-lg font-medium transition-colors"> Mannschaften `);
        _push(ssrRenderComponent(unref(ChevronDown), {
          size: 16,
          class: ["transition-transform", mobileSubmenu.value === "mannschaften" ? "rotate-180" : ""]
        }, null, _parent));
        _push(`</button>`);
        if (mobileSubmenu.value === "mannschaften") {
          _push(`<div class="pl-4 space-y-1 mt-1 bg-primary-900/30 rounded-lg p-2">`);
          _push(ssrRenderComponent(_component_NuxtLink, {
            to: "/mannschaften",
            onClick: ($event) => isMobileMenuOpen.value = false,
            class: "block px-4 py-2 text-sm font-semibold text-gray-300 hover:text-white hover:bg-primary-700/50 rounded-lg transition-colors"
          }, {
            default: withCtx((_, _push2, _parent2, _scopeId) => {
              if (_push2) {
                _push2(` Übersicht `);
              } else {
                return [
                  createTextVNode(" Übersicht ")
                ];
              }
            }),
            _: 1
          }, _parent));
          _push(`<!--[-->`);
          ssrRenderList(mannschaften.value, (mannschaft) => {
            _push(ssrRenderComponent(_component_NuxtLink, {
              to: `/mannschaften/${mannschaft.slug}`,
              onClick: ($event) => isMobileMenuOpen.value = false,
              class: "block px-4 py-2 text-sm text-gray-400 hover:text-white hover:bg-primary-700/50 rounded-lg transition-colors"
            }, {
              default: withCtx((_, _push2, _parent2, _scopeId) => {
                if (_push2) {
                  _push2(`${ssrInterpolate(mannschaft.mannschaft)}`);
                } else {
                  return [
                    createTextVNode(toDisplayString(mannschaft.mannschaft), 1)
                  ];
                }
              }),
              _: 2
            }, _parent));
          });
          _push(`<!--]--><div class="border-t border-primary-700/20 my-2"></div>`);
          _push(ssrRenderComponent(_component_NuxtLink, {
            to: "/mannschaften/spielplaene",
            onClick: ($event) => isMobileMenuOpen.value = false,
            class: "block px-4 py-2 text-sm text-gray-400 hover:text-white hover:bg-primary-700/50 rounded-lg transition-colors"
          }, {
            default: withCtx((_, _push2, _parent2, _scopeId) => {
              if (_push2) {
                _push2(` Spielpläne `);
              } else {
                return [
                  createTextVNode(" Spielpläne ")
                ];
              }
            }),
            _: 1
          }, _parent));
          _push(ssrRenderComponent(_component_NuxtLink, {
            to: "/spielsysteme",
            onClick: ($event) => isMobileMenuOpen.value = false,
            class: "block px-4 py-2 text-sm text-gray-400 hover:text-white hover:bg-primary-700/50 rounded-lg transition-colors"
          }, {
            default: withCtx((_, _push2, _parent2, _scopeId) => {
              if (_push2) {
                _push2(` Spielsysteme `);
              } else {
                return [
                  createTextVNode(" Spielsysteme ")
                ];
              }
            }),
            _: 1
          }, _parent));
          _push(`</div>`);
        } else {
          _push(`<!---->`);
        }
        _push(`</div><div><button class="w-full flex items-center justify-between px-4 py-3 text-gray-300 hover:text-white hover:bg-primary-700/50 rounded-lg font-medium transition-colors"> Training `);
        _push(ssrRenderComponent(unref(ChevronDown), {
          size: 16,
          class: ["transition-transform", mobileSubmenu.value === "training" ? "rotate-180" : ""]
        }, null, _parent));
        _push(`</button>`);
        if (mobileSubmenu.value === "training") {
          _push(`<div class="pl-4 space-y-1 mt-1 bg-primary-900/30 rounded-lg p-2">`);
          _push(ssrRenderComponent(_component_NuxtLink, {
            to: "/training",
            onClick: ($event) => isMobileMenuOpen.value = false,
            class: "block px-4 py-2 text-sm text-gray-400 hover:text-white hover:bg-primary-700/50 rounded-lg transition-colors"
          }, {
            default: withCtx((_, _push2, _parent2, _scopeId) => {
              if (_push2) {
                _push2(` Trainingszeiten `);
              } else {
                return [
                  createTextVNode(" Trainingszeiten ")
                ];
              }
            }),
            _: 1
          }, _parent));
          _push(ssrRenderComponent(_component_NuxtLink, {
            to: "/training/trainer",
            onClick: ($event) => isMobileMenuOpen.value = false,
            class: "block px-4 py-2 text-sm text-gray-400 hover:text-white hover:bg-primary-700/50 rounded-lg transition-colors"
          }, {
            default: withCtx((_, _push2, _parent2, _scopeId) => {
              if (_push2) {
                _push2(` Trainer `);
              } else {
                return [
                  createTextVNode(" Trainer ")
                ];
              }
            }),
            _: 1
          }, _parent));
          _push(ssrRenderComponent(_component_NuxtLink, {
            to: "/training/anfaenger",
            onClick: ($event) => isMobileMenuOpen.value = false,
            class: "block px-4 py-2 text-sm text-gray-400 hover:text-white hover:bg-primary-700/50 rounded-lg transition-colors"
          }, {
            default: withCtx((_, _push2, _parent2, _scopeId) => {
              if (_push2) {
                _push2(` Anfänger `);
              } else {
                return [
                  createTextVNode(" Anfänger ")
                ];
              }
            }),
            _: 1
          }, _parent));
          _push(ssrRenderComponent(_component_NuxtLink, {
            to: "/tt-regeln",
            onClick: ($event) => isMobileMenuOpen.value = false,
            class: "block px-4 py-2 text-sm text-gray-400 hover:text-white hover:bg-primary-700/50 rounded-lg transition-colors"
          }, {
            default: withCtx((_, _push2, _parent2, _scopeId) => {
              if (_push2) {
                _push2(` TT-Regeln `);
              } else {
                return [
                  createTextVNode(" TT-Regeln ")
                ];
              }
            }),
            _: 1
          }, _parent));
          _push(`</div>`);
        } else {
          _push(`<!---->`);
        }
        _push(`</div>`);
        _push(ssrRenderComponent(_component_NuxtLink, {
          to: "/mitgliedschaft",
          onClick: ($event) => isMobileMenuOpen.value = false,
          class: "block px-4 py-3 text-gray-300 hover:text-white hover:bg-primary-700/50 rounded-lg font-medium transition-colors"
        }, {
          default: withCtx((_, _push2, _parent2, _scopeId) => {
            if (_push2) {
              _push2(` Mitgliedschaft `);
            } else {
              return [
                createTextVNode(" Mitgliedschaft ")
              ];
            }
          }),
          _: 1
        }, _parent));
        _push(ssrRenderComponent(_component_NuxtLink, {
          to: "/termine",
          onClick: ($event) => isMobileMenuOpen.value = false,
          class: "block px-4 py-3 text-gray-300 hover:text-white hover:bg-primary-700/50 rounded-lg font-medium transition-colors"
        }, {
          default: withCtx((_, _push2, _parent2, _scopeId) => {
            if (_push2) {
              _push2(` Termine `);
            } else {
              return [
                createTextVNode(" Termine ")
              ];
            }
          }),
          _: 1
        }, _parent));
        if (hasGalleryImages.value) {
          _push(ssrRenderComponent(_component_NuxtLink, {
            to: "/galerie",
            onClick: ($event) => isMobileMenuOpen.value = false,
            class: "block px-4 py-3 text-gray-300 hover:text-white hover:bg-primary-700/50 rounded-lg font-medium transition-colors"
          }, {
            default: withCtx((_, _push2, _parent2, _scopeId) => {
              if (_push2) {
                _push2(` Galerie `);
              } else {
                return [
                  createTextVNode(" Galerie ")
                ];
              }
            }),
            _: 1
          }, _parent));
        } else {
          _push(`<!---->`);
        }
        if (isLoggedIn.value) {
          _push(`<div><button class="w-full flex items-center justify-between px-4 py-3 text-gray-300 hover:text-white hover:bg-primary-700/50 rounded-lg font-medium transition-colors"> Intern `);
          _push(ssrRenderComponent(unref(ChevronDown), {
            size: 16,
            class: ["transition-transform", mobileSubmenu.value === "intern" ? "rotate-180" : ""]
          }, null, _parent));
          _push(`</button>`);
          if (mobileSubmenu.value === "intern") {
            _push(`<div class="pl-4 space-y-1 mt-1 bg-primary-900/30 rounded-lg p-2">`);
            _push(ssrRenderComponent(_component_NuxtLink, {
              to: "/mitgliederbereich",
              onClick: ($event) => isMobileMenuOpen.value = false,
              class: "block px-4 py-2 text-sm font-semibold text-gray-300 hover:text-white hover:bg-primary-700/50 rounded-lg transition-colors"
            }, {
              default: withCtx((_, _push2, _parent2, _scopeId) => {
                if (_push2) {
                  _push2(` Übersicht `);
                } else {
                  return [
                    createTextVNode(" Übersicht ")
                  ];
                }
              }),
              _: 1
            }, _parent));
            _push(ssrRenderComponent(_component_NuxtLink, {
              to: "/mitgliederbereich/mitglieder",
              onClick: ($event) => isMobileMenuOpen.value = false,
              class: "block px-4 py-2 text-sm text-gray-400 hover:text-white hover:bg-primary-700/50 rounded-lg transition-colors"
            }, {
              default: withCtx((_, _push2, _parent2, _scopeId) => {
                if (_push2) {
                  _push2(` Mitgliederliste `);
                } else {
                  return [
                    createTextVNode(" Mitgliederliste ")
                  ];
                }
              }),
              _: 1
            }, _parent));
            _push(ssrRenderComponent(_component_NuxtLink, {
              to: "/mitgliederbereich/news",
              onClick: ($event) => isMobileMenuOpen.value = false,
              class: "block px-4 py-2 text-sm text-gray-400 hover:text-white hover:bg-primary-700/50 rounded-lg transition-colors"
            }, {
              default: withCtx((_, _push2, _parent2, _scopeId) => {
                if (_push2) {
                  _push2(` News `);
                } else {
                  return [
                    createTextVNode(" News ")
                  ];
                }
              }),
              _: 1
            }, _parent));
            _push(ssrRenderComponent(_component_NuxtLink, {
              to: "/mitgliederbereich/profil",
              onClick: ($event) => isMobileMenuOpen.value = false,
              class: "block px-4 py-2 text-sm text-gray-400 hover:text-white hover:bg-primary-700/50 rounded-lg transition-colors"
            }, {
              default: withCtx((_, _push2, _parent2, _scopeId) => {
                if (_push2) {
                  _push2(` Mein Profil `);
                } else {
                  return [
                    createTextVNode(" Mein Profil ")
                  ];
                }
              }),
              _: 1
            }, _parent));
            if (isAdmin.value) {
              _push(`<!--[--><div class="border-t border-primary-700/20 my-2"></div>`);
              _push(ssrRenderComponent(_component_NuxtLink, {
                to: "/cms",
                onClick: ($event) => isMobileMenuOpen.value = false,
                class: "block px-4 py-2 text-sm font-semibold text-yellow-300 hover:text-white hover:bg-primary-700/50 rounded-lg transition-colors"
              }, {
                default: withCtx((_, _push2, _parent2, _scopeId) => {
                  if (_push2) {
                    _push2(` CMS Übersicht `);
                  } else {
                    return [
                      createTextVNode(" CMS Übersicht ")
                    ];
                  }
                }),
                _: 1
              }, _parent));
              _push(ssrRenderComponent(_component_NuxtLink, {
                to: "/mitgliederbereich/news",
                onClick: ($event) => isMobileMenuOpen.value = false,
                class: "block px-4 py-2 text-sm text-yellow-300 hover:text-white hover:bg-primary-700/50 rounded-lg transition-colors"
              }, {
                default: withCtx((_, _push2, _parent2, _scopeId) => {
                  if (_push2) {
                    _push2(` News `);
                  } else {
                    return [
                      createTextVNode(" News ")
                    ];
                  }
                }),
                _: 1
              }, _parent));
              _push(ssrRenderComponent(_component_NuxtLink, {
                to: "/cms/termine",
                onClick: ($event) => isMobileMenuOpen.value = false,
                class: "block px-4 py-2 text-sm text-yellow-300 hover:text-white hover:bg-primary-700/50 rounded-lg transition-colors"
              }, {
                default: withCtx((_, _push2, _parent2, _scopeId) => {
                  if (_push2) {
                    _push2(` Termine `);
                  } else {
                    return [
                      createTextVNode(" Termine ")
                    ];
                  }
                }),
                _: 1
              }, _parent));
              _push(ssrRenderComponent(_component_NuxtLink, {
                to: "/cms/spielplaene",
                onClick: ($event) => isMobileMenuOpen.value = false,
                class: "block px-4 py-2 text-sm text-yellow-300 hover:text-white hover:bg-primary-700/50 rounded-lg transition-colors"
              }, {
                default: withCtx((_, _push2, _parent2, _scopeId) => {
                  if (_push2) {
                    _push2(` Spielpläne `);
                  } else {
                    return [
                      createTextVNode(" Spielpläne ")
                    ];
                  }
                }),
                _: 1
              }, _parent));
              _push(ssrRenderComponent(_component_NuxtLink, {
                to: "/mitgliederbereich/mitglieder",
                onClick: ($event) => isMobileMenuOpen.value = false,
                class: "block px-4 py-2 text-sm text-yellow-300 hover:text-white hover:bg-primary-700/50 rounded-lg transition-colors"
              }, {
                default: withCtx((_, _push2, _parent2, _scopeId) => {
                  if (_push2) {
                    _push2(` Mitglieder `);
                  } else {
                    return [
                      createTextVNode(" Mitglieder ")
                    ];
                  }
                }),
                _: 1
              }, _parent));
              _push(ssrRenderComponent(_component_NuxtLink, {
                to: "/cms/ueber-uns",
                onClick: ($event) => isMobileMenuOpen.value = false,
                class: "block px-4 py-2 text-sm text-yellow-300 hover:text-white hover:bg-primary-700/50 rounded-lg transition-colors"
              }, {
                default: withCtx((_, _push2, _parent2, _scopeId) => {
                  if (_push2) {
                    _push2(` Über uns `);
                  } else {
                    return [
                      createTextVNode(" Über uns ")
                    ];
                  }
                }),
                _: 1
              }, _parent));
              _push(ssrRenderComponent(_component_NuxtLink, {
                to: "/cms/geschichte",
                onClick: ($event) => isMobileMenuOpen.value = false,
                class: "block px-4 py-2 text-sm text-yellow-300 hover:text-white hover:bg-primary-700/50 rounded-lg transition-colors"
              }, {
                default: withCtx((_, _push2, _parent2, _scopeId) => {
                  if (_push2) {
                    _push2(` Geschichte `);
                  } else {
                    return [
                      createTextVNode(" Geschichte ")
                    ];
                  }
                }),
                _: 1
              }, _parent));
              _push(ssrRenderComponent(_component_NuxtLink, {
                to: "/cms/tt-regeln",
                onClick: ($event) => isMobileMenuOpen.value = false,
                class: "block px-4 py-2 text-sm text-yellow-300 hover:text-white hover:bg-primary-700/50 rounded-lg transition-colors"
              }, {
                default: withCtx((_, _push2, _parent2, _scopeId) => {
                  if (_push2) {
                    _push2(` TT-Regeln `);
                  } else {
                    return [
                      createTextVNode(" TT-Regeln ")
                    ];
                  }
                }),
                _: 1
              }, _parent));
              _push(ssrRenderComponent(_component_NuxtLink, {
                to: "/cms/satzung",
                onClick: ($event) => isMobileMenuOpen.value = false,
                class: "block px-4 py-2 text-sm text-yellow-300 hover:text-white hover:bg-primary-700/50 rounded-lg transition-colors"
              }, {
                default: withCtx((_, _push2, _parent2, _scopeId) => {
                  if (_push2) {
                    _push2(` Satzung `);
                  } else {
                    return [
                      createTextVNode(" Satzung ")
                    ];
                  }
                }),
                _: 1
              }, _parent));
              _push(ssrRenderComponent(_component_NuxtLink, {
                to: "/cms/vereinsmeisterschaften",
                onClick: ($event) => isMobileMenuOpen.value = false,
                class: "block px-4 py-2 text-sm text-yellow-300 hover:text-white hover:bg-primary-700/50 rounded-lg transition-colors"
              }, {
                default: withCtx((_, _push2, _parent2, _scopeId) => {
                  if (_push2) {
                    _push2(` Vereinsmeisterschaften `);
                  } else {
                    return [
                      createTextVNode(" Vereinsmeisterschaften ")
                    ];
                  }
                }),
                _: 1
              }, _parent));
              _push(ssrRenderComponent(_component_NuxtLink, {
                to: "/cms/einstellungen",
                onClick: ($event) => isMobileMenuOpen.value = false,
                class: "block px-4 py-2 text-sm text-yellow-300 hover:text-white hover:bg-primary-700/50 rounded-lg transition-colors"
              }, {
                default: withCtx((_, _push2, _parent2, _scopeId) => {
                  if (_push2) {
                    _push2(` Einstellungen `);
                  } else {
                    return [
                      createTextVNode(" Einstellungen ")
                    ];
                  }
                }),
                _: 1
              }, _parent));
              _push(ssrRenderComponent(_component_NuxtLink, {
                to: "/cms/mitgliedschaftsantraege",
                onClick: ($event) => isMobileMenuOpen.value = false,
                class: "block px-4 py-2 text-sm text-yellow-300 hover:text-white hover:bg-primary-700/50 rounded-lg transition-colors"
              }, {
                default: withCtx((_, _push2, _parent2, _scopeId) => {
                  if (_push2) {
                    _push2(` Mitgliedschaftsanträge `);
                  } else {
                    return [
                      createTextVNode(" Mitgliedschaftsanträge ")
                    ];
                  }
                }),
                _: 1
              }, _parent));
              _push(ssrRenderComponent(_component_NuxtLink, {
                to: "/cms/benutzer",
                onClick: ($event) => isMobileMenuOpen.value = false,
                class: "block px-4 py-2 text-sm text-yellow-300 hover:text-white hover:bg-primary-700/50 rounded-lg transition-colors"
              }, {
                default: withCtx((_, _push2, _parent2, _scopeId) => {
                  if (_push2) {
                    _push2(` Benutzerverwaltung `);
                  } else {
                    return [
                      createTextVNode(" Benutzerverwaltung ")
                    ];
                  }
                }),
                _: 1
              }, _parent));
              _push(`<!--]-->`);
            } else {
              _push(`<!---->`);
            }
            _push(`</div>`);
          } else {
            _push(`<!---->`);
          }
          _push(`</div>`);
        } else {
          _push(`<!---->`);
        }
        _push(ssrRenderComponent(_component_NuxtLink, {
          to: "/kontakt",
          onClick: ($event) => isMobileMenuOpen.value = false,
          class: "block px-4 py-3 bg-primary-600 hover:bg-primary-700 text-white rounded-lg font-semibold transition-colors"
        }, {
          default: withCtx((_, _push2, _parent2, _scopeId) => {
            if (_push2) {
              _push2(` Kontakt `);
            } else {
              return [
                createTextVNode(" Kontakt ")
              ];
            }
          }),
          _: 1
        }, _parent));
        _push(`</div></div>`);
      } else {
        _push(`<!---->`);
      }
      _push(`</nav>`);
    };
  }
};
const _sfc_setup$5 = _sfc_main$5.setup;
_sfc_main$5.setup = (props, ctx) => {
  const ssrContext = useSSRContext();
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/Navigation.vue");
  return _sfc_setup$5 ? _sfc_setup$5(props, ctx) : void 0;
};
const Navigation = Object.assign(_sfc_main$5, { __name: "Navigation" });
const _sfc_main$4 = {
  __name: "Footer",
  __ssrInlineRender: true,
  setup(__props) {
    useRouter$1();
    const authStore = useAuthStore();
    const currentYear = (/* @__PURE__ */ new Date()).getFullYear();
    const isMemberMenuOpen = ref(false);
    const isLoggedIn = computed(() => authStore.isLoggedIn);
    computed(() => authStore.isAdmin);
    return (_ctx, _push, _parent, _attrs) => {
      const _component_NuxtLink = __nuxt_component_0$1;
      _push(`<footer${ssrRenderAttrs(mergeProps({ class: "fixed bottom-0 left-0 right-0 z-40 bg-gray-900 border-t border-gray-800 shadow-2xl" }, _attrs))}><div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-3"><div class="flex flex-col sm:flex-row justify-between items-center space-y-2 sm:space-y-0"><p class="text-sm text-gray-400"> © ${ssrInterpolate(unref(currentYear))} Harheimer TC 1954 e.V. </p><div class="flex items-center space-x-6 text-sm relative">`);
      _push(ssrRenderComponent(_component_NuxtLink, {
        to: "/impressum",
        class: "text-gray-400 hover:text-primary-400 transition-colors"
      }, {
        default: withCtx((_, _push2, _parent2, _scopeId) => {
          if (_push2) {
            _push2(` Impressum `);
          } else {
            return [
              createTextVNode(" Impressum ")
            ];
          }
        }),
        _: 1
      }, _parent));
      _push(ssrRenderComponent(_component_NuxtLink, {
        to: "/kontakt",
        class: "text-gray-400 hover:text-primary-400 transition-colors"
      }, {
        default: withCtx((_, _push2, _parent2, _scopeId) => {
          if (_push2) {
            _push2(` Kontakt `);
          } else {
            return [
              createTextVNode(" Kontakt ")
            ];
          }
        }),
        _: 1
      }, _parent));
      if (isLoggedIn.value) {
        _push(`<button class="flex items-center space-x-1 text-gray-400 hover:text-primary-400 transition-colors">`);
        _push(ssrRenderComponent(unref(User), { size: 16 }, null, _parent));
        _push(`<span>Abmelden</span></button>`);
      } else {
        _push(`<div class="relative"><button class="flex items-center space-x-1 text-gray-400 hover:text-primary-400 transition-colors">`);
        _push(ssrRenderComponent(unref(User), { size: 16 }, null, _parent));
        _push(`<span>Mitglieder</span>`);
        _push(ssrRenderComponent(unref(ChevronUp), {
          size: 14,
          class: ["transition-transform", isMemberMenuOpen.value ? "rotate-0" : "rotate-180"]
        }, null, _parent));
        _push(`</button>`);
        if (isMemberMenuOpen.value) {
          _push(`<div class="absolute bottom-full right-0 mb-2 w-48 bg-gray-800 border border-gray-700 rounded-lg shadow-xl overflow-hidden">`);
          _push(ssrRenderComponent(_component_NuxtLink, {
            to: "/login",
            onClick: ($event) => isMemberMenuOpen.value = false,
            class: "block px-4 py-2 text-sm text-gray-300 hover:bg-primary-600 hover:text-white transition-colors"
          }, {
            default: withCtx((_, _push2, _parent2, _scopeId) => {
              if (_push2) {
                _push2(` Anmelden `);
              } else {
                return [
                  createTextVNode(" Anmelden ")
                ];
              }
            }),
            _: 1
          }, _parent));
          _push(ssrRenderComponent(_component_NuxtLink, {
            to: "/registrieren",
            onClick: ($event) => isMemberMenuOpen.value = false,
            class: "block px-4 py-2 text-sm text-gray-300 hover:bg-primary-600 hover:text-white transition-colors"
          }, {
            default: withCtx((_, _push2, _parent2, _scopeId) => {
              if (_push2) {
                _push2(` Registrieren `);
              } else {
                return [
                  createTextVNode(" Registrieren ")
                ];
              }
            }),
            _: 1
          }, _parent));
          _push(ssrRenderComponent(_component_NuxtLink, {
            to: "/passwort-vergessen",
            onClick: ($event) => isMemberMenuOpen.value = false,
            class: "block px-4 py-2 text-sm text-gray-300 hover:bg-primary-600 hover:text-white transition-colors"
          }, {
            default: withCtx((_, _push2, _parent2, _scopeId) => {
              if (_push2) {
                _push2(` Passwort vergessen `);
              } else {
                return [
                  createTextVNode(" Passwort vergessen ")
                ];
              }
            }),
            _: 1
          }, _parent));
          _push(`</div>`);
        } else {
          _push(`<!---->`);
        }
        _push(`</div>`);
      }
      _push(`</div></div></div></footer>`);
    };
  }
};
const _sfc_setup$4 = _sfc_main$4.setup;
_sfc_main$4.setup = (props, ctx) => {
  const ssrContext = useSSRContext();
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/Footer.vue");
  return _sfc_setup$4 ? _sfc_setup$4(props, ctx) : void 0;
};
const Footer = Object.assign(_sfc_main$4, { __name: "Footer" });
const _sfc_main$3 = {
  __name: "ModalDialog",
  __ssrInlineRender: true,
  setup(__props) {
    const showSuccess = ref(false);
    const showError2 = ref(false);
    const showConfirm = ref(false);
    const successTitle = ref("");
    const successMessage = ref("");
    const errorTitle = ref("");
    const errorMessage = ref("");
    const confirmTitle = ref("");
    const confirmMessage = ref("");
    const confirmAction = ref(null);
    const showSuccessModal = (title, message) => {
      successTitle.value = title;
      successMessage.value = message;
      showSuccess.value = true;
    };
    const showErrorModal = (title, message) => {
      errorTitle.value = title;
      errorMessage.value = message;
      showError2.value = true;
    };
    const showConfirmModal = (title, message, action) => {
      confirmTitle.value = title;
      confirmMessage.value = message;
      confirmAction.value = action;
      showConfirm.value = true;
    };
    provide("showSuccessModal", showSuccessModal);
    provide("showErrorModal", showErrorModal);
    provide("showConfirmModal", showConfirmModal);
    return (_ctx, _push, _parent, _attrs) => {
      _push(`<!--[-->`);
      if (showSuccess.value) {
        _push(`<div class="fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50 p-4"><div class="bg-white rounded-lg max-w-md w-full p-6"><div class="flex items-center mb-4"><div class="flex-shrink-0 w-10 h-10 mx-auto bg-green-100 rounded-full flex items-center justify-center"><svg class="w-6 h-6 text-green-600" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path></svg></div></div><div class="text-center"><h3 class="text-lg font-medium text-gray-900 mb-2">${ssrInterpolate(successTitle.value)}</h3><p class="text-sm text-gray-600 mb-6">${ssrInterpolate(successMessage.value)}</p><div class="flex justify-center"><button class="px-6 py-2 bg-primary-600 hover:bg-primary-700 text-white rounded-lg transition-colors"> OK </button></div></div></div></div>`);
      } else {
        _push(`<!---->`);
      }
      if (showError2.value) {
        _push(`<div class="fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50 p-4"><div class="bg-white rounded-lg max-w-md w-full p-6"><div class="flex items-center mb-4"><div class="flex-shrink-0 w-10 h-10 mx-auto bg-red-100 rounded-full flex items-center justify-center"><svg class="w-6 h-6 text-red-600" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path></svg></div></div><div class="text-center"><h3 class="text-lg font-medium text-gray-900 mb-2">${ssrInterpolate(errorTitle.value)}</h3><p class="text-sm text-gray-600 mb-6">${ssrInterpolate(errorMessage.value)}</p><div class="flex justify-center"><button class="px-6 py-2 bg-red-600 hover:bg-red-700 text-white rounded-lg transition-colors"> OK </button></div></div></div></div>`);
      } else {
        _push(`<!---->`);
      }
      if (showConfirm.value) {
        _push(`<div class="fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50 p-4"><div class="bg-white rounded-lg max-w-md w-full p-6"><div class="flex items-center mb-4"><div class="flex-shrink-0 w-10 h-10 mx-auto bg-yellow-100 rounded-full flex items-center justify-center"><svg class="w-6 h-6 text-yellow-600" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.964-.833-2.732 0L3.732 16.5c-.77.833.192 2.5 1.732 2.5z"></path></svg></div></div><div class="text-center"><h3 class="text-lg font-medium text-gray-900 mb-2">${ssrInterpolate(confirmTitle.value)}</h3><p class="text-sm text-gray-600 mb-6">${ssrInterpolate(confirmMessage.value)}</p><div class="flex space-x-3 justify-center"><button class="px-4 py-2 text-gray-700 bg-gray-100 hover:bg-gray-200 rounded-lg transition-colors"> Abbrechen </button><button class="px-4 py-2 bg-red-600 hover:bg-red-700 text-white rounded-lg transition-colors"> Bestätigen </button></div></div></div></div>`);
      } else {
        _push(`<!---->`);
      }
      _push(`<!--]-->`);
    };
  }
};
const _sfc_setup$3 = _sfc_main$3.setup;
_sfc_main$3.setup = (props, ctx) => {
  const ssrContext = useSSRContext();
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ModalDialog.vue");
  return _sfc_setup$3 ? _sfc_setup$3(props, ctx) : void 0;
};
const ModalDialog = Object.assign(_sfc_main$3, { __name: "ModalDialog" });
const _sfc_main$2 = {
  __name: "app",
  __ssrInlineRender: true,
  setup(__props) {
    return (_ctx, _push, _parent, _attrs) => {
      const _component_NuxtPage = __nuxt_component_0;
      _push(`<div${ssrRenderAttrs(mergeProps({ class: "h-screen flex flex-col overflow-hidden" }, _attrs))}>`);
      _push(ssrRenderComponent(Navigation, null, null, _parent));
      _push(`<main class="flex-1 overflow-y-auto pt-20">`);
      _push(ssrRenderComponent(_component_NuxtPage, null, null, _parent));
      _push(`</main>`);
      _push(ssrRenderComponent(Footer, null, null, _parent));
      _push(ssrRenderComponent(ModalDialog, null, null, _parent));
      _push(`</div>`);
    };
  }
};
const _sfc_setup$2 = _sfc_main$2.setup;
_sfc_main$2.setup = (props, ctx) => {
  const ssrContext = useSSRContext();
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("app.vue");
  return _sfc_setup$2 ? _sfc_setup$2(props, ctx) : void 0;
};
const _sfc_main$1 = {
  __name: "nuxt-error-page",
  __ssrInlineRender: true,
  props: {
    error: Object
  },
  setup(__props) {
    const props = __props;
    const _error = props.error;
    _error.stack ? _error.stack.split("\n").splice(1).map((line) => {
      const text = line.replace("webpack:/", "").replace(".vue", ".js").trim();
      return {
        text,
        internal: line.includes("node_modules") && !line.includes(".cache") || line.includes("internal") || line.includes("new Promise")
      };
    }).map((i) => `<span class="stack${i.internal ? " internal" : ""}">${i.text}</span>`).join("\n") : "";
    const statusCode = Number(_error.statusCode || 500);
    const is404 = statusCode === 404;
    const statusMessage = _error.statusMessage ?? (is404 ? "Page Not Found" : "Internal Server Error");
    const description = _error.message || _error.toString();
    const stack = void 0;
    const _Error404 = defineAsyncComponent(() => import('./error-404-X-XMZOo2.mjs'));
    const _Error = defineAsyncComponent(() => import('./error-500-DFxH_2kA.mjs'));
    const ErrorTemplate = is404 ? _Error404 : _Error;
    return (_ctx, _push, _parent, _attrs) => {
      _push(ssrRenderComponent(unref(ErrorTemplate), mergeProps({ statusCode: unref(statusCode), statusMessage: unref(statusMessage), description: unref(description), stack: unref(stack) }, _attrs), null, _parent));
    };
  }
};
const _sfc_setup$1 = _sfc_main$1.setup;
_sfc_main$1.setup = (props, ctx) => {
  const ssrContext = useSSRContext();
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("node_modules/nuxt/dist/app/components/nuxt-error-page.vue");
  return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0;
};
const _sfc_main = {
  __name: "nuxt-root",
  __ssrInlineRender: true,
  setup(__props) {
    const IslandRenderer = () => null;
    const nuxtApp = useNuxtApp();
    nuxtApp.deferHydration();
    nuxtApp.ssrContext.url;
    const SingleRenderer = false;
    provide(PageRouteSymbol, useRoute());
    nuxtApp.hooks.callHookWith((hooks) => hooks.map((hook) => hook()), "vue:setup");
    const error = /* @__PURE__ */ useError();
    const abortRender = error.value && !nuxtApp.ssrContext.error;
    onErrorCaptured((err, target, info) => {
      nuxtApp.hooks.callHook("vue:error", err, target, info).catch((hookError) => console.error("[nuxt] Error in `vue:error` hook", hookError));
      {
        const p = nuxtApp.runWithContext(() => showError(err));
        onServerPrefetch(() => p);
        return false;
      }
    });
    const islandContext = nuxtApp.ssrContext.islandContext;
    return (_ctx, _push, _parent, _attrs) => {
      ssrRenderSuspense(_push, {
        default: () => {
          if (unref(abortRender)) {
            _push(`<div></div>`);
          } else if (unref(error)) {
            _push(ssrRenderComponent(unref(_sfc_main$1), { error: unref(error) }, null, _parent));
          } else if (unref(islandContext)) {
            _push(ssrRenderComponent(unref(IslandRenderer), { context: unref(islandContext) }, null, _parent));
          } else if (unref(SingleRenderer)) {
            ssrRenderVNode(_push, createVNode(resolveDynamicComponent(unref(SingleRenderer)), null, null), _parent);
          } else {
            _push(ssrRenderComponent(unref(_sfc_main$2), null, null, _parent));
          }
        },
        _: 1
      });
    };
  }
};
const _sfc_setup = _sfc_main.setup;
_sfc_main.setup = (props, ctx) => {
  const ssrContext = useSSRContext();
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("node_modules/nuxt/dist/app/components/nuxt-root.vue");
  return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
};
let entry;
{
  entry = async function createNuxtAppServer(ssrContext) {
    const vueApp = createApp(_sfc_main);
    const nuxt = createNuxtApp({ vueApp, ssrContext });
    try {
      await applyPlugins(nuxt, plugins);
      await nuxt.hooks.callHook("app:created", vueApp);
    } catch (error) {
      await nuxt.hooks.callHook("app:error", error);
      nuxt.payload.error ||= createError(error);
    }
    if (ssrContext?._renderResponse) {
      throw new Error("skipping render");
    }
    return vueApp;
  };
}
const entry$1 = (ssrContext) => entry(ssrContext);

export { __nuxt_component_0$1 as _, useNuxtApp as a, useRoute as b, asyncDataDefaults as c, createError as d, entry$1 as default, defineNuxtRouteMiddleware as e, fetchDefaults as f, navigateTo as n, useAuthStore as u };
//# sourceMappingURL=server.mjs.map
