Add smart member list with manual+login merge and duplicate detection

This commit is contained in:
Torsten Schulz (local)
2025-10-21 14:35:21 +02:00
parent fa54e53820
commit b024bfe884
134 changed files with 15439 additions and 10 deletions

15
.output/nitro.json Normal file
View File

@@ -0,0 +1,15 @@
{
"date": "2025-10-21T12:32:03.239Z",
"preset": "node-server",
"framework": {
"name": "nuxt",
"version": "4.1.3"
},
"versions": {
"nitro": "2.12.7"
},
"commands": {
"preview": "node server/index.mjs"
},
"config": {}
}

View File

@@ -1 +1 @@
{"id":"d55b57df-1177-4966-90bc-a07b1837debb","timestamp":1761049822869}
{"id":"f1db3745-a031-477c-933f-6868f5829384","timestamp":1761049916604}

View File

@@ -1 +0,0 @@
{"id":"d55b57df-1177-4966-90bc-a07b1837debb","timestamp":1761049822869,"matcher":{"static":{},"wildcard":{},"dynamic":{}},"prerendered":[]}

View File

@@ -0,0 +1 @@
{"id":"f1db3745-a031-477c-933f-6868f5829384","timestamp":1761049916604,"matcher":{"static":{},"wildcard":{},"dynamic":{}},"prerendered":[]}

View File

@@ -0,0 +1,108 @@
import bcrypt from 'bcryptjs';
import jwt from 'jsonwebtoken';
import { promises } from 'fs';
import path from 'path';
const JWT_SECRET = process.env.JWT_SECRET || "harheimertc-secret-key-change-in-production";
const getDataPath = (filename) => {
const cwd = process.cwd();
if (cwd.endsWith(".output")) {
return path.join(cwd, "../server/data", filename);
}
return path.join(cwd, "server/data", filename);
};
const USERS_FILE = getDataPath("users.json");
const SESSIONS_FILE = getDataPath("sessions.json");
async function readUsers() {
try {
const data = await promises.readFile(USERS_FILE, "utf-8");
return JSON.parse(data);
} catch (error) {
console.error("Fehler beim Lesen der Benutzerdaten:", error);
return [];
}
}
async function writeUsers(users) {
try {
await promises.writeFile(USERS_FILE, JSON.stringify(users, null, 2), "utf-8");
return true;
} catch (error) {
console.error("Fehler beim Schreiben der Benutzerdaten:", error);
return false;
}
}
async function readSessions() {
try {
const data = await promises.readFile(SESSIONS_FILE, "utf-8");
return JSON.parse(data);
} catch (error) {
console.error("Fehler beim Lesen der Sessions:", error);
return [];
}
}
async function writeSessions(sessions) {
try {
await promises.writeFile(SESSIONS_FILE, JSON.stringify(sessions, null, 2), "utf-8");
return true;
} catch (error) {
console.error("Fehler beim Schreiben der Sessions:", error);
return false;
}
}
async function hashPassword(password) {
const salt = await bcrypt.genSalt(10);
return await bcrypt.hash(password, salt);
}
async function verifyPassword(password, hash) {
return await bcrypt.compare(password, hash);
}
function generateToken(user) {
return jwt.sign(
{
id: user.id,
email: user.email,
role: user.role
},
JWT_SECRET,
{ expiresIn: "7d" }
);
}
function verifyToken(token) {
try {
return jwt.verify(token, JWT_SECRET);
} catch (error) {
return null;
}
}
async function getUserById(id) {
const users = await readUsers();
return users.find((u) => u.id === id);
}
async function getUserFromToken(token) {
const decoded = verifyToken(token);
if (!decoded) return null;
const users = await readUsers();
return users.find((u) => u.id === decoded.id);
}
async function createSession(userId, token) {
const sessions = await readSessions();
const session = {
id: Date.now().toString(),
userId,
token,
createdAt: (/* @__PURE__ */ new Date()).toISOString(),
expiresAt: new Date(Date.now() + 7 * 24 * 60 * 60 * 1e3).toISOString()
// 7 days
};
sessions.push(session);
await writeSessions(sessions);
return session;
}
async function deleteSession(token) {
const sessions = await readSessions();
const filtered = sessions.filter((s) => s.token !== token);
await writeSessions(filtered);
}
export { getUserFromToken as a, verifyToken as b, createSession as c, deleteSession as d, getUserById as e, generateToken as g, hashPassword as h, readUsers as r, verifyPassword as v, writeUsers as w };
//# sourceMappingURL=auth.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"auth.mjs","sources":["../../../../server/utils/auth.js"],"sourcesContent":null,"names":["fs"],"mappings":"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"}

View File

@@ -0,0 +1,10 @@
import { escapeHtml } from '@vue/shared';
const _messages = { "appName": "Nuxt", "statusCode": 500, "statusMessage": "Internal server error", "description": "This page is temporarily unavailable.", "refresh": "Refresh this page" };
const template = (messages) => {
messages = { ..._messages, ...messages };
return '<!DOCTYPE html><html lang="en"><head><title>' + escapeHtml(messages.statusCode) + " - " + escapeHtml(messages.statusMessage) + " | " + escapeHtml(messages.appName) + `</title><meta charset="utf-8"><meta content="width=device-width,initial-scale=1.0,minimum-scale=1.0" name="viewport"><script>!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver(e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();<\/script><style>*,:after,:before{border-color:var(--un-default-border-color,#e5e7eb);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}h1,h2{font-size:inherit;font-weight:inherit}h1,h2,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }.grid{display:grid}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.max-w-520px{max-width:520px}.min-h-screen{min-height:100vh}.place-content-center{place-content:center}.overflow-hidden{overflow:hidden}.bg-white{--un-bg-opacity:1;background-color:rgb(255 255 255/var(--un-bg-opacity))}.px-2{padding-left:.5rem;padding-right:.5rem}.text-center{text-align:center}.text-\\[80px\\]{font-size:80px}.text-2xl{font-size:1.5rem;line-height:2rem}.text-\\[\\#020420\\]{--un-text-opacity:1;color:rgb(2 4 32/var(--un-text-opacity))}.text-\\[\\#64748B\\]{--un-text-opacity:1;color:rgb(100 116 139/var(--un-text-opacity))}.font-semibold{font-weight:600}.leading-none{line-height:1}.tracking-wide{letter-spacing:.025em}.font-sans{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.tabular-nums{--un-numeric-spacing:tabular-nums;font-variant-numeric:var(--un-ordinal) var(--un-slashed-zero) var(--un-numeric-figure) var(--un-numeric-spacing) var(--un-numeric-fraction)}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){.dark\\:bg-\\[\\#020420\\]{--un-bg-opacity:1;background-color:rgb(2 4 32/var(--un-bg-opacity))}.dark\\:text-white{--un-text-opacity:1;color:rgb(255 255 255/var(--un-text-opacity))}}@media (min-width:640px){.sm\\:text-\\[110px\\]{font-size:110px}.sm\\:text-3xl{font-size:1.875rem;line-height:2.25rem}}</style></head><body class="antialiased bg-white dark:bg-[#020420] dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-[#020420] tracking-wide"><div class="max-w-520px text-center"><h1 class="font-semibold leading-none mb-4 sm:text-[110px] tabular-nums text-[80px]">` + escapeHtml(messages.statusCode) + '</h1><h2 class="font-semibold mb-2 sm:text-3xl text-2xl">' + escapeHtml(messages.statusMessage) + '</h2><p class="mb-4 px-2 text-[#64748B] text-md">' + escapeHtml(messages.description) + "</p></div></body></html>";
};
export { template };
//# sourceMappingURL=error-500.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"error-500.mjs","sources":["../../../../node_modules/nuxt/dist/core/runtime/nitro/templates/error-500.js"],"sourcesContent":null,"names":[],"mappings":"","x_google_ignoreList":[0]}

View File

@@ -0,0 +1,8 @@
const Hero_vue_vue_type_style_index_0_scoped_33d25311_lang = "@keyframes fadeIn-33d25311{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.animate-fade-in[data-v-33d25311]{animation:fadeIn-33d25311 .8s ease-out}.animate-fade-in-delay-1[data-v-33d25311]{animation:fadeIn-33d25311 .8s ease-out .2s both}.animate-fade-in-delay-2[data-v-33d25311]{animation:fadeIn-33d25311 .8s ease-out .4s both}";
const HeroStyles_DnxJI8Rq = [
Hero_vue_vue_type_style_index_0_scoped_33d25311_lang
];
export { HeroStyles_DnxJI8Rq as default };
//# sourceMappingURL=Hero-styles.DnxJI8Rq.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"Hero-styles.DnxJI8Rq.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/Hero-styles.DnxJI8Rq.mjs"],"sourcesContent":null,"names":["style_0"],"mappings":"","x_google_ignoreList":[0]}

View File

@@ -0,0 +1,10 @@
const _export_sfc = (sfc, props) => {
const target = sfc.__vccOpts || sfc;
for (const [key, val] of props) {
target[key] = val;
}
return target;
};
export { _export_sfc as _ };
//# sourceMappingURL=_plugin-vue_export-helper-1tPrXgE0.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"_plugin-vue_export-helper-1tPrXgE0.mjs","sources":[],"sourcesContent":null,"names":[],"mappings":";;;;;;;;;;"}

View File

@@ -0,0 +1,120 @@
import { a as useRoute, _ as __nuxt_component_0$1 } from './server.mjs';
import { ref, mergeProps, unref, withCtx, createTextVNode, useSSRContext } from 'vue';
import { ssrRenderAttrs, ssrInterpolate, ssrRenderList, ssrRenderClass, ssrRenderAttr, ssrRenderComponent } from 'vue/server-renderer';
import { BarChart } from 'lucide-vue-next';
import '../nitro/nitro.mjs';
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 '../routes/renderer.mjs';
import 'vue-bundle-renderer/runtime';
import 'unhead/server';
import 'devalue';
import 'unhead/utils';
import 'pinia';
import 'vue-router';
const _sfc_main = {
__name: "[slug]",
__ssrInlineRender: true,
setup(__props) {
useRoute();
const mannschaft = ref(null);
const getSpielerListe = (mannschaft2) => {
if (!mannschaft2.spieler) return [];
return mannschaft2.spieler.split(";").map((s) => s.trim()).filter((s) => s !== "");
};
const formatDate = (dateString) => {
if (!dateString) return "";
if (/^\d{2}\.\d{2}\.\d{4}$/.test(dateString)) {
return dateString;
}
const date = new Date(dateString);
if (isNaN(date.getTime())) {
return dateString;
}
return date.toLocaleDateString("de-DE", {
day: "2-digit",
month: "2-digit",
year: "numeric"
});
};
return (_ctx, _push, _parent, _attrs) => {
const _component_NuxtLink = __nuxt_component_0$1;
_push(`<div${ssrRenderAttrs(mergeProps({ class: "min-h-full py-16 bg-gray-50" }, _attrs))}><div class="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8">`);
if (mannschaft.value) {
_push(`<div class="space-y-8"><div class="bg-gradient-to-r from-primary-600 to-primary-700 rounded-xl p-8 text-white"><h1 class="text-4xl font-display font-bold mb-2">${ssrInterpolate(mannschaft.value.mannschaft)}</h1><p class="text-primary-100 text-xl">${ssrInterpolate(mannschaft.value.liga)}</p></div><div class="bg-white rounded-xl shadow-lg p-6"><h2 class="text-2xl font-semibold text-gray-900 mb-6">Liga-Informationen</h2><div class="grid md:grid-cols-2 gap-6"><div class="space-y-4"><div class="flex items-center space-x-3"><div class="w-2 h-2 bg-primary-600 rounded-full"></div><span class="text-gray-600">Staffelleiter:</span><span class="font-semibold text-gray-900">${ssrInterpolate(mannschaft.value.staffelleiter)}</span></div><div class="flex items-center space-x-3"><div class="w-2 h-2 bg-primary-600 rounded-full"></div><span class="text-gray-600">Telefon:</span><span class="font-semibold text-gray-900">${ssrInterpolate(mannschaft.value.telefon)}</span></div></div><div class="space-y-4"><div class="flex items-center space-x-3"><div class="w-2 h-2 bg-primary-600 rounded-full"></div><span class="text-gray-600">Heimspieltag:</span><span class="font-semibold text-gray-900">${ssrInterpolate(mannschaft.value.heimspieltag)}</span></div><div class="flex items-center space-x-3"><div class="w-2 h-2 bg-primary-600 rounded-full"></div><span class="text-gray-600">Spielsystem:</span><span class="font-semibold text-gray-900">${ssrInterpolate(mannschaft.value.spielsystem)}</span></div></div></div></div><div class="bg-white rounded-xl shadow-lg p-6"><h2 class="text-2xl font-semibold text-gray-900 mb-6"> Mannschaftsaufstellung Saison 2025/26 (Hinrunde) </h2><div class="grid sm:grid-cols-2 lg:grid-cols-4 gap-4"><!--[-->`);
ssrRenderList(getSpielerListe(mannschaft.value), (spieler, index) => {
_push(`<div class="${ssrRenderClass([spieler === mannschaft.value.mannschaftsfuehrer ? "ring-2 ring-primary-500 bg-primary-50" : "", "bg-gray-50 rounded-lg p-4 text-center"])}"><div class="font-semibold text-gray-900">${ssrInterpolate(spieler)}</div>`);
if (spieler === mannschaft.value.mannschaftsfuehrer) {
_push(`<div class="text-xs text-primary-600 font-medium mt-1"> Mannschaftsführer </div>`);
} else {
_push(`<!---->`);
}
_push(`</div>`);
});
_push(`<!--]--></div></div><div class="bg-white rounded-xl shadow-lg p-6"><h2 class="text-2xl font-semibold text-gray-900 mb-6">Weitere Informationen</h2><div class="text-center">`);
if (mannschaft.value.weitere_informationen_link && mannschaft.value.weitere_informationen_link !== "") {
_push(`<a${ssrRenderAttr("href", mannschaft.value.weitere_informationen_link)} target="_blank" class="inline-flex items-center px-8 py-4 bg-primary-600 hover:bg-primary-700 text-white font-semibold rounded-lg transition-colors">`);
_push(ssrRenderComponent(unref(BarChart), {
size: 24,
class: "mr-3"
}, null, _parent));
_push(` Weitere Informationen </a>`);
} else {
_push(`<!---->`);
}
_push(`</div></div><div class="bg-white rounded-xl shadow-lg p-6"><p class="text-sm text-gray-500 text-center"> Zuletzt aktualisiert am: ${ssrInterpolate(formatDate(mannschaft.value.letzte_aktualisierung))}</p></div><div class="text-center">`);
_push(ssrRenderComponent(_component_NuxtLink, {
to: "/mannschaften",
class: "inline-flex items-center px-6 py-3 bg-primary-600 hover:bg-primary-700 text-white font-semibold rounded-lg transition-colors"
}, {
default: withCtx((_, _push2, _parent2, _scopeId) => {
if (_push2) {
_push2(` ← Zurück zur Übersicht `);
} else {
return [
createTextVNode(" ← Zurück zur Übersicht ")
];
}
}),
_: 1
}, _parent));
_push(`</div></div>`);
} else {
_push(`<div class="text-center py-16"><h1 class="text-4xl font-display font-bold text-gray-900 mb-4">Mannschaft nicht gefunden</h1><p class="text-gray-600 mb-8">Die angeforderte Mannschaft konnte nicht gefunden werden.</p>`);
_push(ssrRenderComponent(_component_NuxtLink, {
to: "/mannschaften",
class: "inline-flex items-center px-6 py-3 bg-primary-600 hover:bg-primary-700 text-white font-semibold rounded-lg transition-colors"
}, {
default: withCtx((_, _push2, _parent2, _scopeId) => {
if (_push2) {
_push2(` Zur Mannschaftsübersicht `);
} else {
return [
createTextVNode(" Zur Mannschaftsübersicht ")
];
}
}),
_: 1
}, _parent));
_push(`</div>`);
}
_push(`</div></div>`);
};
}
};
const _sfc_setup = _sfc_main.setup;
_sfc_main.setup = (props, ctx) => {
const ssrContext = useSSRContext();
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/mannschaften/[slug].vue");
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
};
export { _sfc_main as default };
//# sourceMappingURL=_slug_-CcxmD4wa.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"_slug_-CcxmD4wa.mjs","sources":["../../../../pages/mannschaften/[slug].vue"],"sourcesContent":null,"names":["mannschaft","_ssrRenderAttrs","_mergeProps","_ssrInterpolate","_ssrRenderList","_push","_parent"],"mappings":"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"}

View File

@@ -0,0 +1,85 @@
import { _ as __nuxt_component_0$1 } from './server.mjs';
import { mergeProps, unref, withCtx, createTextVNode, useSSRContext } from 'vue';
import { ssrRenderAttrs, ssrRenderComponent } from 'vue/server-renderer';
import { Check } from 'lucide-vue-next';
import { u as useHead } from './composables-CK-Mp9jS.mjs';
import '../nitro/nitro.mjs';
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 '../routes/renderer.mjs';
import 'vue-bundle-renderer/runtime';
import 'unhead/server';
import 'devalue';
import 'unhead/utils';
import 'pinia';
import 'vue-router';
const _sfc_main = {
__name: "anfaenger",
__ssrInlineRender: true,
setup(__props) {
useHead({
title: "Für Anfänger - Harheimer TC"
});
return (_ctx, _push, _parent, _attrs) => {
const _component_NuxtLink = __nuxt_component_0$1;
_push(`<div${ssrRenderAttrs(mergeProps({ class: "min-h-full py-16 bg-gray-50" }, _attrs))}><div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"><h1 class="text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-6"> Tischtennis für Anfänger </h1><div class="w-24 h-1 bg-primary-600 mb-8"></div><div class="prose prose-lg max-w-none"><p class="text-xl text-gray-600 mb-8"> Du möchtest mit Tischtennis anfangen? Perfekt! Bei uns bist du richtig. </p><div class="bg-white p-8 rounded-xl shadow-lg not-prose mb-8"><h3 class="text-2xl font-display font-bold text-gray-900 mb-4"> Was du wissen solltest </h3><ul class="space-y-3"><li class="flex items-start">`);
_push(ssrRenderComponent(unref(Check), {
size: 24,
class: "text-primary-600 mr-3 flex-shrink-0 mt-0.5"
}, null, _parent));
_push(`<span class="text-gray-700">Keine Vorkenntnisse nötig</span></li><li class="flex items-start">`);
_push(ssrRenderComponent(unref(Check), {
size: 24,
class: "text-primary-600 mr-3 flex-shrink-0 mt-0.5"
}, null, _parent));
_push(`<span class="text-gray-700">Schläger und Material werden gestellt</span></li><li class="flex items-start">`);
_push(ssrRenderComponent(unref(Check), {
size: 24,
class: "text-primary-600 mr-3 flex-shrink-0 mt-0.5"
}, null, _parent));
_push(`<span class="text-gray-700">Sportkleidung und Hallenschuhe mitbringen</span></li><li class="flex items-start">`);
_push(ssrRenderComponent(unref(Check), {
size: 24,
class: "text-primary-600 mr-3 flex-shrink-0 mt-0.5"
}, null, _parent));
_push(`<span class="text-gray-700">3x kostenlos Probetraining</span></li><li class="flex items-start">`);
_push(ssrRenderComponent(unref(Check), {
size: 24,
class: "text-primary-600 mr-3 flex-shrink-0 mt-0.5"
}, null, _parent));
_push(`<span class="text-gray-700">Einstieg jederzeit möglich</span></li></ul></div><div class="bg-primary-50 p-8 rounded-xl border border-primary-100 not-prose"><h3 class="text-2xl font-display font-bold text-gray-900 mb-4"> Anfängergruppen </h3><div class="space-y-4 mb-6"><div><h4 class="font-semibold text-gray-900 mb-1">Schüler/Jugend (ab 6 Jahre)</h4><p class="text-gray-600">Dienstag, 17:30 - 19:30 Uhr</p></div><div><h4 class="font-semibold text-gray-900 mb-1">Damen und Herren</h4><p class="text-gray-600">Dienstag &amp; Donnerstag, 19:30 - 22:30 Uhr</p></div></div>`);
_push(ssrRenderComponent(_component_NuxtLink, {
to: "/kontakt",
class: "inline-flex items-center px-6 py-3 bg-primary-600 hover:bg-primary-700 text-white font-semibold rounded-lg transition-colors"
}, {
default: withCtx((_, _push2, _parent2, _scopeId) => {
if (_push2) {
_push2(` Zum Probetraining anmelden `);
} else {
return [
createTextVNode(" Zum Probetraining anmelden ")
];
}
}),
_: 1
}, _parent));
_push(`</div></div></div></div>`);
};
}
};
const _sfc_setup = _sfc_main.setup;
_sfc_main.setup = (props, ctx) => {
const ssrContext = useSSRContext();
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/training/anfaenger.vue");
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
};
export { _sfc_main as default };
//# sourceMappingURL=anfaenger-Cj28UOue.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"anfaenger-Cj28UOue.mjs","sources":["../../../../pages/training/anfaenger.vue"],"sourcesContent":null,"names":["_ssrRenderAttrs","_mergeProps","_push","_parent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAuEA,IAAA,OAAA,CAAQ;AAAA,MACN,KAAA,EAAO;AAAA,KACR,CAAA;;;AAxEM,MAAA,KAAA,CAAA,CAAA,IAAA,EAAAA,eAAAC,UAAAA,CAAA,EAAA,OAAM,6BAAA,EAAA,EAA6B,MAAA,CAAA,CAAA,CAAA,sjBAAA,CAAA,CAAA;;QAkBpB,IAAA,EAAM,EAAA;AAAA,QAAI,KAAA,EAAM;AAAA,OAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;;QAIhB,IAAA,EAAM,EAAA;AAAA,QAAI,KAAA,EAAM;AAAA,OAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;;QAIhB,IAAA,EAAM,EAAA;AAAA,QAAI,KAAA,EAAM;AAAA,OAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;;QAIhB,IAAA,EAAM,EAAA;AAAA,QAAI,KAAA,EAAM;AAAA,OAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;;QAIhB,IAAA,EAAM,EAAA;AAAA,QAAI,KAAA,EAAM;AAAA,OAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;;QAsB1B,EAAA,EAAG,UAAA;AAAA,QACH,KAAA,EAAM;AAAA,OAAA,EAAA;yBAFR,CAKW,CAAA,EAAAC,MAAAA,EAAAC,QAAAA,EAAA,QAAA,KAAA;;;;;8BAFV,8BAED;AAAA,aAAA;;;;;;;;;;;;;;;;;;"}

View File

@@ -0,0 +1,110 @@
import { mergeProps, createVNode, resolveDynamicComponent, useSSRContext } from 'vue';
import { ssrRenderAttrs, ssrRenderComponent, ssrRenderList, ssrRenderClass, ssrRenderVNode, ssrInterpolate, ssrRenderStyle } from 'vue/server-renderer';
import { Sun, CloudRain, Dumbbell, Utensils, Wifi, Droplets } from 'lucide-vue-next';
import { u as useHead } from './composables-CK-Mp9jS.mjs';
import './server.mjs';
import '../nitro/nitro.mjs';
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 '../routes/renderer.mjs';
import 'vue-bundle-renderer/runtime';
import 'unhead/server';
import 'devalue';
import 'unhead/utils';
import 'pinia';
import 'vue-router';
const _sfc_main$1 = {
__name: "Facilities",
__ssrInlineRender: true,
setup(__props) {
const facilities = [
{
icon: Sun,
title: "8 Tischtennisplatten",
description: "Hochwertige Wettkampftische für optimales Spielvergnügen",
color: "from-yellow-400 to-orange-500"
},
{
icon: CloudRain,
title: "Klimatisierte Halle",
description: "Optimale Bedingungen bei jedem Wetter in unserer modernen Halle",
color: "from-blue-400 to-blue-600"
},
{
icon: Dumbbell,
title: "Trainingsbereich",
description: "Ballmaschinen und Trainingsgeräte für gezieltes Training",
color: "from-red-400 to-red-600"
},
{
icon: Utensils,
title: "Clubhaus",
description: "Gemütliches Clubhaus mit Aufenthaltsraum und Küche",
color: "from-green-400 to-green-600"
},
{
icon: Wifi,
title: "Kostenloses WLAN",
description: "Schnelles Internet auf der gesamten Anlage",
color: "from-purple-400 to-purple-600"
},
{
icon: Droplets,
title: "Umkleiden & Duschen",
description: "Moderne, saubere Umkleideräume mit Duschen",
color: "from-cyan-400 to-cyan-600"
}
];
return (_ctx, _push, _parent, _attrs) => {
_push(`<section${ssrRenderAttrs(mergeProps({
id: "facilities",
class: "py-16 sm:py-20 bg-white"
}, _attrs))}><div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"><div class="text-center mb-16"><h2 class="text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-4"> Unsere Anlagen </h2><div class="w-24 h-1 bg-primary-600 mx-auto mb-6"></div><p class="text-xl text-gray-600 max-w-3xl mx-auto"> Moderne Ausstattung und erstklassige Einrichtungen für ein perfektes Tischtenniserlebnis </p></div><div class="grid sm:grid-cols-2 lg:grid-cols-3 gap-8 mb-16"><!--[-->`);
ssrRenderList(facilities, (facility) => {
_push(`<div class="group relative bg-white rounded-2xl shadow-lg hover:shadow-2xl transition-all duration-300 overflow-hidden border border-gray-100"><div class="${ssrRenderClass(["absolute top-0 left-0 right-0 h-1 bg-gradient-to-r opacity-0 group-hover:opacity-100 transition-opacity", facility.color])}"></div><div class="p-8"><div class="${ssrRenderClass(["w-16 h-16 bg-gradient-to-br rounded-xl flex items-center justify-center mb-4 group-hover:scale-110 transition-transform", facility.color])}">`);
ssrRenderVNode(_push, createVNode(resolveDynamicComponent(facility.icon), {
size: 32,
class: "text-white"
}, null), _parent);
_push(`</div><h3 class="text-2xl font-display font-bold text-gray-900 mb-3">${ssrInterpolate(facility.title)}</h3><p class="text-gray-600 leading-relaxed">${ssrInterpolate(facility.description)}</p></div></div>`);
});
_push(`<!--]--></div><div class="grid md:grid-cols-2 gap-6"><div class="relative h-[300px] rounded-2xl overflow-hidden shadow-xl group"><div class="w-full h-full bg-cover bg-center group-hover:scale-110 transition-transform duration-700" style="${ssrRenderStyle({ "background-image": "url('https://images.unsplash.com/photo-1534438097545-77fef53fe2e8?q=80&w=2070')" })}"></div><div class="absolute inset-0 bg-gradient-to-t from-black/60 to-transparent flex items-end"><p class="text-white font-semibold text-xl p-6">Hochwertige Wettkampftische</p></div></div><div class="relative h-[300px] rounded-2xl overflow-hidden shadow-xl group"><div class="w-full h-full bg-cover bg-center group-hover:scale-110 transition-transform duration-700" style="${ssrRenderStyle({ "background-image": "url('https://images.unsplash.com/photo-1611004275469-8583ed5d7b8d?q=80&w=2070')" })}"></div><div class="absolute inset-0 bg-gradient-to-t from-black/60 to-transparent flex items-end"><p class="text-white font-semibold text-xl p-6">Moderne Tischtennishalle</p></div></div></div></div></section>`);
};
}
};
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("components/Facilities.vue");
return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0;
};
const _sfc_main = {
__name: "anlagen",
__ssrInlineRender: true,
setup(__props) {
useHead({
title: "Anlagen - Harheimer TC"
});
return (_ctx, _push, _parent, _attrs) => {
_push(`<div${ssrRenderAttrs(mergeProps({ class: "min-h-screen" }, _attrs))}>`);
_push(ssrRenderComponent(_sfc_main$1, null, null, _parent));
_push(`</div>`);
};
}
};
const _sfc_setup = _sfc_main.setup;
_sfc_main.setup = (props, ctx) => {
const ssrContext = useSSRContext();
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/anlagen.vue");
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
};
export { _sfc_main as default };
//# sourceMappingURL=anlagen-tpcA4Hv2.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"anlagen-tpcA4Hv2.mjs","sources":["../../../../components/Facilities.vue","../../../../pages/anlagen.vue"],"sourcesContent":null,"names":["_ssrRenderList","_ssrRenderClass","_ssrRenderVNode","_createVNode","_resolveDynamicComponent","_ssrInterpolate","_ssrRenderAttrs","_mergeProps"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AA8DA,IAAA,MAAM,UAAA,GAAa;AAAA,MACjB;AAAA,QACE,IAAA,EAAM,GAAA;AAAA,QACN,KAAA,EAAO,sBAAA;AAAA,QACP,WAAA,EAAa,0DAAA;AAAA,QACb,KAAA,EAAO;AAAA,OACX;AAAA,MACE;AAAA,QACE,IAAA,EAAM,SAAA;AAAA,QACN,KAAA,EAAO,qBAAA;AAAA,QACP,WAAA,EAAa,iEAAA;AAAA,QACb,KAAA,EAAO;AAAA,OACX;AAAA,MACE;AAAA,QACE,IAAA,EAAM,QAAA;AAAA,QACN,KAAA,EAAO,kBAAA;AAAA,QACP,WAAA,EAAa,0DAAA;AAAA,QACb,KAAA,EAAO;AAAA,OACX;AAAA,MACE;AAAA,QACE,IAAA,EAAM,QAAA;AAAA,QACN,KAAA,EAAO,UAAA;AAAA,QACP,WAAA,EAAa,oDAAA;AAAA,QACb,KAAA,EAAO;AAAA,OACX;AAAA,MACE;AAAA,QACE,IAAA,EAAM,IAAA;AAAA,QACN,KAAA,EAAO,kBAAA;AAAA,QACP,WAAA,EAAa,4CAAA;AAAA,QACb,KAAA,EAAO;AAAA,OACX;AAAA,MACE;AAAA,QACE,IAAA,EAAM,QAAA;AAAA,QACN,KAAA,EAAO,qBAAA;AAAA,QACP,WAAA,EAAa,4CAAA;AAAA,QACb,KAAA,EAAO;AAAA;AACX,KACA;;;QAlGW,EAAA,EAAG,YAAA;AAAA,QAAa,KAAA,EAAM;AAAA,OAAA,EAAA,MAAA,CAAA,CAAA,CAAA,ucAAA,CAAA,CAAA;AAcJA,MAAAA,aAAAA,CAAA,aAAZ,QAAA,KAAQ;4KAI0GC,cAAAA,CAAA,CAAA,yGAAA,EAAA,QAAA,CAAS,KAAK,CAAA,CAAA,CAAA,qCAAA,EAEIA,cAAAA,CAAA,CAAA,yHAAA,EAAA,QAAA,CAAS,KAAK,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA;AACrIC,QAAAA,cAAAA,CAAA,KAAA,EAAAC,WAAAA,CAAAC,uBAAAA,CAAA,QAAA,CAAS,IAAI,CAAA,EAAA;AAAA,UAAG,IAAA,EAAM,EAAA;AAAA,UAAI,KAAA,EAAM;AAAA,SAAA,EAAA,IAAA,CAAA,EAAA,OAAA,CAAA;AAG7CC,QAAAA,KAAAA,CAAAA,CAAAA,qEAAAA,EAAAA,cAAAA,CAAA,QAAA,CAAS,KAAK,CAAA,CAAA,8CAAA,EAGdA,cAAAA,CAAA,SAAS,WAAW,CAAA,CAAA,gBAAA,CAAA,CAAA;;AAWzB,MAAA,KAAA,CAAA,CAAA,8OAAA,EAAA,cAAA,CAAA,EAAA,oBAAA,iFAAA,EAAyG,0YASzG,EAAA,kBAAA,EAAA,mFAAyG,CAAA,CAAA,iNAAA,CAAA,CAAA;;;;;;;;;;;;;;ACvCrH,IAAA,OAAA,CAAQ;AAAA,MACN,KAAA,EAAO;AAAA,KACR,CAAA;;AAVM,MAAA,KAAA,CAAA,CAAA,IAAA,EAAAC,eAAAC,UAAAA,CAAA,EAAA,OAAM,cAAA,EAAA,EAAc,MAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;;;;;;;;;;;;;;;"}

View File

@@ -0,0 +1,376 @@
import { A as executeAsync, E as hash } from '../nitro/nitro.mjs';
import { e as defineNuxtRouteMiddleware, n as navigateTo, f as fetchDefaults, b as useNuxtApp, c as asyncDataDefaults, d as createError } from './server.mjs';
import { computed, toValue, reactive, getCurrentInstance, onServerPrefetch, unref, ref, shallowRef, toRef, nextTick } from 'vue';
import { isPlainObject } from '@vue/shared';
import { debounce } from 'perfect-debounce';
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 '../routes/renderer.mjs';
import 'vue-bundle-renderer/runtime';
import 'vue/server-renderer';
import 'unhead/server';
import 'devalue';
import 'unhead/utils';
import 'pinia';
import 'vue-router';
import 'lucide-vue-next';
function useAsyncData(...args) {
const autoKey = typeof args[args.length - 1] === "string" ? args.pop() : void 0;
if (_isAutoKeyNeeded(args[0], args[1])) {
args.unshift(autoKey);
}
let [_key, _handler, options = {}] = args;
const key = computed(() => toValue(_key));
if (typeof key.value !== "string") {
throw new TypeError("[nuxt] [useAsyncData] key must be a string.");
}
if (typeof _handler !== "function") {
throw new TypeError("[nuxt] [useAsyncData] handler must be a function.");
}
const nuxtApp = useNuxtApp();
options.server ??= true;
options.default ??= getDefault;
options.getCachedData ??= getDefaultCachedData;
options.lazy ??= false;
options.immediate ??= true;
options.deep ??= asyncDataDefaults.deep;
options.dedupe ??= "cancel";
options._functionName || "useAsyncData";
nuxtApp._asyncData[key.value];
function createInitialFetch() {
const initialFetchOptions = { cause: "initial", dedupe: options.dedupe };
if (!nuxtApp._asyncData[key.value]?._init) {
initialFetchOptions.cachedData = options.getCachedData(key.value, nuxtApp, { cause: "initial" });
nuxtApp._asyncData[key.value] = createAsyncData(nuxtApp, key.value, _handler, options, initialFetchOptions.cachedData);
}
return () => nuxtApp._asyncData[key.value].execute(initialFetchOptions);
}
const initialFetch = createInitialFetch();
const asyncData = nuxtApp._asyncData[key.value];
asyncData._deps++;
const fetchOnServer = options.server !== false && nuxtApp.payload.serverRendered;
if (fetchOnServer && options.immediate) {
const promise = initialFetch();
if (getCurrentInstance()) {
onServerPrefetch(() => promise);
} else {
nuxtApp.hook("app:created", async () => {
await promise;
});
}
}
const asyncReturn = {
data: writableComputedRef(() => nuxtApp._asyncData[key.value]?.data),
pending: writableComputedRef(() => nuxtApp._asyncData[key.value]?.pending),
status: writableComputedRef(() => nuxtApp._asyncData[key.value]?.status),
error: writableComputedRef(() => nuxtApp._asyncData[key.value]?.error),
refresh: (...args2) => {
if (!nuxtApp._asyncData[key.value]?._init) {
const initialFetch2 = createInitialFetch();
return initialFetch2();
}
return nuxtApp._asyncData[key.value].execute(...args2);
},
execute: (...args2) => asyncReturn.refresh(...args2),
clear: () => clearNuxtDataByKey(nuxtApp, key.value)
};
const asyncDataPromise = Promise.resolve(nuxtApp._asyncDataPromises[key.value]).then(() => asyncReturn);
Object.assign(asyncDataPromise, asyncReturn);
return asyncDataPromise;
}
function writableComputedRef(getter) {
return computed({
get() {
return getter()?.value;
},
set(value) {
const ref2 = getter();
if (ref2) {
ref2.value = value;
}
}
});
}
function _isAutoKeyNeeded(keyOrFetcher, fetcher) {
if (typeof keyOrFetcher === "string") {
return false;
}
if (typeof keyOrFetcher === "object" && keyOrFetcher !== null) {
return false;
}
if (typeof keyOrFetcher === "function" && typeof fetcher === "function") {
return false;
}
return true;
}
function clearNuxtDataByKey(nuxtApp, key) {
if (key in nuxtApp.payload.data) {
nuxtApp.payload.data[key] = void 0;
}
if (key in nuxtApp.payload._errors) {
nuxtApp.payload._errors[key] = void 0;
}
if (nuxtApp._asyncData[key]) {
nuxtApp._asyncData[key].data.value = unref(nuxtApp._asyncData[key]._default());
nuxtApp._asyncData[key].error.value = void 0;
nuxtApp._asyncData[key].status.value = "idle";
}
if (key in nuxtApp._asyncDataPromises) {
if (nuxtApp._asyncDataPromises[key]) {
nuxtApp._asyncDataPromises[key].cancelled = true;
}
nuxtApp._asyncDataPromises[key] = void 0;
}
}
function pick(obj, keys) {
const newObj = {};
for (const key of keys) {
newObj[key] = obj[key];
}
return newObj;
}
function createAsyncData(nuxtApp, key, _handler, options, initialCachedData) {
nuxtApp.payload._errors[key] ??= void 0;
const hasCustomGetCachedData = options.getCachedData !== getDefaultCachedData;
const handler = _handler ;
const _ref = options.deep ? ref : shallowRef;
const hasCachedData = initialCachedData !== void 0;
const unsubRefreshAsyncData = nuxtApp.hook("app:data:refresh", async (keys) => {
if (!keys || keys.includes(key)) {
await asyncData.execute({ cause: "refresh:hook" });
}
});
const asyncData = {
data: _ref(hasCachedData ? initialCachedData : options.default()),
pending: computed(() => asyncData.status.value === "pending"),
error: toRef(nuxtApp.payload._errors, key),
status: shallowRef("idle"),
execute: (...args) => {
const [_opts, newValue = void 0] = args;
const opts = _opts && newValue === void 0 && typeof _opts === "object" ? _opts : {};
if (nuxtApp._asyncDataPromises[key]) {
if ((opts.dedupe ?? options.dedupe) === "defer") {
return nuxtApp._asyncDataPromises[key];
}
nuxtApp._asyncDataPromises[key].cancelled = true;
}
{
const cachedData = "cachedData" in opts ? opts.cachedData : options.getCachedData(key, nuxtApp, { cause: opts.cause ?? "refresh:manual" });
if (cachedData !== void 0) {
nuxtApp.payload.data[key] = asyncData.data.value = cachedData;
asyncData.error.value = void 0;
asyncData.status.value = "success";
return Promise.resolve(cachedData);
}
}
asyncData.status.value = "pending";
const promise = new Promise(
(resolve, reject) => {
try {
resolve(handler(nuxtApp));
} catch (err) {
reject(err);
}
}
).then(async (_result) => {
if (promise.cancelled) {
return nuxtApp._asyncDataPromises[key];
}
let result = _result;
if (options.transform) {
result = await options.transform(_result);
}
if (options.pick) {
result = pick(result, options.pick);
}
nuxtApp.payload.data[key] = result;
asyncData.data.value = result;
asyncData.error.value = void 0;
asyncData.status.value = "success";
}).catch((error) => {
if (promise.cancelled) {
return nuxtApp._asyncDataPromises[key];
}
asyncData.error.value = createError(error);
asyncData.data.value = unref(options.default());
asyncData.status.value = "error";
}).finally(() => {
if (promise.cancelled) {
return;
}
delete nuxtApp._asyncDataPromises[key];
});
nuxtApp._asyncDataPromises[key] = promise;
return nuxtApp._asyncDataPromises[key];
},
_execute: debounce((...args) => asyncData.execute(...args), 0, { leading: true }),
_default: options.default,
_deps: 0,
_init: true,
_hash: void 0,
_off: () => {
unsubRefreshAsyncData();
if (nuxtApp._asyncData[key]?._init) {
nuxtApp._asyncData[key]._init = false;
}
if (!hasCustomGetCachedData) {
nextTick(() => {
if (!nuxtApp._asyncData[key]?._init) {
clearNuxtDataByKey(nuxtApp, key);
asyncData.execute = () => Promise.resolve();
}
});
}
}
};
return asyncData;
}
const getDefault = () => void 0;
const getDefaultCachedData = (key, nuxtApp, ctx) => {
if (nuxtApp.isHydrating) {
return nuxtApp.payload.data[key];
}
if (ctx.cause !== "refresh:manual" && ctx.cause !== "refresh:hook") {
return nuxtApp.static.data[key];
}
};
function useRequestEvent(nuxtApp) {
nuxtApp ||= useNuxtApp();
return nuxtApp.ssrContext?.event;
}
function useRequestFetch() {
return useRequestEvent()?.$fetch || globalThis.$fetch;
}
function useFetch(request, arg1, arg2) {
const [opts = {}, autoKey] = [{}, arg1];
const _request = computed(() => toValue(request));
const key = computed(() => toValue(opts.key) || "$f" + hash([autoKey, typeof _request.value === "string" ? _request.value : "", ...generateOptionSegments(opts)]));
if (!opts.baseURL && typeof _request.value === "string" && (_request.value[0] === "/" && _request.value[1] === "/")) {
throw new Error('[nuxt] [useFetch] the request URL must not start with "//".');
}
const {
server,
lazy,
default: defaultFn,
transform,
pick: pick2,
watch: watchSources,
immediate,
getCachedData,
deep,
dedupe,
...fetchOptions
} = opts;
const _fetchOptions = reactive({
...fetchDefaults,
...fetchOptions,
cache: typeof opts.cache === "boolean" ? void 0 : opts.cache
});
const _asyncDataOptions = {
server,
lazy,
default: defaultFn,
transform,
pick: pick2,
immediate,
getCachedData,
deep,
dedupe,
watch: watchSources === false ? [] : [...watchSources || [], _fetchOptions]
};
let controller;
const asyncData = useAsyncData(watchSources === false ? key.value : key, () => {
controller?.abort?.(new DOMException("Request aborted as another request to the same endpoint was initiated.", "AbortError"));
controller = typeof AbortController !== "undefined" ? new AbortController() : {};
const timeoutLength = toValue(opts.timeout);
let timeoutId;
if (timeoutLength) {
timeoutId = setTimeout(() => controller.abort(new DOMException("Request aborted due to timeout.", "AbortError")), timeoutLength);
controller.signal.onabort = () => clearTimeout(timeoutId);
}
let _$fetch = opts.$fetch || globalThis.$fetch;
if (!opts.$fetch) {
const isLocalFetch = typeof _request.value === "string" && _request.value[0] === "/" && (!toValue(opts.baseURL) || toValue(opts.baseURL)[0] === "/");
if (isLocalFetch) {
_$fetch = useRequestFetch();
}
}
return _$fetch(_request.value, { signal: controller.signal, ..._fetchOptions }).finally(() => {
clearTimeout(timeoutId);
});
}, _asyncDataOptions);
return asyncData;
}
function generateOptionSegments(opts) {
const segments = [
toValue(opts.method)?.toUpperCase() || "GET",
toValue(opts.baseURL)
];
for (const _obj of [opts.params || opts.query]) {
const obj = toValue(_obj);
if (!obj) {
continue;
}
const unwrapped = {};
for (const [key, value] of Object.entries(obj)) {
unwrapped[toValue(key)] = toValue(value);
}
segments.push(unwrapped);
}
if (opts.body) {
const value = toValue(opts.body);
if (!value) {
segments.push(hash(value));
} else if (value instanceof ArrayBuffer) {
segments.push(hash(Object.fromEntries([...new Uint8Array(value).entries()].map(([k, v]) => [k, v.toString()]))));
} else if (value instanceof FormData) {
const obj = {};
for (const entry of value.entries()) {
const [key, val] = entry;
obj[key] = val instanceof File ? val.name : val;
}
segments.push(hash(obj));
} else if (isPlainObject(value)) {
segments.push(hash(reactive(value)));
} else {
try {
segments.push(hash(value));
} catch {
console.warn("[useFetch] Failed to hash body", value);
}
}
}
return segments;
}
const auth = defineNuxtRouteMiddleware(async (to, from) => {
let __temp, __restore;
const protectedRoutes = ["/mitgliederbereich", "/cms"];
const requiresAuth = protectedRoutes.some((route) => to.path.startsWith(route));
if (!requiresAuth) {
return;
}
try {
const { data: auth2 } = ([__temp, __restore] = executeAsync(() => useFetch("/api/auth/status", "$iafshigZRx")), __temp = await __temp, __restore(), __temp);
if (!auth2.value || !auth2.value.isLoggedIn) {
return navigateTo("/login?redirect=" + to.path);
}
if (to.path.startsWith("/cms")) {
const isAdmin = auth2.value.role === "admin" || auth2.value.role === "vorstand";
if (!isAdmin) {
return navigateTo("/mitgliederbereich");
}
}
} catch (error) {
return navigateTo("/login?redirect=" + to.path);
}
});
export { auth as default };
//# sourceMappingURL=auth-DIPdM0XJ.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"auth-DIPdM0XJ.mjs","sources":["../../../../node_modules/nuxt/dist/app/composables/asyncData.js","../../../../node_modules/nuxt/dist/app/composables/ssr.js","../../../../node_modules/nuxt/dist/app/composables/fetch.js","../../../../middleware/auth.js"],"sourcesContent":null,"names":["pick","auth","__executeAsync"],"mappings":"","x_google_ignoreList":[0,1,2]}

View File

@@ -0,0 +1,145 @@
import { _ as __nuxt_component_0$1 } from './server.mjs';
import { ref, computed, mergeProps, withCtx, createTextVNode, unref, useSSRContext } from 'vue';
import { ssrRenderAttrs, ssrRenderComponent, ssrInterpolate, ssrRenderList, ssrIncludeBooleanAttr, ssrLooseContain, ssrLooseEqual, ssrRenderClass } from 'vue/server-renderer';
import { AlertCircle, Check, X } from 'lucide-vue-next';
import { u as useHead } from './composables-CK-Mp9jS.mjs';
import '../nitro/nitro.mjs';
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 '../routes/renderer.mjs';
import 'vue-bundle-renderer/runtime';
import 'unhead/server';
import 'devalue';
import 'unhead/utils';
import 'pinia';
import 'vue-router';
const _sfc_main = {
__name: "benutzer",
__ssrInlineRender: true,
setup(__props) {
const allUsers = ref([]);
const currentUserId = ref(null);
const successMessage = ref("");
const errorMessage = ref("");
const pendingUsers = computed(() => {
return allUsers.value.filter((u) => u.active === false).map((u) => ({ ...u, selectedRole: u.role || "mitglied" }));
});
const activeUsers = computed(() => {
return allUsers.value.filter((u) => u.active === true);
});
const formatDate = (dateString) => {
return new Date(dateString).toLocaleString("de-DE", {
year: "numeric",
month: "2-digit",
day: "2-digit",
hour: "2-digit",
minute: "2-digit"
});
};
useHead({
title: "Benutzerverwaltung - CMS - Harheimer TC"
});
return (_ctx, _push, _parent, _attrs) => {
const _component_NuxtLink = __nuxt_component_0$1;
_push(`<div${ssrRenderAttrs(mergeProps({ class: "min-h-full py-16 bg-gray-50" }, _attrs))}><div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"><div class="flex items-center justify-between mb-6"><div><h1 class="text-4xl font-display font-bold text-gray-900"> Benutzerverwaltung </h1><div class="w-24 h-1 bg-primary-600 mt-4"></div></div>`);
_push(ssrRenderComponent(_component_NuxtLink, {
to: "/cms",
class: "px-4 py-2 bg-gray-200 hover:bg-gray-300 text-gray-800 rounded-lg transition-colors"
}, {
default: withCtx((_, _push2, _parent2, _scopeId) => {
if (_push2) {
_push2(` ← Zurück zum CMS `);
} else {
return [
createTextVNode(" ← Zurück zum CMS ")
];
}
}),
_: 1
}, _parent));
_push(`</div>`);
if (pendingUsers.value.length > 0) {
_push(`<div class="mb-8"><h2 class="text-2xl font-display font-bold text-gray-900 mb-4">`);
_push(ssrRenderComponent(unref(AlertCircle), {
size: 24,
class: "inline text-yellow-600 mr-2"
}, null, _parent));
_push(` Wartende Registrierungen (${ssrInterpolate(pendingUsers.value.length)}) </h2><div class="space-y-4"><!--[-->`);
ssrRenderList(pendingUsers.value, (user) => {
_push(`<div class="bg-yellow-50 border-l-4 border-yellow-400 rounded-lg p-6 shadow"><div class="flex items-start justify-between"><div class="flex-1"><h3 class="text-lg font-semibold text-gray-900">${ssrInterpolate(user.name)}</h3><p class="text-sm text-gray-600 mt-1">${ssrInterpolate(user.email)}</p>`);
if (user.phone) {
_push(`<p class="text-sm text-gray-600">${ssrInterpolate(user.phone)}</p>`);
} else {
_push(`<!---->`);
}
_push(`<p class="text-xs text-gray-500 mt-2"> Registriert am: ${ssrInterpolate(formatDate(user.created))}</p></div><div class="flex flex-col space-y-2 ml-4"><select class="px-3 py-2 border border-gray-300 rounded-lg text-sm focus:ring-2 focus:ring-primary-600"><option value="mitglied"${ssrIncludeBooleanAttr(Array.isArray(user.selectedRole) ? ssrLooseContain(user.selectedRole, "mitglied") : ssrLooseEqual(user.selectedRole, "mitglied")) ? " selected" : ""}>Mitglied</option><option value="vorstand"${ssrIncludeBooleanAttr(Array.isArray(user.selectedRole) ? ssrLooseContain(user.selectedRole, "vorstand") : ssrLooseEqual(user.selectedRole, "vorstand")) ? " selected" : ""}>Vorstand</option><option value="admin"${ssrIncludeBooleanAttr(Array.isArray(user.selectedRole) ? ssrLooseContain(user.selectedRole, "admin") : ssrLooseEqual(user.selectedRole, "admin")) ? " selected" : ""}>Administrator</option></select><button class="px-4 py-2 bg-green-600 hover:bg-green-700 text-white text-sm font-semibold rounded-lg transition-colors flex items-center justify-center">`);
_push(ssrRenderComponent(unref(Check), {
size: 16,
class: "mr-1"
}, null, _parent));
_push(` Freischalten </button><button class="px-4 py-2 bg-red-600 hover:bg-red-700 text-white text-sm font-semibold rounded-lg transition-colors flex items-center justify-center">`);
_push(ssrRenderComponent(unref(X), {
size: 16,
class: "mr-1"
}, null, _parent));
_push(` Ablehnen </button></div></div></div>`);
});
_push(`<!--]--></div></div>`);
} else {
_push(`<!---->`);
}
_push(`<div><h2 class="text-2xl font-display font-bold text-gray-900 mb-4"> Aktive Benutzer (${ssrInterpolate(activeUsers.value.length)}) </h2><div class="bg-white rounded-xl shadow-lg overflow-hidden"><table class="min-w-full divide-y divide-gray-200"><thead class="bg-gray-50"><tr><th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider"> Name </th><th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider"> E-Mail </th><th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider"> Telefon </th><th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider"> Rolle </th><th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider"> Letzter Login </th><th class="px-6 py-3 text-right text-xs font-medium text-gray-500 uppercase tracking-wider"> Aktionen </th></tr></thead><tbody class="bg-white divide-y divide-gray-200"><!--[-->`);
ssrRenderList(activeUsers.value, (user) => {
_push(`<tr class="hover:bg-gray-50"><td class="px-6 py-4 whitespace-nowrap"><div class="text-sm font-medium text-gray-900">${ssrInterpolate(user.name)}</div></td><td class="px-6 py-4 whitespace-nowrap"><div class="text-sm text-gray-600">${ssrInterpolate(user.email)}</div></td><td class="px-6 py-4 whitespace-nowrap"><div class="text-sm text-gray-600">${ssrInterpolate(user.phone || "-")}</div></td><td class="px-6 py-4 whitespace-nowrap"><select class="${ssrRenderClass([{
"bg-red-50 border-red-300": user.role === "admin",
"bg-blue-50 border-blue-300": user.role === "vorstand",
"bg-gray-50 border-gray-300": user.role === "mitglied"
}, "px-3 py-1 border border-gray-300 rounded text-sm"])}"><option value="mitglied"${ssrIncludeBooleanAttr(Array.isArray(user.role) ? ssrLooseContain(user.role, "mitglied") : ssrLooseEqual(user.role, "mitglied")) ? " selected" : ""}>Mitglied</option><option value="vorstand"${ssrIncludeBooleanAttr(Array.isArray(user.role) ? ssrLooseContain(user.role, "vorstand") : ssrLooseEqual(user.role, "vorstand")) ? " selected" : ""}>Vorstand</option><option value="admin"${ssrIncludeBooleanAttr(Array.isArray(user.role) ? ssrLooseContain(user.role, "admin") : ssrLooseEqual(user.role, "admin")) ? " selected" : ""}>Administrator</option></select></td><td class="px-6 py-4 whitespace-nowrap"><div class="text-sm text-gray-600">${ssrInterpolate(user.lastLogin ? formatDate(user.lastLogin) : "Nie")}</div></td><td class="px-6 py-4 whitespace-nowrap text-right text-sm">`);
if (user.id !== currentUserId.value) {
_push(`<button class="text-red-600 hover:text-red-800 font-medium"> Deaktivieren </button>`);
} else {
_push(`<span class="text-gray-400">Eigenes Konto</span>`);
}
_push(`</td></tr>`);
});
_push(`<!--]--></tbody></table></div></div>`);
if (successMessage.value) {
_push(`<div class="fixed bottom-20 right-4 bg-green-50 border border-green-200 rounded-lg p-4 shadow-lg"><p class="text-sm text-green-800 flex items-center">`);
_push(ssrRenderComponent(unref(Check), {
size: 18,
class: "mr-2"
}, null, _parent));
_push(` ${ssrInterpolate(successMessage.value)}</p></div>`);
} else {
_push(`<!---->`);
}
if (errorMessage.value) {
_push(`<div class="fixed bottom-20 right-4 bg-red-50 border border-red-200 rounded-lg p-4 shadow-lg"><p class="text-sm text-red-800 flex items-center">`);
_push(ssrRenderComponent(unref(AlertCircle), {
size: 18,
class: "mr-2"
}, null, _parent));
_push(` ${ssrInterpolate(errorMessage.value)}</p></div>`);
} else {
_push(`<!---->`);
}
_push(`</div></div>`);
};
}
};
const _sfc_setup = _sfc_main.setup;
_sfc_main.setup = (props, ctx) => {
const ssrContext = useSSRContext();
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/cms/benutzer.vue");
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
};
export { _sfc_main as default };
//# sourceMappingURL=benutzer-CEqkQsLi.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"benutzer-CEqkQsLi.mjs","sources":["../../../../pages/cms/benutzer.vue"],"sourcesContent":null,"names":["_ssrRenderAttrs","_mergeProps","_push","_parent","_ssrInterpolate","_ssrRenderList","_ssrIncludeBooleanAttr","_ssrLooseContain","_ssrLooseEqual"],"mappings":"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"}

View File

@@ -0,0 +1,779 @@
const client_manifest = {
"_B4mSF5Ac.js": {
"resourceType": "script",
"module": true,
"prefetch": true,
"preload": true,
"file": "B4mSF5Ac.js",
"name": "target",
"imports": [
"node_modules/nuxt/dist/app/entry.js"
]
},
"_BteKZQ9T.js": {
"resourceType": "script",
"module": true,
"prefetch": true,
"preload": true,
"file": "BteKZQ9T.js",
"name": "file-text",
"imports": [
"node_modules/nuxt/dist/app/entry.js"
]
},
"_C5SyyWEb.js": {
"resourceType": "script",
"module": true,
"prefetch": true,
"preload": true,
"file": "C5SyyWEb.js",
"name": "map-pin",
"imports": [
"node_modules/nuxt/dist/app/entry.js"
]
},
"_C8kQt0fa.js": {
"resourceType": "script",
"module": true,
"prefetch": true,
"preload": true,
"file": "C8kQt0fa.js",
"name": "alert-circle",
"imports": [
"node_modules/nuxt/dist/app/entry.js"
]
},
"_CUq_0rkE.js": {
"resourceType": "script",
"module": true,
"prefetch": true,
"preload": true,
"file": "CUq_0rkE.js",
"name": "loader-2",
"imports": [
"node_modules/nuxt/dist/app/entry.js"
]
},
"_CWEkTB1z.js": {
"resourceType": "script",
"module": true,
"prefetch": true,
"preload": true,
"file": "CWEkTB1z.js",
"name": "heart",
"imports": [
"node_modules/nuxt/dist/app/entry.js"
]
},
"_CkzaQq3X.js": {
"resourceType": "script",
"module": true,
"prefetch": true,
"preload": true,
"file": "CkzaQq3X.js",
"name": "book-open",
"imports": [
"node_modules/nuxt/dist/app/entry.js"
]
},
"_CrCcIvVp.js": {
"resourceType": "script",
"module": true,
"prefetch": true,
"preload": true,
"file": "CrCcIvVp.js",
"name": "trophy",
"imports": [
"node_modules/nuxt/dist/app/entry.js"
]
},
"_Cx4UcKGu.js": {
"resourceType": "script",
"module": true,
"prefetch": true,
"preload": true,
"file": "Cx4UcKGu.js",
"name": "external-link",
"imports": [
"node_modules/nuxt/dist/app/entry.js"
]
},
"_Czdc6-TI.js": {
"resourceType": "script",
"module": true,
"prefetch": true,
"preload": true,
"file": "Czdc6-TI.js",
"name": "eye",
"imports": [
"node_modules/nuxt/dist/app/entry.js"
]
},
"_DAACT36i.js": {
"resourceType": "script",
"module": true,
"prefetch": true,
"preload": true,
"file": "DAACT36i.js",
"name": "newspaper",
"imports": [
"node_modules/nuxt/dist/app/entry.js"
]
},
"_DaSgy0Cl.js": {
"resourceType": "script",
"module": true,
"prefetch": true,
"preload": true,
"file": "DaSgy0Cl.js",
"name": "check",
"imports": [
"node_modules/nuxt/dist/app/entry.js"
]
},
"_DkeYb0_S.js": {
"resourceType": "script",
"module": true,
"prefetch": true,
"preload": true,
"file": "DkeYb0_S.js",
"name": "users",
"imports": [
"node_modules/nuxt/dist/app/entry.js"
]
},
"_DlAUqK2U.js": {
"resourceType": "script",
"module": true,
"prefetch": true,
"preload": true,
"file": "DlAUqK2U.js",
"name": "_plugin-vue_export-helper"
},
"_Qy3ajxTk.js": {
"resourceType": "script",
"module": true,
"prefetch": true,
"preload": true,
"file": "Qy3ajxTk.js",
"name": "composables",
"imports": [
"node_modules/nuxt/dist/app/entry.js"
]
},
"_XZ6RV9KH.js": {
"resourceType": "script",
"module": true,
"prefetch": true,
"preload": true,
"file": "XZ6RV9KH.js",
"name": "star",
"imports": [
"node_modules/nuxt/dist/app/entry.js"
]
},
"_YJHbYJtA.js": {
"resourceType": "script",
"module": true,
"prefetch": true,
"preload": true,
"file": "YJHbYJtA.js",
"name": "calendar",
"imports": [
"node_modules/nuxt/dist/app/entry.js"
]
},
"_jVj3QaoK.js": {
"resourceType": "script",
"module": true,
"prefetch": true,
"preload": true,
"file": "jVj3QaoK.js",
"name": "bar-chart",
"imports": [
"node_modules/nuxt/dist/app/entry.js"
]
},
"assets/images/logos/Harheimer TC.svg": {
"resourceType": "image",
"prefetch": true,
"mimeType": "image/svg+xml",
"file": "Harheimer TC.CKfYAfp1.svg",
"src": "assets/images/logos/Harheimer TC.svg"
},
"middleware/auth.js": {
"resourceType": "script",
"module": true,
"prefetch": true,
"preload": true,
"file": "DIYnFFZd.js",
"name": "auth",
"src": "middleware/auth.js",
"isDynamicEntry": true,
"imports": [
"node_modules/nuxt/dist/app/entry.js"
]
},
"node_modules/nuxt/dist/app/components/error-404.vue": {
"resourceType": "script",
"module": true,
"prefetch": true,
"preload": true,
"file": "ZrOCUSmD.js",
"name": "error-404",
"src": "node_modules/nuxt/dist/app/components/error-404.vue",
"isDynamicEntry": true,
"imports": [
"node_modules/nuxt/dist/app/entry.js",
"_DlAUqK2U.js",
"_Qy3ajxTk.js"
],
"css": []
},
"error-404.CbXQcqJW.css": {
"file": "error-404.CbXQcqJW.css",
"resourceType": "style",
"prefetch": true,
"preload": true
},
"node_modules/nuxt/dist/app/components/error-500.vue": {
"resourceType": "script",
"module": true,
"prefetch": true,
"preload": true,
"file": "BVRiFo7f.js",
"name": "error-500",
"src": "node_modules/nuxt/dist/app/components/error-500.vue",
"isDynamicEntry": true,
"imports": [
"_DlAUqK2U.js",
"_Qy3ajxTk.js",
"node_modules/nuxt/dist/app/entry.js"
],
"css": []
},
"error-500.L485xXhD.css": {
"file": "error-500.L485xXhD.css",
"resourceType": "style",
"prefetch": true,
"preload": true
},
"node_modules/nuxt/dist/app/entry.js": {
"resourceType": "script",
"module": true,
"prefetch": true,
"preload": true,
"file": "DI2PgNgB.js",
"name": "entry",
"src": "node_modules/nuxt/dist/app/entry.js",
"isEntry": true,
"dynamicImports": [
"middleware/auth.js",
"node_modules/nuxt/dist/app/components/error-404.vue",
"node_modules/nuxt/dist/app/components/error-500.vue"
],
"css": [
"entry.ldOScqNk.css"
],
"assets": [
"Harheimer TC.CKfYAfp1.svg"
]
},
"entry.ldOScqNk.css": {
"file": "entry.ldOScqNk.css",
"resourceType": "style",
"prefetch": true,
"preload": true
},
"Harheimer TC.CKfYAfp1.svg": {
"file": "Harheimer TC.CKfYAfp1.svg",
"resourceType": "image",
"prefetch": true,
"mimeType": "image/svg+xml"
},
"pages/anlagen.vue": {
"resourceType": "script",
"module": true,
"prefetch": true,
"preload": true,
"file": "B8JkES4d.js",
"name": "anlagen",
"src": "pages/anlagen.vue",
"isDynamicEntry": true,
"imports": [
"node_modules/nuxt/dist/app/entry.js",
"_Qy3ajxTk.js"
]
},
"pages/cms/benutzer.vue": {
"resourceType": "script",
"module": true,
"prefetch": true,
"preload": true,
"file": "Cb5SbJ0y.js",
"name": "benutzer",
"src": "pages/cms/benutzer.vue",
"isDynamicEntry": true,
"imports": [
"node_modules/nuxt/dist/app/entry.js",
"_Qy3ajxTk.js",
"_C8kQt0fa.js",
"_DaSgy0Cl.js"
]
},
"pages/cms/index.vue": {
"resourceType": "script",
"module": true,
"prefetch": true,
"preload": true,
"file": "CNvcEwxd.js",
"name": "index",
"src": "pages/cms/index.vue",
"isDynamicEntry": true,
"imports": [
"node_modules/nuxt/dist/app/entry.js",
"_Qy3ajxTk.js",
"_YJHbYJtA.js",
"_DAACT36i.js",
"_BteKZQ9T.js",
"_DkeYb0_S.js"
]
},
"pages/galerie.vue": {
"resourceType": "script",
"module": true,
"prefetch": true,
"preload": true,
"file": "0xufrPn-.js",
"name": "galerie",
"src": "pages/galerie.vue",
"isDynamicEntry": true,
"imports": [
"node_modules/nuxt/dist/app/entry.js",
"_Qy3ajxTk.js"
]
},
"pages/geschichte.vue": {
"resourceType": "script",
"module": true,
"prefetch": true,
"preload": true,
"file": "CHQH_CwJ.js",
"name": "geschichte",
"src": "pages/geschichte.vue",
"isDynamicEntry": true,
"imports": [
"_Qy3ajxTk.js",
"node_modules/nuxt/dist/app/entry.js"
]
},
"pages/impressum.vue": {
"resourceType": "script",
"module": true,
"prefetch": true,
"preload": true,
"file": "DQ89_Lrx.js",
"name": "impressum",
"src": "pages/impressum.vue",
"isDynamicEntry": true,
"imports": [
"node_modules/nuxt/dist/app/entry.js",
"_Qy3ajxTk.js",
"_BteKZQ9T.js",
"_Czdc6-TI.js"
]
},
"pages/index.vue": {
"resourceType": "script",
"module": true,
"prefetch": true,
"preload": true,
"file": "DuCL6zMI.js",
"name": "index",
"src": "pages/index.vue",
"isDynamicEntry": true,
"imports": [
"node_modules/nuxt/dist/app/entry.js",
"_YJHbYJtA.js",
"_DlAUqK2U.js"
],
"css": [
"index.BYYJS8tV.css"
]
},
"index.BYYJS8tV.css": {
"file": "index.BYYJS8tV.css",
"resourceType": "style",
"prefetch": true,
"preload": true
},
"pages/kontakt.vue": {
"resourceType": "script",
"module": true,
"prefetch": true,
"preload": true,
"file": "CFErkncy.js",
"name": "kontakt",
"src": "pages/kontakt.vue",
"isDynamicEntry": true,
"imports": [
"node_modules/nuxt/dist/app/entry.js",
"_C5SyyWEb.js",
"_C8kQt0fa.js",
"_Qy3ajxTk.js"
]
},
"pages/login.vue": {
"resourceType": "script",
"module": true,
"prefetch": true,
"preload": true,
"file": "CKjxMu8n.js",
"name": "login",
"src": "pages/login.vue",
"isDynamicEntry": true,
"imports": [
"node_modules/nuxt/dist/app/entry.js",
"_Qy3ajxTk.js",
"_C8kQt0fa.js",
"_DaSgy0Cl.js",
"_CUq_0rkE.js"
]
},
"pages/mannschaften/[slug].vue": {
"resourceType": "script",
"module": true,
"prefetch": true,
"preload": true,
"file": "D54FZQPM.js",
"name": "_slug_",
"src": "pages/mannschaften/[slug].vue",
"isDynamicEntry": true,
"imports": [
"node_modules/nuxt/dist/app/entry.js",
"_Qy3ajxTk.js",
"_jVj3QaoK.js"
]
},
"pages/mannschaften/damen.vue": {
"resourceType": "script",
"module": true,
"prefetch": true,
"preload": true,
"file": "48ve60fm.js",
"name": "damen",
"src": "pages/mannschaften/damen.vue",
"isDynamicEntry": true,
"imports": [
"node_modules/nuxt/dist/app/entry.js",
"_Qy3ajxTk.js"
]
},
"pages/mannschaften/herren.vue": {
"resourceType": "script",
"module": true,
"prefetch": true,
"preload": true,
"file": "BQ1JAN-t.js",
"name": "herren",
"src": "pages/mannschaften/herren.vue",
"isDynamicEntry": true,
"imports": [
"_Qy3ajxTk.js",
"node_modules/nuxt/dist/app/entry.js"
]
},
"pages/mannschaften/index.vue": {
"resourceType": "script",
"module": true,
"prefetch": true,
"preload": true,
"file": "H0vOWBHN.js",
"name": "index",
"src": "pages/mannschaften/index.vue",
"isDynamicEntry": true,
"imports": [
"node_modules/nuxt/dist/app/entry.js",
"_jVj3QaoK.js",
"_DkeYb0_S.js",
"_Qy3ajxTk.js"
]
},
"pages/mannschaften/jugend.vue": {
"resourceType": "script",
"module": true,
"prefetch": true,
"preload": true,
"file": "BWWcyQAZ.js",
"name": "jugend",
"src": "pages/mannschaften/jugend.vue",
"isDynamicEntry": true,
"imports": [
"node_modules/nuxt/dist/app/entry.js",
"_Qy3ajxTk.js"
]
},
"pages/mannschaften/spielplaene.vue": {
"resourceType": "script",
"module": true,
"prefetch": true,
"preload": true,
"file": "BJFIhPLo.js",
"name": "spielplaene",
"src": "pages/mannschaften/spielplaene.vue",
"isDynamicEntry": true,
"imports": [
"_Qy3ajxTk.js",
"_BteKZQ9T.js",
"node_modules/nuxt/dist/app/entry.js",
"_Cx4UcKGu.js"
]
},
"pages/mitgliederbereich/index.vue": {
"resourceType": "script",
"module": true,
"prefetch": true,
"preload": true,
"file": "BTRcaDI_.js",
"name": "index",
"src": "pages/mitgliederbereich/index.vue",
"isDynamicEntry": true,
"imports": [
"node_modules/nuxt/dist/app/entry.js",
"_Qy3ajxTk.js",
"_DkeYb0_S.js",
"_DAACT36i.js",
"_DaSgy0Cl.js"
]
},
"pages/mitgliederbereich/profil.vue": {
"resourceType": "script",
"module": true,
"prefetch": true,
"preload": true,
"file": "B-ZRDHEi.js",
"name": "profil",
"src": "pages/mitgliederbereich/profil.vue",
"isDynamicEntry": true,
"imports": [
"node_modules/nuxt/dist/app/entry.js",
"_Qy3ajxTk.js",
"_CUq_0rkE.js",
"_C8kQt0fa.js",
"_DaSgy0Cl.js"
]
},
"pages/mitgliedschaft.vue": {
"resourceType": "script",
"module": true,
"prefetch": true,
"preload": true,
"file": "Be7mAYpw.js",
"name": "mitgliedschaft",
"src": "pages/mitgliedschaft.vue",
"isDynamicEntry": true,
"imports": [
"node_modules/nuxt/dist/app/entry.js",
"_DaSgy0Cl.js",
"_XZ6RV9KH.js",
"_CWEkTB1z.js",
"_BteKZQ9T.js",
"_Czdc6-TI.js",
"_Qy3ajxTk.js"
]
},
"pages/passwort-vergessen.vue": {
"resourceType": "script",
"module": true,
"prefetch": true,
"preload": true,
"file": "DK8ar2Vw.js",
"name": "passwort-vergessen",
"src": "pages/passwort-vergessen.vue",
"isDynamicEntry": true,
"imports": [
"node_modules/nuxt/dist/app/entry.js",
"_Qy3ajxTk.js",
"_C8kQt0fa.js",
"_DaSgy0Cl.js",
"_CUq_0rkE.js"
]
},
"pages/registrieren.vue": {
"resourceType": "script",
"module": true,
"prefetch": true,
"preload": true,
"file": "BpG5pLwY.js",
"name": "registrieren",
"src": "pages/registrieren.vue",
"isDynamicEntry": true,
"imports": [
"node_modules/nuxt/dist/app/entry.js",
"_Qy3ajxTk.js",
"_C8kQt0fa.js",
"_DaSgy0Cl.js",
"_CUq_0rkE.js"
]
},
"pages/satzung.vue": {
"resourceType": "script",
"module": true,
"prefetch": true,
"preload": true,
"file": "DaUHoOti.js",
"name": "satzung",
"src": "pages/satzung.vue",
"isDynamicEntry": true,
"imports": [
"_Qy3ajxTk.js",
"_BteKZQ9T.js",
"node_modules/nuxt/dist/app/entry.js"
]
},
"pages/spielsysteme.vue": {
"resourceType": "script",
"module": true,
"prefetch": true,
"preload": true,
"file": "BneZCqgq.js",
"name": "spielsysteme",
"src": "pages/spielsysteme.vue",
"isDynamicEntry": true,
"imports": [
"_Qy3ajxTk.js",
"_DkeYb0_S.js",
"_YJHbYJtA.js",
"node_modules/nuxt/dist/app/entry.js",
"_XZ6RV9KH.js",
"_CkzaQq3X.js",
"_Cx4UcKGu.js"
]
},
"pages/termine.vue": {
"resourceType": "script",
"module": true,
"prefetch": true,
"preload": true,
"file": "CUVZhO0q.js",
"name": "termine",
"src": "pages/termine.vue",
"isDynamicEntry": true,
"imports": [
"_Qy3ajxTk.js",
"_YJHbYJtA.js",
"node_modules/nuxt/dist/app/entry.js"
]
},
"pages/training/anfaenger.vue": {
"resourceType": "script",
"module": true,
"prefetch": true,
"preload": true,
"file": "tnJjxGC6.js",
"name": "anfaenger",
"src": "pages/training/anfaenger.vue",
"isDynamicEntry": true,
"imports": [
"node_modules/nuxt/dist/app/entry.js",
"_Qy3ajxTk.js",
"_DaSgy0Cl.js"
]
},
"pages/training/index.vue": {
"resourceType": "script",
"module": true,
"prefetch": true,
"preload": true,
"file": "y9BE7jdd.js",
"name": "index",
"src": "pages/training/index.vue",
"isDynamicEntry": true,
"imports": [
"node_modules/nuxt/dist/app/entry.js",
"_Qy3ajxTk.js",
"_C5SyyWEb.js"
]
},
"pages/training/trainer.vue": {
"resourceType": "script",
"module": true,
"prefetch": true,
"preload": true,
"file": "C0jrEzGC.js",
"name": "trainer",
"src": "pages/training/trainer.vue",
"isDynamicEntry": true,
"imports": [
"_Qy3ajxTk.js",
"node_modules/nuxt/dist/app/entry.js"
]
},
"pages/tt-regeln.vue": {
"resourceType": "script",
"module": true,
"prefetch": true,
"preload": true,
"file": "rZgF5GAr.js",
"name": "tt-regeln",
"src": "pages/tt-regeln.vue",
"isDynamicEntry": true,
"imports": [
"_Qy3ajxTk.js",
"node_modules/nuxt/dist/app/entry.js",
"_BteKZQ9T.js",
"_B4mSF5Ac.js",
"_CrCcIvVp.js",
"_DkeYb0_S.js",
"_CkzaQq3X.js"
]
},
"pages/ueber-uns.vue": {
"resourceType": "script",
"module": true,
"prefetch": true,
"preload": true,
"file": "RGsuuLA3.js",
"name": "ueber-uns",
"src": "pages/ueber-uns.vue",
"isDynamicEntry": true,
"imports": [
"node_modules/nuxt/dist/app/entry.js",
"_CWEkTB1z.js",
"_B4mSF5Ac.js",
"_Qy3ajxTk.js"
]
},
"pages/vereinsmeisterschaften.vue": {
"resourceType": "script",
"module": true,
"prefetch": true,
"preload": true,
"file": "BLJfiAQ_.js",
"name": "vereinsmeisterschaften",
"src": "pages/vereinsmeisterschaften.vue",
"isDynamicEntry": true,
"imports": [
"_Qy3ajxTk.js",
"_CrCcIvVp.js",
"node_modules/nuxt/dist/app/entry.js"
]
},
"pages/vorstand.vue": {
"resourceType": "script",
"module": true,
"prefetch": true,
"preload": true,
"file": "BkTrhdjg.js",
"name": "vorstand",
"src": "pages/vorstand.vue",
"isDynamicEntry": true,
"imports": [
"_Qy3ajxTk.js",
"node_modules/nuxt/dist/app/entry.js"
]
}
};
export { client_manifest as default };
//# sourceMappingURL=client.manifest.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"client.manifest.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/client.manifest.mjs"],"sourcesContent":null,"names":[],"mappings":"","x_google_ignoreList":[0]}

View File

@@ -0,0 +1,23 @@
import { hasInjectionContext, inject } from 'vue';
import { b as useNuxtApp } from './server.mjs';
import { u as useHead$1, h as headSymbol } from '../routes/renderer.mjs';
function injectHead(nuxtApp) {
const nuxt = nuxtApp || useNuxtApp();
return nuxt.ssrContext?.head || nuxt.runWithContext(() => {
if (hasInjectionContext()) {
const head = inject(headSymbol);
if (!head) {
throw new Error("[nuxt] [unhead] Missing Unhead instance.");
}
return head;
}
});
}
function useHead(input, options = {}) {
const head = options.head || injectHead(options.nuxt);
return useHead$1(input, { head, ...options });
}
export { useHead as u };
//# sourceMappingURL=composables-CK-Mp9jS.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"composables-CK-Mp9jS.mjs","sources":["../../../../node_modules/nuxt/dist/head/runtime/composables.js"],"sourcesContent":null,"names":["headCore"],"mappings":"","x_google_ignoreList":[0]}

View File

@@ -0,0 +1,60 @@
import { _ as __nuxt_component_0$1 } from './server.mjs';
import { mergeProps, withCtx, createTextVNode, useSSRContext } from 'vue';
import { ssrRenderAttrs, ssrRenderComponent } from 'vue/server-renderer';
import { u as useHead } from './composables-CK-Mp9jS.mjs';
import '../nitro/nitro.mjs';
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 '../routes/renderer.mjs';
import 'vue-bundle-renderer/runtime';
import 'unhead/server';
import 'devalue';
import 'unhead/utils';
import 'pinia';
import 'vue-router';
import 'lucide-vue-next';
const _sfc_main = {
__name: "damen",
__ssrInlineRender: true,
setup(__props) {
useHead({
title: "Damenmannschaft - Harheimer TC"
});
return (_ctx, _push, _parent, _attrs) => {
const _component_NuxtLink = __nuxt_component_0$1;
_push(`<div${ssrRenderAttrs(mergeProps({ class: "min-h-full py-16 bg-gray-50" }, _attrs))}><div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"><h1 class="text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-6"> Damenmannschaft </h1><div class="w-24 h-1 bg-primary-600 mb-8"></div><div class="bg-white p-8 rounded-xl shadow-lg"><h3 class="text-2xl font-display font-bold text-gray-900 mb-4">1. Damen</h3><p class="text-gray-600 mb-4">Liga: Bezirksliga</p><p class="text-gray-600 mb-6">Mannschaftsführerin: Name folgt</p><div class="mt-8"><h4 class="text-lg font-semibold text-gray-900 mb-4">Wir suchen Verstärkung!</h4><p class="text-gray-600 mb-4"> Unsere Damenmannschaft freut sich über neue Spielerinnen. Interessiert? Dann melde dich bei uns! </p>`);
_push(ssrRenderComponent(_component_NuxtLink, {
to: "/kontakt",
class: "inline-flex items-center px-6 py-3 bg-primary-600 hover:bg-primary-700 text-white font-semibold rounded-lg transition-colors"
}, {
default: withCtx((_, _push2, _parent2, _scopeId) => {
if (_push2) {
_push2(` Kontakt aufnehmen `);
} else {
return [
createTextVNode(" Kontakt aufnehmen ")
];
}
}),
_: 1
}, _parent));
_push(`</div></div></div></div>`);
};
}
};
const _sfc_setup = _sfc_main.setup;
_sfc_main.setup = (props, ctx) => {
const ssrContext = useSSRContext();
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/mannschaften/damen.vue");
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
};
export { _sfc_main as default };
//# sourceMappingURL=damen-DuM0biIS.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"damen-DuM0biIS.mjs","sources":["../../../../pages/mannschaften/damen.vue"],"sourcesContent":null,"names":["_ssrRenderAttrs","_mergeProps","_push","_parent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AA+BA,IAAA,OAAA,CAAQ;AAAA,MACN,KAAA,EAAO;AAAA,KACR,CAAA;;;AAhCM,MAAA,KAAA,CAAA,CAAA,IAAA,EAAAA,eAAAC,UAAAA,CAAA,EAAA,OAAM,6BAAA,EAAA,EAA6B,MAAA,CAAA,CAAA,CAAA,4pBAAA,CAAA,CAAA;;QAkB9B,EAAA,EAAG,UAAA;AAAA,QACH,KAAA,EAAM;AAAA,OAAA,EAAA;yBAFR,CAKW,CAAA,EAAAC,MAAAA,EAAAC,QAAAA,EAAA,QAAA,KAAA;;;;;8BAFV,qBAED;AAAA,aAAA;;;;;;;;;;;;;;;;;;"}

View File

@@ -0,0 +1,95 @@
import { _ as __nuxt_component_0$1 } from './server.mjs';
import { useSSRContext, mergeProps, withCtx, createTextVNode, toDisplayString } from 'vue';
import { ssrRenderAttrs, ssrInterpolate, ssrRenderComponent } from 'vue/server-renderer';
import { _ as _export_sfc } from './_plugin-vue_export-helper-1tPrXgE0.mjs';
import { u as useHead } from './composables-CK-Mp9jS.mjs';
import '../nitro/nitro.mjs';
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 '../routes/renderer.mjs';
import 'vue-bundle-renderer/runtime';
import 'unhead/server';
import 'devalue';
import 'unhead/utils';
import 'pinia';
import 'vue-router';
import 'lucide-vue-next';
const _sfc_main = {
__name: "error-404",
__ssrInlineRender: true,
props: {
appName: {
type: String,
default: "Nuxt"
},
statusCode: {
type: Number,
default: 404
},
statusMessage: {
type: String,
default: "Page not found"
},
description: {
type: String,
default: "Sorry, the page you are looking for could not be found."
},
backHome: {
type: String,
default: "Go back home"
}
},
setup(__props) {
const props = __props;
useHead({
title: `${props.statusCode} - ${props.statusMessage} | ${props.appName}`,
script: [
{
innerHTML: `!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver(e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`
}
],
style: [
{
innerHTML: `*,:after,:before{border-color:var(--un-default-border-color,#e5e7eb);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}h1,h2{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}h1,h2,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }`
}
]
});
return (_ctx, _push, _parent, _attrs) => {
const _component_NuxtLink = __nuxt_component_0$1;
_push(`<div${ssrRenderAttrs(mergeProps({ class: "antialiased bg-white dark:bg-[#020420] dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-[#020420] tracking-wide" }, _attrs))} data-v-b728498f><div class="max-w-520px text-center" data-v-b728498f><h1 class="font-semibold leading-none mb-4 sm:text-[110px] tabular-nums text-[80px]" data-v-b728498f>${ssrInterpolate(__props.statusCode)}</h1><h2 class="font-semibold mb-2 sm:text-3xl text-2xl" data-v-b728498f>${ssrInterpolate(__props.statusMessage)}</h2><p class="mb-4 px-2 text-[#64748B] text-md" data-v-b728498f>${ssrInterpolate(__props.description)}</p><div class="flex items-center justify-center w-full" data-v-b728498f>`);
_push(ssrRenderComponent(_component_NuxtLink, {
to: "/",
class: "font-medium hover:text-[#00DC82] text-sm underline underline-offset-3"
}, {
default: withCtx((_, _push2, _parent2, _scopeId) => {
if (_push2) {
_push2(`${ssrInterpolate(__props.backHome)}`);
} else {
return [
createTextVNode(toDisplayString(__props.backHome), 1)
];
}
}),
_: 1
}, _parent));
_push(`</div></div></div>`);
};
}
};
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/error-404.vue");
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
};
const error404 = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-b728498f"]]);
export { error404 as default };
//# sourceMappingURL=error-404-DndCdOwS.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"error-404-DndCdOwS.mjs","sources":["../../../../node_modules/nuxt/dist/app/components/error-404.vue"],"sourcesContent":null,"names":["_ssrRenderAttrs","_mergeProps","_push","_parent"],"mappings":"","x_google_ignoreList":[0]}

View File

@@ -0,0 +1,8 @@
const error404_vue_vue_type_style_index_0_scoped_b728498f_lang = ".grid[data-v-b728498f]{display:grid}.mb-2[data-v-b728498f]{margin-bottom:.5rem}.mb-4[data-v-b728498f]{margin-bottom:1rem}.max-w-520px[data-v-b728498f]{max-width:520px}.min-h-screen[data-v-b728498f]{min-height:100vh}.w-full[data-v-b728498f]{width:100%}.flex[data-v-b728498f]{display:flex}.place-content-center[data-v-b728498f]{place-content:center}.items-center[data-v-b728498f]{align-items:center}.justify-center[data-v-b728498f]{justify-content:center}.overflow-hidden[data-v-b728498f]{overflow:hidden}.bg-white[data-v-b728498f]{--un-bg-opacity:1;background-color:rgb(255 255 255/var(--un-bg-opacity))}.px-2[data-v-b728498f]{padding-left:.5rem;padding-right:.5rem}.text-center[data-v-b728498f]{text-align:center}.text-\\[80px\\][data-v-b728498f]{font-size:80px}.text-2xl[data-v-b728498f]{font-size:1.5rem;line-height:2rem}.text-sm[data-v-b728498f]{font-size:.875rem;line-height:1.25rem}.text-\\[\\#020420\\][data-v-b728498f]{--un-text-opacity:1;color:rgb(2 4 32/var(--un-text-opacity))}.text-\\[\\#64748B\\][data-v-b728498f]{--un-text-opacity:1;color:rgb(100 116 139/var(--un-text-opacity))}.hover\\:text-\\[\\#00DC82\\][data-v-b728498f]:hover{--un-text-opacity:1;color:rgb(0 220 130/var(--un-text-opacity))}.font-medium[data-v-b728498f]{font-weight:500}.font-semibold[data-v-b728498f]{font-weight:600}.leading-none[data-v-b728498f]{line-height:1}.tracking-wide[data-v-b728498f]{letter-spacing:.025em}.font-sans[data-v-b728498f]{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.tabular-nums[data-v-b728498f]{--un-numeric-spacing:tabular-nums;font-variant-numeric:var(--un-ordinal) var(--un-slashed-zero) var(--un-numeric-figure) var(--un-numeric-spacing) var(--un-numeric-fraction)}.underline[data-v-b728498f]{text-decoration-line:underline}.underline-offset-3[data-v-b728498f]{text-underline-offset:3px}.antialiased[data-v-b728498f]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media(prefers-color-scheme:dark){.dark\\:bg-\\[\\#020420\\][data-v-b728498f]{--un-bg-opacity:1;background-color:rgb(2 4 32/var(--un-bg-opacity))}.dark\\:text-white[data-v-b728498f]{--un-text-opacity:1;color:rgb(255 255 255/var(--un-text-opacity))}}@media(min-width:640px){.sm\\:text-\\[110px\\][data-v-b728498f]{font-size:110px}.sm\\:text-3xl[data-v-b728498f]{font-size:1.875rem;line-height:2.25rem}}";
const error404Styles_BsF5Lbhq = [
error404_vue_vue_type_style_index_0_scoped_b728498f_lang
];
export { error404Styles_BsF5Lbhq as default };
//# sourceMappingURL=error-404-styles.BsF5Lbhq.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"error-404-styles.BsF5Lbhq.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/error-404-styles.BsF5Lbhq.mjs"],"sourcesContent":null,"names":["style_0"],"mappings":"","x_google_ignoreList":[0]}

View File

@@ -0,0 +1,78 @@
import { mergeProps, useSSRContext } from 'vue';
import { ssrRenderAttrs, ssrInterpolate } from 'vue/server-renderer';
import { _ as _export_sfc } from './_plugin-vue_export-helper-1tPrXgE0.mjs';
import { u as useHead } from './composables-CK-Mp9jS.mjs';
import './server.mjs';
import '../nitro/nitro.mjs';
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 '../routes/renderer.mjs';
import 'vue-bundle-renderer/runtime';
import 'unhead/server';
import 'devalue';
import 'unhead/utils';
import 'pinia';
import 'vue-router';
import 'lucide-vue-next';
const _sfc_main = {
__name: "error-500",
__ssrInlineRender: true,
props: {
appName: {
type: String,
default: "Nuxt"
},
statusCode: {
type: Number,
default: 500
},
statusMessage: {
type: String,
default: "Internal server error"
},
description: {
type: String,
default: "This page is temporarily unavailable."
},
refresh: {
type: String,
default: "Refresh this page"
}
},
setup(__props) {
const props = __props;
useHead({
title: `${props.statusCode} - ${props.statusMessage} | ${props.appName}`,
script: [
{
innerHTML: `!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver(e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`
}
],
style: [
{
innerHTML: `*,:after,:before{border-color:var(--un-default-border-color,#e5e7eb);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}h1,h2{font-size:inherit;font-weight:inherit}h1,h2,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }`
}
]
});
return (_ctx, _push, _parent, _attrs) => {
_push(`<div${ssrRenderAttrs(mergeProps({ class: "antialiased bg-white dark:bg-[#020420] dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-[#020420] tracking-wide" }, _attrs))} data-v-70d84538><div class="max-w-520px text-center" data-v-70d84538><h1 class="font-semibold leading-none mb-4 sm:text-[110px] tabular-nums text-[80px]" data-v-70d84538>${ssrInterpolate(__props.statusCode)}</h1><h2 class="font-semibold mb-2 sm:text-3xl text-2xl" data-v-70d84538>${ssrInterpolate(__props.statusMessage)}</h2><p class="mb-4 px-2 text-[#64748B] text-md" data-v-70d84538>${ssrInterpolate(__props.description)}</p></div></div>`);
};
}
};
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/error-500.vue");
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
};
const error500 = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-70d84538"]]);
export { error500 as default };
//# sourceMappingURL=error-500-BP06ycvf.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"error-500-BP06ycvf.mjs","sources":["../../../../node_modules/nuxt/dist/app/components/error-500.vue"],"sourcesContent":null,"names":["_ssrRenderAttrs","_mergeProps"],"mappings":"","x_google_ignoreList":[0]}

View File

@@ -0,0 +1,8 @@
const error500_vue_vue_type_style_index_0_scoped_70d84538_lang = ".grid[data-v-70d84538]{display:grid}.mb-2[data-v-70d84538]{margin-bottom:.5rem}.mb-4[data-v-70d84538]{margin-bottom:1rem}.max-w-520px[data-v-70d84538]{max-width:520px}.min-h-screen[data-v-70d84538]{min-height:100vh}.place-content-center[data-v-70d84538]{place-content:center}.overflow-hidden[data-v-70d84538]{overflow:hidden}.bg-white[data-v-70d84538]{--un-bg-opacity:1;background-color:rgb(255 255 255/var(--un-bg-opacity))}.px-2[data-v-70d84538]{padding-left:.5rem;padding-right:.5rem}.text-center[data-v-70d84538]{text-align:center}.text-\\[80px\\][data-v-70d84538]{font-size:80px}.text-2xl[data-v-70d84538]{font-size:1.5rem;line-height:2rem}.text-\\[\\#020420\\][data-v-70d84538]{--un-text-opacity:1;color:rgb(2 4 32/var(--un-text-opacity))}.text-\\[\\#64748B\\][data-v-70d84538]{--un-text-opacity:1;color:rgb(100 116 139/var(--un-text-opacity))}.font-semibold[data-v-70d84538]{font-weight:600}.leading-none[data-v-70d84538]{line-height:1}.tracking-wide[data-v-70d84538]{letter-spacing:.025em}.font-sans[data-v-70d84538]{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.tabular-nums[data-v-70d84538]{--un-numeric-spacing:tabular-nums;font-variant-numeric:var(--un-ordinal) var(--un-slashed-zero) var(--un-numeric-figure) var(--un-numeric-spacing) var(--un-numeric-fraction)}.antialiased[data-v-70d84538]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media(prefers-color-scheme:dark){.dark\\:bg-\\[\\#020420\\][data-v-70d84538]{--un-bg-opacity:1;background-color:rgb(2 4 32/var(--un-bg-opacity))}.dark\\:text-white[data-v-70d84538]{--un-text-opacity:1;color:rgb(255 255 255/var(--un-text-opacity))}}@media(min-width:640px){.sm\\:text-\\[110px\\][data-v-70d84538]{font-size:110px}.sm\\:text-3xl[data-v-70d84538]{font-size:1.875rem;line-height:2.25rem}}";
const error500Styles_Dccc6iq5 = [
error500_vue_vue_type_style_index_0_scoped_70d84538_lang
];
export { error500Styles_Dccc6iq5 as default };
//# sourceMappingURL=error-500-styles.Dccc6iq5.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"error-500-styles.Dccc6iq5.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/error-500-styles.Dccc6iq5.mjs"],"sourcesContent":null,"names":["style_0"],"mappings":"","x_google_ignoreList":[0]}

View File

@@ -0,0 +1,82 @@
import { mergeProps, ref, unref, useSSRContext } from 'vue';
import { ssrRenderAttrs, ssrRenderComponent, ssrRenderList, ssrRenderAttr, ssrInterpolate } from 'vue/server-renderer';
import { X } from 'lucide-vue-next';
import { u as useHead } from './composables-CK-Mp9jS.mjs';
import './server.mjs';
import '../nitro/nitro.mjs';
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 '../routes/renderer.mjs';
import 'vue-bundle-renderer/runtime';
import 'unhead/server';
import 'devalue';
import 'unhead/utils';
import 'pinia';
import 'vue-router';
const _sfc_main$1 = {
__name: "Gallery",
__ssrInlineRender: true,
setup(__props) {
const images = ref([]);
const lightboxImage = ref(null);
return (_ctx, _push, _parent, _attrs) => {
if (images.value.length > 0) {
_push(`<section${ssrRenderAttrs(mergeProps({
id: "gallery",
class: "py-16 sm:py-20 bg-gradient-to-b from-white to-gray-50"
}, _attrs))}><div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"><div class="text-center mb-16"><h2 class="text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-4"> Galerie </h2><div class="w-24 h-1 bg-primary-600 mx-auto mb-6"></div><p class="text-xl text-gray-600 max-w-3xl mx-auto"> Eindrücke von unserem Verein </p></div><div class="grid sm:grid-cols-4 lg:grid-cols-6 xl:grid-cols-8 gap-2"><!--[-->`);
ssrRenderList(images.value, (image) => {
_push(`<div class="group relative w-20 h-20 rounded-md overflow-hidden shadow-sm hover:shadow-lg transition-all duration-300 cursor-pointer"><img${ssrRenderAttr("src", `/galerie/${image.filename}`)}${ssrRenderAttr("alt", image.title)} class="w-full h-full object-cover group-hover:scale-110 transition-transform duration-700"><div class="absolute inset-0 bg-gradient-to-t from-black/70 via-black/20 to-transparent opacity-0 group-hover:opacity-100 transition-opacity duration-300 flex items-end"><p class="text-white font-semibold text-xs p-1 truncate">${ssrInterpolate(image.title)}</p></div></div>`);
});
_push(`<!--]--></div>`);
if (lightboxImage.value) {
_push(`<div class="fixed inset-0 z-50 bg-black/90 flex items-center justify-center p-4"><div class="relative w-full h-full flex items-center justify-center"><button class="absolute top-4 right-4 z-10 w-10 h-10 bg-white/20 hover:bg-white/30 rounded-full flex items-center justify-center text-white transition-colors">`);
_push(ssrRenderComponent(unref(X), { size: 24 }, null, _parent));
_push(`</button><img${ssrRenderAttr("src", `/galerie/${lightboxImage.value.filename}`)}${ssrRenderAttr("alt", lightboxImage.value.title)} class="max-w-[80vw] max-h-[80vh] object-contain rounded-lg"><div class="absolute bottom-4 left-4 right-4 text-center"><p class="text-white font-semibold text-lg bg-black/50 rounded-lg px-4 py-2">${ssrInterpolate(lightboxImage.value.title)}</p></div></div></div>`);
} else {
_push(`<!---->`);
}
_push(`</div></section>`);
} else {
_push(`<!---->`);
}
};
}
};
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("components/Gallery.vue");
return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0;
};
const Gallery = Object.assign(_sfc_main$1, { __name: "Gallery" });
const _sfc_main = {
__name: "galerie",
__ssrInlineRender: true,
setup(__props) {
useHead({
title: "Galerie - Harheimer TC"
});
return (_ctx, _push, _parent, _attrs) => {
_push(`<div${ssrRenderAttrs(mergeProps({ class: "min-h-screen" }, _attrs))}>`);
_push(ssrRenderComponent(Gallery, null, null, _parent));
_push(`</div>`);
};
}
};
const _sfc_setup = _sfc_main.setup;
_sfc_main.setup = (props, ctx) => {
const ssrContext = useSSRContext();
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/galerie.vue");
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
};
export { _sfc_main as default };
//# sourceMappingURL=galerie-CoMmWwEg.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"galerie-CoMmWwEg.mjs","sources":["../../../../components/Gallery.vue","../../../../pages/galerie.vue"],"sourcesContent":null,"names":["_ssrRenderList","_ssrInterpolate","_ssrRenderComponent","_unref","_ssrRenderAttrs","_mergeProps"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAiEA,IAAA,MAAM,MAAA,GAAS,IAAI,EAAE,CAAA;AACrB,IAAA,MAAM,aAAA,GAAgB,IAAI,IAAI,CAAA;;AAjEb,MAAA,IAAA,MAAA,CAAA,KAAA,CAAO,MAAA,GAAM,CAAA,EAAA;;UAAM,EAAA,EAAG,SAAA;AAAA,UAAU,KAAA,EAAM;AAAA,SAAA,EAAA,MAAA,CAAA,CAAA,CAAA,6YAAA,CAAA,CAAA;AAc7BA,QAAAA,aAAAA,CAAA,MAAA,CAAA,QAAT,KAAA,KAAK;2KAMT,KAAA,EAAG,CAAA,SAAA,EAAc,KAAA,CAAM,QAAQ,CAAA,CAAA,CAAA,CAAA,EAAA,aAAA,CAC/B,KAAA,EAAK,KAAA,CAAM,KAAK,CAAA,CAAA,+TAAA,EAI2CC,cAAAA,CAAA,KAAA,CAAM,KAAK,CAAA,CAAA,gBAAA,CAAA,CAAA;;;AAOrE,QAAA,IAAA,aAAA,CAAA,KAAA,EAAa;;AASX,UAAA,KAAA,CAAAC,kBAAAA,CAAAC,KAAAA,CAAA,CAAA,CAAA,EAAA,EAAA,MAAM,EAAA,EAAA,EAAE,IAAA,EAAA,OAAA,CAAA,CAAA;AAGX,UAAA,KAAA,CAAA,CAAA,aAAA,EAAA,aAAA,CAAA,KAAA,EAAG,CAAA,SAAA,EAAc,aAAA,CAAA,KAAA,CAAc,QAAQ,EAAA,CAAA,CAAA,EAAA,aAAA,CACvC,KAAA,EAAK,aAAA,CAAA,KAAA,CAAc,KAAK,CAAA,CAAA,oMAAA,EAMpBF,cAAAA,CAAA,aAAA,CAAA,MAAc,KAAK,CAAA,CAAA,sBAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;AC3CpC,IAAA,OAAA,CAAQ;AAAA,MACN,KAAA,EAAO;AAAA,KACR,CAAA;;AAVM,MAAA,KAAA,CAAA,CAAA,IAAA,EAAAG,eAAAC,UAAAA,CAAA,EAAA,OAAM,cAAA,EAAA,EAAc,MAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;;;;;;;;;;;;;;;"}

View File

@@ -0,0 +1,43 @@
import { mergeProps, useSSRContext } from 'vue';
import { ssrRenderAttrs } from 'vue/server-renderer';
import { u as useHead } from './composables-CK-Mp9jS.mjs';
import './server.mjs';
import '../nitro/nitro.mjs';
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 '../routes/renderer.mjs';
import 'vue-bundle-renderer/runtime';
import 'unhead/server';
import 'devalue';
import 'unhead/utils';
import 'pinia';
import 'vue-router';
import 'lucide-vue-next';
const _sfc_main = {
__name: "geschichte",
__ssrInlineRender: true,
setup(__props) {
useHead({
title: "Geschichte - Harheimer TC"
});
return (_ctx, _push, _parent, _attrs) => {
_push(`<div${ssrRenderAttrs(mergeProps({ class: "min-h-full py-16 bg-gray-50" }, _attrs))}><div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"><h1 class="text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-6"> Vereinsgeschichte </h1><div class="w-24 h-1 bg-primary-600 mb-8"></div><div class="prose prose-lg max-w-none"><p class="text-xl text-gray-600 mb-8"> Die bewegte Geschichte des Harheimer Tischtennis Clubs seit 1954. </p><div class="space-y-6 mb-8"><p class="text-lg text-gray-700"> Nach dem zweiten Weltkrieg entwickelte sich sprunghaft der Tischtennissport in der Bundesrepublik. Auch in der damaligen Gemeinde Harheim gab es junge Menschen, die an diesem neuen Sport Gefallen fanden, so dass am <strong>10.05.1950</strong> durch deren Initiative eine Tischtennisabteilung innerhalb der Sportgemeinschaft Harheim (SGH) gegründet wurde. </p><p class="text-lg text-gray-700"> Zu Anfang waren es nur wenige TT-Begeisterte und nur durch deren Idealismus, Opfer und Gemeinschaftssinn wurden die Anfangsschwierigkeiten überwunden. Im Laufe der Zeit kamen auch die Kritiker innerhalb der SGH nicht umhin, die damaligen Tischtennisspieler mit ihrer neuen Sportart anzuerkennen. </p></div><div class="space-y-6"><div class="bg-white p-6 rounded-xl shadow-lg border-l-4 border-primary-600"><h3 class="text-xl font-display font-bold text-gray-900 mb-3">10.06.1954 - Gründung des HTC</h3><p class="text-gray-600 mb-3"> Bei der am 20.05.1954 stattgefundenen Sitzung der SGH wurde die Trennung der einzelnen Abteilungen beschlossen. Somit sah sich die TT-Abteilung veranlasst, ihren Sportbetrieb in eigener Regie weiterzuführen. </p><p class="text-gray-600"> Am <strong>10.06.1954</strong> trafen sich 6 Damen und 22 Herren zur Gründungsversammlung in der Gaststätte „Zum Löwen&quot;. Der neu gegründete Verein wurde unter dem Namen &quot;Harheimer Tischtennis-Club&quot; Mitglied des Landessportbundes Hessen. </p></div><div class="bg-white p-6 rounded-xl shadow-lg border-l-4 border-primary-600"><h3 class="text-xl font-display font-bold text-gray-900 mb-3">1964 - Neue Trainingsstätte</h3><p class="text-gray-600"> Mit der Erbauung der Schulturnhalle im Jahre 1964 stand eine für die damaligen Verhältnisse recht moderne Übungsstätte zur Verfügung, die dem HTC für einen Tag in der Woche überlassen wurde. Damit waren viele Probleme gelöst und es gab einen Aufschwung, der sich in einer steigenden Spielerzahl bemerkbar machte. </p></div><div class="bg-white p-6 rounded-xl shadow-lg border-l-4 border-primary-600"><h3 class="text-xl font-display font-bold text-gray-900 mb-3">1974 - Bürgerhaus</h3><p class="text-gray-600"> Mit der Erstellung des Bürgerhauses wurde wiederum neuer Trainingsraum geschaffen, der besonders für den Tischtennissport geeignet ist. Der HTC nahm die Gelegenheit war und hielt ab Mai 1974 seine Übungsabende im großen Saal des Bürgerhauses ab. </p></div><div class="bg-white p-6 rounded-xl shadow-lg border-l-4 border-primary-600"><h3 class="text-xl font-display font-bold text-gray-900 mb-3">1976 - Eintragung ins Vereinsregister</h3><p class="text-gray-600"> Die Eintragung in das Vereinsregister (e. V.) erfolgte im Jahre 1976 und gleichzeitig wurde dem Verein die Gemeinnützigkeit zuerkannt. </p></div><div class="bg-white p-6 rounded-xl shadow-lg border-l-4 border-primary-600"><h3 class="text-xl font-display font-bold text-gray-900 mb-3">1978/79 - Sportlicher Höhepunkt</h3><p class="text-gray-600"> Ein besonderes Geschenk machten die Spieler des HTC im Jubiläumsjahr ihrem Verein: Die 1. Herrenmannschaft wurde Meister der Bezirksklasse Ffm.-Ost und die 2. Herrenmannschaft Meister der Kreisklasse-A Ffm.-Nord. Nachdem auch die Schülermannschaft Meister ihrer Klasse wurde, ist die Saison 78/79 als absolut sportlicher Höhepunkt in der Vereinsgeschichte zu werten. </p></div><div class="bg-white p-6 rounded-xl shadow-lg border-l-4 border-primary-600"><h3 class="text-xl font-display font-bold text-gray-900 mb-3">Heute</h3><p class="text-gray-600"> Der HTC hat sich auch in Zukunft zur Aufgabe gemacht, allen interessierten Bürgern und Jugendlichen im Rahmen seiner Möglichkeiten das Tischtennisspielen als Leistungssport oder zur Freizeitgestaltung zu ermöglichen. </p></div></div></div></div></div>`);
};
}
};
const _sfc_setup = _sfc_main.setup;
_sfc_main.setup = (props, ctx) => {
const ssrContext = useSSRContext();
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/geschichte.vue");
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
};
export { _sfc_main as default };
//# sourceMappingURL=geschichte-DSCikZtf.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"geschichte-DSCikZtf.mjs","sources":["../../../../pages/geschichte.vue"],"sourcesContent":null,"names":["_ssrRenderAttrs","_mergeProps"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AA2FA,IAAA,OAAA,CAAQ;AAAA,MACN,KAAA,EAAO;AAAA,KACR,CAAA;;AA5FM,MAAA,KAAA,CAAA,CAAA,IAAA,EAAAA,eAAAC,UAAAA,CAAA,EAAA,OAAM,6BAAA,EAAA,EAA6B,MAAA,CAAA,CAAA,CAAA,2jIAAA,CAAA,CAAA;AAAA,IAAA,CAAA;;;;;;;;;;;;"}

View File

@@ -0,0 +1,43 @@
import { mergeProps, useSSRContext } from 'vue';
import { ssrRenderAttrs } from 'vue/server-renderer';
import { u as useHead } from './composables-CK-Mp9jS.mjs';
import './server.mjs';
import '../nitro/nitro.mjs';
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 '../routes/renderer.mjs';
import 'vue-bundle-renderer/runtime';
import 'unhead/server';
import 'devalue';
import 'unhead/utils';
import 'pinia';
import 'vue-router';
import 'lucide-vue-next';
const _sfc_main = {
__name: "herren",
__ssrInlineRender: true,
setup(__props) {
useHead({
title: "Herrenmannschaften - Harheimer TC"
});
return (_ctx, _push, _parent, _attrs) => {
_push(`<div${ssrRenderAttrs(mergeProps({ class: "min-h-full py-16 bg-gray-50" }, _attrs))}><div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"><h1 class="text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-6"> Herrenmannschaften </h1><div class="w-24 h-1 bg-primary-600 mb-8"></div><div class="space-y-8"><div class="bg-white p-8 rounded-xl shadow-lg"><h3 class="text-2xl font-display font-bold text-gray-900 mb-4">1. Herren</h3><p class="text-gray-600 mb-4">Liga: Bezirksoberliga</p><p class="text-gray-600">Mannschaftsführer: Name folgt</p></div><div class="bg-white p-8 rounded-xl shadow-lg"><h3 class="text-2xl font-display font-bold text-gray-900 mb-4">2. Herren</h3><p class="text-gray-600 mb-4">Liga: Bezirksliga</p><p class="text-gray-600">Mannschaftsführer: Name folgt</p></div><div class="bg-white p-8 rounded-xl shadow-lg"><h3 class="text-2xl font-display font-bold text-gray-900 mb-4">3. Herren</h3><p class="text-gray-600 mb-4">Liga: Kreisliga</p><p class="text-gray-600">Mannschaftsführer: Name folgt</p></div></div></div></div>`);
};
}
};
const _sfc_setup = _sfc_main.setup;
_sfc_main.setup = (props, ctx) => {
const ssrContext = useSSRContext();
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/mannschaften/herren.vue");
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
};
export { _sfc_main as default };
//# sourceMappingURL=herren-Cfh4Z8oD.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"herren-Cfh4Z8oD.mjs","sources":["../../../../pages/mannschaften/herren.vue"],"sourcesContent":null,"names":["_ssrRenderAttrs","_mergeProps"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAgCA,IAAA,OAAA,CAAQ;AAAA,MACN,KAAA,EAAO;AAAA,KACR,CAAA;;AAjCM,MAAA,KAAA,CAAA,CAAA,IAAA,EAAAA,eAAAC,UAAAA,CAAA,EAAA,OAAM,6BAAA,EAAA,EAA6B,MAAA,CAAA,CAAA,CAAA,i8BAAA,CAAA,CAAA;AAAA,IAAA,CAAA;;;;;;;;;;;;"}

View File

@@ -0,0 +1,73 @@
import { _ as __nuxt_component_0$1 } from './server.mjs';
import { mergeProps, unref, withCtx, createVNode, createTextVNode, useSSRContext } from 'vue';
import { ssrRenderAttrs, ssrRenderComponent } from 'vue/server-renderer';
import { FileText, Eye } from 'lucide-vue-next';
import { u as useHead } from './composables-CK-Mp9jS.mjs';
import '../nitro/nitro.mjs';
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 '../routes/renderer.mjs';
import 'vue-bundle-renderer/runtime';
import 'unhead/server';
import 'devalue';
import 'unhead/utils';
import 'pinia';
import 'vue-router';
const _sfc_main = {
__name: "impressum",
__ssrInlineRender: true,
setup(__props) {
useHead({
title: "Impressum - Harheimer TC"
});
return (_ctx, _push, _parent, _attrs) => {
const _component_NuxtLink = __nuxt_component_0$1;
_push(`<div${ssrRenderAttrs(mergeProps({ class: "min-h-full py-16 px-4 sm:px-6 lg:px-8 bg-gray-50" }, _attrs))}><div class="max-w-4xl mx-auto"><h1 class="text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-6"> Impressum </h1><div class="w-24 h-1 bg-primary-600 mb-8"></div><div class="bg-white p-8 rounded-xl shadow-lg space-y-6"><div><h2 class="text-xl font-display font-bold text-gray-900 mb-2">Angaben gemäß § 5 TMG</h2><p class="text-gray-700"> Harheimer Tischtennis-Club 1954 e. V. (HTC)<br> In der Fuchskaut 4<br> 60437 Frankfurt am Main </p></div><div><h2 class="text-xl font-display font-bold text-gray-900 mb-2">Kontakt</h2><p class="text-gray-700"> Telefon: 06101-4992227<br> E-Mail: j.dichmann@gmx.de<br> Internet: www.harheimertc.de </p></div><div><h2 class="text-xl font-display font-bold text-gray-900 mb-2">Vertretungsberechtigter Vorstand</h2><p class="text-gray-700"> Roger Dichmann, Vorsitzender<br> Jürgen Kratz, Stellvertreter des Vorsitzenden<br> Olaf Nüßlein, Kassenwart<br> Jürgen Dichmann, Schriftführer </p></div><div><h2 class="text-xl font-display font-bold text-gray-900 mb-2">Registereintrag</h2><p class="text-gray-700"> lsb h-Vereinsnummer: 24091<br> Registereintrag: Amtsgericht Frankfurt am Main, Registergericht<br> Registernummer: VR 6835 </p></div><div><h2 class="text-xl font-display font-bold text-gray-900 mb-2">Vereinsatzung</h2><p class="text-gray-700 mb-4"> Unsere aktuelle Vereinsatzung können Sie hier herunterladen oder online einsehen: </p><div class="flex flex-col sm:flex-row gap-3"><a href="/documents/satzung.pdf" target="_blank" class="inline-flex items-center px-4 py-2 bg-primary-600 hover:bg-primary-700 text-white font-medium rounded-lg transition-colors">`);
_push(ssrRenderComponent(unref(FileText), {
size: 16,
class: "mr-2"
}, null, _parent));
_push(` Satzung herunterladen (PDF) </a>`);
_push(ssrRenderComponent(_component_NuxtLink, {
to: "/satzung",
class: "inline-flex items-center px-4 py-2 bg-gray-100 hover:bg-gray-200 text-gray-900 font-medium rounded-lg transition-colors"
}, {
default: withCtx((_, _push2, _parent2, _scopeId) => {
if (_push2) {
_push2(ssrRenderComponent(unref(Eye), {
size: 16,
class: "mr-2"
}, null, _parent2, _scopeId));
_push2(` Online ansehen `);
} else {
return [
createVNode(unref(Eye), {
size: 16,
class: "mr-2"
}),
createTextVNode(" Online ansehen ")
];
}
}),
_: 1
}, _parent));
_push(`</div></div><div><h2 class="text-xl font-display font-bold text-gray-900 mb-2">Verantwortlich für den Inhalt</h2><p class="text-gray-700"> Roger Dichmann<br> Reginastr. 46<br> 60437 Frankfurt </p></div><div><h2 class="text-xl font-display font-bold text-gray-900 mb-2">Haftungsausschluss</h2><h3 class="font-semibold text-gray-900 mt-4 mb-2">Haftung für Inhalte</h3><p class="text-gray-700 mb-4"> Als Diensteanbieter sind wir gemäß § 7 Abs.1 TMG für eigene Inhalte auf diesen Seiten nach den allgemeinen Gesetzen verantwortlich. Nach §§ 8 bis 10 TMG sind wir als Diensteanbieter jedoch nicht verpflichtet, übermittelte oder gespeicherte fremde Informationen zu überwachen oder nach Umständen zu forschen, die auf eine rechtswidrige Tätigkeit hinweisen. Verpflichtungen zur Entfernung oder Sperrung der Nutzung von Informationen nach den allgemeinen Gesetzen bleiben hiervon unberührt. Eine diesbezügliche Haftung ist jedoch erst ab dem Zeitpunkt der Kenntnis einer konkreten Rechtsverletzung möglich. Bei Bekanntwerden von entsprechenden Rechtsverletzungen werden wir diese Inhalte umgehend entfernen. Grundsätzlich sind alle unsere Informationen ohne Gewähr. Auch für den Fall das unzutreffende oder falsche Informationen enthalten sind, wird vom HTC jegliche Haftung ausgeschlossen. </p><h3 class="font-semibold text-gray-900 mt-4 mb-2">Haftung für Links</h3><p class="text-gray-700 mb-4"> Unser Angebot enthält Links zu externen Websites Dritter, auf deren Inhalte wir keinen Einfluss haben. Deshalb können wir für diese fremden Inhalte auch keine Gewähr übernehmen. Für die Inhalte der verlinkten Seiten ist stets der jeweilige Anbieter oder Betreiber der Seiten verantwortlich. Die verlinkten Seiten wurden zum Zeitpunkt der Verlinkung auf mögliche Rechtsverstöße überprüft. Rechtswidrige Inhalte waren zum Zeitpunkt der Verlinkung nicht erkennbar. Eine permanente inhaltliche Kontrolle der verlinkten Seiten ist jedoch ohne konkrete Anhaltspunkte einer Rechtsverletzung nicht zumutbar. Eine Haftung für Schäden, die ggf. durch das Aufrufen dieser Seiten, bzw. deren Inhalte entstehen, wird vom HTC nicht übernommen. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Links umgehend entfernen. </p><h3 class="font-semibold text-gray-900 mt-4 mb-2">Urheberrecht</h3><p class="text-gray-700 mb-4"> Die durch die Seitenbetreiber erstellten Inhalte und Werke auf diesen Seiten unterliegen dem deutschen Urheberrecht. Die Vervielfältigung, Bearbeitung, Verbreitung und jede Art der Verwertung außerhalb der Grenzen des Urheberrechtes bedürfen der schriftlichen Zustimmung des jeweiligen Autors bzw. Erstellers. Downloads und Kopien dieser Seite sind nur für den privaten, nicht kommerziellen Gebrauch gestattet. Soweit die Inhalte auf dieser Seite nicht vom Betreiber erstellt wurden, werden die Urheberrechte Dritter beachtet. Insbesondere werden Inhalte Dritter als solche gekennzeichnet. Sollten Sie trotzdem auf eine Urheberrechtsverletzung aufmerksam werden, bitten wir um einen entsprechenden Hinweis. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Inhalte umgehend entfernen. </p></div><div><h2 class="text-xl font-display font-bold text-gray-900 mb-2">Datenschutzerklärung</h2><h3 class="font-semibold text-gray-900 mt-4 mb-2">Datenschutz</h3><p class="text-gray-700 mb-4"> Die Betreiber dieser Seiten nehmen den Schutz Ihrer persönlichen Daten sehr ernst. Wir behandeln Ihre personenbezogenen Daten vertraulich und entsprechend der gesetzlichen Datenschutzvorschriften sowie dieser Datenschutzerklärung. Die Nutzung unserer Website ist in der Regel ohne Angabe personenbezogener Daten möglich. Soweit auf unseren Seiten personenbezogene Daten (beispielsweise Name, Anschrift oder E-Mail-Adressen) erhoben werden, erfolgt dies, soweit möglich, stets auf freiwilliger Basis. Diese Daten werden ohne Ihre ausdrückliche Zustimmung nicht an Dritte weitergegeben. Wir weisen darauf hin, dass die Datenübertragung im Internet (z.B. bei der Kommunikation per E-Mail) Sicherheitslücken aufweisen kann. Ein lückenloser Schutz der Daten vor dem Zugriff durch Dritte ist nicht möglich. </p><h3 class="font-semibold text-gray-900 mt-4 mb-2">Widerspruch Werbe-Mails</h3><p class="text-gray-700"> Der Nutzung von im Rahmen der Impressumspflicht veröffentlichten Kontaktdaten zur Übersendung von nicht ausdrücklich angeforderter Werbung und Informationsmaterialien wird hiermit widersprochen. Die Betreiber der Seiten behalten sich ausdrücklich rechtliche Schritte im Falle der unverlangten Zusendung von Werbeinformationen, etwa durch Spam-E-Mails, vor. </p></div></div></div></div>`);
};
}
};
const _sfc_setup = _sfc_main.setup;
_sfc_main.setup = (props, ctx) => {
const ssrContext = useSSRContext();
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/impressum.vue");
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
};
export { _sfc_main as default };
//# sourceMappingURL=impressum-BJL_VXpe.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"impressum-BJL_VXpe.mjs","sources":["../../../../pages/impressum.vue"],"sourcesContent":null,"names":["_ssrRenderAttrs","_mergeProps","_push","_parent","_createVNode","_unref"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAuHA,IAAA,OAAA,CAAQ;AAAA,MACN,KAAA,EAAO;AAAA,KACR,CAAA;;;AAxHM,MAAA,KAAA,CAAA,CAAA,IAAA,EAAAA,eAAAC,UAAAA,CAAA,EAAA,OAAM,kDAAA,EAAA,EAAkD,MAAA,CAAA,CAAA,CAAA,ykDAAA,CAAA,CAAA;;QAwDtC,IAAA,EAAM,EAAA;AAAA,QAAI,KAAA,EAAM;AAAA,OAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;;QAI3B,EAAA,EAAG,UAAA;AAAA,QACH,KAAA,EAAM;AAAA,OAAA,EAAA;yBAFR,CAMW,CAAA,EAAAC,MAAAA,EAAAC,QAAAA,EAAA,QAAA,KAAA;;;cAFH,IAAA,EAAM,EAAA;AAAA,cAAI,KAAA,EAAM;AAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,QAAA,CAAA,CAAA;;;;cAAtBC,WAAAA,CAA+BC,KAAAA,CAAA,GAAA,CAAA,EAAA;AAAA,gBAAzB,IAAA,EAAM,EAAA;AAAA,gBAAI,KAAA,EAAM;AAAA,eAAA,CAAA;8BAAS,kBAEjC;AAAA,aAAA;AAAA,UAAA;;;;;;;;;;;;;;;;;"}

View File

@@ -0,0 +1,96 @@
import { _ as __nuxt_component_0$1 } from './server.mjs';
import { ref, mergeProps, unref, withCtx, createVNode, useSSRContext } from 'vue';
import { ssrRenderAttrs, ssrInterpolate, ssrRenderComponent } from 'vue/server-renderer';
import { Calendar, Newspaper, FileText, Users, Image } from 'lucide-vue-next';
import { u as useHead } from './composables-CK-Mp9jS.mjs';
import '../nitro/nitro.mjs';
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 '../routes/renderer.mjs';
import 'vue-bundle-renderer/runtime';
import 'unhead/server';
import 'devalue';
import 'unhead/utils';
import 'pinia';
import 'vue-router';
const _sfc_main = {
__name: "index",
__ssrInlineRender: true,
setup(__props) {
const user = ref(null);
useHead({
title: "CMS - Harheimer TC"
});
return (_ctx, _push, _parent, _attrs) => {
const _component_NuxtLink = __nuxt_component_0$1;
_push(`<div${ssrRenderAttrs(mergeProps({ class: "min-h-full py-16 bg-gray-50" }, _attrs))}><div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"><h1 class="text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-6"> Content Management System </h1><div class="w-24 h-1 bg-primary-600 mb-8"></div><div class="bg-white rounded-xl shadow-lg p-8 mb-8"><h2 class="text-2xl font-display font-bold text-gray-900 mb-4"> Willkommen im CMS, ${ssrInterpolate(user.value?.name)}! </h2><p class="text-gray-600"> Hier können Sie Inhalte der Website verwalten. </p></div><div class="grid md:grid-cols-2 lg:grid-cols-3 gap-6"><div class="bg-white p-6 rounded-xl shadow-lg border border-gray-100"><div class="flex items-center mb-4"><div class="w-12 h-12 bg-primary-100 rounded-lg flex items-center justify-center mr-4">`);
_push(ssrRenderComponent(unref(Calendar), {
size: 24,
class: "text-primary-600"
}, null, _parent));
_push(`</div><h3 class="text-lg font-semibold text-gray-900">Termine verwalten</h3></div><p class="text-gray-600 text-sm mb-4"> Termine hinzufügen, bearbeiten und löschen </p><button class="text-sm text-primary-600 hover:text-primary-700 font-medium"> Öffnen → </button></div><div class="bg-white p-6 rounded-xl shadow-lg border border-gray-100"><div class="flex items-center mb-4"><div class="w-12 h-12 bg-primary-100 rounded-lg flex items-center justify-center mr-4">`);
_push(ssrRenderComponent(unref(Newspaper), {
size: 24,
class: "text-primary-600"
}, null, _parent));
_push(`</div><h3 class="text-lg font-semibold text-gray-900">Interne News</h3></div><p class="text-gray-600 text-sm mb-4"> News für Mitglieder erstellen und verwalten </p><button class="text-sm text-primary-600 hover:text-primary-700 font-medium"> Öffnen → </button></div><div class="bg-white p-6 rounded-xl shadow-lg border border-gray-100"><div class="flex items-center mb-4"><div class="w-12 h-12 bg-primary-100 rounded-lg flex items-center justify-center mr-4">`);
_push(ssrRenderComponent(unref(FileText), {
size: 24,
class: "text-primary-600"
}, null, _parent));
_push(`</div><h3 class="text-lg font-semibold text-gray-900">Spielpläne</h3></div><p class="text-gray-600 text-sm mb-4"> Spielpläne hochladen und verwalten </p><button class="text-sm text-primary-600 hover:text-primary-700 font-medium"> Öffnen → </button></div>`);
_push(ssrRenderComponent(_component_NuxtLink, {
to: "/cms/benutzer",
class: "bg-white p-6 rounded-xl shadow-lg border border-gray-100 hover:shadow-xl transition-shadow block"
}, {
default: withCtx((_, _push2, _parent2, _scopeId) => {
if (_push2) {
_push2(`<div class="flex items-center mb-4"${_scopeId}><div class="w-12 h-12 bg-primary-100 rounded-lg flex items-center justify-center mr-4"${_scopeId}>`);
_push2(ssrRenderComponent(unref(Users), {
size: 24,
class: "text-primary-600"
}, null, _parent2, _scopeId));
_push2(`</div><h3 class="text-lg font-semibold text-gray-900"${_scopeId}>Benutzerverwaltung</h3></div><p class="text-gray-600 text-sm mb-4"${_scopeId}> Registrierungen freischalten und Rollen verwalten </p><span class="text-sm text-primary-600 hover:text-primary-700 font-medium"${_scopeId}> Öffnen → </span>`);
} else {
return [
createVNode("div", { class: "flex items-center mb-4" }, [
createVNode("div", { class: "w-12 h-12 bg-primary-100 rounded-lg flex items-center justify-center mr-4" }, [
createVNode(unref(Users), {
size: 24,
class: "text-primary-600"
})
]),
createVNode("h3", { class: "text-lg font-semibold text-gray-900" }, "Benutzerverwaltung")
]),
createVNode("p", { class: "text-gray-600 text-sm mb-4" }, " Registrierungen freischalten und Rollen verwalten "),
createVNode("span", { class: "text-sm text-primary-600 hover:text-primary-700 font-medium" }, " Öffnen → ")
];
}
}),
_: 1
}, _parent));
_push(`<div class="bg-white p-6 rounded-xl shadow-lg border border-gray-100"><div class="flex items-center mb-4"><div class="w-12 h-12 bg-primary-100 rounded-lg flex items-center justify-center mr-4">`);
_push(ssrRenderComponent(unref(Image), {
size: 24,
class: "text-primary-600"
}, null, _parent));
_push(`</div><h3 class="text-lg font-semibold text-gray-900">Galerie</h3></div><p class="text-gray-600 text-sm mb-4"> Bilder hochladen und verwalten </p><button class="text-sm text-primary-600 hover:text-primary-700 font-medium"> Öffnen → </button></div></div></div></div>`);
};
}
};
const _sfc_setup = _sfc_main.setup;
_sfc_main.setup = (props, ctx) => {
const ssrContext = useSSRContext();
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/cms/index.vue");
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
};
export { _sfc_main as default };
//# sourceMappingURL=index-CDfPDFNK.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"index-CDfPDFNK.mjs","sources":["../../../../pages/cms/index.vue"],"sourcesContent":null,"names":["_ssrRenderAttrs","_mergeProps","_ssrInterpolate","_push","_parent","_createVNode","_unref"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAyGA,IAAA,MAAM,IAAA,GAAO,IAAI,IAAI,CAAA;AAiBrB,IAAA,OAAA,CAAQ;AAAA,MACN,KAAA,EAAO;AAAA,KACR,CAAA;;;mBA3HMA,cAAAA,CAAAC,UAAAA,CAAA,EAAA,KAAA,EAAM,6BAAA,EAA6B,EAAA,MAAA,CAAA,CAAA,CAAA,uVAAA,EASVC,cAAAA,CAAA,IAAA,CAAA,KAAA,EAAM,IAAI,CAAA,CAAA,iVAAA,CAAA,CAAA;;QAYjB,IAAA,EAAM,EAAA;AAAA,QAAI,KAAA,EAAM;AAAA,OAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;;QAef,IAAA,EAAM,EAAA;AAAA,QAAI,KAAA,EAAM;AAAA,OAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;;QAejB,IAAA,EAAM,EAAA;AAAA,QAAI,KAAA,EAAM;AAAA,OAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;;QAa/B,EAAA,EAAG,eAAA;AAAA,QACH,KAAA,EAAM;AAAA,OAAA,EAAA;yBAFR,CAgBW,CAAA,EAAAC,MAAAA,EAAAC,QAAAA,EAAA,QAAA,KAAA;;;;cAVG,IAAA,EAAM,EAAA;AAAA,cAAI,KAAA,EAAM;AAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,QAAA,CAAA,CAAA;;;;AAF5BC,cAAAA,WAAAA,CAKM,KAAA,EAAA,EALD,KAAA,EAAM,wBAAA,EAAwB,EAAA;AAAA,gBACjCA,WAAAA,CAEM,KAAA,EAAA,EAFD,KAAA,EAAM,6EAA2E,EAAA;AAAA,kBACpFA,WAAAA,CAA6CC,KAAAA,CAAA,KAAA,CAAA,EAAA;AAAA,oBAArC,IAAA,EAAM,EAAA;AAAA,oBAAI,KAAA,EAAM;AAAA,mBAAA;;AAE1BD,gBAAAA,WAAAA,CAAuE,IAAA,EAAA,EAAnE,KAAA,EAAM,qCAAA,IAAsC,oBAAkB;AAAA,eAAA,CAAA;AAEpEA,cAAAA,WAAAA,CAEI,GAAA,EAAA,EAFD,KAAA,EAAM,4BAAA,IAA6B,qDAEtC,CAAA;AAAA,cACAA,YAEO,MAAA,EAAA,EAFD,KAAA,EAAM,6DAAA,IAA8D,YAE1E;AAAA,aAAA;;;;;;;QAMY,IAAA,EAAM,EAAA;AAAA,QAAI,KAAA,EAAM;AAAA,OAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;;;;;;;;;;;;;"}

View File

@@ -0,0 +1,153 @@
import { u as useAuthStore, _ as __nuxt_component_0$1 } from './server.mjs';
import { mergeProps, withCtx, unref, createVNode, useSSRContext } from 'vue';
import { ssrRenderAttrs, ssrRenderComponent, ssrInterpolate } from 'vue/server-renderer';
import { User, Users, Newspaper, Check } from 'lucide-vue-next';
import { u as useHead } from './composables-CK-Mp9jS.mjs';
import '../nitro/nitro.mjs';
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 '../routes/renderer.mjs';
import 'vue-bundle-renderer/runtime';
import 'unhead/server';
import 'devalue';
import 'unhead/utils';
import 'pinia';
import 'vue-router';
const _sfc_main = {
__name: "index",
__ssrInlineRender: true,
setup(__props) {
const authStore = useAuthStore();
useHead({
title: "Mitgliederbereich - Harheimer TC"
});
return (_ctx, _push, _parent, _attrs) => {
const _component_NuxtLink = __nuxt_component_0$1;
_push(`<div${ssrRenderAttrs(mergeProps({ class: "min-h-full py-16 bg-gray-50" }, _attrs))}><div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"><h1 class="text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-6"> Mitgliederbereich </h1><div class="w-24 h-1 bg-primary-600 mb-8"></div><div class="grid md:grid-cols-2 lg:grid-cols-3 gap-6 mb-8">`);
_push(ssrRenderComponent(_component_NuxtLink, {
to: "/mitgliederbereich/profil",
class: "bg-white p-6 rounded-xl shadow-lg border border-gray-100 hover:shadow-xl transition-all group"
}, {
default: withCtx((_, _push2, _parent2, _scopeId) => {
if (_push2) {
_push2(`<div class="flex items-center mb-4"${_scopeId}><div class="w-12 h-12 bg-primary-100 rounded-lg flex items-center justify-center group-hover:bg-primary-600 transition-colors"${_scopeId}>`);
_push2(ssrRenderComponent(unref(User), {
size: 24,
class: "text-primary-600 group-hover:text-white"
}, null, _parent2, _scopeId));
_push2(`</div><h2 class="ml-4 text-xl font-semibold text-gray-900"${_scopeId}>Mein Profil</h2></div><p class="text-gray-600"${_scopeId}> Persönliche Daten und Passwort verwalten </p>`);
} else {
return [
createVNode("div", { class: "flex items-center mb-4" }, [
createVNode("div", { class: "w-12 h-12 bg-primary-100 rounded-lg flex items-center justify-center group-hover:bg-primary-600 transition-colors" }, [
createVNode(unref(User), {
size: 24,
class: "text-primary-600 group-hover:text-white"
})
]),
createVNode("h2", { class: "ml-4 text-xl font-semibold text-gray-900" }, "Mein Profil")
]),
createVNode("p", { class: "text-gray-600" }, " Persönliche Daten und Passwort verwalten ")
];
}
}),
_: 1
}, _parent));
_push(ssrRenderComponent(_component_NuxtLink, {
to: "/mitgliederbereich/mitglieder",
class: "bg-white p-6 rounded-xl shadow-lg border border-gray-100 hover:shadow-xl transition-all group"
}, {
default: withCtx((_, _push2, _parent2, _scopeId) => {
if (_push2) {
_push2(`<div class="flex items-center mb-4"${_scopeId}><div class="w-12 h-12 bg-primary-100 rounded-lg flex items-center justify-center group-hover:bg-primary-600 transition-colors"${_scopeId}>`);
_push2(ssrRenderComponent(unref(Users), {
size: 24,
class: "text-primary-600 group-hover:text-white"
}, null, _parent2, _scopeId));
_push2(`</div><h2 class="ml-4 text-xl font-semibold text-gray-900"${_scopeId}>Mitglieder</h2></div><p class="text-gray-600"${_scopeId}> Kontaktdaten der Vereinsmitglieder </p>`);
} else {
return [
createVNode("div", { class: "flex items-center mb-4" }, [
createVNode("div", { class: "w-12 h-12 bg-primary-100 rounded-lg flex items-center justify-center group-hover:bg-primary-600 transition-colors" }, [
createVNode(unref(Users), {
size: 24,
class: "text-primary-600 group-hover:text-white"
})
]),
createVNode("h2", { class: "ml-4 text-xl font-semibold text-gray-900" }, "Mitglieder")
]),
createVNode("p", { class: "text-gray-600" }, " Kontaktdaten der Vereinsmitglieder ")
];
}
}),
_: 1
}, _parent));
_push(ssrRenderComponent(_component_NuxtLink, {
to: "/mitgliederbereich/news",
class: "bg-white p-6 rounded-xl shadow-lg border border-gray-100 hover:shadow-xl transition-all group"
}, {
default: withCtx((_, _push2, _parent2, _scopeId) => {
if (_push2) {
_push2(`<div class="flex items-center mb-4"${_scopeId}><div class="w-12 h-12 bg-primary-100 rounded-lg flex items-center justify-center group-hover:bg-primary-600 transition-colors"${_scopeId}>`);
_push2(ssrRenderComponent(unref(Newspaper), {
size: 24,
class: "text-primary-600 group-hover:text-white"
}, null, _parent2, _scopeId));
_push2(`</div><h2 class="ml-4 text-xl font-semibold text-gray-900"${_scopeId}>Interne News</h2></div><p class="text-gray-600"${_scopeId}> Neuigkeiten und Ankündigungen </p>`);
} else {
return [
createVNode("div", { class: "flex items-center mb-4" }, [
createVNode("div", { class: "w-12 h-12 bg-primary-100 rounded-lg flex items-center justify-center group-hover:bg-primary-600 transition-colors" }, [
createVNode(unref(Newspaper), {
size: 24,
class: "text-primary-600 group-hover:text-white"
})
]),
createVNode("h2", { class: "ml-4 text-xl font-semibold text-gray-900" }, "Interne News")
]),
createVNode("p", { class: "text-gray-600" }, " Neuigkeiten und Ankündigungen ")
];
}
}),
_: 1
}, _parent));
_push(`</div><div class="bg-white p-8 rounded-xl shadow-lg border border-gray-100"><h2 class="text-2xl font-display font-bold text-gray-900 mb-4"> Willkommen, ${ssrInterpolate(unref(authStore).user?.name || "Mitglied")}! </h2><p class="text-gray-600 mb-6"> Hier finden Sie alle wichtigen Informationen und Funktionen für Mitglieder des Harheimer TC. </p><div class="grid sm:grid-cols-2 gap-4"><div class="flex items-start">`);
_push(ssrRenderComponent(unref(Check), {
size: 20,
class: "text-primary-600 mr-2 mt-0.5"
}, null, _parent));
_push(`<span class="text-gray-700">Zugriff auf Mitgliederliste mit Kontaktdaten</span></div><div class="flex items-start">`);
_push(ssrRenderComponent(unref(Check), {
size: 20,
class: "text-primary-600 mr-2 mt-0.5"
}, null, _parent));
_push(`<span class="text-gray-700">Interne Vereinsnews und Ankündigungen</span></div><div class="flex items-start">`);
_push(ssrRenderComponent(unref(Check), {
size: 20,
class: "text-primary-600 mr-2 mt-0.5"
}, null, _parent));
_push(`<span class="text-gray-700">Profilverwaltung und Passwort ändern</span></div><div class="flex items-start">`);
_push(ssrRenderComponent(unref(Check), {
size: 20,
class: "text-primary-600 mr-2 mt-0.5"
}, null, _parent));
_push(`<span class="text-gray-700">Weitere Funktionen folgen in Kürze</span></div></div></div></div></div>`);
};
}
};
const _sfc_setup = _sfc_main.setup;
_sfc_main.setup = (props, ctx) => {
const ssrContext = useSSRContext();
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/mitgliederbereich/index.vue");
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
};
export { _sfc_main as default };
//# sourceMappingURL=index-D7JtbHaf.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"index-D7JtbHaf.mjs","sources":["../../../../pages/mitgliederbereich/index.vue"],"sourcesContent":null,"names":["_ssrRenderAttrs","_mergeProps","_push","_parent","_createVNode","_unref"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AA4FA,IAAA,MAAM,YAAY,YAAA,EAAY;AAO9B,IAAA,OAAA,CAAQ;AAAA,MACN,KAAA,EAAO;AAAA,KACR,CAAA;;;AApGM,MAAA,KAAA,CAAA,CAAA,IAAA,EAAAA,eAAAC,UAAAA,CAAA,EAAA,OAAM,6BAAA,EAAA,EAA6B,MAAA,CAAA,CAAA,CAAA,mQAAA,CAAA,CAAA;;QAUhC,EAAA,EAAG,2BAAA;AAAA,QACH,KAAA,EAAM;AAAA,OAAA,EAAA;yBAFR,CAaW,CAAA,EAAAC,MAAAA,EAAAC,QAAAA,EAAA,QAAA,KAAA;;;;cAPE,IAAA,EAAM,EAAA;AAAA,cAAI,KAAA,EAAM;AAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,QAAA,CAAA,CAAA;;;;AAF3BC,cAAAA,WAAAA,CAKM,KAAA,EAAA,EALD,KAAA,EAAM,wBAAA,EAAwB,EAAA;AAAA,gBACjCA,WAAAA,CAEM,KAAA,EAAA,EAFD,KAAA,EAAM,qHAAmH,EAAA;AAAA,kBAC5HA,WAAAA,CAAmEC,KAAAA,CAAA,IAAA,CAAA,EAAA;AAAA,oBAA5D,IAAA,EAAM,EAAA;AAAA,oBAAI,KAAA,EAAM;AAAA,mBAAA;;AAEzBD,gBAAAA,WAAAA,CAAqE,IAAA,EAAA,EAAjE,KAAA,EAAM,0CAAA,IAA2C,aAAW;AAAA,eAAA,CAAA;AAElEA,cAAAA,WAAAA,CAEI,GAAA,EAAA,EAFD,KAAA,EAAM,eAAA,IAAgB,4CAEzB;AAAA,aAAA;;;;;;QAKA,EAAA,EAAG,+BAAA;AAAA,QACH,KAAA,EAAM;AAAA,OAAA,EAAA;yBAFR,CAaW,CAAA,EAAAF,MAAAA,EAAAC,QAAAA,EAAA,QAAA,KAAA;;;;cAPG,IAAA,EAAM,EAAA;AAAA,cAAI,KAAA,EAAM;AAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,QAAA,CAAA,CAAA;;;;AAF5BC,cAAAA,WAAAA,CAKM,KAAA,EAAA,EALD,KAAA,EAAM,wBAAA,EAAwB,EAAA;AAAA,gBACjCA,WAAAA,CAEM,KAAA,EAAA,EAFD,KAAA,EAAM,qHAAmH,EAAA;AAAA,kBAC5HA,WAAAA,CAAoEC,KAAAA,CAAA,KAAA,CAAA,EAAA;AAAA,oBAA5D,IAAA,EAAM,EAAA;AAAA,oBAAI,KAAA,EAAM;AAAA,mBAAA;;AAE1BD,gBAAAA,WAAAA,CAAoE,IAAA,EAAA,EAAhE,KAAA,EAAM,0CAAA,IAA2C,YAAU;AAAA,eAAA,CAAA;AAEjEA,cAAAA,WAAAA,CAEI,GAAA,EAAA,EAFD,KAAA,EAAM,eAAA,IAAgB,sCAEzB;AAAA,aAAA;;;;;;QAKA,EAAA,EAAG,yBAAA;AAAA,QACH,KAAA,EAAM;AAAA,OAAA,EAAA;yBAFR,CAaW,CAAA,EAAAF,MAAAA,EAAAC,QAAAA,EAAA,QAAA,KAAA;;;;cAPO,IAAA,EAAM,EAAA;AAAA,cAAI,KAAA,EAAM;AAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,QAAA,CAAA,CAAA;;;;AAFhCC,cAAAA,WAAAA,CAKM,KAAA,EAAA,EALD,KAAA,EAAM,wBAAA,EAAwB,EAAA;AAAA,gBACjCA,WAAAA,CAEM,KAAA,EAAA,EAFD,KAAA,EAAM,qHAAmH,EAAA;AAAA,kBAC5HA,WAAAA,CAAwEC,KAAAA,CAAA,SAAA,CAAA,EAAA;AAAA,oBAA5D,IAAA,EAAM,EAAA;AAAA,oBAAI,KAAA,EAAM;AAAA,mBAAA;;AAE9BD,gBAAAA,WAAAA,CAAsE,IAAA,EAAA,EAAlE,KAAA,EAAM,0CAAA,IAA2C,cAAY;AAAA,eAAA,CAAA;AAEnEA,cAAAA,WAAAA,CAEI,GAAA,EAAA,EAFD,KAAA,EAAM,eAAA,IAAgB,iCAEzB;AAAA,aAAA;;;;;AAOeC,MAAAA,KAAAA,CAAAA,CAAAA,wJAAAA,EAAAA,cAAAA,CAAAA,KAAAA,CAAA,SAAA,CAAA,CAAU,IAAA,EAAM,IAAA,IAAI,UAAA,CAAA,CAAA,4MAAA,CAAA,CAAA;;QAOzB,IAAA,EAAM,EAAA;AAAA,QAAI,KAAA,EAAM;AAAA,OAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;;QAIhB,IAAA,EAAM,EAAA;AAAA,QAAI,KAAA,EAAM;AAAA,OAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;;QAIhB,IAAA,EAAM,EAAA;AAAA,QAAI,KAAA,EAAM;AAAA,OAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;;QAIhB,IAAA,EAAM,EAAA;AAAA,QAAI,KAAA,EAAM;AAAA,OAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;;;;;;;;;;;;;"}

View File

@@ -0,0 +1,215 @@
import { _ as __nuxt_component_0$1 } from './server.mjs';
import { mergeProps, withCtx, unref, createVNode, createTextVNode, ref, useSSRContext } from 'vue';
import { ssrRenderAttrs, ssrRenderComponent, ssrRenderList, ssrInterpolate, ssrRenderClass, ssrRenderAttr } from 'vue/server-renderer';
import { Users, BarChart } from 'lucide-vue-next';
import { u as useHead } from './composables-CK-Mp9jS.mjs';
import '../nitro/nitro.mjs';
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 '../routes/renderer.mjs';
import 'vue-bundle-renderer/runtime';
import 'unhead/server';
import 'devalue';
import 'unhead/utils';
import 'pinia';
import 'vue-router';
const _sfc_main$1 = {
__name: "MannschaftenUebersicht",
__ssrInlineRender: true,
setup(__props) {
const mannschaften = ref([]);
const getSpielerListe = (mannschaft) => {
if (!mannschaft.spieler) return [];
return mannschaft.spieler.split(";").map((s) => s.trim()).filter((s) => s !== "");
};
const formatDate = (dateString) => {
if (!dateString) return "";
if (/^\d{2}\.\d{2}\.\d{4}$/.test(dateString)) {
return dateString;
}
const date = new Date(dateString);
if (isNaN(date.getTime())) {
return dateString;
}
return date.toLocaleDateString("de-DE", {
day: "2-digit",
month: "2-digit",
year: "numeric"
});
};
return (_ctx, _push, _parent, _attrs) => {
_push(`<div${ssrRenderAttrs(_attrs)}>`);
if (mannschaften.value.length > 0) {
_push(`<div class="space-y-8"><!--[-->`);
ssrRenderList(mannschaften.value, (mannschaft, index) => {
_push(`<div class="bg-white rounded-xl shadow-lg border border-gray-100 overflow-hidden"><div class="bg-gradient-to-r from-primary-600 to-primary-700 p-6"><h2 class="text-2xl font-display font-bold text-white mb-2">${ssrInterpolate(mannschaft.mannschaft)}</h2><p class="text-primary-100 text-lg">${ssrInterpolate(mannschaft.liga)}</p></div><div class="p-6"><div class="grid md:grid-cols-2 gap-6 mb-6"><div class="space-y-3"><div class="flex items-center space-x-3"><div class="w-2 h-2 bg-primary-600 rounded-full"></div><span class="text-gray-600">Staffelleiter:</span><span class="font-semibold text-gray-900">${ssrInterpolate(mannschaft.staffelleiter)}</span></div><div class="flex items-center space-x-3"><div class="w-2 h-2 bg-primary-600 rounded-full"></div><span class="text-gray-600">Telefon:</span><span class="font-semibold text-gray-900">${ssrInterpolate(mannschaft.telefon)}</span></div></div><div class="space-y-3"><div class="flex items-center space-x-3"><div class="w-2 h-2 bg-primary-600 rounded-full"></div><span class="text-gray-600">Heimspieltag:</span><span class="font-semibold text-gray-900">${ssrInterpolate(mannschaft.heimspieltag)}</span></div><div class="flex items-center space-x-3"><div class="w-2 h-2 bg-primary-600 rounded-full"></div><span class="text-gray-600">Spielsystem:</span><span class="font-semibold text-gray-900">${ssrInterpolate(mannschaft.spielsystem)}</span></div></div></div><div class="border-t border-gray-200 pt-6"><h3 class="text-xl font-semibold text-gray-900 mb-4"> Mannschaftsaufstellung Saison 2025/26 (Hinrunde) </h3><div class="grid sm:grid-cols-2 lg:grid-cols-4 gap-4"><!--[-->`);
ssrRenderList(getSpielerListe(mannschaft), (spieler, spielerIndex) => {
_push(`<div class="${ssrRenderClass([spieler === mannschaft.mannschaftsfuehrer ? "ring-2 ring-primary-500 bg-primary-50" : "", "bg-gray-50 rounded-lg p-4 text-center"])}"><div class="font-semibold text-gray-900">${ssrInterpolate(spieler)}</div>`);
if (spieler === mannschaft.mannschaftsfuehrer) {
_push(`<div class="text-xs text-primary-600 font-medium mt-1"> Mannschaftsführer </div>`);
} else {
_push(`<!---->`);
}
_push(`</div>`);
});
_push(`<!--]--></div></div><div class="border-t border-gray-200 pt-6 mt-6"><div class="text-center">`);
if (mannschaft.weitere_informationen_link && mannschaft.weitere_informationen_link !== "") {
_push(`<a${ssrRenderAttr("href", mannschaft.weitere_informationen_link)} target="_blank" class="inline-flex items-center px-6 py-3 bg-primary-600 hover:bg-primary-700 text-white font-semibold rounded-lg transition-colors">`);
_push(ssrRenderComponent(unref(BarChart), {
size: 20,
class: "mr-2"
}, null, _parent));
_push(` Weitere Informationen </a>`);
} else {
_push(`<!---->`);
}
_push(`</div></div><div class="border-t border-gray-200 pt-4 mt-6"><p class="text-sm text-gray-500 text-center"> Zuletzt aktualisiert am: ${ssrInterpolate(formatDate(mannschaft.letzte_aktualisierung))}</p></div></div></div>`);
});
_push(`<!--]--></div>`);
} else {
_push(`<div class="text-center py-12 bg-gray-50 rounded-xl">`);
_push(ssrRenderComponent(unref(Users), {
size: 48,
class: "text-gray-400 mx-auto mb-4"
}, null, _parent));
_push(`<p class="text-gray-600">Keine Mannschaftsdaten geladen</p></div>`);
}
_push(`</div>`);
};
}
};
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("components/MannschaftenUebersicht.vue");
return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0;
};
const _sfc_main = {
__name: "index",
__ssrInlineRender: true,
setup(__props) {
useHead({
title: "Mannschaften - Harheimer TC"
});
return (_ctx, _push, _parent, _attrs) => {
const _component_NuxtLink = __nuxt_component_0$1;
_push(`<div${ssrRenderAttrs(mergeProps({ class: "min-h-full py-16 bg-gray-50" }, _attrs))}><div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"><h1 class="text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-6"> Unsere Mannschaften </h1><div class="w-24 h-1 bg-primary-600 mb-8"></div><p class="text-xl text-gray-600 mb-12"> Unsere aktiven Mannschaften in der Saison 2025/26 </p>`);
_push(ssrRenderComponent(_sfc_main$1, null, null, _parent));
_push(`<div class="mt-16"><h2 class="text-3xl font-display font-bold text-gray-900 mb-8 text-center"> Weitere Informationen </h2><div class="grid md:grid-cols-3 gap-8">`);
_push(ssrRenderComponent(_component_NuxtLink, {
to: "/mannschaften/herren",
class: "group bg-white p-8 rounded-xl shadow-lg hover:shadow-2xl transition-all border border-gray-100 hover:border-primary-600"
}, {
default: withCtx((_, _push2, _parent2, _scopeId) => {
if (_push2) {
_push2(`<div class="w-16 h-16 bg-gradient-to-br from-primary-500 to-primary-700 rounded-xl flex items-center justify-center mb-4 group-hover:scale-110 transition-transform"${_scopeId}>`);
_push2(ssrRenderComponent(unref(Users), {
size: 32,
class: "text-white"
}, null, _parent2, _scopeId));
_push2(`</div><h3 class="text-2xl font-display font-bold text-gray-900 mb-2 group-hover:text-primary-600 transition-colors"${_scopeId}> Herren </h3><p class="text-gray-600"${_scopeId}> 3 Mannschaften in verschiedenen Ligen </p>`);
} else {
return [
createVNode("div", { class: "w-16 h-16 bg-gradient-to-br from-primary-500 to-primary-700 rounded-xl flex items-center justify-center mb-4 group-hover:scale-110 transition-transform" }, [
createVNode(unref(Users), {
size: 32,
class: "text-white"
})
]),
createVNode("h3", { class: "text-2xl font-display font-bold text-gray-900 mb-2 group-hover:text-primary-600 transition-colors" }, " Herren "),
createVNode("p", { class: "text-gray-600" }, " 3 Mannschaften in verschiedenen Ligen ")
];
}
}),
_: 1
}, _parent));
_push(ssrRenderComponent(_component_NuxtLink, {
to: "/mannschaften/damen",
class: "group bg-white p-8 rounded-xl shadow-lg hover:shadow-2xl transition-all border border-gray-100 hover:border-primary-600"
}, {
default: withCtx((_, _push2, _parent2, _scopeId) => {
if (_push2) {
_push2(`<div class="w-16 h-16 bg-gradient-to-br from-primary-500 to-primary-700 rounded-xl flex items-center justify-center mb-4 group-hover:scale-110 transition-transform"${_scopeId}>`);
_push2(ssrRenderComponent(unref(Users), {
size: 32,
class: "text-white"
}, null, _parent2, _scopeId));
_push2(`</div><h3 class="text-2xl font-display font-bold text-gray-900 mb-2 group-hover:text-primary-600 transition-colors"${_scopeId}> Damen </h3><p class="text-gray-600"${_scopeId}> 1 Mannschaft in der Bezirksliga </p>`);
} else {
return [
createVNode("div", { class: "w-16 h-16 bg-gradient-to-br from-primary-500 to-primary-700 rounded-xl flex items-center justify-center mb-4 group-hover:scale-110 transition-transform" }, [
createVNode(unref(Users), {
size: 32,
class: "text-white"
})
]),
createVNode("h3", { class: "text-2xl font-display font-bold text-gray-900 mb-2 group-hover:text-primary-600 transition-colors" }, " Damen "),
createVNode("p", { class: "text-gray-600" }, " 1 Mannschaft in der Bezirksliga ")
];
}
}),
_: 1
}, _parent));
_push(ssrRenderComponent(_component_NuxtLink, {
to: "/mannschaften/jugend",
class: "group bg-white p-8 rounded-xl shadow-lg hover:shadow-2xl transition-all border border-gray-100 hover:border-primary-600"
}, {
default: withCtx((_, _push2, _parent2, _scopeId) => {
if (_push2) {
_push2(`<div class="w-16 h-16 bg-gradient-to-br from-primary-500 to-primary-700 rounded-xl flex items-center justify-center mb-4 group-hover:scale-110 transition-transform"${_scopeId}>`);
_push2(ssrRenderComponent(unref(Users), {
size: 32,
class: "text-white"
}, null, _parent2, _scopeId));
_push2(`</div><h3 class="text-2xl font-display font-bold text-gray-900 mb-2 group-hover:text-primary-600 transition-colors"${_scopeId}> Jugend </h3><p class="text-gray-600"${_scopeId}> 2 Jugendmannschaften </p>`);
} else {
return [
createVNode("div", { class: "w-16 h-16 bg-gradient-to-br from-primary-500 to-primary-700 rounded-xl flex items-center justify-center mb-4 group-hover:scale-110 transition-transform" }, [
createVNode(unref(Users), {
size: 32,
class: "text-white"
})
]),
createVNode("h3", { class: "text-2xl font-display font-bold text-gray-900 mb-2 group-hover:text-primary-600 transition-colors" }, " Jugend "),
createVNode("p", { class: "text-gray-600" }, " 2 Jugendmannschaften ")
];
}
}),
_: 1
}, _parent));
_push(`</div><div class="mt-12 bg-primary-50 p-8 rounded-xl border border-primary-100"><h3 class="text-2xl font-display font-bold text-gray-900 mb-4"> Spielpläne &amp; Ergebnisse </h3><p class="text-gray-600 mb-6"> Alle aktuellen Spielpläne und Ergebnisse unserer Mannschaften finden Sie hier. </p>`);
_push(ssrRenderComponent(_component_NuxtLink, {
to: "/mannschaften/spielplaene",
class: "inline-flex items-center px-6 py-3 bg-primary-600 hover:bg-primary-700 text-white font-semibold rounded-lg transition-colors"
}, {
default: withCtx((_, _push2, _parent2, _scopeId) => {
if (_push2) {
_push2(` Zu den Spielplänen `);
} else {
return [
createTextVNode(" Zu den Spielplänen ")
];
}
}),
_: 1
}, _parent));
_push(`</div></div></div></div>`);
};
}
};
const _sfc_setup = _sfc_main.setup;
_sfc_main.setup = (props, ctx) => {
const ssrContext = useSSRContext();
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/mannschaften/index.vue");
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
};
export { _sfc_main as default };
//# sourceMappingURL=index-DUWe6TYg.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"index-DUWe6TYg.mjs","sources":["../../../../components/MannschaftenUebersicht.vue","../../../../pages/mannschaften/index.vue"],"sourcesContent":null,"names":["_ssrInterpolate","_ssrRenderList","_ssrRenderAttrs","_mergeProps","_push","_parent","_createVNode","_unref"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAsGA,IAAA,MAAM,YAAA,GAAe,GAAA,CAAI,EAAE,CAAA;AA2E3B,IAAA,MAAM,eAAA,GAAkB,CAAC,UAAA,KAAe;AACtC,MAAA,IAAI,CAAC,UAAA,CAAW,OAAA,EAAS,OAAO,EAAA;AAChC,MAAA,OAAO,UAAA,CAAW,OAAA,CAAQ,KAAA,CAAM,GAAG,EAAE,GAAA,CAAI,CAAA,CAAA,KAAK,CAAA,CAAE,IAAA,EAAM,CAAA,CAAE,MAAA,CAAO,CAAA,CAAA,KAAK,MAAM,EAAE,CAAA;AAAA,IAC9E,CAAA;AAEA,IAAA,MAAM,UAAA,GAAa,CAAC,UAAA,KAAe;AACjC,MAAA,IAAI,CAAC,YAAY,OAAO,EAAA;AAGxB,MAAA,IAAI,uBAAA,CAAwB,IAAA,CAAK,UAAU,CAAA,EAAG;AAC5C,QAAA,OAAO,UAAA;AAAA,MACT;AAGA,MAAA,MAAM,IAAA,GAAO,IAAI,IAAA,CAAK,UAAU,CAAA;AAChC,MAAA,IAAI,KAAA,CAAM,IAAA,CAAK,OAAA,EAAS,CAAA,EAAG;AACzB,QAAA,OAAO,UAAA;AAAA,MACT;AAEA,MAAA,OAAO,IAAA,CAAK,mBAAmB,OAAA,EAAS;AAAA,QACtC,GAAA,EAAK,SAAA;AAAA,QACL,KAAA,EAAO,SAAA;AAAA,QACP,IAAA,EAAM;AAAA,OACP,CAAA;AAAA,IACH,CAAA;;;AAvMe,MAAA,IAAA,YAAA,CAAA,KAAA,CAAa,MAAA,GAAM,CAAA,EAAA;;sBAEI,YAAA,CAAA,KAAA,EAAY,CAAlC,UAAA,EAAY,KAAA,KAAK;mOAOlBA,cAAAA,CAAA,UAAA,CAAW,UAAU,CAAA,CAAA,yCAAA,EAEaA,cAAAA,CAAA,WAAW,IAAI,CAAA,CAAA,yRAAA,EAWHA,eAAA,UAAA,CAAW,aAAa,sMAKxBA,cAAAA,CAAA,UAAA,CAAW,OAAO,CAAA,CAAA,oOAAA,EAOlBA,cAAAA,CAAA,WAAW,YAAY,CAAA,CAAA,sMAAA,EAKvBA,cAAAA,CAAA,UAAA,CAAW,WAAW,CAAA,CAAA,8OAAA,CAAA,CAAA;AAYjCC,UAAAA,aAAAA,CAAA,eAAA,CAAgB,UAAU,CAAA,EAAA,CAApD,SAAS,YAAA,KAAY;AAGrB,YAAA,KAAA,CAAA,CAAA,YAAA,EAAA,cAAA,CAAA,CAAA,OAAA,KAAY,WAAW,kBAAA,GAAkB,uCAAA,GAAA,IAAA,uCAAA,CAAA,8DAEL,OAAO,CAAA,CAAA,MAAA,CAAA,CAAA;AACxC,YAAA,IAAA,OAAA,KAAY,WAAW,kBAAA,EAAkB;;;;;;;;AAW9C,UAAA,IAAA,UAAA,CAAW,0BAAA,IAA8B,UAAA,CAAW,0BAAA,KAA0B,EAAA,EAAA;qCACnF,MAAA,EAAM,UAAA,CAAW,0BAA0B,CAAA,CAAA,sJAAA,CAAA,CAAA;;cAIjC,IAAA,EAAM,EAAA;AAAA,cAAI,KAAA,EAAM;AAAA,aAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;;;;AASD,UAAA,KAAA,CAAA,CAAA,mIAAA,EAAA,cAAA,CAAA,UAAA,CAAW,UAAA,CAAW,qBAAqB,CAAA,CAAA,CAAA,sBAAA,CAAA,CAAA;AAAA,QAAA,CAAA,CAAA;;;;;UAQvE,IAAA,EAAM,EAAA;AAAA,UAAI,KAAA,EAAM;AAAA,SAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;ACJ9B,IAAA,OAAA,CAAQ;AAAA,MACN,KAAA,EAAO;AAAA,KACR,CAAA;;;AAzFM,MAAA,KAAA,CAAA,CAAA,IAAA,EAAAC,eAAAC,UAAAA,CAAA,EAAA,OAAM,6BAAA,EAAA,EAA6B,MAAA,CAAA,CAAA,CAAA,wSAAA,CAAA,CAAA;;;;QAmBhC,EAAA,EAAG,sBAAA;AAAA,QACH,KAAA,EAAM;AAAA,OAAA,EAAA;yBAFR,CAaW,CAAA,EAAAC,MAAAA,EAAAC,QAAAA,EAAA,QAAA,KAAA;;;;cARC,IAAA,EAAM,EAAA;AAAA,cAAI,KAAA,EAAM;AAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,QAAA,CAAA,CAAA;;;;AAD1BC,cAAAA,WAAAA,CAEM,KAAA,EAAA,EAFD,KAAA,EAAM,yJAAA,EAAyJ,EAAA;AAAA,gBAClKA,WAAAA,CAAuCC,KAAAA,CAAA,KAAA,CAAA,EAAA;AAAA,kBAA/B,IAAA,EAAM,EAAA;AAAA,kBAAI,KAAA,EAAM;AAAA,iBAAA;;AAE1BD,cAAAA,WAAAA,CAEK,IAAA,EAAA,EAFD,KAAA,EAAM,mGAAA,IAAoG,UAE9G,CAAA;AAAA,cACAA,YAEI,GAAA,EAAA,EAFD,KAAA,EAAM,eAAA,IAAgB,yCAEzB;AAAA,aAAA;;;;;;QAIA,EAAA,EAAG,qBAAA;AAAA,QACH,KAAA,EAAM;AAAA,OAAA,EAAA;yBAFR,CAaW,CAAA,EAAAF,MAAAA,EAAAC,QAAAA,EAAA,QAAA,KAAA;;;;cARC,IAAA,EAAM,EAAA;AAAA,cAAI,KAAA,EAAM;AAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,QAAA,CAAA,CAAA;;;;AAD1BC,cAAAA,WAAAA,CAEM,KAAA,EAAA,EAFD,KAAA,EAAM,yJAAA,EAAyJ,EAAA;AAAA,gBAClKA,WAAAA,CAAuCC,KAAAA,CAAA,KAAA,CAAA,EAAA;AAAA,kBAA/B,IAAA,EAAM,EAAA;AAAA,kBAAI,KAAA,EAAM;AAAA,iBAAA;;AAE1BD,cAAAA,WAAAA,CAEK,IAAA,EAAA,EAFD,KAAA,EAAM,mGAAA,IAAoG,SAE9G,CAAA;AAAA,cACAA,YAEI,GAAA,EAAA,EAFD,KAAA,EAAM,eAAA,IAAgB,mCAEzB;AAAA,aAAA;;;;;;QAIA,EAAA,EAAG,sBAAA;AAAA,QACH,KAAA,EAAM;AAAA,OAAA,EAAA;yBAFR,CAaW,CAAA,EAAAF,MAAAA,EAAAC,QAAAA,EAAA,QAAA,KAAA;;;;cARC,IAAA,EAAM,EAAA;AAAA,cAAI,KAAA,EAAM;AAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,QAAA,CAAA,CAAA;;;;AAD1BC,cAAAA,WAAAA,CAEM,KAAA,EAAA,EAFD,KAAA,EAAM,yJAAA,EAAyJ,EAAA;AAAA,gBAClKA,WAAAA,CAAuCC,KAAAA,CAAA,KAAA,CAAA,EAAA;AAAA,kBAA/B,IAAA,EAAM,EAAA;AAAA,kBAAI,KAAA,EAAM;AAAA,iBAAA;;AAE1BD,cAAAA,WAAAA,CAEK,IAAA,EAAA,EAFD,KAAA,EAAM,mGAAA,IAAoG,UAE9G,CAAA;AAAA,cACAA,YAEI,GAAA,EAAA,EAFD,KAAA,EAAM,eAAA,IAAgB,wBAEzB;AAAA,aAAA;;;;;;;QAYA,EAAA,EAAG,2BAAA;AAAA,QACH,KAAA,EAAM;AAAA,OAAA,EAAA;yBAFR,CAKW,CAAA,EAAAF,MAAAA,EAAAC,QAAAA,EAAA,QAAA,KAAA;;;;;8BAFV,sBAED;AAAA,aAAA;;;;;;;;;;;;;;;;;;"}

View File

@@ -0,0 +1,95 @@
import { _ as __nuxt_component_0$1 } from './server.mjs';
import { mergeProps, unref, withCtx, createTextVNode, useSSRContext } from 'vue';
import { ssrRenderAttrs, ssrRenderComponent } from 'vue/server-renderer';
import { MapPin, Clock } from 'lucide-vue-next';
import { u as useHead } from './composables-CK-Mp9jS.mjs';
import '../nitro/nitro.mjs';
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 '../routes/renderer.mjs';
import 'vue-bundle-renderer/runtime';
import 'unhead/server';
import 'devalue';
import 'unhead/utils';
import 'pinia';
import 'vue-router';
const _sfc_main = {
__name: "index",
__ssrInlineRender: true,
setup(__props) {
useHead({
title: "Trainingszeiten - Harheimer TC"
});
return (_ctx, _push, _parent, _attrs) => {
const _component_NuxtLink = __nuxt_component_0$1;
_push(`<div${ssrRenderAttrs(mergeProps({ class: "min-h-full py-16 bg-gray-50" }, _attrs))}><div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"><h1 class="text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-6"> Trainingszeiten </h1><div class="w-24 h-1 bg-primary-600 mb-8"></div><div class="bg-white rounded-xl shadow-lg p-8 mb-12"><div class="flex items-start space-x-4 mb-6">`);
_push(ssrRenderComponent(unref(MapPin), {
size: 32,
class: "text-primary-600 flex-shrink-0"
}, null, _parent));
_push(`<div><h2 class="text-2xl font-display font-bold text-gray-900 mb-4">Trainingsort</h2><h3 class="text-lg font-semibold text-gray-900 mb-2"> Sporthalle der Grundschule Harheim </h3><p class="text-gray-700 mb-1">In den Schafgärten 25</p><p class="text-gray-700 mb-4">60437 Frankfurt/Main</p><a href="https://www.google.com/maps/search/?api=1&amp;query=In+den+Schafgärten+25+60437+Frankfurt" target="_blank" class="inline-flex items-center px-4 py-2 bg-primary-600 hover:bg-primary-700 text-white font-medium rounded-lg transition-colors text-sm">`);
_push(ssrRenderComponent(unref(MapPin), {
size: 16,
class: "mr-2"
}, null, _parent));
_push(` Anfahrtsplan anzeigen </a></div></div></div><h2 class="text-2xl font-display font-bold text-gray-900 mb-6"> Trainingszeiten </h2><div class="grid gap-6 mb-12"><div class="bg-white p-6 rounded-xl shadow-lg border-l-4 border-primary-600"><div class="flex items-start justify-between"><div><h3 class="text-xl font-display font-bold text-gray-900 mb-2">Damen und Herren</h3><div class="space-y-2"><p class="text-lg font-semibold text-primary-600"> Dienstag: 19:30 - 22:30 Uhr </p><p class="text-lg font-semibold text-primary-600"> Donnerstag: 19:30 - 22:30 Uhr </p></div></div>`);
_push(ssrRenderComponent(unref(Clock), {
size: 32,
class: "text-primary-600"
}, null, _parent));
_push(`</div></div><div class="bg-white p-6 rounded-xl shadow-lg border-l-4 border-primary-600"><div class="flex items-start justify-between"><div><h3 class="text-xl font-display font-bold text-gray-900 mb-2">Schüler/Jugend</h3><p class="text-gray-600 mb-2">Ab 6 Jahre</p><p class="text-lg font-semibold text-primary-600"> Dienstag: 17:30 - 19:30 Uhr </p></div>`);
_push(ssrRenderComponent(unref(Clock), {
size: 32,
class: "text-primary-600"
}, null, _parent));
_push(`</div></div></div><div class="mt-12 bg-primary-50 p-8 rounded-xl border border-primary-100"><h3 class="text-2xl font-display font-bold text-gray-900 mb-4"> Interessiert? </h3><p class="text-gray-600 mb-6"> Komm einfach zum Schnuppertraining vorbei oder kontaktiere uns für weitere Informationen! </p><div class="flex flex-wrap gap-4">`);
_push(ssrRenderComponent(_component_NuxtLink, {
to: "/training/anfaenger",
class: "inline-flex items-center px-6 py-3 bg-primary-600 hover:bg-primary-700 text-white font-semibold rounded-lg transition-colors"
}, {
default: withCtx((_, _push2, _parent2, _scopeId) => {
if (_push2) {
_push2(` Infos für Anfänger `);
} else {
return [
createTextVNode(" Infos für Anfänger ")
];
}
}),
_: 1
}, _parent));
_push(ssrRenderComponent(_component_NuxtLink, {
to: "/kontakt",
class: "inline-flex items-center px-6 py-3 bg-white hover:bg-gray-50 text-primary-600 border-2 border-primary-600 font-semibold rounded-lg transition-colors"
}, {
default: withCtx((_, _push2, _parent2, _scopeId) => {
if (_push2) {
_push2(` Kontakt `);
} else {
return [
createTextVNode(" Kontakt ")
];
}
}),
_: 1
}, _parent));
_push(`</div></div></div></div>`);
};
}
};
const _sfc_setup = _sfc_main.setup;
_sfc_main.setup = (props, ctx) => {
const ssrContext = useSSRContext();
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/training/index.vue");
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
};
export { _sfc_main as default };
//# sourceMappingURL=index-Dnh6tx7H.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"index-Dnh6tx7H.mjs","sources":["../../../../pages/training/index.vue"],"sourcesContent":null,"names":["_ssrRenderAttrs","_mergeProps","_push","_parent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAiGA,IAAA,OAAA,CAAQ;AAAA,MACN,KAAA,EAAO;AAAA,KACR,CAAA;;;AAlGM,MAAA,KAAA,CAAA,CAAA,IAAA,EAAAA,eAAAC,UAAAA,CAAA,EAAA,OAAM,6BAAA,EAAA,EAA6B,MAAA,CAAA,CAAA,CAAA,wSAAA,CAAA,CAAA;;QAUvB,IAAA,EAAM,EAAA;AAAA,QAAI,KAAA,EAAM;AAAA,OAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;;QAaZ,IAAA,EAAM,EAAA;AAAA,QAAI,KAAA,EAAM;AAAA,OAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;;QA0BnB,IAAA,EAAM,EAAA;AAAA,QAAI,KAAA,EAAM;AAAA,OAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;;QAahB,IAAA,EAAM,EAAA;AAAA,QAAI,KAAA,EAAM;AAAA,OAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;;QAcxB,EAAA,EAAG,qBAAA;AAAA,QACH,KAAA,EAAM;AAAA,OAAA,EAAA;yBAFR,CAKW,CAAA,EAAAC,MAAAA,EAAAC,QAAAA,EAAA,QAAA,KAAA;;;;;8BAFV,sBAED;AAAA,aAAA;;;;;;QAEE,EAAA,EAAG,UAAA;AAAA,QACH,KAAA,EAAM;AAAA,OAAA,EAAA;yBAFR,CAKW,CAAA,EAAAD,MAAAA,EAAAC,QAAAA,EAAA,QAAA,KAAA;;;;;8BAFV,WAED;AAAA,aAAA;;;;;;;;;;;;;;;;;;"}

View File

@@ -0,0 +1,188 @@
import { mergeProps, withCtx, unref, createVNode, createTextVNode, ref, computed, useSSRContext } from 'vue';
import { ssrRenderAttrs, ssrRenderComponent, ssrRenderStyle, ssrRenderList, ssrInterpolate, ssrRenderClass } from 'vue/server-renderer';
import { _ as __nuxt_component_0$1 } from './server.mjs';
import { ArrowRight, Calendar } from 'lucide-vue-next';
import { _ as _export_sfc } from './_plugin-vue_export-helper-1tPrXgE0.mjs';
import '../nitro/nitro.mjs';
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 '../routes/renderer.mjs';
import 'vue-bundle-renderer/runtime';
import 'unhead/server';
import 'devalue';
import 'unhead/utils';
import 'pinia';
import 'vue-router';
const _sfc_main$2 = {
__name: "TermineVorschau",
__ssrInlineRender: true,
setup(__props) {
const termine = ref([]);
const naechsteTermine = computed(() => {
const heute = /* @__PURE__ */ new Date();
console.log("Heute ist:", heute.toISOString().split("T")[0]);
const kommende = termine.value.filter((t) => {
const terminDatum = new Date(t.datum);
const istKommend = terminDatum >= heute;
console.log(`Termin ${t.titel} (${t.datum}): ${istKommend ? "KOMMEND" : "VERSTRICHEN"}`);
return istKommend;
}).sort((a, b) => new Date(a.datum) - new Date(b.datum));
console.log("Kommende Termine:", kommende);
return kommende;
});
const formatDay = (dateString) => {
const date = new Date(dateString);
return date.getDate();
};
const formatMonth = (dateString) => {
const date = new Date(dateString);
const monate = ["Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"];
return monate[date.getMonth()];
};
return (_ctx, _push, _parent, _attrs) => {
const _component_NuxtLink = __nuxt_component_0$1;
_push(`<div${ssrRenderAttrs(_attrs)}><div class="text-center mb-6"><h2 class="text-2xl font-display font-bold text-gray-900 mb-2"> Kommende Termine </h2><div class="w-16 h-0.5 bg-primary-600 mx-auto"></div></div>`);
if (naechsteTermine.value.length > 0) {
_push(`<div class="space-y-2 mb-6"><!--[-->`);
ssrRenderList(naechsteTermine.value, (termin, index) => {
_push(`<div class="bg-gray-50 rounded-lg p-3 hover:bg-gray-100 transition-colors"><div class="flex items-center justify-between"><div class="flex items-center space-x-3"><div class="w-10 h-10 bg-primary-600 rounded-lg flex flex-col items-center justify-center text-white text-xs font-bold"><span>${ssrInterpolate(formatDay(termin.datum))}</span><span>${ssrInterpolate(formatMonth(termin.datum))}</span></div><div><h3 class="font-semibold text-gray-900">${ssrInterpolate(termin.titel)}</h3><p class="text-sm text-gray-600">${ssrInterpolate(termin.beschreibung)}</p></div></div><span class="${ssrRenderClass([
"px-2 py-1 text-xs font-medium rounded-full",
termin.kategorie === "Turnier" ? "bg-yellow-100 text-yellow-800" : "bg-blue-100 text-blue-800"
])}">${ssrInterpolate(termin.kategorie)}</span></div></div>`);
});
_push(`<!--]--></div>`);
} else {
_push(`<div class="text-center py-8 bg-gray-50 rounded-lg">`);
_push(ssrRenderComponent(unref(Calendar), {
size: 32,
class: "text-gray-400 mx-auto mb-2"
}, null, _parent));
_push(`<p class="text-gray-600 text-sm">Keine kommenden Termine</p></div>`);
}
if (naechsteTermine.value.length > 0) {
_push(`<div class="text-center">`);
_push(ssrRenderComponent(_component_NuxtLink, {
to: "/termine",
class: "inline-flex items-center px-4 py-2 bg-primary-600 hover:bg-primary-700 text-white text-sm font-medium rounded-lg transition-colors"
}, {
default: withCtx((_, _push2, _parent2, _scopeId) => {
if (_push2) {
_push2(` Alle Termine anzeigen `);
_push2(ssrRenderComponent(unref(ArrowRight), {
size: 16,
class: "ml-1"
}, null, _parent2, _scopeId));
} else {
return [
createTextVNode(" Alle Termine anzeigen "),
createVNode(unref(ArrowRight), {
size: 16,
class: "ml-1"
})
];
}
}),
_: 1
}, _parent));
_push(`</div>`);
} else {
_push(`<!---->`);
}
_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("components/TermineVorschau.vue");
return _sfc_setup$2 ? _sfc_setup$2(props, ctx) : void 0;
};
const _sfc_main$1 = {
__name: "Hero",
__ssrInlineRender: true,
setup(__props) {
return (_ctx, _push, _parent, _attrs) => {
const _component_NuxtLink = __nuxt_component_0$1;
_push(`<section${ssrRenderAttrs(mergeProps({
id: "home",
class: "relative min-h-full flex items-center justify-center overflow-hidden py-20 bg-gradient-to-br from-gray-50 to-gray-100"
}, _attrs))} data-v-33d25311><div class="absolute inset-0 z-0" data-v-33d25311><div class="absolute top-0 right-0 w-96 h-96 bg-primary-200/30 rounded-full blur-3xl" data-v-33d25311></div><div class="absolute bottom-0 left-0 w-96 h-96 bg-gray-300/30 rounded-full blur-3xl" data-v-33d25311></div><div class="absolute inset-0 opacity-10" style="${ssrRenderStyle({ "background-image": "url('/images/club_about_us.png')", "background-size": "cover", "background-position": "center" })}" data-v-33d25311></div></div><div class="relative z-20 max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-20 sm:py-32" data-v-33d25311><div class="text-center" data-v-33d25311><h1 class="text-5xl sm:text-6xl lg:text-7xl font-display font-bold text-gray-900 mb-6 leading-tight animate-fade-in" data-v-33d25311> Willkommen beim<br data-v-33d25311><span class="text-primary-600" data-v-33d25311>Harheimer TC</span></h1><p class="text-xl sm:text-2xl text-gray-700 mb-8 max-w-3xl mx-auto animate-fade-in-delay-1" data-v-33d25311> Tradition trifft Moderne - Ihr Tischtennisverein in Frankfurt-Harheim seit über 45 Jahren </p><div class="flex flex-col sm:flex-row gap-4 justify-center items-center animate-fade-in-delay-2" data-v-33d25311>`);
_push(ssrRenderComponent(_component_NuxtLink, {
to: "/mitgliedschaft",
class: "group px-8 py-4 bg-primary-600 hover:bg-primary-700 text-white font-semibold rounded-xl shadow-lg hover:shadow-xl transition-all duration-300 flex items-center space-x-2"
}, {
default: withCtx((_, _push2, _parent2, _scopeId) => {
if (_push2) {
_push2(`<span data-v-33d25311${_scopeId}>Mitglied werden</span>`);
_push2(ssrRenderComponent(unref(ArrowRight), {
size: 20,
class: "group-hover:translate-x-1 transition-transform"
}, null, _parent2, _scopeId));
} else {
return [
createVNode("span", null, "Mitglied werden"),
createVNode(unref(ArrowRight), {
size: 20,
class: "group-hover:translate-x-1 transition-transform"
})
];
}
}),
_: 1
}, _parent));
_push(ssrRenderComponent(_component_NuxtLink, {
to: "/kontakt",
class: "px-8 py-4 bg-white hover:bg-gray-50 text-gray-900 font-semibold rounded-xl border-2 border-gray-300 hover:border-primary-600 shadow-lg transition-all duration-300"
}, {
default: withCtx((_, _push2, _parent2, _scopeId) => {
if (_push2) {
_push2(` Kontakt aufnehmen `);
} else {
return [
createTextVNode(" Kontakt aufnehmen ")
];
}
}),
_: 1
}, _parent));
_push(`</div></div><div class="mt-16 max-w-4xl mx-auto" data-v-33d25311>`);
_push(ssrRenderComponent(_sfc_main$2, null, null, _parent));
_push(`</div></div><div class="absolute bottom-8 left-1/2 transform -translate-x-1/2 z-20 animate-bounce" data-v-33d25311><div class="w-6 h-10 border-2 border-gray-400 rounded-full flex justify-center pt-2" data-v-33d25311><div class="w-1.5 h-3 bg-primary-600 rounded-full" data-v-33d25311></div></div></div></section>`);
};
}
};
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("components/Hero.vue");
return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0;
};
const Hero = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-33d25311"]]);
const _sfc_main = {
__name: "index",
__ssrInlineRender: true,
setup(__props) {
return (_ctx, _push, _parent, _attrs) => {
_push(`<div${ssrRenderAttrs(mergeProps({ class: "min-h-full" }, _attrs))}>`);
_push(ssrRenderComponent(Hero, null, null, _parent));
_push(`</div>`);
};
}
};
const _sfc_setup = _sfc_main.setup;
_sfc_main.setup = (props, ctx) => {
const ssrContext = useSSRContext();
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/index.vue");
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
};
export { _sfc_main as default };
//# sourceMappingURL=index-mblkcwgM.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"index-mblkcwgM.mjs","sources":["../../../../components/TermineVorschau.vue","../../../../components/Hero.vue","../../../../pages/index.vue"],"sourcesContent":null,"names":["_ssrInterpolate","_push","_parent","_createVNode","_unref","_ssrRenderAttrs","_mergeProps"],"mappings":"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"}

View File

@@ -0,0 +1,60 @@
import { _ as __nuxt_component_0$1 } from './server.mjs';
import { mergeProps, withCtx, createTextVNode, useSSRContext } from 'vue';
import { ssrRenderAttrs, ssrRenderComponent } from 'vue/server-renderer';
import { u as useHead } from './composables-CK-Mp9jS.mjs';
import '../nitro/nitro.mjs';
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 '../routes/renderer.mjs';
import 'vue-bundle-renderer/runtime';
import 'unhead/server';
import 'devalue';
import 'unhead/utils';
import 'pinia';
import 'vue-router';
import 'lucide-vue-next';
const _sfc_main = {
__name: "jugend",
__ssrInlineRender: true,
setup(__props) {
useHead({
title: "Jugendmannschaften - Harheimer TC"
});
return (_ctx, _push, _parent, _attrs) => {
const _component_NuxtLink = __nuxt_component_0$1;
_push(`<div${ssrRenderAttrs(mergeProps({ class: "min-h-full py-16 bg-gray-50" }, _attrs))}><div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"><h1 class="text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-6"> Jugendmannschaften </h1><div class="w-24 h-1 bg-primary-600 mb-8"></div><div class="space-y-8"><div class="bg-white p-8 rounded-xl shadow-lg"><h3 class="text-2xl font-display font-bold text-gray-900 mb-4">Jugend 1 (U18)</h3><p class="text-gray-600 mb-4">Liga: Bezirksliga</p><p class="text-gray-600">Betreuer: Name folgt</p></div><div class="bg-white p-8 rounded-xl shadow-lg"><h3 class="text-2xl font-display font-bold text-gray-900 mb-4">Jugend 2 (U15)</h3><p class="text-gray-600 mb-4">Liga: Kreisliga</p><p class="text-gray-600">Betreuer: Name folgt</p></div><div class="bg-primary-50 p-8 rounded-xl border border-primary-100"><h3 class="text-2xl font-display font-bold text-gray-900 mb-4"> Jugendtraining </h3><p class="text-gray-600 mb-6"><strong>Dienstag &amp; Donnerstag:</strong> 17:00 - 19:00 Uhr<br> Für Kinder und Jugendliche von 8-18 Jahren </p>`);
_push(ssrRenderComponent(_component_NuxtLink, {
to: "/training",
class: "inline-flex items-center px-6 py-3 bg-primary-600 hover:bg-primary-700 text-white font-semibold rounded-lg transition-colors"
}, {
default: withCtx((_, _push2, _parent2, _scopeId) => {
if (_push2) {
_push2(` Mehr zum Training `);
} else {
return [
createTextVNode(" Mehr zum Training ")
];
}
}),
_: 1
}, _parent));
_push(`</div></div></div></div>`);
};
}
};
const _sfc_setup = _sfc_main.setup;
_sfc_main.setup = (props, ctx) => {
const ssrContext = useSSRContext();
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/mannschaften/jugend.vue");
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
};
export { _sfc_main as default };
//# sourceMappingURL=jugend-CDQZwKSx.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"jugend-CDQZwKSx.mjs","sources":["../../../../pages/mannschaften/jugend.vue"],"sourcesContent":null,"names":["_ssrRenderAttrs","_mergeProps","_push","_parent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AA0CA,IAAA,OAAA,CAAQ;AAAA,MACN,KAAA,EAAO;AAAA,KACR,CAAA;;;AA3CM,MAAA,KAAA,CAAA,CAAA,IAAA,EAAAA,eAAAC,UAAAA,CAAA,EAAA,OAAM,6BAAA,EAAA,EAA6B,MAAA,CAAA,CAAA,CAAA,29BAAA,CAAA,CAAA;;QA6B9B,EAAA,EAAG,WAAA;AAAA,QACH,KAAA,EAAM;AAAA,OAAA,EAAA;yBAFR,CAKW,CAAA,EAAAC,MAAAA,EAAAC,QAAAA,EAAA,QAAA,KAAA;;;;;8BAFV,qBAED;AAAA,aAAA;;;;;;;;;;;;;;;;;;"}

View File

@@ -0,0 +1,139 @@
import { mergeProps, ref, createVNode, resolveDynamicComponent, unref, useSSRContext } from 'vue';
import { ssrRenderAttrs, ssrRenderComponent, ssrRenderList, ssrRenderClass, ssrRenderVNode, ssrInterpolate, ssrRenderStyle, ssrRenderAttr, ssrIncludeBooleanAttr } from 'vue/server-renderer';
import { MapPin, Phone, Mail, Clock, CheckCircle, AlertCircle, Send } from 'lucide-vue-next';
import { u as useHead } from './composables-CK-Mp9jS.mjs';
import './server.mjs';
import '../nitro/nitro.mjs';
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 '../routes/renderer.mjs';
import 'vue-bundle-renderer/runtime';
import 'unhead/server';
import 'devalue';
import 'unhead/utils';
import 'pinia';
import 'vue-router';
const _sfc_main$1 = {
__name: "Contact",
__ssrInlineRender: true,
setup(__props) {
const formData = ref({
name: "",
email: "",
phone: "",
subject: "",
message: ""
});
const isSubmitting = ref(false);
const submitStatus = ref(null);
const submitMessage = ref("");
const contactInfo = [
{
icon: MapPin,
title: "Trainingsort",
content: ["Sporthalle der Grundschule Harheim", "In den Schafgärten 25", "60437 Frankfurt/Main"],
color: "from-red-500 to-pink-500"
},
{
icon: Phone,
title: "Telefon",
content: ["06101-4992227"],
color: "from-green-500 to-emerald-500"
},
{
icon: Mail,
title: "E-Mail",
content: ["j.dichmann@gmx.de"],
color: "from-blue-500 to-cyan-500"
},
{
icon: Clock,
title: "Trainingszeiten",
content: ["Dienstag: 19:30 - 22:30 Uhr", "Donnerstag: 19:30 - 22:30 Uhr"],
color: "from-purple-500 to-indigo-500"
}
];
return (_ctx, _push, _parent, _attrs) => {
_push(`<section${ssrRenderAttrs(mergeProps({
id: "contact",
class: "py-16 sm:py-20 bg-white"
}, _attrs))}><div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"><div class="text-center mb-16"><h2 class="text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-4"> Kontakt </h2><div class="w-24 h-1 bg-primary-600 mx-auto mb-6"></div><p class="text-xl text-gray-600 max-w-3xl mx-auto"> Wir freuen uns auf Ihre Nachricht - Kontaktieren Sie uns! </p></div><div class="grid lg:grid-cols-2 gap-12 items-start"><div class="space-y-6"><!--[-->`);
ssrRenderList(contactInfo, (info) => {
_push(`<div class="flex items-start space-x-4 bg-gray-50 p-6 rounded-xl hover:shadow-lg transition-shadow"><div class="${ssrRenderClass(["flex-shrink-0 w-12 h-12 bg-gradient-to-br rounded-lg flex items-center justify-center", info.color])}">`);
ssrRenderVNode(_push, createVNode(resolveDynamicComponent(info.icon), {
size: 24,
class: "text-white"
}, null), _parent);
_push(`</div><div><h3 class="font-display font-bold text-gray-900 mb-2">${ssrInterpolate(info.title)}</h3><!--[-->`);
ssrRenderList(info.content, (line, i) => {
_push(`<p class="text-gray-600">${ssrInterpolate(line)}</p>`);
});
_push(`<!--]--></div></div>`);
});
_push(`<!--]--><div class="space-y-4"><div class="rounded-2xl overflow-hidden shadow-xl h-64"><iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d2554.5!2d8.660947!3d50.187044!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x47bd0e5e5e5e5e5e%3A0x5e5e5e5e5e5e5e5e!2sIn%20den%20Schafg%C3%A4rten%2025%2C%2060437%20Frankfurt%20am%20Main!5e0!3m2!1sde!2sde!4v1234567890" width="100%" height="100%" style="${ssrRenderStyle({ "border": "0" })}" loading="lazy" allowfullscreen referrerpolicy="no-referrer-when-downgrade" title="Sporthalle der Grundschule Harheim"></iframe></div><a href="https://www.google.com/maps/search/?api=1&amp;query=In+den+Schafgärten+25+60437+Frankfurt" target="_blank" class="block text-center px-4 py-3 bg-primary-600 hover:bg-primary-700 text-white font-medium rounded-lg transition-colors"> In Google Maps öffnen </a></div></div><div class="bg-gradient-to-br from-primary-50 to-primary-100/50 rounded-2xl p-8 shadow-xl"><h3 class="text-2xl font-display font-bold text-gray-900 mb-6"> Senden Sie uns eine Nachricht </h3><form class="space-y-4"><div><label for="name" class="block text-sm font-medium text-gray-700 mb-1"> Name * </label><input type="text" id="name"${ssrRenderAttr("value", formData.value.name)} required class="w-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-500 focus:border-transparent transition-all" placeholder="Ihr Name"></div><div><label for="email" class="block text-sm font-medium text-gray-700 mb-1"> E-Mail * </label><input type="email" id="email"${ssrRenderAttr("value", formData.value.email)} required class="w-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-500 focus:border-transparent transition-all" placeholder="ihre@email.de"></div><div><label for="phone" class="block text-sm font-medium text-gray-700 mb-1"> Telefon </label><input type="tel" id="phone"${ssrRenderAttr("value", formData.value.phone)} class="w-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-500 focus:border-transparent transition-all" placeholder="+49 123 456789"></div><div><label for="subject" class="block text-sm font-medium text-gray-700 mb-1"> Betreff * </label><input type="text" id="subject"${ssrRenderAttr("value", formData.value.subject)} required class="w-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-500 focus:border-transparent transition-all" placeholder="Worum geht es?"></div><div><label for="message" class="block text-sm font-medium text-gray-700 mb-1"> Nachricht * </label><textarea id="message" required rows="5" class="w-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-500 focus:border-transparent transition-all resize-none" placeholder="Ihre Nachricht...">${ssrInterpolate(formData.value.message)}</textarea></div>`);
if (submitStatus.value) {
_push(`<div class="${ssrRenderClass([submitStatus.value === "success" ? "bg-green-50 border border-green-200" : "bg-red-50 border border-red-200", "p-4 rounded-lg"])}"><div class="flex items-center">`);
if (submitStatus.value === "success") {
_push(ssrRenderComponent(unref(CheckCircle), {
size: 20,
class: "text-green-600 mr-2"
}, null, _parent));
} else {
_push(ssrRenderComponent(unref(AlertCircle), {
size: 20,
class: "text-red-600 mr-2"
}, null, _parent));
}
_push(`<p class="${ssrRenderClass([submitStatus.value === "success" ? "text-green-800" : "text-red-800", "text-sm font-medium"])}">${ssrInterpolate(submitMessage.value)}</p></div></div>`);
} else {
_push(`<!---->`);
}
_push(`<button type="submit"${ssrIncludeBooleanAttr(isSubmitting.value) ? " disabled" : ""} class="w-full px-6 py-4 bg-primary-600 hover:bg-primary-700 disabled:bg-gray-400 disabled:cursor-not-allowed text-white font-semibold rounded-lg shadow-lg hover:shadow-xl transition-all duration-300 flex items-center justify-center">`);
if (!isSubmitting.value) {
_push(ssrRenderComponent(unref(Send), {
size: 20,
class: "mr-2"
}, null, _parent));
} else {
_push(`<div class="animate-spin rounded-full h-5 w-5 border-b-2 border-white mr-2"></div>`);
}
_push(` ${ssrInterpolate(isSubmitting.value ? "Wird gesendet..." : "E-Mail senden")}</button><p class="text-sm text-gray-600 text-center"> * Pflichtfelder </p></form><p class="mt-4 text-sm text-gray-600 text-center"> Ihre Nachricht wird direkt an j.dichmann@gmx.de gesendet </p></div></div></div></section>`);
};
}
};
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("components/Contact.vue");
return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0;
};
const _sfc_main = {
__name: "kontakt",
__ssrInlineRender: true,
setup(__props) {
useHead({
title: "Kontakt - Harheimer TC"
});
return (_ctx, _push, _parent, _attrs) => {
_push(`<div${ssrRenderAttrs(mergeProps({ class: "min-h-screen" }, _attrs))}>`);
_push(ssrRenderComponent(_sfc_main$1, null, null, _parent));
_push(`</div>`);
};
}
};
const _sfc_setup = _sfc_main.setup;
_sfc_main.setup = (props, ctx) => {
const ssrContext = useSSRContext();
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/kontakt.vue");
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
};
export { _sfc_main as default };
//# sourceMappingURL=kontakt-DXDMYVtx.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"kontakt-DXDMYVtx.mjs","sources":["../../../../components/Contact.vue","../../../../pages/kontakt.vue"],"sourcesContent":null,"names":["_ssrRenderList","_ssrRenderClass","_ssrRenderVNode","_createVNode","_resolveDynamicComponent","_ssrInterpolate","_ssrRenderAttr","_ssrRenderAttrs","_mergeProps"],"mappings":"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"}

View File

@@ -0,0 +1,104 @@
import { u as useAuthStore, _ as __nuxt_component_0$1 } from './server.mjs';
import { ref, mergeProps, unref, withCtx, createTextVNode, useSSRContext } from 'vue';
import { ssrRenderAttrs, ssrRenderAttr, ssrRenderClass, ssrRenderComponent, ssrInterpolate, ssrIncludeBooleanAttr } from 'vue/server-renderer';
import { useRouter } from 'vue-router';
import { AlertCircle, Check, Loader2, Lock } from 'lucide-vue-next';
import { u as useHead } from './composables-CK-Mp9jS.mjs';
import '../nitro/nitro.mjs';
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 '../routes/renderer.mjs';
import 'vue-bundle-renderer/runtime';
import 'unhead/server';
import 'devalue';
import 'unhead/utils';
import 'pinia';
const _sfc_main = {
__name: "login",
__ssrInlineRender: true,
setup(__props) {
useRouter();
useAuthStore();
const formData = ref({
email: "",
password: ""
});
const isLoading = ref(false);
const errorMessage = ref("");
const successMessage = ref("");
useHead({
title: "Login - Harheimer TC"
});
return (_ctx, _push, _parent, _attrs) => {
const _component_NuxtLink = __nuxt_component_0$1;
_push(`<div${ssrRenderAttrs(mergeProps({ class: "min-h-full flex items-center justify-center py-16 px-4 sm:px-6 lg:px-8 bg-gray-50" }, _attrs))}><div class="max-w-md w-full space-y-8"><div class="text-center"><h2 class="text-3xl font-display font-bold text-gray-900"> Mitglieder-Login </h2><p class="mt-2 text-sm text-gray-600"> Melden Sie sich an, um auf den Mitgliederbereich zuzugreifen </p></div><div class="bg-white rounded-xl shadow-lg p-8"><form class="space-y-6"><div><label for="email" class="block text-sm font-medium text-gray-700 mb-2"> E-Mail-Adresse </label><input id="email"${ssrRenderAttr("value", formData.value.email)} type="email" required autocomplete="email" class="${ssrRenderClass([{ "border-red-500": errorMessage.value }, "w-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-600 focus:border-transparent transition-all"])}" placeholder="ihre-email@example.com"></div><div><label for="password" class="block text-sm font-medium text-gray-700 mb-2"> Passwort </label><input id="password"${ssrRenderAttr("value", formData.value.password)} type="password" required autocomplete="current-password" class="${ssrRenderClass([{ "border-red-500": errorMessage.value }, "w-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-600 focus:border-transparent transition-all"])}" placeholder="••••••••"></div>`);
if (errorMessage.value) {
_push(`<div class="bg-red-50 border border-red-200 rounded-lg p-4"><p class="text-sm text-red-800 flex items-center">`);
_push(ssrRenderComponent(unref(AlertCircle), {
size: 18,
class: "mr-2"
}, null, _parent));
_push(` ${ssrInterpolate(errorMessage.value)}</p></div>`);
} else {
_push(`<!---->`);
}
if (successMessage.value) {
_push(`<div class="bg-green-50 border border-green-200 rounded-lg p-4"><p class="text-sm text-green-800 flex items-center">`);
_push(ssrRenderComponent(unref(Check), {
size: 18,
class: "mr-2"
}, null, _parent));
_push(` ${ssrInterpolate(successMessage.value)}</p></div>`);
} else {
_push(`<!---->`);
}
_push(`<button type="submit"${ssrIncludeBooleanAttr(isLoading.value) ? " disabled" : ""} class="w-full px-6 py-3 bg-primary-600 hover:bg-primary-700 disabled:bg-gray-400 text-white font-semibold rounded-lg transition-colors flex items-center justify-center">`);
if (isLoading.value) {
_push(ssrRenderComponent(unref(Loader2), {
size: 20,
class: "mr-2 animate-spin"
}, null, _parent));
} else {
_push(`<!---->`);
}
_push(`<span>${ssrInterpolate(isLoading.value ? "Anmeldung läuft..." : "Anmelden")}</span></button><div class="text-center">`);
_push(ssrRenderComponent(_component_NuxtLink, {
to: "/passwort-vergessen",
class: "text-sm text-primary-600 hover:text-primary-700 font-medium"
}, {
default: withCtx((_, _push2, _parent2, _scopeId) => {
if (_push2) {
_push2(` Passwort vergessen? `);
} else {
return [
createTextVNode(" Passwort vergessen? ")
];
}
}),
_: 1
}, _parent));
_push(`</div></form></div><div class="bg-primary-50 border border-primary-100 rounded-lg p-4"><p class="text-sm text-primary-800 text-center">`);
_push(ssrRenderComponent(unref(Lock), {
size: 16,
class: "inline mr-1"
}, null, _parent));
_push(` Nur für Vereinsmitglieder. Kein Zugang? Kontaktieren Sie den Vorstand. </p></div></div></div>`);
};
}
};
const _sfc_setup = _sfc_main.setup;
_sfc_main.setup = (props, ctx) => {
const ssrContext = useSSRContext();
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/login.vue");
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
};
export { _sfc_main as default };
//# sourceMappingURL=login-BdWGyHdA.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"login-BdWGyHdA.mjs","sources":["../../../../pages/login.vue"],"sourcesContent":null,"names":["_ssrRenderAttrs","_mergeProps","_ssrRenderAttr","_push","_parent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAsGe,IAAA,SAAA,EAAS;AACN,IAAA,YAAA,EAAY;AAE9B,IAAA,MAAM,WAAW,GAAA,CAAI;AAAA,MACnB,KAAA,EAAO,EAAA;AAAA,MACP,QAAA,EAAU;AAAA,KACX,CAAA;AAED,IAAA,MAAM,SAAA,GAAY,IAAI,KAAK,CAAA;AAC3B,IAAA,MAAM,YAAA,GAAe,IAAI,EAAE,CAAA;AAC3B,IAAA,MAAM,cAAA,GAAiB,IAAI,EAAE,CAAA;AAiC7B,IAAA,OAAA,CAAQ;AAAA,MACN,KAAA,EAAO;AAAA,KACR,CAAA;;;AAlJMA,MAAAA,KAAAA,CAAAA,CAAAA,IAAAA,EAAAA,cAAAA,CAAAC,UAAAA,CAAA,EAAA,KAAA,EAAM,mFAAA,EAAmF,EAAA,MAAA,CAAA,CAAA,CAAA,6bAAA,EAoBzEC,aAAAA,CAAA,OAAA,EAAA,QAAA,CAAA,KAAA,CAAS,KAAK,CAAA,CAAA,mDAAA,EAAA,cAAA,CAAA,CAAA,EAAA,gBAAA,EAKK,YAAA,CAAA,KAAA,EAAY,EAAA,gIAAA,CAAA,CAAA,CAAA,mKAAA,EAY/BA,aAAAA,CAAA,OAAA,EAAA,QAAA,CAAA,KAAA,CAAS,QAAQ,CAAA,CAAA,iEAAA,EAAA,cAAA,CAAA,CAAA,EAAA,gBAAA,EAKE,YAAA,CAAA,KAAA,EAAY,EAAA,gIAAA,CAAA,CAAA,CAAA,+BAAA,CAAA,CAAA;AAMjC,MAAA,IAAA,YAAA,CAAA,KAAA,EAAY;;;UAEL,IAAA,EAAM,EAAA;AAAA,UAAI,KAAA,EAAM;AAAA,SAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;iCAC3B,YAAA,CAAA,KAAY,CAAA,CAAA,UAAA,CAAA,CAAA;AAAA,MAAA,CAAA,MAAA;;;AAKR,MAAA,IAAA,cAAA,CAAA,KAAA,EAAc;;;UAEb,IAAA,EAAM,EAAA;AAAA,UAAI,KAAA,EAAM;AAAA,SAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;iCACrB,cAAA,CAAA,KAAc,CAAA,CAAA,UAAA,CAAA,CAAA;AAAA,MAAA,CAAA,MAAA;;;AAOR,MAAA,KAAA,CAAA,CAAA,qBAAA,EAAA,qBAAA,CAAA,SAAA,CAAA,KAAS,CAAA,GAAA,WAAA,GAAA,EAAA,CAAA,0KAAA,CAAA,CAAA;AAGL,MAAA,IAAA,SAAA,CAAA,KAAA,EAAS;;UAAG,IAAA,EAAM,EAAA;AAAA,UAAI,KAAA,EAAM;AAAA,SAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;;;AAClC,MAAA,KAAA,CAAA,CAAA,MAAA,EAAA,cAAA,CAAA,SAAA,CAAA,KAAA,GAAS,oBAAA,GAAA,UAAA,CAAA,CAAA,yCAAA,CAAA,CAAA;;QAMhB,EAAA,EAAG,qBAAA;AAAA,QACH,KAAA,EAAM;AAAA,OAAA,EAAA;yBAFR,CAKW,CAAA,EAAAC,MAAAA,EAAAC,QAAAA,EAAA,QAAA,KAAA;;;;;8BAFV,uBAED;AAAA,aAAA;;;;;;;QAQK,IAAA,EAAM,EAAA;AAAA,QAAI,KAAA,EAAM;AAAA,OAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;;;;;;;;;;;;;"}

View File

@@ -0,0 +1,202 @@
import { mergeProps, createVNode, resolveDynamicComponent, unref, withCtx, createTextVNode, useSSRContext } from 'vue';
import { ssrRenderAttrs, ssrRenderComponent, ssrRenderList, ssrRenderClass, ssrRenderVNode, ssrInterpolate } from 'vue/server-renderer';
import { _ as __nuxt_component_0$1 } from './server.mjs';
import { Star, Check, Heart, FileText, Eye } from 'lucide-vue-next';
import { u as useHead } from './composables-CK-Mp9jS.mjs';
import '../nitro/nitro.mjs';
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 '../routes/renderer.mjs';
import 'vue-bundle-renderer/runtime';
import 'unhead/server';
import 'devalue';
import 'unhead/utils';
import 'pinia';
import 'vue-router';
const _sfc_main$1 = {
__name: "Membership",
__ssrInlineRender: true,
setup(__props) {
const plans = [
{
name: "Kinder/Jugend",
price: "72",
period: "Jahr",
description: "Perfekt für junge Tischtennisspieler bis 18 Jahre",
features: [
"Unbegrenzte Hallennutzung",
"Kostenfreies Jugendtraining",
"Teilnahme an Jugendturnieren",
"Clubveranstaltungen",
"Gäste mitbringen"
],
icon: Star,
gradient: "from-blue-500 to-cyan-500"
},
{
name: "Erwachsene",
price: "120",
period: "Jahr",
description: "Vollmitgliedschaft für Erwachsene",
features: [
"Unbegrenzte Hallennutzung",
"Freies Spielen nach Verfügbarkeit",
"Clubveranstaltungen",
"Gäste mitbringen",
"Zugang Trainingsbereich"
],
icon: Check,
gradient: "from-primary-500 to-green-600",
popular: true
},
{
name: "Passiv",
price: "30",
period: "Jahr",
description: "Unterstützen Sie Ihren Lieblingsverein",
features: [
"Vereinsunterstützung",
"Vereinsinformationen",
"Keine Spielberechtigung"
],
icon: Heart,
gradient: "from-orange-500 to-red-500"
}
];
return (_ctx, _push, _parent, _attrs) => {
const _component_NuxtLink = __nuxt_component_0$1;
_push(`<section${ssrRenderAttrs(mergeProps({
id: "membership",
class: "py-16 sm:py-20 bg-gradient-to-b from-gray-50 to-white"
}, _attrs))}><div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"><div class="text-center mb-16"><h2 class="text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-4"> Mitgliedschaft </h2><div class="w-24 h-1 bg-primary-600 mx-auto mb-6"></div><p class="text-xl text-gray-600 max-w-3xl mx-auto"> Werden Sie Teil unserer Tischtennis-Familie - Wählen Sie die passende Mitgliedschaft für sich </p></div><div class="grid md:grid-cols-3 gap-8 max-w-6xl mx-auto"><!--[-->`);
ssrRenderList(plans, (plan) => {
_push(`<div class="${ssrRenderClass([
"relative bg-white rounded-2xl shadow-xl overflow-hidden",
plan.popular ? "ring-4 ring-primary-500 scale-105" : ""
])}">`);
if (plan.popular) {
_push(`<div class="absolute top-0 right-0 bg-primary-600 text-white px-4 py-1 text-sm font-semibold rounded-bl-lg"> Beliebt </div>`);
} else {
_push(`<!---->`);
}
_push(`<div class="${ssrRenderClass(["h-2 bg-gradient-to-r", plan.gradient])}"></div><div class="p-8"><div class="${ssrRenderClass(["w-12 h-12 bg-gradient-to-br rounded-xl flex items-center justify-center mb-4", plan.gradient])}">`);
ssrRenderVNode(_push, createVNode(resolveDynamicComponent(plan.icon), {
size: 24,
class: "text-white"
}, null), _parent);
_push(`</div><h3 class="text-2xl font-display font-bold text-gray-900 mb-2">${ssrInterpolate(plan.name)}</h3><p class="text-gray-600 mb-6 min-h-[3rem]">${ssrInterpolate(plan.description)}</p><div class="mb-6"><div class="flex items-baseline"><span class="text-5xl font-bold text-gray-900">${ssrInterpolate(plan.price)}€</span><span class="text-gray-600 ml-2">/ ${ssrInterpolate(plan.period)}</span></div></div><ul class="space-y-3 mb-8"><!--[-->`);
ssrRenderList(plan.features, (feature) => {
_push(`<li class="flex items-start">`);
_push(ssrRenderComponent(unref(Check), {
size: 20,
class: "text-primary-600 mr-3 flex-shrink-0 mt-0.5"
}, null, _parent));
_push(`<span class="text-gray-700">${ssrInterpolate(feature)}</span></li>`);
});
_push(`<!--]--></ul>`);
_push(ssrRenderComponent(_component_NuxtLink, {
to: "/kontakt",
class: [
"block w-full text-center px-6 py-3 rounded-lg font-semibold transition-all duration-300",
plan.popular ? "bg-primary-600 hover:bg-primary-700 text-white shadow-lg hover:shadow-xl" : "bg-gray-100 hover:bg-gray-200 text-gray-900"
]
}, {
default: withCtx((_, _push2, _parent2, _scopeId) => {
if (_push2) {
_push2(` Jetzt beitreten `);
} else {
return [
createTextVNode(" Jetzt beitreten ")
];
}
}),
_: 2
}, _parent));
_push(`</div></div>`);
});
_push(`<!--]--></div><div class="mt-16 bg-white rounded-2xl shadow-xl p-8 border border-gray-100"><div class="text-center mb-8"><h3 class="text-3xl font-display font-bold text-gray-900 mb-4"> Vereinsatzung </h3><p class="text-xl text-gray-600"> Laden Sie unsere aktuelle Vereinsatzung herunter </p></div><div class="flex flex-col sm:flex-row gap-4 justify-center items-center"><a href="/documents/satzung.pdf" target="_blank" class="inline-flex items-center px-6 py-3 bg-primary-600 hover:bg-primary-700 text-white font-semibold rounded-lg transition-colors">`);
_push(ssrRenderComponent(unref(FileText), {
size: 20,
class: "mr-2"
}, null, _parent));
_push(` Satzung herunterladen (PDF) </a><span class="text-sm text-gray-500">oder</span>`);
_push(ssrRenderComponent(_component_NuxtLink, {
to: "/satzung",
class: "inline-flex items-center px-6 py-3 bg-gray-100 hover:bg-gray-200 text-gray-900 font-semibold rounded-lg transition-colors"
}, {
default: withCtx((_, _push2, _parent2, _scopeId) => {
if (_push2) {
_push2(ssrRenderComponent(unref(Eye), {
size: 20,
class: "mr-2"
}, null, _parent2, _scopeId));
_push2(` Online ansehen `);
} else {
return [
createVNode(unref(Eye), {
size: 20,
class: "mr-2"
}),
createTextVNode(" Online ansehen ")
];
}
}),
_: 1
}, _parent));
_push(`</div></div><div class="mt-16 bg-gradient-to-r from-primary-600 to-primary-700 rounded-2xl p-8 sm:p-12 text-center"><h3 class="text-3xl font-display font-bold text-white mb-4"> Noch Fragen zur Mitgliedschaft? </h3><p class="text-xl text-primary-100 mb-6"> Kontaktieren Sie uns - wir beraten Sie gerne persönlich </p>`);
_push(ssrRenderComponent(_component_NuxtLink, {
to: "/kontakt",
class: "inline-flex items-center px-8 py-4 bg-white text-primary-600 font-semibold rounded-lg hover:bg-gray-100 transition-colors"
}, {
default: withCtx((_, _push2, _parent2, _scopeId) => {
if (_push2) {
_push2(` Jetzt Kontakt aufnehmen `);
} else {
return [
createTextVNode(" Jetzt Kontakt aufnehmen ")
];
}
}),
_: 1
}, _parent));
_push(`</div></div></section>`);
};
}
};
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("components/Membership.vue");
return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0;
};
const Membership = Object.assign(_sfc_main$1, { __name: "Membership" });
const _sfc_main = {
__name: "mitgliedschaft",
__ssrInlineRender: true,
setup(__props) {
useHead({
title: "Mitgliedschaft - Harheimer TC"
});
return (_ctx, _push, _parent, _attrs) => {
_push(`<div${ssrRenderAttrs(mergeProps({ class: "min-h-screen" }, _attrs))}>`);
_push(ssrRenderComponent(Membership, null, null, _parent));
_push(`</div>`);
};
}
};
const _sfc_setup = _sfc_main.setup;
_sfc_main.setup = (props, ctx) => {
const ssrContext = useSSRContext();
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/mitgliedschaft.vue");
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
};
export { _sfc_main as default };
//# sourceMappingURL=mitgliedschaft-ItL-1heT.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"mitgliedschaft-ItL-1heT.mjs","sources":["../../../../components/Membership.vue","../../../../pages/mitgliedschaft.vue"],"sourcesContent":null,"names":["_ssrRenderList","_ssrRenderClass","_ssrRenderVNode","_createVNode","_resolveDynamicComponent","_ssrInterpolate","_push","_parent","_unref","_ssrRenderAttrs","_mergeProps"],"mappings":"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"}

View File

@@ -0,0 +1,94 @@
import { _ as __nuxt_component_0$1 } from './server.mjs';
import { ref, mergeProps, unref, withCtx, createTextVNode, useSSRContext } from 'vue';
import { ssrRenderAttrs, ssrRenderAttr, ssrRenderClass, ssrRenderComponent, ssrInterpolate, ssrIncludeBooleanAttr } from 'vue/server-renderer';
import { AlertCircle, Check, Loader2 } from 'lucide-vue-next';
import { u as useHead } from './composables-CK-Mp9jS.mjs';
import '../nitro/nitro.mjs';
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 '../routes/renderer.mjs';
import 'vue-bundle-renderer/runtime';
import 'unhead/server';
import 'devalue';
import 'unhead/utils';
import 'pinia';
import 'vue-router';
const _sfc_main = {
__name: "passwort-vergessen",
__ssrInlineRender: true,
setup(__props) {
const email = ref("");
const isLoading = ref(false);
const errorMessage = ref("");
const successMessage = ref("");
useHead({
title: "Passwort vergessen - Harheimer TC"
});
return (_ctx, _push, _parent, _attrs) => {
const _component_NuxtLink = __nuxt_component_0$1;
_push(`<div${ssrRenderAttrs(mergeProps({ class: "min-h-full flex items-center justify-center py-16 px-4 sm:px-6 lg:px-8 bg-gray-50" }, _attrs))}><div class="max-w-md w-full space-y-8"><div class="text-center"><h2 class="text-3xl font-display font-bold text-gray-900"> Passwort zurücksetzen </h2><p class="mt-2 text-sm text-gray-600"> Geben Sie Ihre E-Mail-Adresse ein, um Ihr Passwort zurückzusetzen </p></div><div class="bg-white rounded-xl shadow-lg p-8"><form class="space-y-6"><div><label for="email" class="block text-sm font-medium text-gray-700 mb-2"> E-Mail-Adresse </label><input id="email"${ssrRenderAttr("value", email.value)} type="email" required autocomplete="email" class="${ssrRenderClass([{ "border-red-500": errorMessage.value }, "w-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-600 focus:border-transparent transition-all"])}" placeholder="ihre-email@example.com"></div>`);
if (errorMessage.value) {
_push(`<div class="bg-red-50 border border-red-200 rounded-lg p-4"><p class="text-sm text-red-800 flex items-center">`);
_push(ssrRenderComponent(unref(AlertCircle), {
size: 18,
class: "mr-2"
}, null, _parent));
_push(` ${ssrInterpolate(errorMessage.value)}</p></div>`);
} else {
_push(`<!---->`);
}
if (successMessage.value) {
_push(`<div class="bg-green-50 border border-green-200 rounded-lg p-4"><p class="text-sm text-green-800 flex items-center">`);
_push(ssrRenderComponent(unref(Check), {
size: 18,
class: "mr-2"
}, null, _parent));
_push(` ${ssrInterpolate(successMessage.value)}</p></div>`);
} else {
_push(`<!---->`);
}
_push(`<button type="submit"${ssrIncludeBooleanAttr(isLoading.value) ? " disabled" : ""} class="w-full px-6 py-3 bg-primary-600 hover:bg-primary-700 disabled:bg-gray-400 text-white font-semibold rounded-lg transition-colors flex items-center justify-center">`);
if (isLoading.value) {
_push(ssrRenderComponent(unref(Loader2), {
size: 20,
class: "mr-2 animate-spin"
}, null, _parent));
} else {
_push(`<!---->`);
}
_push(`<span>${ssrInterpolate(isLoading.value ? "Wird gesendet..." : "Passwort zurücksetzen")}</span></button><div class="text-center">`);
_push(ssrRenderComponent(_component_NuxtLink, {
to: "/login",
class: "text-sm text-primary-600 hover:text-primary-700 font-medium"
}, {
default: withCtx((_, _push2, _parent2, _scopeId) => {
if (_push2) {
_push2(` Zurück zum Login `);
} else {
return [
createTextVNode(" Zurück zum Login ")
];
}
}),
_: 1
}, _parent));
_push(`</div></form></div><div class="bg-primary-50 border border-primary-100 rounded-lg p-4"><p class="text-sm text-primary-800 text-center"> Sie erhalten eine E-Mail mit einem Link zum Zurücksetzen Ihres Passworts. </p></div></div></div>`);
};
}
};
const _sfc_setup = _sfc_main.setup;
_sfc_main.setup = (props, ctx) => {
const ssrContext = useSSRContext();
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/passwort-vergessen.vue");
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
};
export { _sfc_main as default };
//# sourceMappingURL=passwort-vergessen-D8jfiCTL.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"passwort-vergessen-D8jfiCTL.mjs","sources":["../../../../pages/passwort-vergessen.vue"],"sourcesContent":null,"names":["_ssrRenderAttrs","_mergeProps","_push","_parent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAmFA,IAAA,MAAM,KAAA,GAAQ,IAAI,EAAE,CAAA;AACpB,IAAA,MAAM,SAAA,GAAY,IAAI,KAAK,CAAA;AAC3B,IAAA,MAAM,YAAA,GAAe,IAAI,EAAE,CAAA;AAC3B,IAAA,MAAM,cAAA,GAAiB,IAAI,EAAE,CAAA;AAwB7B,IAAA,OAAA,CAAQ;AAAA,MACN,KAAA,EAAO;AAAA,KACR,CAAA;;;AA/GMA,MAAAA,KAAAA,CAAAA,CAAAA,IAAAA,EAAAA,cAAAA,CAAAC,UAAAA,CAAA,EAAA,KAAA,EAAM,mFAAA,IAAmF,MAAA,CAAA,CAAA,CAAA,ucAAA,EAAA,aAAA,CAAA,OAAA,EAoBzE,KAAA,CAAA,KAAK,CAAA,CAAA,mDAAA,EAAA,cAAA,CAAA,CAAA,EAAA,gBAAA,EAKc,YAAA,CAAA,KAAA,EAAY,EAAA,gIAAA,CAAA,CAAA,CAAA,6CAAA,CAAA,CAAA;AAMjC,MAAA,IAAA,YAAA,CAAA,KAAA,EAAY;;;UAEL,IAAA,EAAM,EAAA;AAAA,UAAI,KAAA,EAAM;AAAA,SAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;iCAC3B,YAAA,CAAA,KAAY,CAAA,CAAA,UAAA,CAAA,CAAA;AAAA,MAAA,CAAA,MAAA;;;AAKR,MAAA,IAAA,cAAA,CAAA,KAAA,EAAc;;;UAEb,IAAA,EAAM,EAAA;AAAA,UAAI,KAAA,EAAM;AAAA,SAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;iCACrB,cAAA,CAAA,KAAc,CAAA,CAAA,UAAA,CAAA,CAAA;AAAA,MAAA,CAAA,MAAA;;;AAOR,MAAA,KAAA,CAAA,CAAA,qBAAA,EAAA,qBAAA,CAAA,SAAA,CAAA,KAAS,CAAA,GAAA,WAAA,GAAA,EAAA,CAAA,0KAAA,CAAA,CAAA;AAGL,MAAA,IAAA,SAAA,CAAA,KAAA,EAAS;;UAAG,IAAA,EAAM,EAAA;AAAA,UAAI,KAAA,EAAM;AAAA,SAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;;;AAClC,MAAA,KAAA,CAAA,CAAA,MAAA,EAAA,cAAA,CAAA,SAAA,CAAA,KAAA,GAAS,kBAAA,GAAA,uBAAA,CAAA,CAAA,yCAAA,CAAA,CAAA;;QAMhB,EAAA,EAAG,QAAA;AAAA,QACH,KAAA,EAAM;AAAA,OAAA,EAAA;yBAFR,CAKW,CAAA,EAAAC,MAAAA,EAAAC,QAAAA,EAAA,QAAA,KAAA;;;;;8BAFV,oBAED;AAAA,aAAA;;;;;;;;;;;;;;;;;;"}

View File

@@ -0,0 +1,99 @@
import { ref, mergeProps, unref, useSSRContext } from 'vue';
import { ssrRenderAttrs, ssrRenderComponent, ssrRenderAttr, ssrIncludeBooleanAttr, ssrInterpolate } from 'vue/server-renderer';
import { Loader2, AlertCircle, Check } from 'lucide-vue-next';
import { u as useAuthStore } from './server.mjs';
import { u as useHead } from './composables-CK-Mp9jS.mjs';
import '../nitro/nitro.mjs';
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 '../routes/renderer.mjs';
import 'vue-bundle-renderer/runtime';
import 'unhead/server';
import 'devalue';
import 'unhead/utils';
import 'pinia';
import 'vue-router';
const _sfc_main = {
__name: "profil",
__ssrInlineRender: true,
setup(__props) {
useAuthStore();
const isLoading = ref(true);
const isSaving = ref(false);
const errorMessage = ref("");
const successMessage = ref("");
const formData = ref({
name: "",
email: "",
phone: ""
});
const passwordData = ref({
current: "",
new: "",
confirm: ""
});
useHead({
title: "Mein Profil - Harheimer TC"
});
return (_ctx, _push, _parent, _attrs) => {
_push(`<div${ssrRenderAttrs(mergeProps({ class: "min-h-full py-16 bg-gray-50" }, _attrs))}><div class="max-w-3xl mx-auto px-4 sm:px-6 lg:px-8"><h1 class="text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-6"> Mein Profil </h1><div class="w-24 h-1 bg-primary-600 mb-8"></div><div class="bg-white rounded-xl shadow-lg p-8 border border-gray-100">`);
if (isLoading.value) {
_push(`<div class="flex items-center justify-center py-12">`);
_push(ssrRenderComponent(unref(Loader2), {
size: 40,
class: "animate-spin text-primary-600"
}, null, _parent));
_push(`</div>`);
} else {
_push(`<form class="space-y-6"><div><label for="name" class="block text-sm font-medium text-gray-700 mb-2"> Name </label><input id="name"${ssrRenderAttr("value", formData.value.name)} type="text" required class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500 focus:border-primary-500"${ssrIncludeBooleanAttr(isSaving.value) ? " disabled" : ""}></div><div><label for="email" class="block text-sm font-medium text-gray-700 mb-2"> E-Mail-Adresse </label><input id="email"${ssrRenderAttr("value", formData.value.email)} type="email" required class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500 focus:border-primary-500"${ssrIncludeBooleanAttr(isSaving.value) ? " disabled" : ""}></div><div><label for="phone" class="block text-sm font-medium text-gray-700 mb-2"> Telefonnummer </label><input id="phone"${ssrRenderAttr("value", formData.value.phone)} type="tel" class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500 focus:border-primary-500"${ssrIncludeBooleanAttr(isSaving.value) ? " disabled" : ""}></div><div class="border-t border-gray-200 pt-6 mt-6"><h3 class="text-lg font-semibold text-gray-900 mb-4">Passwort ändern</h3><div class="space-y-4"><div><label for="currentPassword" class="block text-sm font-medium text-gray-700 mb-2"> Aktuelles Passwort </label><input id="currentPassword"${ssrRenderAttr("value", passwordData.value.current)} type="password" class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500 focus:border-primary-500"${ssrIncludeBooleanAttr(isSaving.value) ? " disabled" : ""}></div><div><label for="newPassword" class="block text-sm font-medium text-gray-700 mb-2"> Neues Passwort </label><input id="newPassword"${ssrRenderAttr("value", passwordData.value.new)} type="password" class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500 focus:border-primary-500"${ssrIncludeBooleanAttr(isSaving.value) ? " disabled" : ""}></div><div><label for="confirmPassword" class="block text-sm font-medium text-gray-700 mb-2"> Passwort bestätigen </label><input id="confirmPassword"${ssrRenderAttr("value", passwordData.value.confirm)} type="password" class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500 focus:border-primary-500"${ssrIncludeBooleanAttr(isSaving.value) ? " disabled" : ""}></div></div></div>`);
if (errorMessage.value) {
_push(`<div class="flex items-center p-3 rounded-md bg-red-50 text-red-700 text-sm">`);
_push(ssrRenderComponent(unref(AlertCircle), {
size: 20,
class: "mr-2"
}, null, _parent));
_push(` ${ssrInterpolate(errorMessage.value)}</div>`);
} else {
_push(`<!---->`);
}
if (successMessage.value) {
_push(`<div class="flex items-center p-3 rounded-md bg-green-50 text-green-700 text-sm">`);
_push(ssrRenderComponent(unref(Check), {
size: 20,
class: "mr-2"
}, null, _parent));
_push(` ${ssrInterpolate(successMessage.value)}</div>`);
} else {
_push(`<!---->`);
}
_push(`<div class="flex justify-end space-x-4"><button type="button" class="px-6 py-2 border border-gray-300 text-gray-700 rounded-lg hover:bg-gray-50 transition-colors"${ssrIncludeBooleanAttr(isSaving.value) ? " disabled" : ""}> Zurücksetzen </button><button type="submit" class="px-6 py-2 bg-primary-600 hover:bg-primary-700 text-white font-semibold rounded-lg transition-colors flex items-center"${ssrIncludeBooleanAttr(isSaving.value) ? " disabled" : ""}>`);
if (isSaving.value) {
_push(ssrRenderComponent(unref(Loader2), {
size: 20,
class: "animate-spin mr-2"
}, null, _parent));
} else {
_push(`<!---->`);
}
_push(`<span>${ssrInterpolate(isSaving.value ? "Speichert..." : "Speichern")}</span></button></div></form>`);
}
_push(`</div></div></div>`);
};
}
};
const _sfc_setup = _sfc_main.setup;
_sfc_main.setup = (props, ctx) => {
const ssrContext = useSSRContext();
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/mitgliederbereich/profil.vue");
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
};
export { _sfc_main as default };
//# sourceMappingURL=profil-UUfhNGZ3.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"profil-UUfhNGZ3.mjs","sources":["../../../../pages/mitgliederbereich/profil.vue"],"sourcesContent":null,"names":["_ssrRenderAttrs","_mergeProps","_ssrRenderAttr"],"mappings":"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"}

View File

@@ -0,0 +1,105 @@
import { _ as __nuxt_component_0$1 } from './server.mjs';
import { ref, mergeProps, unref, withCtx, createTextVNode, useSSRContext } from 'vue';
import { ssrRenderAttrs, ssrRenderAttr, ssrRenderComponent, ssrInterpolate, ssrIncludeBooleanAttr } from 'vue/server-renderer';
import { AlertCircle, Check, Loader2, Info } from 'lucide-vue-next';
import { u as useHead } from './composables-CK-Mp9jS.mjs';
import '../nitro/nitro.mjs';
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 '../routes/renderer.mjs';
import 'vue-bundle-renderer/runtime';
import 'unhead/server';
import 'devalue';
import 'unhead/utils';
import 'pinia';
import 'vue-router';
const _sfc_main = {
__name: "registrieren",
__ssrInlineRender: true,
setup(__props) {
const formData = ref({
name: "",
email: "",
phone: "",
password: "",
confirmPassword: ""
});
const isLoading = ref(false);
const errorMessage = ref("");
const successMessage = ref("");
useHead({
title: "Registrierung - Harheimer TC"
});
return (_ctx, _push, _parent, _attrs) => {
const _component_NuxtLink = __nuxt_component_0$1;
_push(`<div${ssrRenderAttrs(mergeProps({ class: "min-h-full flex items-center justify-center py-16 px-4 sm:px-6 lg:px-8 bg-gray-50" }, _attrs))}><div class="max-w-md w-full space-y-8"><div class="text-center"><h2 class="text-3xl font-display font-bold text-gray-900"> Registrierung </h2><p class="mt-2 text-sm text-gray-600"> Beantragen Sie Zugang zum Mitgliederbereich </p></div><div class="bg-white rounded-xl shadow-lg p-8"><form class="space-y-6"><div><label for="name" class="block text-sm font-medium text-gray-700 mb-2"> Vollständiger Name </label><input id="name"${ssrRenderAttr("value", formData.value.name)} type="text" required autocomplete="name" class="w-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-600 focus:border-transparent transition-all" placeholder="Max Mustermann"></div><div><label for="email" class="block text-sm font-medium text-gray-700 mb-2"> E-Mail-Adresse </label><input id="email"${ssrRenderAttr("value", formData.value.email)} type="email" required autocomplete="email" class="w-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-600 focus:border-transparent transition-all" placeholder="ihre-email@example.com"></div><div><label for="phone" class="block text-sm font-medium text-gray-700 mb-2"> Telefonnummer (optional) </label><input id="phone"${ssrRenderAttr("value", formData.value.phone)} type="tel" autocomplete="tel" class="w-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-600 focus:border-transparent transition-all" placeholder="069-12345678"></div><div><label for="password" class="block text-sm font-medium text-gray-700 mb-2"> Passwort </label><input id="password"${ssrRenderAttr("value", formData.value.password)} type="password" required autocomplete="new-password" class="w-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-600 focus:border-transparent transition-all" placeholder="••••••••"><p class="mt-1 text-xs text-gray-500"> Mindestens 8 Zeichen </p></div><div><label for="confirmPassword" class="block text-sm font-medium text-gray-700 mb-2"> Passwort bestätigen </label><input id="confirmPassword"${ssrRenderAttr("value", formData.value.confirmPassword)} type="password" required autocomplete="new-password" class="w-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-600 focus:border-transparent transition-all" placeholder="••••••••"></div>`);
if (errorMessage.value) {
_push(`<div class="bg-red-50 border border-red-200 rounded-lg p-4"><p class="text-sm text-red-800 flex items-center">`);
_push(ssrRenderComponent(unref(AlertCircle), {
size: 18,
class: "mr-2"
}, null, _parent));
_push(` ${ssrInterpolate(errorMessage.value)}</p></div>`);
} else {
_push(`<!---->`);
}
if (successMessage.value) {
_push(`<div class="bg-green-50 border border-green-200 rounded-lg p-4"><p class="text-sm text-green-800 flex items-center">`);
_push(ssrRenderComponent(unref(Check), {
size: 18,
class: "mr-2"
}, null, _parent));
_push(` ${ssrInterpolate(successMessage.value)}</p></div>`);
} else {
_push(`<!---->`);
}
_push(`<button type="submit"${ssrIncludeBooleanAttr(isLoading.value) ? " disabled" : ""} class="w-full px-6 py-3 bg-primary-600 hover:bg-primary-700 disabled:bg-gray-400 text-white font-semibold rounded-lg transition-colors flex items-center justify-center">`);
if (isLoading.value) {
_push(ssrRenderComponent(unref(Loader2), {
size: 20,
class: "mr-2 animate-spin"
}, null, _parent));
} else {
_push(`<!---->`);
}
_push(`<span>${ssrInterpolate(isLoading.value ? "Wird gesendet..." : "Registrierung beantragen")}</span></button><div class="text-center">`);
_push(ssrRenderComponent(_component_NuxtLink, {
to: "/login",
class: "text-sm text-primary-600 hover:text-primary-700 font-medium"
}, {
default: withCtx((_, _push2, _parent2, _scopeId) => {
if (_push2) {
_push2(` Bereits registriert? Zum Login `);
} else {
return [
createTextVNode(" Bereits registriert? Zum Login ")
];
}
}),
_: 1
}, _parent));
_push(`</div></form></div><div class="bg-yellow-50 border border-yellow-200 rounded-lg p-4"><p class="text-sm text-yellow-800">`);
_push(ssrRenderComponent(unref(Info), {
size: 16,
class: "inline mr-1"
}, null, _parent));
_push(`<strong>Hinweis:</strong> Ihre Registrierung muss vom Vorstand freigegeben werden. Sie erhalten eine E-Mail, sobald Ihr Zugang aktiviert wurde. </p></div></div></div>`);
};
}
};
const _sfc_setup = _sfc_main.setup;
_sfc_main.setup = (props, ctx) => {
const ssrContext = useSSRContext();
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/registrieren.vue");
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
};
export { _sfc_main as default };
//# sourceMappingURL=registrieren-DS8LMhBE.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"registrieren-DS8LMhBE.mjs","sources":["../../../../pages/registrieren.vue"],"sourcesContent":null,"names":["_ssrRenderAttrs","_mergeProps","_ssrRenderAttr","_push","_parent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAsJA,IAAA,MAAM,WAAW,GAAA,CAAI;AAAA,MACnB,IAAA,EAAM,EAAA;AAAA,MACN,KAAA,EAAO,EAAA;AAAA,MACP,KAAA,EAAO,EAAA;AAAA,MACP,QAAA,EAAU,EAAA;AAAA,MACV,eAAA,EAAiB;AAAA,KAClB,CAAA;AAED,IAAA,MAAM,SAAA,GAAY,IAAI,KAAK,CAAA;AAC3B,IAAA,MAAM,YAAA,GAAe,IAAI,EAAE,CAAA;AAC3B,IAAA,MAAM,cAAA,GAAiB,IAAI,EAAE,CAAA;AAsD7B,IAAA,OAAA,CAAQ;AAAA,MACN,KAAA,EAAO;AAAA,KACR,CAAA;;;AAvNMA,MAAAA,KAAAA,CAAAA,CAAAA,IAAAA,EAAAA,cAAAA,CAAAC,WAAA,EAAA,KAAA,EAAM,mFAAA,EAAmF,EAAA,MAAA,CAAA,CAAA,CAAA,2aAAA,EAoBzEC,aAAAA,CAAA,OAAA,EAAA,SAAA,KAAA,CAAS,IAAI,CAAA,CAAA,0UAAA,EAgBbA,aAAAA,CAAA,SAAA,QAAA,CAAA,KAAA,CAAS,KAAK,CAAA,CAAA,8VAAA,EAgBdA,cAAA,OAAA,EAAA,QAAA,CAAA,KAAA,CAAS,KAAK,iUAedA,aAAAA,CAAA,OAAA,EAAA,QAAA,CAAA,KAAA,CAAS,QAAQ,CAAA,CAAA,yaAAA,EAmBjBA,aAAAA,CAAA,OAAA,EAAA,QAAA,CAAA,MAAS,eAAe,CAAA,CAAA,0NAAA,CAAA,CAAA;AAU1B,MAAA,IAAA,YAAA,CAAA,KAAA,EAAY;;;UAEL,IAAA,EAAM,EAAA;AAAA,UAAI,KAAA,EAAM;AAAA,SAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;iCAC3B,YAAA,CAAA,KAAY,CAAA,CAAA,UAAA,CAAA,CAAA;AAAA,MAAA,CAAA,MAAA;;;AAKR,MAAA,IAAA,cAAA,CAAA,KAAA,EAAc;;;UAEb,IAAA,EAAM,EAAA;AAAA,UAAI,KAAA,EAAM;AAAA,SAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;iCACrB,cAAA,CAAA,KAAc,CAAA,CAAA,UAAA,CAAA,CAAA;AAAA,MAAA,CAAA,MAAA;;;AAOR,MAAA,KAAA,CAAA,CAAA,qBAAA,EAAA,qBAAA,CAAA,SAAA,CAAA,KAAS,CAAA,GAAA,WAAA,GAAA,EAAA,CAAA,0KAAA,CAAA,CAAA;AAGL,MAAA,IAAA,SAAA,CAAA,KAAA,EAAS;;UAAG,IAAA,EAAM,EAAA;AAAA,UAAI,KAAA,EAAM;AAAA,SAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;;;AAClC,MAAA,KAAA,CAAA,CAAA,MAAA,EAAA,cAAA,CAAA,SAAA,CAAA,KAAA,GAAS,kBAAA,GAAA,0BAAA,CAAA,CAAA,yCAAA,CAAA,CAAA;;QAMhB,EAAA,EAAG,QAAA;AAAA,QACH,KAAA,EAAM;AAAA,OAAA,EAAA;yBAFR,CAKW,CAAA,EAAAC,MAAAA,EAAAC,QAAAA,EAAA,QAAA,KAAA;;;;;8BAFV,kCAED;AAAA,aAAA;;;;;;;QAQK,IAAA,EAAM,EAAA;AAAA,QAAI,KAAA,EAAM;AAAA,OAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;;;;;;;;;;;;;"}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
{"version":3,"file":"satzung-FqIDL6FT.mjs","sources":["../../../../pages/satzung.vue"],"sourcesContent":null,"names":["_ssrRenderAttrs","_mergeProps"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAgJA,IAAA,OAAA,CAAQ;AAAA,MACN,KAAA,EAAO;AAAA,KACR,CAAA;;AAjJM,MAAA,KAAA,CAAA,CAAA,IAAA,EAAAA,eAAAC,UAAAA,CAAA,EAAA,OAAM,6BAAA,EAAA,EAA6B,MAAA,CAAA,CAAA,CAAA,oyKAAA,CAAA,CAAA;;QAiIf,IAAA,EAAM,EAAA;AAAA,QAAI,KAAA,EAAM;AAAA,OAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;;;;;;;;;;;;;"}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1 @@
{"version":3,"file":"server.mjs","sources":["../../../../virtual:nuxt:%2Fmnt%2Fshare%2Ftorsten%2FPrograms%2Fharheimertc%2Fnode_modules%2F.cache%2Fnuxt%2F.nuxt%2Ffetch.mjs","../../../../virtual:nuxt:%2Fmnt%2Fshare%2Ftorsten%2FPrograms%2Fharheimertc%2Fnode_modules%2F.cache%2Fnuxt%2F.nuxt%2Fglobal-polyfills.mjs","../../../../virtual:nuxt:%2Fmnt%2Fshare%2Ftorsten%2FPrograms%2Fharheimertc%2Fnode_modules%2F.cache%2Fnuxt%2F.nuxt%2Fnuxt.config.mjs","../../../../node_modules/nuxt/dist/app/nuxt.js","../../../../node_modules/nuxt/dist/app/components/injections.js","../../../../node_modules/nuxt/dist/app/utils.js","../../../../node_modules/nuxt/dist/app/composables/router.js","../../../../node_modules/nuxt/dist/app/composables/error.js","../../../../node_modules/nuxt/dist/app/composables/manifest.js","../../../../node_modules/nuxt/dist/app/composables/payload.js","../../../../node_modules/@pinia/nuxt/dist/runtime/payload-plugin.js","../../../../node_modules/nuxt/dist/head/runtime/plugins/unhead.js","../../../../node_modules/nuxt/dist/pages/runtime/utils.js","../../../../virtual:nuxt:%2Fmnt%2Fshare%2Ftorsten%2FPrograms%2Fharheimertc%2Fnode_modules%2F.cache%2Fnuxt%2F.nuxt%2Froutes.mjs","../../../../node_modules/nuxt/dist/app/components/utils.js","../../../../node_modules/nuxt/dist/pages/runtime/router.options.js","../../../../virtual:nuxt:%2Fmnt%2Fshare%2Ftorsten%2FPrograms%2Fharheimertc%2Fnode_modules%2F.cache%2Fnuxt%2F.nuxt%2Frouter.options.mjs","../../../../node_modules/nuxt/dist/pages/runtime/validate.js","../../../../stores/auth.js","../../../../middleware/auth.global.js","../../../../node_modules/nuxt/dist/app/middleware/manifest-route-rule.js","../../../../virtual:nuxt:%2Fmnt%2Fshare%2Ftorsten%2FPrograms%2Fharheimertc%2Fnode_modules%2F.cache%2Fnuxt%2F.nuxt%2Fmiddleware.mjs","../../../../node_modules/nuxt/dist/pages/runtime/plugins/router.js","../../../../node_modules/nuxt/dist/app/plugins/revive-payload.server.js","../../../../node_modules/nuxt/dist/app/components/server-placeholder.js","../../../../node_modules/nuxt/dist/app/components/client-only.js","../../../../node_modules/nuxt/dist/app/components/nuxt-link.js","../../../../node_modules/@pinia/nuxt/dist/runtime/plugin.vue3.js","../../../../virtual:nuxt:%2Fmnt%2Fshare%2Ftorsten%2FPrograms%2Fharheimertc%2Fnode_modules%2F.cache%2Fnuxt%2F.nuxt%2Fcomponents.plugin.mjs","../../../../virtual:nuxt:%2Fmnt%2Fshare%2Ftorsten%2FPrograms%2Fharheimertc%2Fnode_modules%2F.cache%2Fnuxt%2F.nuxt%2Fplugins.server.mjs","../../../../node_modules/nuxt/dist/app/components/route-provider.js","../../../../node_modules/nuxt/dist/pages/runtime/page.js","../../../../assets/images/logos/Harheimer TC.svg","../../../../components/Navigation.vue","../../../../components/Footer.vue","../../../../app.vue","../../../../node_modules/nuxt/dist/app/components/nuxt-error-page.vue","../../../../node_modules/nuxt/dist/app/components/nuxt-root.vue","../../../../node_modules/nuxt/dist/app/entry.js"],"sourcesContent":null,"names":["$fetch","plugin","provide","plugins","createH3Error","createRadixRouter","login1RYyYL8mxx17qR_nmdKvywxx7lKOLXMFu8pTLfvTLYwMeta","indexqVbusfljIJ04j42RIA_KP4bSP7XytQIXdqcVfR3kPUAMeta","profilyVBy_UvZ8KvchY44_0SJbB0NHOad6MC_S9C8wfDdUWEMeta","__executeAsync","createRouter","entry","payload_plugin_1_bEQpMjikuQhbV8UJ0PxUqmSvPdmV1jDa5DURnKW4M","router_GNCWhvtYfLTYRZZ135CdFAEjxdMexN0ixiUYCAN_tpw","plugin_vue3_CQ_pO3THrTGIeYc0dvC91V75hY8qpo9B_8yZzOW5SFs","useRoute","_ssrRenderAttrs","_mergeProps","_push","_parent","_ssrRenderAttr","_imports_0","_createVNode","_ssrRenderClass","_unref","_ssrRenderList","_ssrInterpolate","_createTextVNode","_toDisplayString","useRouter","_ssrRenderComponent","ErrorComponent","RootComponent"],"mappings":"","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,20,21,22,23,24,25,26,27,28,29,30,31,36,37,38]}

View File

@@ -0,0 +1,98 @@
import { ref, computed, mergeProps, unref, useSSRContext } from 'vue';
import { ssrRenderAttrs, ssrInterpolate, ssrRenderList, ssrRenderComponent, ssrRenderAttr } from 'vue/server-renderer';
import { FileText, Download, ExternalLink } from 'lucide-vue-next';
import { u as useHead } from './composables-CK-Mp9jS.mjs';
import './server.mjs';
import '../nitro/nitro.mjs';
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 '../routes/renderer.mjs';
import 'vue-bundle-renderer/runtime';
import 'unhead/server';
import 'devalue';
import 'unhead/utils';
import 'pinia';
import 'vue-router';
const _sfc_main = {
__name: "spielplaene",
__ssrInlineRender: true,
setup(__props) {
const spielplaene = ref([]);
const mannschaftenMitLinks = ref([]);
const aktuellesSaison = computed(() => {
const jetzt = /* @__PURE__ */ new Date();
const monat = jetzt.getMonth() + 1;
const jahr = jetzt.getFullYear();
if (monat >= 7) {
return { start: jahr, ende: jahr + 1 };
} else {
return { start: jahr - 1, ende: jahr };
}
});
const aktuellesSaisonLabel = computed(() => {
return `${aktuellesSaison.value.start}/${aktuellesSaison.value.ende}`;
});
useHead({
title: "Spielpläne - Harheimer TC"
});
return (_ctx, _push, _parent, _attrs) => {
_push(`<div${ssrRenderAttrs(mergeProps({ class: "min-h-full py-16 bg-gray-50" }, _attrs))}><div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"><div class="text-center mb-12"><h1 class="text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-4"> Spielpläne </h1><div class="w-24 h-1 bg-primary-600 mx-auto mb-6"></div><p class="text-xl text-gray-600 max-w-3xl mx-auto"> Aktuelle Spielpläne der Saison ${ssrInterpolate(aktuellesSaisonLabel.value)}</p></div>`);
if (spielplaene.value.length > 0) {
_push(`<div class="space-y-4 max-w-4xl mx-auto"><!--[-->`);
ssrRenderList(spielplaene.value, (plan, index) => {
_push(`<div class="bg-white rounded-xl shadow-lg border border-gray-100 p-6 hover:shadow-xl transition-shadow"><div class="flex items-center justify-between"><div class="flex items-center space-x-4"><div class="w-12 h-12 bg-primary-100 rounded-lg flex items-center justify-center">`);
_push(ssrRenderComponent(unref(FileText), {
size: 24,
class: "text-primary-600"
}, null, _parent));
_push(`</div><div><h3 class="text-lg font-semibold text-gray-900">${ssrInterpolate(plan.titel)}</h3><p class="text-sm text-gray-500">Saison ${ssrInterpolate(plan.saison)}</p></div></div><a${ssrRenderAttr("href", plan.url)} download class="inline-flex items-center px-4 py-2 bg-primary-600 hover:bg-primary-700 text-white font-medium rounded-lg transition-colors">`);
_push(ssrRenderComponent(unref(Download), {
size: 18,
class: "mr-2"
}, null, _parent));
_push(` Download </a></div></div>`);
});
_push(`<!--]--></div>`);
} else {
_push(`<div class="text-center py-16 bg-white rounded-xl shadow-lg max-w-4xl mx-auto">`);
_push(ssrRenderComponent(unref(FileText), {
size: 48,
class: "text-gray-400 mx-auto mb-4"
}, null, _parent));
_push(`<h3 class="text-xl font-semibold text-gray-900 mb-2">Keine Spielpläne verfügbar</h3><p class="text-gray-600"> Für die aktuelle Saison ${ssrInterpolate(aktuellesSaisonLabel.value)} sind noch keine Spielpläne verfügbar. </p></div>`);
}
_push(`<div class="mt-12 max-w-4xl mx-auto"><h2 class="text-2xl font-display font-bold text-gray-900 mb-6 text-center"> Online Spielpläne &amp; Tabellen </h2>`);
if (mannschaftenMitLinks.value.length > 0) {
_push(`<div class="space-y-3"><!--[-->`);
ssrRenderList(mannschaftenMitLinks.value, (mannschaft, index) => {
_push(`<div class="bg-white rounded-lg shadow border border-gray-100 p-4 hover:shadow-md transition-shadow"><div class="flex items-center justify-between"><div><h3 class="font-semibold text-gray-900">${ssrInterpolate(mannschaft.mannschaft)}</h3><p class="text-sm text-gray-500">${ssrInterpolate(mannschaft.liga)}</p></div><a${ssrRenderAttr("href", mannschaft.weitere_informationen_link)} target="_blank" class="inline-flex items-center px-4 py-2 bg-gray-100 hover:bg-gray-200 text-gray-700 rounded-lg transition-colors text-sm">`);
_push(ssrRenderComponent(unref(ExternalLink), {
size: 16,
class: "mr-2"
}, null, _parent));
_push(` Online ansehen </a></div></div>`);
});
_push(`<!--]--></div>`);
} else {
_push(`<!---->`);
}
_push(`</div><div class="mt-12 max-w-4xl mx-auto bg-primary-50 border border-primary-100 rounded-xl p-6"><h3 class="text-lg font-semibold text-primary-900 mb-2"> Hinweis </h3><p class="text-primary-800"> Die Spielpläne werden automatisch für die aktuelle Saison angezeigt. Ältere Spielpläne können auf Anfrage bereitgestellt werden. </p></div></div></div>`);
};
}
};
const _sfc_setup = _sfc_main.setup;
_sfc_main.setup = (props, ctx) => {
const ssrContext = useSSRContext();
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/mannschaften/spielplaene.vue");
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
};
export { _sfc_main as default };
//# sourceMappingURL=spielplaene-DVdlC_Hk.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"spielplaene-DVdlC_Hk.mjs","sources":["../../../../pages/mannschaften/spielplaene.vue"],"sourcesContent":null,"names":["_ssrRenderAttrs","_mergeProps","_ssrInterpolate"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAmGA,IAAA,MAAM,WAAA,GAAc,GAAA,CAAI,EAAE,CAAA;AAC1B,IAAA,MAAM,oBAAA,GAAuB,GAAA,CAAI,EAAE,CAAA;AAGnC,IAAA,MAAM,eAAA,GAAkB,SAAS,MAAM;AACrC,MAAA,MAAM,KAAA,uBAAY,IAAA,EAAI;AACtB,MAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,QAAA,EAAQ,GAAK,CAAA;AACjC,MAAA,MAAM,IAAA,GAAO,MAAM,WAAA,EAAW;AAG9B,MAAA,IAAI,SAAS,CAAA,EAAG;AACd,QAAA,OAAO,EAAE,KAAA,EAAO,IAAA,EAAM,IAAA,EAAM,OAAO,CAAA,EAAC;AAAA,MACtC,CAAA,MAAO;AACL,QAAA,OAAO,EAAE,KAAA,EAAO,IAAA,GAAO,CAAA,EAAG,MAAM,IAAA,EAAI;AAAA,MACtC;AAAA,IACF,CAAC,CAAA;AAED,IAAA,MAAM,oBAAA,GAAuB,SAAS,MAAM;AAC1C,MAAA,OAAO,GAAG,eAAA,CAAgB,KAAA,CAAM,KAAK,CAAA,CAAA,EAAI,eAAA,CAAgB,MAAM,IAAI,CAAA,CAAA;AAAA,IACrE,CAAC,CAAA;AAkJD,IAAA,OAAA,CAAQ;AAAA,MACN,KAAA,EAAO;AAAA,KACR,CAAA;;mBAzQMA,cAAAA,CAAAC,UAAAA,CAAA,EAAA,KAAA,EAAM,6BAAA,IAA6B,MAAA,CAAA,CAAA,CAAA,2TAAA,EAAA,cAAA,CAQE,oBAAA,CAAA,KAAoB,CAAA,CAAA,UAAA,CAAA,CAAA;AAK/C,MAAA,IAAA,WAAA,CAAA,KAAA,CAAY,MAAA,GAAM,CAAA,EAAA;;sBAED,WAAA,CAAA,KAAA,EAAW,CAA3B,IAAA,EAAM,KAAA,KAAK;;;YAOF,IAAA,EAAM,EAAA;AAAA,YAAI,KAAA,EAAM;AAAA,WAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;8EAGwBC,cAAAA,CAAA,IAAA,CAAK,KAAK,CAAA,CAAA,6CAAA,EAClBA,cAAAA,CAAA,KAAK,MAAM,CAAA,CAAA,kBAAA,EAAA,aAAA,CAIvD,MAAA,EAAM,IAAA,CAAK,GAAG,CAAA,CAAA,6IAAA,CAAA,CAAA;;YAIJ,IAAA,EAAM,EAAA;AAAA,YAAI,KAAA,EAAM;AAAA,WAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;;;;;;UAStB,IAAA,EAAM,EAAA;AAAA,UAAI,KAAA,EAAM;AAAA,SAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;sKAGE,oBAAA,CAAA,KAAoB,CAAA,CAAA,iDAAA,CAAA,CAAA;AAAA,MAAA;;AAUtC,MAAA,IAAA,oBAAA,CAAA,KAAA,CAAqB,MAAA,GAAM,CAAA,EAAA;;sBAEJ,oBAAA,CAAA,KAAA,EAAoB,CAA1C,UAAA,EAAY,KAAA,KAAK;oNAMsBA,cAAAA,CAAA,UAAA,CAAW,UAAU,CAAA,CAAA,sCAAA,EAC5BA,cAAAA,CAAA,WAAW,IAAI,CAAA,CAAA,YAAA,EAAA,aAAA,CAGlD,MAAA,EAAM,UAAA,CAAW,0BAA0B,CAAA,CAAA,6IAAA,CAAA,CAAA;;YAI7B,IAAA,EAAM,EAAA;AAAA,YAAI,KAAA,EAAM;AAAA,WAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;"}

View File

@@ -0,0 +1,141 @@
import { ref, computed, mergeProps, unref, useSSRContext } from 'vue';
import { ssrRenderAttrs, ssrRenderList, ssrRenderClass, ssrInterpolate, ssrRenderComponent } from 'vue/server-renderer';
import { Users, Calendar, Hash, Star, Settings, BookOpen, ExternalLink } from 'lucide-vue-next';
import { u as useHead } from './composables-CK-Mp9jS.mjs';
import './server.mjs';
import '../nitro/nitro.mjs';
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 '../routes/renderer.mjs';
import 'vue-bundle-renderer/runtime';
import 'unhead/server';
import 'devalue';
import 'unhead/utils';
import 'pinia';
import 'vue-router';
const _sfc_main = {
__name: "spielsysteme",
__ssrInlineRender: true,
setup(__props) {
const systems = ref([]);
const selectedCategory = ref("alle");
const verfuegbareKategorien = computed(() => {
const kategorien = [...new Set(systems.value.map((s) => s.kategorie).filter((k) => k !== ""))];
return kategorien.sort();
});
const filteredSystems = computed(() => {
if (selectedCategory.value === "alle") {
return systems.value;
}
return systems.value.filter((s) => s.kategorie === selectedCategory.value);
});
const getCategoryColor = (kategorie) => {
const colors = {
"Klassisch": "bg-blue-100 text-blue-800",
"Flexibel": "bg-green-100 text-green-800",
"Strukturiert": "bg-purple-100 text-purple-800",
"Modifiziert": "bg-orange-100 text-orange-800",
"International": "bg-red-100 text-red-800",
"Standard": "bg-gray-100 text-gray-800",
"Professionell": "bg-yellow-100 text-yellow-800"
};
return colors[kategorie] || "bg-gray-100 text-gray-800";
};
useHead({
title: "Spielsysteme - Harheimer TC"
});
return (_ctx, _push, _parent, _attrs) => {
_push(`<div${ssrRenderAttrs(mergeProps({ class: "min-h-full py-16 bg-gray-50" }, _attrs))}><div class="max-w-6xl mx-auto px-4 sm:px-6 lg:px-8"><h1 class="text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-6"> Spielsysteme </h1><div class="w-24 h-1 bg-primary-600 mb-8"></div><p class="text-xl text-gray-600 mb-12"> Übersicht der verschiedenen Mannschafts-Spielsysteme im Tischtennis </p><div class="mb-8 flex flex-wrap gap-4"><!--[-->`);
ssrRenderList(verfuegbareKategorien.value, (kategorie) => {
_push(`<button class="${ssrRenderClass([
"px-4 py-2 rounded-lg font-medium transition-colors",
selectedCategory.value === kategorie ? "bg-primary-600 text-white" : "bg-white text-gray-700 hover:bg-gray-100 border border-gray-300"
])}">${ssrInterpolate(kategorie)}</button>`);
});
_push(`<!--]--><button class="${ssrRenderClass([
"px-4 py-2 rounded-lg font-medium transition-colors",
selectedCategory.value === "alle" ? "bg-primary-600 text-white" : "bg-white text-gray-700 hover:bg-gray-100 border border-gray-300"
])}"> Alle Kategorien </button></div>`);
if (filteredSystems.value.length > 0) {
_push(`<div class="grid md:grid-cols-2 lg:grid-cols-3 gap-6"><!--[-->`);
ssrRenderList(filteredSystems.value, (system) => {
_push(`<div class="bg-white rounded-xl shadow-lg p-6 hover:shadow-xl transition-shadow border border-gray-100"><div class="flex items-start justify-between mb-4"><div class="flex-1"><h3 class="text-xl font-display font-bold text-gray-900 mb-2">${ssrInterpolate(system.name)}</h3><div class="flex items-center mb-3">`);
_push(ssrRenderComponent(unref(Users), {
size: 16,
class: "text-primary-600 mr-2"
}, null, _parent));
_push(`<span class="text-sm font-medium text-gray-600">${ssrInterpolate(system.mannschaftsgroesse)}</span></div></div><div class="${ssrRenderClass([
"px-3 py-1 rounded-full text-xs font-medium",
getCategoryColor(system.kategorie)
])}">${ssrInterpolate(system.kategorie)}</div></div><p class="text-gray-700 mb-4 leading-relaxed">${ssrInterpolate(system.description)}</p><div class="space-y-2 text-sm">`);
if (system.spielabfolge) {
_push(`<div class="flex items-center">`);
_push(ssrRenderComponent(unref(Calendar), {
size: 14,
class: "text-primary-600 mr-2 flex-shrink-0"
}, null, _parent));
_push(`<span class="text-gray-600"><strong>Spielabfolge:</strong> ${ssrInterpolate(system.spielabfolge)}</span></div>`);
} else {
_push(`<!---->`);
}
if (system.anzahl_spiele) {
_push(`<div class="flex items-center">`);
_push(ssrRenderComponent(unref(Hash), {
size: 14,
class: "text-primary-600 mr-2 flex-shrink-0"
}, null, _parent));
_push(`<span class="text-gray-600"><strong>Anzahl Spiele:</strong> ${ssrInterpolate(system.anzahl_spiele)}</span></div>`);
} else {
_push(`<!---->`);
}
if (system.besonderheiten) {
_push(`<div class="flex items-center">`);
_push(ssrRenderComponent(unref(Star), {
size: 14,
class: "text-primary-600 mr-2 flex-shrink-0"
}, null, _parent));
_push(`<span class="text-gray-600"><strong>Besonderheiten:</strong> ${ssrInterpolate(system.besonderheiten)}</span></div>`);
} else {
_push(`<!---->`);
}
_push(`</div></div>`);
});
_push(`<!--]--></div>`);
} else {
_push(`<div class="text-center py-12 bg-white rounded-xl shadow-lg">`);
_push(ssrRenderComponent(unref(Settings), {
size: 48,
class: "text-gray-400 mx-auto mb-4"
}, null, _parent));
_push(`<p class="text-gray-600">Keine Spielsysteme für die ausgewählte Kategorie gefunden.</p></div>`);
}
_push(`<div class="mt-12 bg-gradient-to-r from-primary-600 to-primary-700 rounded-xl p-8 text-white"><h3 class="text-2xl font-display font-bold mb-6 flex items-center">`);
_push(ssrRenderComponent(unref(BookOpen), {
size: 28,
class: "mr-3"
}, null, _parent));
_push(` Weitere Informationen </h3><div class="space-y-4"><p class="text-primary-100 leading-relaxed"> Die Spielsysteme werden je nach Liga und Verband unterschiedlich eingesetzt. Die meisten regionalen Ligen verwenden das Bundessystem oder das Braunschweiger System. </p><p class="text-primary-100 leading-relaxed"> Internationale Wettkämpfe folgen meist den FIT-Systemen (Corbillon-Cup für Damen, Swaythling-Cup für Herren). </p><div class="mt-6"><a href="https://www.wikiwand.com/de/Tischtennis#Spielsysteme" target="_blank" class="inline-flex items-center px-6 py-3 bg-white text-primary-600 font-semibold rounded-lg hover:bg-gray-100 transition-colors">`);
_push(ssrRenderComponent(unref(ExternalLink), {
size: 20,
class: "mr-2"
}, null, _parent));
_push(` Detaillierte Erklärungen auf Wikiwand </a></div></div></div></div></div>`);
};
}
};
const _sfc_setup = _sfc_main.setup;
_sfc_main.setup = (props, ctx) => {
const ssrContext = useSSRContext();
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/spielsysteme.vue");
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
};
export { _sfc_main as default };
//# sourceMappingURL=spielsysteme-CdvH6qFp.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"spielsysteme-CdvH6qFp.mjs","sources":["../../../../pages/spielsysteme.vue"],"sourcesContent":null,"names":["_ssrRenderAttrs","_mergeProps","_ssrRenderList","_ssrInterpolate"],"mappings":"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"}

View File

@@ -0,0 +1,12 @@
const interopDefault = r => r.default || r || [];
const styles = {
"node_modules/nuxt/dist/app/components/error-404.vue": () => import('./error-404-styles.BsF5Lbhq.mjs').then(interopDefault),
"node_modules/nuxt/dist/app/components/error-500.vue": () => import('./error-500-styles.Dccc6iq5.mjs').then(interopDefault),
"components/Hero.vue": () => import('./Hero-styles.DnxJI8Rq.mjs').then(interopDefault),
"node_modules/nuxt/dist/app/components/error-404.vue?vue&type=style&index=0&scoped=b728498f&lang.css": () => import('./error-404-styles.BsF5Lbhq.mjs').then(interopDefault),
"node_modules/nuxt/dist/app/components/error-500.vue?vue&type=style&index=0&scoped=70d84538&lang.css": () => import('./error-500-styles.Dccc6iq5.mjs').then(interopDefault),
"components/Hero.vue?vue&type=style&index=0&scoped=33d25311&lang.css": () => import('./Hero-styles.DnxJI8Rq.mjs').then(interopDefault)
};
export { styles as default };
//# sourceMappingURL=styles.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"styles.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/styles.mjs"],"sourcesContent":null,"names":[],"mappings":"","x_google_ignoreList":[0]}

View File

@@ -0,0 +1,85 @@
import { ref, computed, mergeProps, unref, useSSRContext } from 'vue';
import { ssrRenderAttrs, ssrRenderList, ssrInterpolate, ssrRenderClass, ssrRenderComponent } from 'vue/server-renderer';
import { Calendar } from 'lucide-vue-next';
import { u as useHead } from './composables-CK-Mp9jS.mjs';
import './server.mjs';
import '../nitro/nitro.mjs';
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 '../routes/renderer.mjs';
import 'vue-bundle-renderer/runtime';
import 'unhead/server';
import 'devalue';
import 'unhead/utils';
import 'pinia';
import 'vue-router';
const _sfc_main = {
__name: "termine",
__ssrInlineRender: true,
setup(__props) {
const termine = ref([]);
const naechsteTermine = computed(() => {
const heute = /* @__PURE__ */ new Date();
heute.setHours(0, 0, 0, 0);
return termine.value.filter((t) => {
const terminDatum = new Date(t.datum);
return terminDatum >= heute;
}).sort((a, b) => new Date(a.datum) - new Date(b.datum));
});
const formatDay = (dateString) => {
const date = new Date(dateString);
return date.getDate();
};
const formatMonth = (dateString) => {
const date = new Date(dateString);
const monate = ["Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"];
return monate[date.getMonth()];
};
const formatFullDate = (dateString) => {
const date = new Date(dateString);
const wochentage = ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"];
const monate = ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"];
return `${wochentage[date.getDay()]}, ${date.getDate()}. ${monate[date.getMonth()]} ${date.getFullYear()}`;
};
useHead({
title: "Termine & Events - Harheimer TC"
});
return (_ctx, _push, _parent, _attrs) => {
_push(`<div${ssrRenderAttrs(mergeProps({ class: "min-h-full py-16 bg-gray-50" }, _attrs))}><div class="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8"><div class="text-center mb-12"><h1 class="text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-4"> Termine &amp; Events </h1><div class="w-24 h-1 bg-primary-600 mx-auto mb-6"></div><p class="text-xl text-gray-600 max-w-3xl mx-auto"> Alle kommenden Termine und Veranstaltungen des Harheimer TC </p></div>`);
if (naechsteTermine.value.length > 0) {
_push(`<div class="space-y-4"><!--[-->`);
ssrRenderList(naechsteTermine.value, (termin, index) => {
_push(`<div class="bg-white rounded-xl shadow-lg p-6 hover:shadow-xl transition-shadow"><div class="flex items-start space-x-4"><div class="flex-shrink-0 w-16 h-16 bg-primary-600 rounded-xl flex flex-col items-center justify-center text-white"><span class="text-2xl font-bold">${ssrInterpolate(formatDay(termin.datum))}</span><span class="text-xs">${ssrInterpolate(formatMonth(termin.datum))}</span></div><div class="flex-1"><div class="flex items-start justify-between"><div><h3 class="text-xl font-semibold text-gray-900 mb-1">${ssrInterpolate(termin.titel)}</h3><p class="text-gray-600 mb-2">${ssrInterpolate(termin.beschreibung)}</p><p class="text-sm text-gray-500">${ssrInterpolate(formatFullDate(termin.datum))}</p></div><span class="${ssrRenderClass([
"px-3 py-1 text-sm font-medium rounded-full",
termin.kategorie === "Turnier" ? "bg-yellow-100 text-yellow-800" : "bg-blue-100 text-blue-800"
])}">${ssrInterpolate(termin.kategorie)}</span></div></div></div></div>`);
});
_push(`<!--]--></div>`);
} else {
_push(`<div class="text-center py-16 bg-white rounded-xl shadow-lg">`);
_push(ssrRenderComponent(unref(Calendar), {
size: 64,
class: "text-gray-400 mx-auto mb-4"
}, null, _parent));
_push(`<h3 class="text-2xl font-semibold text-gray-900 mb-2">Keine kommenden Termine</h3><p class="text-gray-600"> Aktuell sind keine Termine geplant. Schauen Sie bald wieder vorbei! </p></div>`);
}
_push(`<div class="mt-12 bg-primary-50 border border-primary-100 rounded-xl p-6"><h3 class="text-lg font-semibold text-primary-900 mb-2"> Hinweis </h3><p class="text-primary-800"> Alle Termine sind vorbehaltlich kurzfristiger Änderungen. Bei Fragen zu einzelnen Veranstaltungen kontaktieren Sie uns gerne. </p></div></div></div>`);
};
}
};
const _sfc_setup = _sfc_main.setup;
_sfc_main.setup = (props, ctx) => {
const ssrContext = useSSRContext();
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/termine.vue");
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
};
export { _sfc_main as default };
//# sourceMappingURL=termine-ZiVCG4zJ.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"termine-ZiVCG4zJ.mjs","sources":["../../../../pages/termine.vue"],"sourcesContent":null,"names":["_ssrRenderAttrs","_mergeProps","_ssrInterpolate"],"mappings":"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"}

View File

@@ -0,0 +1,43 @@
import { mergeProps, useSSRContext } from 'vue';
import { ssrRenderAttrs } from 'vue/server-renderer';
import { u as useHead } from './composables-CK-Mp9jS.mjs';
import './server.mjs';
import '../nitro/nitro.mjs';
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 '../routes/renderer.mjs';
import 'vue-bundle-renderer/runtime';
import 'unhead/server';
import 'devalue';
import 'unhead/utils';
import 'pinia';
import 'vue-router';
import 'lucide-vue-next';
const _sfc_main = {
__name: "trainer",
__ssrInlineRender: true,
setup(__props) {
useHead({
title: "Trainer - Harheimer TC"
});
return (_ctx, _push, _parent, _attrs) => {
_push(`<div${ssrRenderAttrs(mergeProps({ class: "min-h-full py-16 bg-gray-50" }, _attrs))}><div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"><h1 class="text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-6"> Unsere Trainer </h1><div class="w-24 h-1 bg-primary-600 mb-8"></div><p class="text-xl text-gray-600 mb-12"> Erfahrene und qualifizierte Trainer für alle Leistungsstufen </p><div class="grid md:grid-cols-3 gap-8"><div class="bg-white p-8 rounded-xl shadow-lg"><h3 class="text-2xl font-display font-bold text-gray-900 mb-2">C-Trainer</h3><p class="text-gray-600 mb-4">Torsten Schulz</p><p class="text-sm text-gray-500"> Lizenz: C-Trainer<br> Schwerpunkt: Nachwuchsförderung<br> Erwachsenen bei Wunsch zur Verfügung </p></div><div class="bg-white p-8 rounded-xl shadow-lg"><h3 class="text-2xl font-display font-bold text-gray-900 mb-2">Kindertrainer</h3><p class="text-gray-600 mb-4">Thomas Steinbrech</p><p class="text-sm text-gray-500"> Lizenz: Kindertrainer<br> Schwerpunkt: Nachwuchsförderung </p></div><div class="bg-white p-8 rounded-xl shadow-lg"><h3 class="text-2xl font-display font-bold text-gray-900 mb-2">Assistenztrainerin</h3><p class="text-gray-600 mb-4">Magda Schwallbach</p><p class="text-sm text-gray-500"> Lizenz: Assistenztrainerin<br> Schwerpunkt: Unterstützung &amp; Betreuung </p></div></div></div></div>`);
};
}
};
const _sfc_setup = _sfc_main.setup;
_sfc_main.setup = (props, ctx) => {
const ssrContext = useSSRContext();
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/training/trainer.vue");
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
};
export { _sfc_main as default };
//# sourceMappingURL=trainer-CcVTsygv.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"trainer-CcVTsygv.mjs","sources":["../../../../pages/training/trainer.vue"],"sourcesContent":null,"names":["_ssrRenderAttrs","_mergeProps"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AA+CA,IAAA,OAAA,CAAQ;AAAA,MACN,KAAA,EAAO;AAAA,KACR,CAAA;;AAhDM,MAAA,KAAA,CAAA,CAAA,IAAA,EAAAA,eAAAC,UAAAA,CAAA,EAAA,OAAM,6BAAA,EAAA,EAA6B,MAAA,CAAA,CAAA,CAAA,quCAAA,CAAA,CAAA;AAAA,IAAA,CAAA;;;;;;;;;;;;"}

View File

@@ -0,0 +1,88 @@
import { mergeProps, unref, useSSRContext } from 'vue';
import { ssrRenderAttrs, ssrRenderComponent } from 'vue/server-renderer';
import { Globe, FileText, Target, Circle, Zap, Play, Trophy, Users, BookOpen } from 'lucide-vue-next';
import { u as useHead } from './composables-CK-Mp9jS.mjs';
import './server.mjs';
import '../nitro/nitro.mjs';
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 '../routes/renderer.mjs';
import 'vue-bundle-renderer/runtime';
import 'unhead/server';
import 'devalue';
import 'unhead/utils';
import 'pinia';
import 'vue-router';
const _sfc_main = {
__name: "tt-regeln",
__ssrInlineRender: true,
setup(__props) {
useHead({
title: "TT-Regeln - Harheimer TC"
});
return (_ctx, _push, _parent, _attrs) => {
_push(`<div${ssrRenderAttrs(mergeProps({ class: "min-h-full py-16 bg-gray-50" }, _attrs))}><div class="max-w-6xl mx-auto px-4 sm:px-6 lg:px-8"><h1 class="text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-6"> Tischtennis-Regeln </h1><div class="w-24 h-1 bg-primary-600 mb-8"></div><p class="text-xl text-gray-600 mb-12"> Offizielle Regeln und Bestimmungen für den Tischtennissport </p><div class="grid md:grid-cols-2 gap-8 mb-12 items-stretch"><div class="bg-white rounded-xl shadow-lg p-8 border border-gray-100 flex flex-col h-full"><div class="flex items-center mb-6"><div class="w-12 h-12 bg-gradient-to-br from-blue-500 to-blue-600 rounded-xl flex items-center justify-center mr-4">`);
_push(ssrRenderComponent(unref(Globe), {
size: 24,
class: "text-white"
}, null, _parent));
_push(`</div><div><h2 class="text-2xl font-display font-bold text-gray-900">Offizielles ITTF-Reglement</h2><p class="text-gray-600">Internationale Tischtennis-Regeln</p></div></div><p class="text-gray-700 mb-6 leading-relaxed flex-grow"> Die offiziellen Regeln des Internationalen Tischtennis-Verbands (ITTF) gelten weltweit für alle Wettkämpfe und Turniere. </p><div class="space-y-4 mt-auto"><a href="https://www.tischtennis.de/dttb/regeln-satzung/satzung-ordnungen.html" target="_blank" class="block w-full px-6 py-4 bg-primary-600 hover:bg-primary-700 text-white font-bold rounded-lg transition-colors text-center text-lg border-2 border-primary-600 shadow-lg"> 🔗 Offizielle ITTF-Regeln aufrufen </a><div class="text-center"><p class="text-sm text-gray-600 font-medium"> Deutsche Übersetzung auf tischtennis.de </p><p class="text-xs text-gray-500 mt-1"> Internationale Tischtennis-Regeln A &amp; B </p></div></div></div><div class="bg-white rounded-xl shadow-lg p-8 border border-gray-100 flex flex-col h-full"><div class="flex items-center mb-6"><div class="w-12 h-12 bg-gradient-to-br from-primary-500 to-primary-600 rounded-xl flex items-center justify-center mr-4">`);
_push(ssrRenderComponent(unref(FileText), {
size: 24,
class: "text-white"
}, null, _parent));
_push(`</div><div><h2 class="text-2xl font-display font-bold text-gray-900">Tischtennis-Regeln Light</h2><p class="text-gray-600">Vereinfachte Übersicht</p></div></div><p class="text-gray-700 mb-6 leading-relaxed flex-grow"> Eine kompakte Übersicht der wichtigsten Tischtennis-Regeln für Einsteiger und Hobbyspieler. Diese vereinfachte Version erklärt die Grundlagen verständlich und übersichtlich. </p><div class="space-y-3 mt-auto"><a href="/documents/Tischtennisregeln light.pdf" target="_blank" download class="block w-full px-6 py-4 bg-primary-600 hover:bg-primary-700 text-white font-bold rounded-lg transition-colors text-center text-lg border-2 border-primary-600 shadow-lg"> ⬇️ Regeln Light herunterladen </a><p class="text-sm text-gray-500 text-center"> PDF-Dokument (vereinfachte Fassung) </p></div></div></div><div class="bg-white rounded-xl shadow-lg p-8 mb-12"><h2 class="text-3xl font-display font-bold text-gray-900 mb-8 text-center"> Grundregeln im Überblick </h2><div class="grid md:grid-cols-2 lg:grid-cols-3 gap-6"><div class="text-center p-6 bg-gray-50 rounded-lg"><div class="w-16 h-16 bg-primary-100 rounded-full flex items-center justify-center mx-auto mb-4">`);
_push(ssrRenderComponent(unref(Target), {
size: 32,
class: "text-primary-600"
}, null, _parent));
_push(`</div><h3 class="text-xl font-semibold text-gray-900 mb-2">Spielfeld</h3><p class="text-gray-600 text-sm"> Tisch: 2,74m × 1,525m, Höhe: 76cm<br> Netz: 15,25cm hoch </p></div><div class="text-center p-6 bg-gray-50 rounded-lg"><div class="w-16 h-16 bg-primary-100 rounded-full flex items-center justify-center mx-auto mb-4">`);
_push(ssrRenderComponent(unref(Circle), {
size: 32,
class: "text-primary-600"
}, null, _parent));
_push(`</div><h3 class="text-xl font-semibold text-gray-900 mb-2">Ball</h3><p class="text-gray-600 text-sm"> Durchmesser: 40mm<br> Gewicht: 2,7g </p></div><div class="text-center p-6 bg-gray-50 rounded-lg"><div class="w-16 h-16 bg-primary-100 rounded-full flex items-center justify-center mx-auto mb-4">`);
_push(ssrRenderComponent(unref(Zap), {
size: 32,
class: "text-primary-600"
}, null, _parent));
_push(`</div><h3 class="text-xl font-semibold text-gray-900 mb-2">Schläger</h3><p class="text-gray-600 text-sm"> Belag: schwarz + farbig<br> (rot, grün, pink, blau, gelb, lila)<br> Holz: mindestens 85% </p></div><div class="text-center p-6 bg-gray-50 rounded-lg"><div class="w-16 h-16 bg-primary-100 rounded-full flex items-center justify-center mx-auto mb-4">`);
_push(ssrRenderComponent(unref(Play), {
size: 32,
class: "text-primary-600"
}, null, _parent));
_push(`</div><h3 class="text-xl font-semibold text-gray-900 mb-2">Aufschlag</h3><p class="text-gray-600 text-sm"> Ball muss sichtbar hochgeworfen werden<br> Mindestens 16cm Höhe </p></div><div class="text-center p-6 bg-gray-50 rounded-lg"><div class="w-16 h-16 bg-primary-100 rounded-full flex items-center justify-center mx-auto mb-4">`);
_push(ssrRenderComponent(unref(Trophy), {
size: 32,
class: "text-primary-600"
}, null, _parent));
_push(`</div><h3 class="text-xl font-semibold text-gray-900 mb-2">Satz</h3><p class="text-gray-600 text-sm"> Gewinn bei 11 Punkten<br> Mindestens 2 Punkte Vorsprung </p></div><div class="text-center p-6 bg-gray-50 rounded-lg"><div class="w-16 h-16 bg-primary-100 rounded-full flex items-center justify-center mx-auto mb-4">`);
_push(ssrRenderComponent(unref(Users), {
size: 32,
class: "text-primary-600"
}, null, _parent));
_push(`</div><h3 class="text-xl font-semibold text-gray-900 mb-2">Spiel</h3><p class="text-gray-600 text-sm"> Best of 5 oder 7 Sätze<br> Wechsel alle 2 Punkte </p></div></div></div><div class="bg-gradient-to-r from-primary-600 to-primary-700 rounded-xl p-8 text-white"><h3 class="text-2xl font-display font-bold mb-6 flex items-center">`);
_push(ssrRenderComponent(unref(BookOpen), {
size: 28,
class: "mr-3"
}, null, _parent));
_push(` Weitere Informationen </h3><div class="space-y-4"><p class="text-primary-100 leading-relaxed"> Die offiziellen ITTF-Regeln werden regelmäßig aktualisiert und gelten für alle internationalen Wettkämpfe. Für regionale Turniere können abweichende Bestimmungen gelten. </p><p class="text-primary-100 leading-relaxed"> Bei Fragen zu spezifischen Regeln wenden Sie sich an den <a href="https://www.tischtennis.de" target="_blank" class="underline hover:text-white"> Deutschen Tischtennis-Bund (DTTB) </a> oder Ihren regionalen Verband. </p><div class="mt-6 text-center"><a href="https://www.tischtennis.de/dttb/regeln-satzung/satzung-ordnungen.html" target="_blank" class="inline-flex items-center px-8 py-4 bg-primary-600 hover:bg-primary-700 text-white font-bold rounded-lg transition-colors text-lg border-2 border-primary-600 shadow-lg"> 🔗 Alle DTTB-Regeln und Ordnungen </a></div></div></div></div></div>`);
};
}
};
const _sfc_setup = _sfc_main.setup;
_sfc_main.setup = (props, ctx) => {
const ssrContext = useSSRContext();
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/tt-regeln.vue");
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
};
export { _sfc_main as default };
//# sourceMappingURL=tt-regeln-DyKJvBml.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"tt-regeln-DyKJvBml.mjs","sources":["../../../../pages/tt-regeln.vue"],"sourcesContent":null,"names":["_ssrRenderAttrs","_mergeProps"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAoMA,IAAA,OAAA,CAAQ;AAAA,MACN,KAAA,EAAO;AAAA,KACR,CAAA;;AArMM,MAAA,KAAA,CAAA,CAAA,IAAA,EAAAA,eAAAC,UAAAA,CAAA,EAAA,OAAM,6BAAA,EAAA,EAA6B,MAAA,CAAA,CAAA,CAAA,+lBAAA,CAAA,CAAA;;QAiBpB,IAAA,EAAM,EAAA;AAAA,QAAI,KAAA,EAAM;AAAA,OAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;;QAoCb,IAAA,EAAM,EAAA;AAAA,QAAI,KAAA,EAAM;AAAA,OAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;;QAuClB,IAAA,EAAM,EAAA;AAAA,QAAI,KAAA,EAAM;AAAA,OAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;;QAWhB,IAAA,EAAM,EAAA;AAAA,QAAI,KAAA,EAAM;AAAA,OAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;;QAWnB,IAAA,EAAM,EAAA;AAAA,QAAI,KAAA,EAAM;AAAA,OAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;;QAYf,IAAA,EAAM,EAAA;AAAA,QAAI,KAAA,EAAM;AAAA,OAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;;QAWd,IAAA,EAAM,EAAA;AAAA,QAAI,KAAA,EAAM;AAAA,OAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;;QAWjB,IAAA,EAAM,EAAA;AAAA,QAAI,KAAA,EAAM;AAAA,OAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;;QAcjB,IAAA,EAAM,EAAA;AAAA,QAAI,KAAA,EAAM;AAAA,OAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;;;;;;;;;;;;;"}

View File

@@ -0,0 +1,111 @@
import { mergeProps, withCtx, createTextVNode, createVNode, resolveDynamicComponent, useSSRContext } from 'vue';
import { ssrRenderAttrs, ssrRenderComponent, ssrRenderStyle, ssrRenderList, ssrRenderVNode, ssrInterpolate } from 'vue/server-renderer';
import { _ as __nuxt_component_0$1 } from './server.mjs';
import { Heart, Users2, Award, Target } from 'lucide-vue-next';
import { u as useHead } from './composables-CK-Mp9jS.mjs';
import '../nitro/nitro.mjs';
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 '../routes/renderer.mjs';
import 'vue-bundle-renderer/runtime';
import 'unhead/server';
import 'devalue';
import 'unhead/utils';
import 'pinia';
import 'vue-router';
const _sfc_main$1 = {
__name: "About",
__ssrInlineRender: true,
setup(__props) {
const values = [
{
icon: Heart,
title: "70+ Jahre Tradition",
description: "Seit 1954 spielen wir Tischtennis in Harheim"
},
{
icon: Users2,
title: "Familiärer Verein",
description: "Ca. 40 Mitglieder in einer herzlichen Gemeinschaft"
},
{
icon: Award,
title: "5 Herrenmannschaften",
description: "Aktive Teilnahme an der Punktspielrunde"
},
{
icon: Target,
title: "Jugendförderung",
description: "Ab 2025/26 wieder eine Jugendmannschaft"
}
];
return (_ctx, _push, _parent, _attrs) => {
const _component_NuxtLink = __nuxt_component_0$1;
_push(`<section${ssrRenderAttrs(mergeProps({
id: "about",
class: "py-16 sm:py-20 bg-gradient-to-b from-white to-gray-50"
}, _attrs))}><div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"><div class="text-center mb-16"><h2 class="text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-4"> Über uns </h2><div class="w-24 h-1 bg-primary-600 mx-auto mb-6"></div><p class="text-xl text-gray-600 max-w-3xl mx-auto"> Seit über 70 Jahren wird in unserem Harheimer Verein Tischtennis gespielt </p></div><div class="grid lg:grid-cols-2 gap-12 items-center mb-20"><div class="relative h-[400px] sm:h-[500px] rounded-2xl overflow-hidden shadow-2xl"><div class="w-full h-full bg-cover bg-center hover:scale-110 transition-transform duration-700" style="${ssrRenderStyle({ "background-image": "url('/images/club_about_us.png')" })}"></div></div><div class="space-y-6"><h3 class="text-3xl font-display font-bold text-gray-900"> Ein familiärer Verein mit Tradition </h3><p class="text-lg text-gray-600 leading-relaxed"> Wir sind ein kleiner, selbständiger, familiärer Verein mit ca. 40 Mitgliedern. Wir nehmen zurzeit mit fünf Herrenmannschaften an der Punktspielrunde teil. </p><p class="text-lg text-gray-600 leading-relaxed"> Ab der Saison 2025/26 werden wir auch wieder mit einer Jugendmannschaft aktiv. </p><p class="text-lg text-gray-600 leading-relaxed"> Wir trainieren zweimal wöchentlich in der Turnhalle der Grundschule Harheim mit anschließendem gemütlichem Beisammensein in einer der lokalen Gaststätten. Jährlich finden außerdem unsere Vereinsmeisterschaften statt. </p><div class="bg-primary-50 border-l-4 border-primary-600 p-6 rounded-lg"><h4 class="text-xl font-semibold text-primary-800 mb-3">Wir suchen Verstärkung!</h4><p class="text-primary-700 mb-4"> Wir suchen ständig Verstärkungen für unsere Mannschaften! </p><p class="text-primary-700 font-medium"> Alle Tischtennis-Begeisterten sind herzlich zu einem Probetraining eingeladen! </p></div><div class="pt-4">`);
_push(ssrRenderComponent(_component_NuxtLink, {
to: "/kontakt",
class: "inline-flex items-center px-6 py-3 bg-primary-600 hover:bg-primary-700 text-white font-semibold rounded-lg transition-colors"
}, {
default: withCtx((_, _push2, _parent2, _scopeId) => {
if (_push2) {
_push2(` Kontakt aufnehmen `);
} else {
return [
createTextVNode(" Kontakt aufnehmen ")
];
}
}),
_: 1
}, _parent));
_push(`</div></div></div><div class="grid sm:grid-cols-2 lg:grid-cols-4 gap-8"><!--[-->`);
ssrRenderList(values, (value) => {
_push(`<div class="bg-white p-6 rounded-xl shadow-lg hover:shadow-xl transition-shadow border border-gray-100"><div class="w-12 h-12 bg-primary-100 rounded-lg flex items-center justify-center mb-4">`);
ssrRenderVNode(_push, createVNode(resolveDynamicComponent(value.icon), {
size: 24,
class: "text-primary-600"
}, null), _parent);
_push(`</div><h4 class="text-xl font-display font-bold text-gray-900 mb-2">${ssrInterpolate(value.title)}</h4><p class="text-gray-600">${ssrInterpolate(value.description)}</p></div>`);
});
_push(`<!--]--></div></div></section>`);
};
}
};
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("components/About.vue");
return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0;
};
const _sfc_main = {
__name: "ueber-uns",
__ssrInlineRender: true,
setup(__props) {
useHead({
title: "Über uns - Harheimer TC"
});
return (_ctx, _push, _parent, _attrs) => {
_push(`<div${ssrRenderAttrs(mergeProps({ class: "min-h-full" }, _attrs))}>`);
_push(ssrRenderComponent(_sfc_main$1, null, null, _parent));
_push(`</div>`);
};
}
};
const _sfc_setup = _sfc_main.setup;
_sfc_main.setup = (props, ctx) => {
const ssrContext = useSSRContext();
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/ueber-uns.vue");
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
};
export { _sfc_main as default };
//# sourceMappingURL=ueber-uns-pGQi6hRz.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"ueber-uns-pGQi6hRz.mjs","sources":["../../../../components/About.vue","../../../../pages/ueber-uns.vue"],"sourcesContent":null,"names":["_push","_parent","_ssrRenderList","_ssrRenderVNode","_createVNode","_resolveDynamicComponent","_ssrInterpolate","_ssrRenderAttrs","_mergeProps"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAkFA,IAAA,MAAM,MAAA,GAAS;AAAA,MACb;AAAA,QACE,IAAA,EAAM,KAAA;AAAA,QACN,KAAA,EAAO,qBAAA;AAAA,QACP,WAAA,EAAa;AAAA,OACjB;AAAA,MACE;AAAA,QACE,IAAA,EAAM,MAAA;AAAA,QACN,KAAA,EAAO,mBAAA;AAAA,QACP,WAAA,EAAa;AAAA,OACjB;AAAA,MACE;AAAA,QACE,IAAA,EAAM,KAAA;AAAA,QACN,KAAA,EAAO,sBAAA;AAAA,QACP,WAAA,EAAa;AAAA,OACjB;AAAA,MACE;AAAA,QACE,IAAA,EAAM,MAAA;AAAA,QACN,KAAA,EAAO,iBAAA;AAAA,QACP,WAAA,EAAa;AAAA;AACjB,KACA;;;;QAtGW,EAAA,EAAG,OAAA;AAAA,QAAQ,KAAA,EAAM;AAAA,OAAA,EAAA,MAAA,CAAA,CAAA,CAAA,omBAAA,EAAA,cAAA,CAgBhB,EAAA,kBAAA,EAAA,kCAAA,EAA0D,CAAA,CAAA,8nCAAA,CAAA,CAAA;;QA+BxD,EAAA,EAAG,UAAA;AAAA,QACH,KAAA,EAAM;AAAA,OAAA,EAAA;yBAFR,CAKW,CAAA,EAAAA,MAAAA,EAAAC,QAAAA,EAAA,QAAA,KAAA;;;;;8BAFV,qBAED;AAAA,aAAA;;;;;;AAQcC,MAAAA,aAAAA,CAAA,SAAT,KAAA,KAAK;;AAKMC,QAAAA,cAAAA,CAAA,KAAA,EAAAC,WAAAA,CAAAC,uBAAAA,CAAA,KAAA,CAAM,IAAI,CAAA,EAAA;AAAA,UAAG,IAAA,EAAM,EAAA;AAAA,UAAI,KAAA,EAAM;AAAA,SAAA,EAAA,IAAA,CAAA,EAAA,OAAA,CAAA;AAG1CC,QAAAA,KAAAA,CAAAA,CAAAA,oEAAAA,EAAAA,cAAAA,CAAA,KAAA,CAAM,KAAK,CAAA,CAAA,8BAAA,EAGXA,cAAAA,CAAA,MAAM,WAAW,CAAA,CAAA,UAAA,CAAA,CAAA;;;;;;;;;;;;;;;;AC9DhC,IAAA,OAAA,CAAQ;AAAA,MACN,KAAA,EAAO;AAAA,KACR,CAAA;;AAVM,MAAA,KAAA,CAAA,CAAA,IAAA,EAAAC,eAAAC,UAAAA,CAAA,EAAA,OAAM,YAAA,EAAA,EAAY,MAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;;;;;;;;;;;;;;;"}

View File

@@ -0,0 +1,160 @@
import { ref, computed, mergeProps, unref, useSSRContext } from 'vue';
import { ssrRenderAttrs, ssrRenderList, ssrRenderClass, ssrInterpolate, ssrRenderComponent } from 'vue/server-renderer';
import { Trophy } from 'lucide-vue-next';
import { u as useHead } from './composables-CK-Mp9jS.mjs';
import './server.mjs';
import '../nitro/nitro.mjs';
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 '../routes/renderer.mjs';
import 'vue-bundle-renderer/runtime';
import 'unhead/server';
import 'devalue';
import 'unhead/utils';
import 'pinia';
import 'vue-router';
const _sfc_main = {
__name: "vereinsmeisterschaften",
__ssrInlineRender: true,
setup(__props) {
const results = ref([]);
const selectedYear = ref("alle");
const verfuegbareJahre = computed(() => {
const jahre = [...new Set(results.value.map((r) => r.jahr).filter((j) => j !== ""))];
return jahre.sort((a, b) => b - a);
});
const filteredResults = computed(() => {
if (selectedYear.value === "alle") {
return results.value;
}
return results.value.filter((r) => r.jahr === selectedYear.value);
});
const groupedResults = computed(() => {
const grouped = {};
filteredResults.value.forEach((result) => {
if (!grouped[result.jahr]) {
grouped[result.jahr] = {
kategorien: {},
bemerkungen: null
};
}
if (result.bemerkung && result.bemerkung !== "") {
grouped[result.jahr].bemerkungen = result.bemerkung;
return;
}
if (result.kategorie && result.kategorie !== "") {
if (!grouped[result.jahr].kategorien[result.kategorie]) {
grouped[result.jahr].kategorien[result.kategorie] = [];
}
grouped[result.jahr].kategorien[result.kategorie].push(result);
}
});
return grouped;
});
const sortedGroupedResults = computed(() => {
const sorted = {};
const jahre = Object.keys(groupedResults.value).sort((a, b) => b - a);
jahre.forEach((jahr) => {
sorted[jahr] = groupedResults.value[jahr];
});
return sorted;
});
const sortedJahre = computed(() => {
return Object.keys(groupedResults.value).sort((a, b) => b - a);
});
const totalWinners = computed(() => {
return results.value.filter((r) => r.kategorie === "Einzel" && r.platz === "1").length;
});
const totalDoubles = computed(() => {
return results.value.filter((r) => r.kategorie === "Doppel" && r.platz === "1").length;
});
useHead({
title: "Vereinsmeisterschaften - Harheimer TC"
});
return (_ctx, _push, _parent, _attrs) => {
_push(`<div${ssrRenderAttrs(mergeProps({ class: "min-h-full py-16 bg-gray-50" }, _attrs))}><div class="max-w-6xl mx-auto px-4 sm:px-6 lg:px-8"><h1 class="text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-6"> Vereinsmeisterschaften </h1><div class="w-24 h-1 bg-primary-600 mb-8"></div><p class="text-xl text-gray-600 mb-12"> Die Ergebnisse unserer Vereinsmeisterschaften der letzten Jahre </p><div class="mb-8 flex flex-wrap gap-4"><!--[-->`);
ssrRenderList(verfuegbareJahre.value, (jahr) => {
_push(`<button class="${ssrRenderClass([
"px-4 py-2 rounded-lg font-medium transition-colors",
selectedYear.value === jahr ? "bg-primary-600 text-white" : "bg-white text-gray-700 hover:bg-gray-100 border border-gray-300"
])}">${ssrInterpolate(jahr)}</button>`);
});
_push(`<!--]--><button class="${ssrRenderClass([
"px-4 py-2 rounded-lg font-medium transition-colors",
selectedYear.value === "alle" ? "bg-primary-600 text-white" : "bg-white text-gray-700 hover:bg-gray-100 border border-gray-300"
])}"> Alle Jahre </button></div>`);
if (filteredResults.value.length > 0) {
_push(`<div class="space-y-8"><!--[-->`);
ssrRenderList(sortedJahre.value, (jahr) => {
_push(`<div class="bg-white rounded-xl shadow-lg p-6"><h2 class="text-2xl font-display font-bold text-gray-900 mb-6 flex items-center">`);
_push(ssrRenderComponent(unref(Trophy), {
size: 28,
class: "text-primary-600 mr-3"
}, null, _parent));
_push(` ${ssrInterpolate(jahr)}</h2>`);
if (sortedGroupedResults.value[jahr]?.bemerkungen) {
_push(`<div class="mb-6 p-4 bg-yellow-50 border border-yellow-200 rounded-lg"><p class="text-yellow-800 font-medium">${ssrInterpolate(sortedGroupedResults.value[jahr].bemerkungen)}</p></div>`);
} else {
_push(`<!---->`);
}
if (sortedGroupedResults.value[jahr]?.kategorien) {
_push(`<div class="space-y-6"><!--[-->`);
ssrRenderList(sortedGroupedResults.value[jahr].kategorien, (kategorieData, kategorie) => {
_push(`<div class="border-l-4 border-primary-600 pl-4"><h3 class="text-xl font-semibold text-gray-900 mb-4">${ssrInterpolate(kategorie)}</h3><div class="grid gap-3"><!--[-->`);
ssrRenderList(kategorieData, (ergebnis, index) => {
_push(`<div class="${ssrRenderClass([
"flex items-center justify-between p-3 rounded-lg",
ergebnis.platz === "1" ? "bg-yellow-50 border border-yellow-200" : ergebnis.platz === "2" ? "bg-gray-50 border border-gray-200" : ergebnis.platz === "3" ? "bg-orange-50 border border-orange-200" : "bg-gray-100"
])}"><div class="flex items-center"><div class="${ssrRenderClass([
"w-8 h-8 rounded-full flex items-center justify-center text-sm font-bold mr-3",
ergebnis.platz === "1" ? "bg-yellow-500 text-white" : ergebnis.platz === "2" ? "bg-gray-400 text-white" : ergebnis.platz === "3" ? "bg-orange-500 text-white" : "bg-gray-300 text-gray-700"
])}">${ssrInterpolate(ergebnis.platz)}</div><div><span class="font-semibold text-gray-900">${ssrInterpolate(ergebnis.spieler1)} `);
if (ergebnis.spieler2) {
_push(`<span class="text-gray-600"> / ${ssrInterpolate(ergebnis.spieler2)}</span>`);
} else {
_push(`<!---->`);
}
_push(`</span></div></div><div class="text-sm text-gray-500">${ssrInterpolate(ergebnis.platz === "1" ? "Vereinsmeister" : ergebnis.platz + ". Platz")}</div></div>`);
});
_push(`<!--]--></div></div>`);
});
_push(`<!--]--></div>`);
} else {
_push(`<!---->`);
}
_push(`</div>`);
});
_push(`<!--]--></div>`);
} else {
_push(`<div class="text-center py-12 bg-white rounded-xl shadow-lg">`);
_push(ssrRenderComponent(unref(Trophy), {
size: 48,
class: "text-gray-400 mx-auto mb-4"
}, null, _parent));
_push(`<p class="text-gray-600">Keine Ergebnisse für das ausgewählte Jahr gefunden.</p></div>`);
}
_push(`<div class="mt-12 bg-gradient-to-r from-primary-600 to-primary-700 rounded-xl p-8 text-white"><h3 class="text-2xl font-display font-bold mb-6">Statistik</h3><div class="grid md:grid-cols-3 gap-6"><div class="text-center"><div class="text-3xl font-bold mb-2">${ssrInterpolate(verfuegbareJahre.value.length)}</div><div class="text-primary-100">Jahre mit Meisterschaften</div></div><div class="text-center"><div class="text-3xl font-bold mb-2">${ssrInterpolate(totalWinners.value)}</div><div class="text-primary-100">Einzelgewinner</div></div><div class="text-center"><div class="text-3xl font-bold mb-2">${ssrInterpolate(totalDoubles.value)}</div><div class="text-primary-100">Doppelgewinner</div></div></div></div><div class="mt-8 text-center"><div class="bg-white rounded-xl shadow-lg p-8 border-l-4 border-primary-600"><h3 class="text-2xl font-display font-bold text-gray-900 mb-4 flex items-center justify-center">`);
_push(ssrRenderComponent(unref(Trophy), {
size: 32,
class: "text-primary-600 mr-3"
}, null, _parent));
_push(` Herzlichen Glückwunsch! </h3><p class="text-lg text-gray-700 leading-relaxed"> Wir gratulieren allen Teilnehmern und Gewinnern der Vereinsmeisterschaften zu ihren großartigen Leistungen! </p><p class="text-lg text-gray-700 leading-relaxed mt-4"> Besonders stolz sind wir auf die kontinuierliche Teilnahme und den fairen Wettkampfgeist unserer Mitglieder. </p></div></div></div></div>`);
};
}
};
const _sfc_setup = _sfc_main.setup;
_sfc_main.setup = (props, ctx) => {
const ssrContext = useSSRContext();
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/vereinsmeisterschaften.vue");
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
};
export { _sfc_main as default };
//# sourceMappingURL=vereinsmeisterschaften-B9yng3Zq.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"vereinsmeisterschaften-B9yng3Zq.mjs","sources":["../../../../pages/vereinsmeisterschaften.vue"],"sourcesContent":null,"names":["_ssrRenderAttrs","_mergeProps","_ssrRenderList","_ssrInterpolate"],"mappings":"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"}

View File

@@ -0,0 +1,43 @@
import { mergeProps, useSSRContext } from 'vue';
import { ssrRenderAttrs } from 'vue/server-renderer';
import { u as useHead } from './composables-CK-Mp9jS.mjs';
import './server.mjs';
import '../nitro/nitro.mjs';
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 '../routes/renderer.mjs';
import 'vue-bundle-renderer/runtime';
import 'unhead/server';
import 'devalue';
import 'unhead/utils';
import 'pinia';
import 'vue-router';
import 'lucide-vue-next';
const _sfc_main = {
__name: "vorstand",
__ssrInlineRender: true,
setup(__props) {
useHead({
title: "Vorstand - Harheimer TC"
});
return (_ctx, _push, _parent, _attrs) => {
_push(`<div${ssrRenderAttrs(mergeProps({ class: "min-h-full py-16 bg-gray-50" }, _attrs))}><div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"><h1 class="text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-6"> Vorstand </h1><div class="w-24 h-1 bg-primary-600 mb-8"></div><div class="prose prose-lg max-w-none"><p class="text-xl text-gray-600 mb-8"> Unser engagiertes Vorstandsteam leitet den Harheimer TC mit Herz und Sachverstand. </p><div class="grid md:grid-cols-2 gap-8 not-prose"><div class="bg-white p-6 rounded-xl shadow-lg border border-gray-100"><h3 class="text-xl font-display font-bold text-gray-900 mb-2">Vorsitzender</h3><h4 class="text-lg font-semibold text-primary-600 mb-3">Roger Dichmann</h4><div class="space-y-1 text-gray-600"><p>Reginastr. 46</p><p>60437 Frankfurt</p><p>Tel. 06101-9953015</p></div></div><div class="bg-white p-6 rounded-xl shadow-lg border border-gray-100"><h3 class="text-xl font-display font-bold text-gray-900 mb-2">Stellvertreter des Vorsitzenden</h3><h4 class="text-lg font-semibold text-primary-600 mb-3">Jürgen Kratz</h4><div class="space-y-1 text-gray-600"><p>Bürgerstr. 68</p><p>60437 Frankfurt</p><p>Tel. 06101-43221</p></div></div><div class="bg-white p-6 rounded-xl shadow-lg border border-gray-100"><h3 class="text-xl font-display font-bold text-gray-900 mb-2">Kassenwart</h3><h4 class="text-lg font-semibold text-primary-600 mb-3">Olaf Nüßlein</h4><div class="space-y-1 text-gray-600"><p>Am Eschbachtal 52</p><p>60437 Frankfurt</p><p>Tel. 06101-47469</p></div></div><div class="bg-white p-6 rounded-xl shadow-lg border border-gray-100"><h3 class="text-xl font-display font-bold text-gray-900 mb-2">Schriftführer</h3><h4 class="text-lg font-semibold text-primary-600 mb-3">Jürgen Dichmann</h4><div class="space-y-1 text-gray-600"><p>In der Fuchskaut 4</p><p>60437 Frankfurt</p><p>Tel. 06101-4992227</p></div></div></div></div></div></div>`);
};
}
};
const _sfc_setup = _sfc_main.setup;
_sfc_main.setup = (props, ctx) => {
const ssrContext = useSSRContext();
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/vorstand.vue");
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
};
export { _sfc_main as default };
//# sourceMappingURL=vorstand-CFLwDNhn.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"vorstand-CFLwDNhn.mjs","sources":["../../../../pages/vorstand.vue"],"sourcesContent":null,"names":["_ssrRenderAttrs","_mergeProps"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AA4DA,IAAA,OAAA,CAAQ;AAAA,MACN,KAAA,EAAO;AAAA,KACR,CAAA;;AA7DM,MAAA,KAAA,CAAA,CAAA,IAAA,EAAAA,eAAAC,UAAAA,CAAA,EAAA,OAAM,6BAAA,EAAA,EAA6B,MAAA,CAAA,CAAA,CAAA,ixDAAA,CAAA,CAAA;AAAA,IAAA,CAAA;;;;;;;;;;;;"}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
{"version":3,"file":"nitro.mjs","sources":["../../../../node_modules/destr/dist/index.mjs","../../../../node_modules/ufo/dist/index.mjs","../../../../node_modules/cookie-es/dist/index.mjs","../../../../node_modules/radix3/dist/index.mjs","../../../../node_modules/defu/dist/defu.mjs","../../../../node_modules/node-mock-http/dist/index.mjs","../../../../node_modules/h3/dist/index.mjs","../../../../node_modules/hookable/dist/index.mjs","../../../../node_modules/node-fetch-native/dist/native.mjs","../../../../node_modules/ofetch/dist/shared/ofetch.03887fc3.mjs","../../../../node_modules/ofetch/dist/node.mjs","../../../../node_modules/unstorage/dist/shared/unstorage.zVDD2mZo.mjs","../../../../node_modules/unstorage/dist/index.mjs","../../../../node_modules/unstorage/drivers/utils/index.mjs","../../../../node_modules/unstorage/drivers/utils/node-fs.mjs","../../../../node_modules/unstorage/drivers/fs-lite.mjs","../../../../node_modules/nitropack/dist/runtime/internal/storage.mjs","../../../../node_modules/ohash/dist/shared/ohash.D__AXeF1.mjs","../../../../node_modules/ohash/dist/crypto/node/index.mjs","../../../../node_modules/ohash/dist/index.mjs","../../../../node_modules/nitropack/dist/runtime/internal/hash.mjs","../../../../node_modules/nitropack/dist/runtime/internal/cache.mjs","../../../../node_modules/klona/dist/index.mjs","../../../../node_modules/scule/dist/index.mjs","../../../../node_modules/nitropack/dist/runtime/internal/utils.env.mjs","../../../../node_modules/nitropack/dist/runtime/internal/config.mjs","../../../../node_modules/unctx/dist/index.mjs","../../../../node_modules/nitropack/dist/runtime/internal/context.mjs","../../../../node_modules/nitropack/dist/runtime/internal/route-rules.mjs","../../../../node_modules/nitropack/dist/runtime/internal/utils.mjs","../../../../node_modules/nuxt/dist/core/runtime/nitro/utils/error.js","../../../../node_modules/nuxt/dist/core/runtime/nitro/handlers/error.js","../../../../node_modules/nitropack/dist/runtime/internal/error/utils.mjs","../../../../node_modules/nitropack/dist/runtime/internal/error/prod.mjs","../../../../node_modules/pathe/dist/shared/pathe.M-eThtNZ.mjs","../../../../node_modules/nitropack/dist/runtime/internal/static.mjs","../../../../node_modules/nitropack/dist/runtime/internal/app.mjs","../../../../node_modules/nitropack/dist/runtime/internal/renderer.mjs","../../../../node_modules/nitropack/dist/runtime/internal/lib/http-graceful-shutdown.mjs","../../../../node_modules/nitropack/dist/runtime/internal/shutdown.mjs","../../../../node_modules/nitropack/dist/presets/node/runtime/node-server.mjs"],"sourcesContent":null,"names":["decode","getQuery","serialize","createRouter","f","h","c","i","l","createError","parse$1","mergeHeaders","s","nodeFetch","Headers","Headers$1","AbortController$1","normalizeKey","defineDriver","DRIVER_NAME","dirname","fsPromises","resolve","fsp","hash","_inlineAppConfig","createRadixRouter","nitroApp","callNodeRequestHandler","fetchNodeRequestHandler","gracefulShutdown","HttpsServer","HttpServer"],"mappings":"","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40]}

View File

@@ -0,0 +1,76 @@
import { d as defineEventHandler, r as readBody, c as createError, s as setCookie } from '../../../nitro/nitro.mjs';
import { r as readUsers, v as verifyPassword, g as generateToken, c as createSession, w as writeUsers } from '../../../_/auth.mjs';
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 'bcryptjs';
import 'jsonwebtoken';
import 'fs';
import 'path';
const login_post = defineEventHandler(async (event) => {
try {
const body = await readBody(event);
const { email, password } = body;
if (!email || !password) {
throw createError({
statusCode: 400,
message: "E-Mail und Passwort sind erforderlich"
});
}
const users = await readUsers();
const user = users.find((u) => u.email.toLowerCase() === email.toLowerCase());
if (!user) {
throw createError({
statusCode: 401,
message: "Ung\xFCltige Anmeldedaten"
});
}
if (user.active === false) {
throw createError({
statusCode: 403,
message: "Ihr Konto wurde noch nicht freigeschaltet. Bitte warten Sie auf die Best\xE4tigung des Vorstands."
});
}
const isValid = await verifyPassword(password, user.password);
if (!isValid) {
throw createError({
statusCode: 401,
message: "Ung\xFCltige Anmeldedaten"
});
}
const token = generateToken(user);
await createSession(user.id, token);
user.lastLogin = (/* @__PURE__ */ new Date()).toISOString();
const updatedUsers = users.map((u) => u.id === user.id ? user : u);
await writeUsers(updatedUsers);
setCookie(event, "auth_token", token, {
httpOnly: true,
secure: false,
// Auch in Production false, da wir HTTPS über Apache terminieren
sameSite: "lax",
maxAge: 60 * 60 * 24 * 7
// 7 days
});
return {
success: true,
user: {
id: user.id,
email: user.email,
name: user.name,
role: user.role
}
};
} catch (error) {
console.error("Login-Fehler:", error);
throw error;
}
});
export { login_post as default };
//# sourceMappingURL=login.post.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"login.post.mjs","sources":["../../../../../../server/api/auth/login.post.js"],"sourcesContent":null,"names":[],"mappings":";;;;;;;;;;;;;;;AAEA,mBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,IAAA;AACA,IAAA,MAAA,IAAA,GAAA,MAAA,QAAA,CAAA,KAAA,CAAA;AACA,IAAA,MAAA,EAAA,KAAA,EAAA,QAAA,EAAA,GAAA,IAAA;AAEA,IAAA,IAAA,CAAA,KAAA,IAAA,CAAA,QAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,OAAA,EAAA;AAAA,OACA,CAAA;AAAA,IACA;AAGA,IAAA,MAAA,KAAA,GAAA,MAAA,SAAA,EAAA;AACA,IAAA,MAAA,IAAA,GAAA,KAAA,CAAA,IAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,MAAA,WAAA,EAAA,KAAA,KAAA,CAAA,WAAA,EAAA,CAAA;AAEA,IAAA,IAAA,CAAA,IAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,OAAA,EAAA;AAAA,OACA,CAAA;AAAA,IACA;AAGA,IAAA,IAAA,IAAA,CAAA,WAAA,KAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,OAAA,EAAA;AAAA,OACA,CAAA;AAAA,IACA;AAGA,IAAA,MAAA,OAAA,GAAA,MAAA,cAAA,CAAA,QAAA,EAAA,KAAA,QAAA,CAAA;AACA,IAAA,IAAA,CAAA,OAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,OAAA,EAAA;AAAA,OACA,CAAA;AAAA,IACA;AAGA,IAAA,MAAA,KAAA,GAAA,cAAA,IAAA,CAAA;AAGA,IAAA,MAAA,aAAA,CAAA,IAAA,CAAA,EAAA,EAAA,KAAA,CAAA;AAGA,IAAA,IAAA,CAAA,SAAA,GAAA,iBAAA,IAAA,IAAA,EAAA,EAAA,WAAA,EAAA;AACA,IAAA,MAAA,YAAA,GAAA,MAAA,GAAA,CAAA,CAAA,CAAA,KAAA,EAAA,EAAA,KAAA,IAAA,CAAA,EAAA,GAAA,IAAA,GAAA,CAAA,CAAA;AACA,IAAA,MAAA,WAAA,YAAA,CAAA;AAGA,IAAA,SAAA,CAAA,KAAA,EAAA,cAAA,KAAA,EAAA;AAAA,MACA,QAAA,EAAA,IAAA;AAAA,MACA,MAAA,EAAA,KAAA;AAAA;AAAA,MACA,QAAA,EAAA,KAAA;AAAA,MACA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA;AAAA;AAAA,KACA,CAAA;AAGA,IAAA,OAAA;AAAA,MACA,OAAA,EAAA,IAAA;AAAA,MACA,IAAA,EAAA;AAAA,QACA,IAAA,IAAA,CAAA,EAAA;AAAA,QACA,OAAA,IAAA,CAAA,KAAA;AAAA,QACA,MAAA,IAAA,CAAA,IAAA;AAAA,QACA,MAAA,IAAA,CAAA;AAAA;AACA,KACA;AAAA,EACA,SAAA,KAAA,EAAA;AACA,IAAA,OAAA,CAAA,KAAA,CAAA,iBAAA,KAAA,CAAA;AACA,IAAA,MAAA,KAAA;AAAA,EACA;AACA,CAAA,CAAA;;;;"}

View File

@@ -0,0 +1,37 @@
import { d as defineEventHandler, g as getCookie, a as deleteCookie, c as createError } from '../../../nitro/nitro.mjs';
import { d as deleteSession } from '../../../_/auth.mjs';
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 'bcryptjs';
import 'jsonwebtoken';
import 'fs';
import 'path';
const logout_post = defineEventHandler(async (event) => {
try {
const token = getCookie(event, "auth_token");
if (token) {
await deleteSession(token);
}
deleteCookie(event, "auth_token");
return {
success: true,
message: "Erfolgreich abgemeldet"
};
} catch (error) {
console.error("Logout-Fehler:", error);
throw createError({
statusCode: 500,
message: "Abmeldung fehlgeschlagen"
});
}
});
export { logout_post as default };
//# sourceMappingURL=logout.post.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"logout.post.mjs","sources":["../../../../../../server/api/auth/logout.post.js"],"sourcesContent":null,"names":[],"mappings":";;;;;;;;;;;;;;;AAEA,oBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,IAAA;AACA,IAAA,MAAA,KAAA,GAAA,SAAA,CAAA,KAAA,EAAA,YAAA,CAAA;AAEA,IAAA,IAAA,KAAA,EAAA;AACA,MAAA,MAAA,cAAA,KAAA,CAAA;AAAA,IACA;AAGA,IAAA,YAAA,CAAA,OAAA,YAAA,CAAA;AAEA,IAAA,OAAA;AAAA,MACA,OAAA,EAAA,IAAA;AAAA,MACA,OAAA,EAAA;AAAA,KACA;AAAA,EACA,SAAA,KAAA,EAAA;AACA,IAAA,OAAA,CAAA,KAAA,CAAA,kBAAA,KAAA,CAAA;AACA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,OAAA,EAAA;AAAA,KACA,CAAA;AAAA,EACA;AACA,CAAA,CAAA;;;;"}

View File

@@ -0,0 +1,108 @@
import { d as defineEventHandler, r as readBody, c as createError } from '../../../nitro/nitro.mjs';
import { r as readUsers, h as hashPassword, w as writeUsers } from '../../../_/auth.mjs';
import nodemailer from 'nodemailer';
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 'bcryptjs';
import 'jsonwebtoken';
import 'fs';
import 'path';
const register_post = defineEventHandler(async (event) => {
try {
const body = await readBody(event);
const { name, email, phone, password } = body;
if (!name || !email || !password) {
throw createError({
statusCode: 400,
message: "Name, E-Mail und Passwort sind erforderlich"
});
}
if (password.length < 8) {
throw createError({
statusCode: 400,
message: "Das Passwort muss mindestens 8 Zeichen lang sein"
});
}
const users = await readUsers();
const existingUser = users.find((u) => u.email.toLowerCase() === email.toLowerCase());
if (existingUser) {
throw createError({
statusCode: 409,
message: "Ein Benutzer mit dieser E-Mail-Adresse existiert bereits"
});
}
const hashedPassword = await hashPassword(password);
const newUser = {
id: Date.now().toString(),
email: email.toLowerCase(),
password: hashedPassword,
name,
phone: phone || "",
role: "mitglied",
active: false,
// Requires admin approval
created: (/* @__PURE__ */ new Date()).toISOString(),
lastLogin: null
};
users.push(newUser);
await writeUsers(users);
try {
const transporter = nodemailer.createTransport({
host: process.env.SMTP_HOST || "smtp.gmail.com",
port: process.env.SMTP_PORT || 587,
secure: false,
auth: {
user: process.env.SMTP_USER,
pass: process.env.SMTP_PASS
}
});
await transporter.sendMail({
from: process.env.SMTP_FROM || "noreply@harheimertc.de",
to: process.env.SMTP_ADMIN || "j.dichmann@gmx.de",
subject: "Neue Registrierung - Harheimer TC",
html: `
<h2>Neue Registrierung</h2>
<p>Ein neuer Benutzer hat sich registriert und wartet auf Freigabe:</p>
<ul>
<li><strong>Name:</strong> ${name}</li>
<li><strong>E-Mail:</strong> ${email}</li>
<li><strong>Telefon:</strong> ${phone || "Nicht angegeben"}</li>
</ul>
<p>Bitte pr\xFCfen Sie die Registrierung im CMS.</p>
`
});
await transporter.sendMail({
from: process.env.SMTP_FROM || "noreply@harheimertc.de",
to: email,
subject: "Registrierung erhalten - Harheimer TC",
html: `
<h2>Registrierung erhalten</h2>
<p>Hallo ${name},</p>
<p>vielen Dank f\xFCr Ihre Registrierung beim Harheimer TC!</p>
<p>Ihre Anfrage wird vom Vorstand gepr\xFCft. Sie erhalten eine E-Mail, sobald Ihr Zugang freigeschaltet wurde.</p>
<br>
<p>Mit sportlichen Gr\xFC\xDFen,<br>Ihr Harheimer TC</p>
`
});
} catch (emailError) {
console.error("E-Mail-Versand fehlgeschlagen:", emailError);
}
return {
success: true,
message: "Registrierung erfolgreich. Sie erhalten eine E-Mail, sobald Ihr Zugang freigeschaltet wurde."
};
} catch (error) {
console.error("Registrierungs-Fehler:", error);
throw error;
}
});
export { register_post as default };
//# sourceMappingURL=register.post.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"register.post.mjs","sources":["../../../../../../server/api/auth/register.post.js"],"sourcesContent":null,"names":[],"mappings":"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"}

View File

@@ -0,0 +1,82 @@
import { d as defineEventHandler, r as readBody, c as createError } from '../../../nitro/nitro.mjs';
import { r as readUsers, h as hashPassword, w as writeUsers } from '../../../_/auth.mjs';
import nodemailer from 'nodemailer';
import require$$1 from 'crypto';
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 'bcryptjs';
import 'jsonwebtoken';
import 'fs';
import 'path';
const resetPassword_post = defineEventHandler(async (event) => {
try {
const body = await readBody(event);
const { email } = body;
if (!email) {
throw createError({
statusCode: 400,
message: "E-Mail-Adresse ist erforderlich"
});
}
const users = await readUsers();
const user = users.find((u) => u.email.toLowerCase() === email.toLowerCase());
if (!user) {
return {
success: true,
message: "Falls ein Konto mit dieser E-Mail existiert, wurde eine E-Mail gesendet."
};
}
const tempPassword = require$$1.randomBytes(8).toString("hex");
const hashedPassword = await hashPassword(tempPassword);
user.password = hashedPassword;
user.passwordResetRequired = true;
const updatedUsers = users.map((u) => u.id === user.id ? user : u);
await writeUsers(updatedUsers);
const transporter = nodemailer.createTransport({
host: process.env.SMTP_HOST || "smtp.gmail.com",
port: process.env.SMTP_PORT || 587,
secure: false,
auth: {
user: process.env.SMTP_USER,
pass: process.env.SMTP_PASS
}
});
const mailOptions = {
from: process.env.SMTP_FROM || "noreply@harheimertc.de",
to: user.email,
subject: "Passwort zur\xFCcksetzen - Harheimer TC",
html: `
<h2>Passwort zur\xFCcksetzen</h2>
<p>Hallo ${user.name},</p>
<p>Sie haben eine Anfrage zum Zur\xFCcksetzen Ihres Passworts gestellt.</p>
<p>Ihr tempor\xE4res Passwort lautet: <strong>${tempPassword}</strong></p>
<p>Bitte melden Sie sich damit an und \xE4ndern Sie Ihr Passwort im Mitgliederbereich.</p>
<br>
<p>Falls Sie diese Anfrage nicht gestellt haben, ignorieren Sie diese E-Mail.</p>
<br>
<p>Mit sportlichen Gr\xFC\xDFen,<br>Ihr Harheimer TC</p>
`
};
await transporter.sendMail(mailOptions);
return {
success: true,
message: "Falls ein Konto mit dieser E-Mail existiert, wurde eine E-Mail gesendet."
};
} catch (error) {
console.error("Password-Reset-Fehler:", error);
return {
success: true,
message: "Falls ein Konto mit dieser E-Mail existiert, wurde eine E-Mail gesendet."
};
}
});
export { resetPassword_post as default };
//# sourceMappingURL=reset-password.post.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"reset-password.post.mjs","sources":["../../../../../../server/api/auth/reset-password.post.js"],"sourcesContent":null,"names":["crypto"],"mappings":";;;;;;;;;;;;;;;;;AAIA,2BAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,IAAA;AACA,IAAA,MAAA,IAAA,GAAA,MAAA,QAAA,CAAA,KAAA,CAAA;AACA,IAAA,MAAA,EAAA,OAAA,GAAA,IAAA;AAEA,IAAA,IAAA,CAAA,KAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,OAAA,EAAA;AAAA,OACA,CAAA;AAAA,IACA;AAGA,IAAA,MAAA,KAAA,GAAA,MAAA,SAAA,EAAA;AACA,IAAA,MAAA,IAAA,GAAA,KAAA,CAAA,IAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,MAAA,WAAA,EAAA,KAAA,KAAA,CAAA,WAAA,EAAA,CAAA;AAGA,IAAA,IAAA,CAAA,IAAA,EAAA;AACA,MAAA,OAAA;AAAA,QACA,OAAA,EAAA,IAAA;AAAA,QACA,OAAA,EAAA;AAAA,OACA;AAAA,IACA;AAGA,IAAA,MAAA,eAAAA,UAAA,CAAA,WAAA,CAAA,CAAA,CAAA,CAAA,SAAA,KAAA,CAAA;AACA,IAAA,MAAA,cAAA,GAAA,MAAA,YAAA,CAAA,YAAA,CAAA;AAGA,IAAA,IAAA,CAAA,QAAA,GAAA,cAAA;AACA,IAAA,IAAA,CAAA,qBAAA,GAAA,IAAA;AACA,IAAA,MAAA,YAAA,GAAA,MAAA,GAAA,CAAA,CAAA,CAAA,KAAA,EAAA,EAAA,KAAA,IAAA,CAAA,EAAA,GAAA,IAAA,GAAA,CAAA,CAAA;AACA,IAAA,MAAA,WAAA,YAAA,CAAA;AAGA,IAAA,MAAA,WAAA,GAAA,WAAA,eAAA,CAAA;AAAA,MACA,IAAA,EAAA,OAAA,CAAA,GAAA,CAAA,SAAA,IAAA,gBAAA;AAAA,MACA,IAAA,EAAA,OAAA,CAAA,GAAA,CAAA,SAAA,IAAA,GAAA;AAAA,MACA,MAAA,EAAA,KAAA;AAAA,MACA,IAAA,EAAA;AAAA,QACA,IAAA,EAAA,QAAA,GAAA,CAAA,SAAA;AAAA,QACA,IAAA,EAAA,QAAA,GAAA,CAAA;AAAA;AACA,KACA,CAAA;AAEA,IAAA,MAAA,WAAA,GAAA;AAAA,MACA,IAAA,EAAA,OAAA,CAAA,GAAA,CAAA,SAAA,IAAA,wBAAA;AAAA,MACA,IAAA,IAAA,CAAA,KAAA;AAAA,MACA,OAAA,EAAA,yCAAA;AAAA,MACA,IAAA,EAAA;AAAA;AAAA,iBAAA,EAEA,KAAA,IAAA,CAAA;AAAA;AAAA,sDAAA,EAEA,YAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAA;AAAA,KAOA;AAEA,IAAA,MAAA,WAAA,CAAA,SAAA,WAAA,CAAA;AAEA,IAAA,OAAA;AAAA,MACA,OAAA,EAAA,IAAA;AAAA,MACA,OAAA,EAAA;AAAA,KACA;AAAA,EACA,SAAA,KAAA,EAAA;AACA,IAAA,OAAA,CAAA,KAAA,CAAA,0BAAA,KAAA,CAAA;AAEA,IAAA,OAAA;AAAA,MACA,OAAA,EAAA,IAAA;AAAA,MACA,OAAA,EAAA;AAAA,KACA;AAAA,EACA;AACA,CAAA,CAAA;;;;"}

Some files were not shown because too many files have changed in this diff Show More