Add config system for training, trainer, membership and impressum with CMS editor
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"date": "2025-10-21T14:23:16.435Z",
|
||||
"date": "2025-10-21T14:42:46.721Z",
|
||||
"preset": "node-server",
|
||||
"framework": {
|
||||
"name": "nuxt",
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
import{u as e}from"./C_U-NUAd.js";import{c as r,f as s,o as a}from"#entry";const n={class:"min-h-full py-16 bg-gray-50"},p={__name:"trainer",setup(i){return e({title:"Trainer - Harheimer TC"}),(l,t)=>(a(),r("div",n,[...t[0]||(t[0]=[s('<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 & Betreuung </p></div></div></div>',1)])]))}};export{p as default};
|
||||
@@ -1,11 +0,0 @@
|
||||
import{e as o,c as s,o as r,a as e,f as p,b as l,w as h,d as u,_ as g,F as x,i as f,p as b,s as y,t as a}from"#entry";import{H as _}from"./CWEkTB1z.js";import{T as w}from"./B4mSF5Ac.js";import{u as k}from"./C_U-NUAd.js";/**
|
||||
* @license lucide-vue-next v0.344.0 - ISC
|
||||
*
|
||||
* This source code is licensed under the ISC license.
|
||||
* See the LICENSE file in the root directory of this source tree.
|
||||
*/const v=o("AwardIcon",[["circle",{cx:"12",cy:"8",r:"6",key:"1vp47v"}],["path",{d:"M15.477 12.89 17 22l-5-3-5 3 1.523-9.11",key:"em7aur"}]]);/**
|
||||
* @license lucide-vue-next v0.344.0 - ISC
|
||||
*
|
||||
* This source code is licensed under the ISC license.
|
||||
* See the LICENSE file in the root directory of this source tree.
|
||||
*/const T=o("UsersRoundIcon",[["path",{d:"M18 21a8 8 0 0 0-16 0",key:"3ypg7q"}],["circle",{cx:"10",cy:"8",r:"5",key:"o932ke"}],["path",{d:"M22 20c0-3.37-2-6.5-4-8a5 5 0 0 0-.45-8.3",key:"10s06x"}]]),V={id:"about",class:"py-16 sm:py-20 bg-gradient-to-b from-white to-gray-50"},H={class:"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"},z={class:"grid lg:grid-cols-2 gap-12 items-center mb-20"},A={class:"space-y-6"},B={class:"pt-4"},J={class:"grid sm:grid-cols-2 lg:grid-cols-4 gap-8"},M={class:"w-12 h-12 bg-primary-100 rounded-lg flex items-center justify-center mb-4"},N={class:"text-xl font-display font-bold text-gray-900 mb-2"},S={class:"text-gray-600"},W={__name:"About",setup(d){const n=[{icon:_,title:"70+ Jahre Tradition",description:"Seit 1954 spielen wir Tischtennis in Harheim"},{icon:T,title:"Familiärer Verein",description:"Ca. 40 Mitglieder in einer herzlichen Gemeinschaft"},{icon:v,title:"5 Herrenmannschaften",description:"Aktive Teilnahme an der Punktspielrunde"},{icon:w,title:"Jugendförderung",description:"Ab 2025/26 wieder eine Jugendmannschaft"}];return(c,t)=>{const m=g;return r(),s("section",V,[e("div",H,[t[3]||(t[3]=e("div",{class:"text-center mb-16"},[e("h2",{class:"text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-4"}," Über uns "),e("div",{class:"w-24 h-1 bg-primary-600 mx-auto mb-6"}),e("p",{class:"text-xl text-gray-600 max-w-3xl mx-auto"}," Seit über 70 Jahren wird in unserem Harheimer Verein Tischtennis gespielt ")],-1)),e("div",z,[t[2]||(t[2]=e("div",{class:"relative h-[400px] sm:h-[500px] rounded-2xl overflow-hidden shadow-2xl"},[e("div",{class:"w-full h-full bg-cover bg-center hover:scale-110 transition-transform duration-700",style:{"background-image":"url('/images/club_about_us.png')"}})],-1)),e("div",A,[t[1]||(t[1]=p('<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>',5)),e("div",B,[l(m,{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:h(()=>[...t[0]||(t[0]=[u(" Kontakt aufnehmen ",-1)])]),_:1})])])]),e("div",J,[(r(),s(x,null,f(n,i=>e("div",{key:i.title,class:"bg-white p-6 rounded-xl shadow-lg hover:shadow-xl transition-shadow border border-gray-100"},[e("div",M,[(r(),b(y(i.icon),{size:24,class:"text-primary-600"}))]),e("h4",N,a(i.title),1),e("p",S,a(i.description),1)])),64))])])])}}},C={class:"min-h-full"},P={__name:"ueber-uns",setup(d){return k({title:"Über uns - Harheimer TC"}),(n,c)=>(r(),s("div",C,[l(W)]))}};export{P as default};
|
||||
@@ -1 +0,0 @@
|
||||
import{c as d,a as t,b as e,u as r,d as n,w as o,_ as m,o as x}from"#entry";import{u as p}from"./C_U-NUAd.js";import{M as a,C as l}from"./C5SyyWEb.js";const g={class:"min-h-full py-16 bg-gray-50"},b={class:"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"},f={class:"bg-white rounded-xl shadow-lg p-8 mb-12"},y={class:"flex items-start space-x-4 mb-6"},u={href:"https://www.google.com/maps/search/?api=1&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"},h={class:"grid gap-6 mb-12"},c={class:"bg-white p-6 rounded-xl shadow-lg border-l-4 border-primary-600"},v={class:"flex items-start justify-between"},w={class:"bg-white p-6 rounded-xl shadow-lg border-l-4 border-primary-600"},_={class:"flex items-start justify-between"},k={class:"mt-12 bg-primary-50 p-8 rounded-xl border border-primary-100"},z={class:"flex flex-wrap gap-4"},H={__name:"index",setup(T){return p({title:"Trainingszeiten - Harheimer TC"}),(I,s)=>{const i=m;return x(),d("div",g,[t("div",b,[s[11]||(s[11]=t("h1",{class:"text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-6"}," Trainingszeiten ",-1)),s[12]||(s[12]=t("div",{class:"w-24 h-1 bg-primary-600 mb-8"},null,-1)),t("div",f,[t("div",y,[e(r(a),{size:32,class:"text-primary-600 flex-shrink-0"}),t("div",null,[s[1]||(s[1]=t("h2",{class:"text-2xl font-display font-bold text-gray-900 mb-4"},"Trainingsort",-1)),s[2]||(s[2]=t("h3",{class:"text-lg font-semibold text-gray-900 mb-2"}," Sporthalle der Grundschule Harheim ",-1)),s[3]||(s[3]=t("p",{class:"text-gray-700 mb-1"},"In den Schafgärten 25",-1)),s[4]||(s[4]=t("p",{class:"text-gray-700 mb-4"},"60437 Frankfurt/Main",-1)),t("a",u,[e(r(a),{size:16,class:"mr-2"}),s[0]||(s[0]=n(" Anfahrtsplan anzeigen ",-1))])])])]),s[13]||(s[13]=t("h2",{class:"text-2xl font-display font-bold text-gray-900 mb-6"}," Trainingszeiten ",-1)),t("div",h,[t("div",c,[t("div",v,[s[5]||(s[5]=t("div",null,[t("h3",{class:"text-xl font-display font-bold text-gray-900 mb-2"},"Damen und Herren"),t("div",{class:"space-y-2"},[t("p",{class:"text-lg font-semibold text-primary-600"}," Dienstag: 19:30 - 22:30 Uhr "),t("p",{class:"text-lg font-semibold text-primary-600"}," Donnerstag: 19:30 - 22:30 Uhr ")])],-1)),e(r(l),{size:32,class:"text-primary-600"})])]),t("div",w,[t("div",_,[s[6]||(s[6]=t("div",null,[t("h3",{class:"text-xl font-display font-bold text-gray-900 mb-2"},"Schüler/Jugend"),t("p",{class:"text-gray-600 mb-2"},"Ab 6 Jahre"),t("p",{class:"text-lg font-semibold text-primary-600"}," Dienstag: 17:30 - 19:30 Uhr ")],-1)),e(r(l),{size:32,class:"text-primary-600"})])])]),t("div",k,[s[9]||(s[9]=t("h3",{class:"text-2xl font-display font-bold text-gray-900 mb-4"}," Interessiert? ",-1)),s[10]||(s[10]=t("p",{class:"text-gray-600 mb-6"}," Komm einfach zum Schnuppertraining vorbei oder kontaktiere uns für weitere Informationen! ",-1)),t("div",z,[e(i,{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:o(()=>[...s[7]||(s[7]=[n(" Infos für Anfänger ",-1)])]),_:1}),e(i,{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:o(()=>[...s[8]||(s[8]=[n(" Kontakt ",-1)])]),_:1})])])])])}}};export{H as default};
|
||||
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
{"id":"c7b0744b-853d-4a6f-b9fa-7d1f201a383a","timestamp":1761056589368}
|
||||
{"id":"d5fb7e66-2645-4f98-906c-371ebb86764a","timestamp":1761057759472}
|
||||
@@ -1 +0,0 @@
|
||||
{"id":"c7b0744b-853d-4a6f-b9fa-7d1f201a383a","timestamp":1761056589368,"matcher":{"static":{},"wildcard":{},"dynamic":{}},"prerendered":[]}
|
||||
File diff suppressed because one or more lines are too long
@@ -1,120 +0,0 @@
|
||||
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
|
||||
@@ -1 +0,0 @@
|
||||
{"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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"}
|
||||
@@ -1,85 +0,0 @@
|
||||
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 & 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
|
||||
@@ -1 +0,0 @@
|
||||
{"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;;;;;;;;;;;;;;;;;;"}
|
||||
@@ -1,110 +0,0 @@
|
||||
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
|
||||
@@ -1 +0,0 @@
|
||||
{"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;;;;;;;;;;;;;;;"}
|
||||
@@ -1,376 +0,0 @@
|
||||
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
|
||||
@@ -1 +0,0 @@
|
||||
{"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]}
|
||||
@@ -1,145 +0,0 @@
|
||||
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
|
||||
@@ -1 +0,0 @@
|
||||
{"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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"}
|
||||
@@ -340,7 +340,7 @@ const client_manifest = {
|
||||
"module": true,
|
||||
"prefetch": true,
|
||||
"preload": true,
|
||||
"file": "5cTtis_o.js",
|
||||
"file": "CLsYyjY5.js",
|
||||
"name": "entry",
|
||||
"src": "node_modules/nuxt/dist/app/entry.js",
|
||||
"isEntry": true,
|
||||
@@ -350,14 +350,14 @@ const client_manifest = {
|
||||
"node_modules/nuxt/dist/app/components/error-500.vue"
|
||||
],
|
||||
"css": [
|
||||
"entry.BFpxHKmh.css"
|
||||
"entry.CuxYSkzU.css"
|
||||
],
|
||||
"assets": [
|
||||
"Harheimer TC.CKfYAfp1.svg"
|
||||
]
|
||||
},
|
||||
"entry.BFpxHKmh.css": {
|
||||
"file": "entry.BFpxHKmh.css",
|
||||
"entry.CuxYSkzU.css": {
|
||||
"file": "entry.CuxYSkzU.css",
|
||||
"resourceType": "style",
|
||||
"prefetch": true,
|
||||
"preload": true
|
||||
@@ -398,6 +398,27 @@ const client_manifest = {
|
||||
"_DaSgy0Cl.js"
|
||||
]
|
||||
},
|
||||
"pages/cms/einstellungen.vue": {
|
||||
"resourceType": "script",
|
||||
"module": true,
|
||||
"prefetch": true,
|
||||
"preload": true,
|
||||
"file": "OEtiuumO.js",
|
||||
"name": "einstellungen",
|
||||
"src": "pages/cms/einstellungen.vue",
|
||||
"isDynamicEntry": true,
|
||||
"imports": [
|
||||
"node_modules/nuxt/dist/app/entry.js",
|
||||
"_C_U-NUAd.js",
|
||||
"_CUq_0rkE.js",
|
||||
"_YJHbYJtA.js",
|
||||
"_DkeYb0_S.js",
|
||||
"_R6Iy1jPP.js",
|
||||
"_FF_cyd6S.js",
|
||||
"_C8kQt0fa.js",
|
||||
"_DaSgy0Cl.js"
|
||||
]
|
||||
},
|
||||
"pages/cms/index.vue": {
|
||||
"resourceType": "script",
|
||||
"module": true,
|
||||
@@ -711,15 +732,16 @@ const client_manifest = {
|
||||
"module": true,
|
||||
"prefetch": true,
|
||||
"preload": true,
|
||||
"file": "Zs8yqLLb.js",
|
||||
"file": "DqRf-l2m.js",
|
||||
"name": "mitgliedschaft",
|
||||
"src": "pages/mitgliedschaft.vue",
|
||||
"isDynamicEntry": true,
|
||||
"imports": [
|
||||
"node_modules/nuxt/dist/app/entry.js",
|
||||
"_DaSgy0Cl.js",
|
||||
"_XZ6RV9KH.js",
|
||||
"_DaSgy0Cl.js",
|
||||
"_CWEkTB1z.js",
|
||||
"_DkeYb0_S.js",
|
||||
"_BteKZQ9T.js",
|
||||
"_Czdc6-TI.js",
|
||||
"_C_U-NUAd.js"
|
||||
@@ -828,7 +850,7 @@ const client_manifest = {
|
||||
"module": true,
|
||||
"prefetch": true,
|
||||
"preload": true,
|
||||
"file": "CI8YYLGa.js",
|
||||
"file": "B672hUde.js",
|
||||
"name": "index",
|
||||
"src": "pages/training/index.vue",
|
||||
"isDynamicEntry": true,
|
||||
@@ -843,7 +865,7 @@ const client_manifest = {
|
||||
"module": true,
|
||||
"prefetch": true,
|
||||
"preload": true,
|
||||
"file": "BxR6w-Hd.js",
|
||||
"file": "CV6p3MQQ.js",
|
||||
"name": "trainer",
|
||||
"src": "pages/training/trainer.vue",
|
||||
"isDynamicEntry": true,
|
||||
@@ -877,7 +899,7 @@ const client_manifest = {
|
||||
"module": true,
|
||||
"prefetch": true,
|
||||
"preload": true,
|
||||
"file": "C4R6hOY6.js",
|
||||
"file": "B0zS1aUD.js",
|
||||
"name": "ueber-uns",
|
||||
"src": "pages/ueber-uns.vue",
|
||||
"isDynamicEntry": true,
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
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
|
||||
@@ -1 +0,0 @@
|
||||
{"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]}
|
||||
@@ -1,60 +0,0 @@
|
||||
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
|
||||
@@ -1 +0,0 @@
|
||||
{"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;;;;;;;;;;;;;;;;;;"}
|
||||
@@ -1,95 +0,0 @@
|
||||
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
|
||||
@@ -1 +0,0 @@
|
||||
{"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]}
|
||||
@@ -1,78 +0,0 @@
|
||||
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
|
||||
@@ -1 +0,0 @@
|
||||
{"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]}
|
||||
@@ -1,82 +0,0 @@
|
||||
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
|
||||
@@ -1 +0,0 @@
|
||||
{"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;;;;;;;;;;;;;;;"}
|
||||
@@ -1,43 +0,0 @@
|
||||
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". Der neu gegründete Verein wurde unter dem Namen "Harheimer Tischtennis-Club" 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
|
||||
@@ -1 +0,0 @@
|
||||
{"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;;;;;;;;;;;;"}
|
||||
@@ -1,43 +0,0 @@
|
||||
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
|
||||
@@ -1 +0,0 @@
|
||||
{"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;;;;;;;;;;;;"}
|
||||
@@ -1,73 +0,0 @@
|
||||
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
|
||||
@@ -1 +0,0 @@
|
||||
{"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;;;;;;;;;;;;;;;;;"}
|
||||
@@ -1,153 +0,0 @@
|
||||
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
|
||||
@@ -1 +0,0 @@
|
||||
{"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;;;;;;;;;;;;;;"}
|
||||
@@ -1,166 +0,0 @@
|
||||
import { u as useAuthStore, _ as __nuxt_component_0$1 } from './server.mjs';
|
||||
import { mergeProps, withCtx, unref, createVNode, useSSRContext } from 'vue';
|
||||
import { ssrRenderAttrs, ssrRenderComponent } from 'vue/server-renderer';
|
||||
import { Newspaper, Calendar, Users, UserCog } 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: "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="grid md:grid-cols-2 lg:grid-cols-3 gap-6">`);
|
||||
_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-blue-100 rounded-lg flex items-center justify-center group-hover:bg-blue-600 transition-colors"${_scopeId}>`);
|
||||
_push2(ssrRenderComponent(unref(Newspaper), {
|
||||
size: 24,
|
||||
class: "text-blue-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}> News für Mitglieder erstellen und verwalten </p>`);
|
||||
} else {
|
||||
return [
|
||||
createVNode("div", { class: "flex items-center mb-4" }, [
|
||||
createVNode("div", { class: "w-12 h-12 bg-blue-100 rounded-lg flex items-center justify-center group-hover:bg-blue-600 transition-colors" }, [
|
||||
createVNode(unref(Newspaper), {
|
||||
size: 24,
|
||||
class: "text-blue-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" }, " News für Mitglieder erstellen und verwalten ")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(ssrRenderComponent(_component_NuxtLink, {
|
||||
to: "/cms/termine",
|
||||
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-green-100 rounded-lg flex items-center justify-center group-hover:bg-green-600 transition-colors"${_scopeId}>`);
|
||||
_push2(ssrRenderComponent(unref(Calendar), {
|
||||
size: 24,
|
||||
class: "text-green-600 group-hover:text-white"
|
||||
}, null, _parent2, _scopeId));
|
||||
_push2(`</div><h2 class="ml-4 text-xl font-semibold text-gray-900"${_scopeId}>Termine</h2></div><p class="text-gray-600"${_scopeId}> Vereinstermine erstellen und verwalten </p>`);
|
||||
} else {
|
||||
return [
|
||||
createVNode("div", { class: "flex items-center mb-4" }, [
|
||||
createVNode("div", { class: "w-12 h-12 bg-green-100 rounded-lg flex items-center justify-center group-hover:bg-green-600 transition-colors" }, [
|
||||
createVNode(unref(Calendar), {
|
||||
size: 24,
|
||||
class: "text-green-600 group-hover:text-white"
|
||||
})
|
||||
]),
|
||||
createVNode("h2", { class: "ml-4 text-xl font-semibold text-gray-900" }, "Termine")
|
||||
]),
|
||||
createVNode("p", { class: "text-gray-600" }, " Vereinstermine erstellen und 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-purple-100 rounded-lg flex items-center justify-center group-hover:bg-purple-600 transition-colors"${_scopeId}>`);
|
||||
_push2(ssrRenderComponent(unref(Users), {
|
||||
size: 24,
|
||||
class: "text-purple-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}> Mitgliederliste bearbeiten </p>`);
|
||||
} else {
|
||||
return [
|
||||
createVNode("div", { class: "flex items-center mb-4" }, [
|
||||
createVNode("div", { class: "w-12 h-12 bg-purple-100 rounded-lg flex items-center justify-center group-hover:bg-purple-600 transition-colors" }, [
|
||||
createVNode(unref(Users), {
|
||||
size: 24,
|
||||
class: "text-purple-600 group-hover:text-white"
|
||||
})
|
||||
]),
|
||||
createVNode("h2", { class: "ml-4 text-xl font-semibold text-gray-900" }, "Mitglieder")
|
||||
]),
|
||||
createVNode("p", { class: "text-gray-600" }, " Mitgliederliste bearbeiten ")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
if (unref(authStore).role === "admin") {
|
||||
_push(ssrRenderComponent(_component_NuxtLink, {
|
||||
to: "/cms/benutzer",
|
||||
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-yellow-100 rounded-lg flex items-center justify-center group-hover:bg-yellow-600 transition-colors"${_scopeId}>`);
|
||||
_push2(ssrRenderComponent(unref(UserCog), {
|
||||
size: 24,
|
||||
class: "text-yellow-600 group-hover:text-white"
|
||||
}, null, _parent2, _scopeId));
|
||||
_push2(`</div><h2 class="ml-4 text-xl font-semibold text-gray-900"${_scopeId}>Benutzerverwaltung</h2></div><p class="text-gray-600"${_scopeId}> Benutzer freischalten und verwalten </p>`);
|
||||
} else {
|
||||
return [
|
||||
createVNode("div", { class: "flex items-center mb-4" }, [
|
||||
createVNode("div", { class: "w-12 h-12 bg-yellow-100 rounded-lg flex items-center justify-center group-hover:bg-yellow-600 transition-colors" }, [
|
||||
createVNode(unref(UserCog), {
|
||||
size: 24,
|
||||
class: "text-yellow-600 group-hover:text-white"
|
||||
})
|
||||
]),
|
||||
createVNode("h2", { class: "ml-4 text-xl font-semibold text-gray-900" }, "Benutzerverwaltung")
|
||||
]),
|
||||
createVNode("p", { class: "text-gray-600" }, " Benutzer freischalten und verwalten ")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_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/cms/index.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
//# sourceMappingURL=index-D8nn7-Uy.mjs.map
|
||||
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"index-D8nn7-Uy.mjs","sources":["../../../../pages/cms/index.vue"],"sourcesContent":null,"names":["_ssrRenderAttrs","_mergeProps","_push","_parent","_createVNode","_unref"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAiFA,IAAA,MAAM,YAAY,YAAA,EAAY;AAO9B,IAAA,OAAA,CAAQ;AAAA,MACN,KAAA,EAAO;AAAA,KACR,CAAA;;;AAzFM,MAAA,KAAA,CAAA,CAAA,IAAA,EAAAA,eAAAC,UAAAA,CAAA,EAAA,OAAM,6BAAA,EAAA,EAA6B,MAAA,CAAA,CAAA,CAAA,sQAAA,CAAA,CAAA;;QAUhC,EAAA,EAAG,yBAAA;AAAA,QACH,KAAA,EAAM;AAAA,OAAA,EAAA;yBAFR,CAaW,CAAA,EAAAC,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,+GAA6G,EAAA;AAAA,kBACtHA,WAAAA,CAAqEC,KAAAA,CAAA,SAAA,CAAA,EAAA;AAAA,oBAAzD,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,+CAEzB;AAAA,aAAA;;;;;;QAKA,EAAA,EAAG,cAAA;AAAA,QACH,KAAA,EAAM;AAAA,OAAA,EAAA;yBAFR,CAaW,CAAA,EAAAF,MAAAA,EAAAC,QAAAA,EAAA,QAAA,KAAA;;;;cAPM,IAAA,EAAM,EAAA;AAAA,cAAI,KAAA,EAAM;AAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,QAAA,CAAA,CAAA;;;;AAF/BC,cAAAA,WAAAA,CAKM,KAAA,EAAA,EALD,KAAA,EAAM,wBAAA,EAAwB,EAAA;AAAA,gBACjCA,WAAAA,CAEM,KAAA,EAAA,EAFD,KAAA,EAAM,iHAA+G,EAAA;AAAA,kBACxHA,WAAAA,CAAqEC,KAAAA,CAAA,QAAA,CAAA,EAAA;AAAA,oBAA1D,IAAA,EAAM,EAAA;AAAA,oBAAI,KAAA,EAAM;AAAA,mBAAA;;AAE7BD,gBAAAA,WAAAA,CAAiE,IAAA,EAAA,EAA7D,KAAA,EAAM,0CAAA,IAA2C,SAAO;AAAA,eAAA,CAAA;AAE9DA,cAAAA,WAAAA,CAEI,GAAA,EAAA,EAFD,KAAA,EAAM,eAAA,IAAgB,0CAEzB;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,mHAAiH,EAAA;AAAA,kBAC1HA,WAAAA,CAAmEC,KAAAA,CAAA,KAAA,CAAA,EAAA;AAAA,oBAA3D,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,8BAEzB;AAAA,aAAA;;;;;AAKM,MAAA,IAAAC,KAAAA,CAAA,SAAA,CAAA,CAAU,IAAA,KAAI,OAAA,EAAA;;UACpB,EAAA,EAAG,eAAA;AAAA,UACH,KAAA,EAAM;AAAA,SAAA,EAAA;2BAHR,CAcW,CAAA,EAAAH,MAAAA,EAAAC,QAAAA,EAAA,QAAA,KAAA;;;;gBAPK,IAAA,EAAM,EAAA;AAAA,gBAAI,KAAA,EAAM;AAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,QAAA,CAAA,CAAA;;;;AAF9BC,gBAAAA,WAAAA,CAKM,KAAA,EAAA,EALD,KAAA,EAAM,wBAAA,EAAwB,EAAA;AAAA,kBACjCA,WAAAA,CAEM,KAAA,EAAA,EAFD,KAAA,EAAM,mHAAiH,EAAA;AAAA,oBAC1HA,WAAAA,CAAqEC,KAAAA,CAAA,OAAA,CAAA,EAAA;AAAA,sBAA3D,IAAA,EAAM,EAAA;AAAA,sBAAI,KAAA,EAAM;AAAA,qBAAA;;AAE5BD,kBAAAA,WAAAA,CAA4E,IAAA,EAAA,EAAxE,KAAA,EAAM,0CAAA,IAA2C,oBAAkB;AAAA,iBAAA,CAAA;AAEzEA,gBAAAA,WAAAA,CAEI,GAAA,EAAA,EAFD,KAAA,EAAM,eAAA,IAAgB,uCAEzB;AAAA,eAAA;;;;;;;;;;;;;;;;;;;;;"}
|
||||
@@ -1,215 +0,0 @@
|
||||
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 & 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
|
||||
@@ -1 +0,0 @@
|
||||
{"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":"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"}
|
||||
@@ -1,95 +0,0 @@
|
||||
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&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
|
||||
@@ -1 +0,0 @@
|
||||
{"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;;;;;;;;;;;;;;;;;;"}
|
||||
@@ -1,60 +0,0 @@
|
||||
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 & 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
|
||||
@@ -1 +0,0 @@
|
||||
{"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;;;;;;;;;;;;;;;;;;"}
|
||||
@@ -1,139 +0,0 @@
|
||||
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&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
|
||||
@@ -1 +0,0 @@
|
||||
{"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":";;;;;;;;;;;;;;;;;;;;;;;;;;AAqKA,IAAA,MAAM,WAAW,GAAA,CAAI;AAAA,MACnB,IAAA,EAAM,EAAA;AAAA,MACN,KAAA,EAAO,EAAA;AAAA,MACP,KAAA,EAAO,EAAA;AAAA,MACP,OAAA,EAAS,EAAA;AAAA,MACT,OAAA,EAAS;AAAA,KACV,CAAA;AAED,IAAA,MAAM,YAAA,GAAe,IAAI,KAAK,CAAA;AAC9B,IAAA,MAAM,YAAA,GAAe,IAAI,IAAI,CAAA;AAC7B,IAAA,MAAM,aAAA,GAAgB,IAAI,EAAE,CAAA;AAmC5B,IAAA,MAAM,WAAA,GAAc;AAAA,MAClB;AAAA,QACE,IAAA,EAAM,MAAA;AAAA,QACN,KAAA,EAAO,cAAA;AAAA,QACP,OAAA,EAAS,CAAC,oCAAA,EAAsC,uBAAA,EAAyB,sBAAsB,CAAA;AAAA,QAC/F,KAAA,EAAO;AAAA,OACX;AAAA,MACE;AAAA,QACE,IAAA,EAAM,KAAA;AAAA,QACN,KAAA,EAAO,SAAA;AAAA,QACP,OAAA,EAAS,CAAC,eAAe,CAAA;AAAA,QACzB,KAAA,EAAO;AAAA,OACX;AAAA,MACE;AAAA,QACE,IAAA,EAAM,IAAA;AAAA,QACN,KAAA,EAAO,QAAA;AAAA,QACP,OAAA,EAAS,CAAC,mBAAmB,CAAA;AAAA,QAC7B,KAAA,EAAO;AAAA,OACX;AAAA,MACE;AAAA,QACE,IAAA,EAAM,KAAA;AAAA,QACN,KAAA,EAAO,iBAAA;AAAA,QACP,OAAA,EAAS,CAAC,6BAAA,EAA+B,+BAA+B,CAAA;AAAA,QACxE,KAAA,EAAO;AAAA;AACX,KACA;;;QA1OW,EAAA,EAAG,SAAA;AAAA,QAAU,KAAA,EAAM;AAAA,OAAA,EAAA,MAAA,CAAA,CAAA,CAAA,gbAAA,CAAA,CAAA;AAgBHA,MAAAA,aAAAA,CAAA,cAAR,IAAA,KAAI;AAI4F,QAAA,KAAA,CAAA,CAAA,gHAAA,EAAAC,eAAA,CAAA,uFAAA,EAAA,KAAK,KAAK,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA;AAC/FC,QAAAA,cAAAA,CAAA,KAAA,EAAAC,WAAAA,CAAAC,uBAAAA,CAAA,IAAA,CAAK,IAAI,CAAA,EAAA;AAAA,UAAG,IAAA,EAAM,EAAA;AAAA,UAAI,KAAA,EAAM;AAAA,SAAA,EAAA,IAAA,CAAA,EAAA,OAAA,CAAA;AAIvC,QAAA,KAAA,CAAA,CAAA,iEAAA,EAAAC,cAAAA,CAAA,IAAA,CAAK,KAAK,CAAA,CAAA,aAAA,CAAA,CAAA;AAEQL,QAAAA,aAAAA,CAAA,IAAA,CAAK,OAAA,EAAO,CAAxB,IAAA,EAAM,CAAA,KAAC;AACb,UAAA,KAAA,CAAA,CAAA,yBAAA,EAAA,cAAA,CAAA,IAAI,CAAA,CAAA,IAAA,CAAA,CAAA;AAAA,QAAA,CAAA,CAAA;;;AAYP,MAAA,KAAA,CAAA,CAAA,0ZAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,GAAA,EAAiB,CAAA,CAAA,4uBAAA,EA8BRM,aAAAA,CAAA,OAAA,EAAA,QAAA,CAAA,KAAA,CAAS,IAAI,CAAA,CAAA,2SAAA,EAabA,aAAAA,CAAA,OAAA,EAAA,SAAA,KAAA,CAAS,KAAK,CAAA,CAAA,6SAAA,EAadA,aAAAA,CAAA,OAAA,EAAA,QAAA,CAAA,KAAA,CAAS,KAAK,gTAYdA,aAAAA,CAAA,OAAA,EAAA,QAAA,CAAA,KAAA,CAAS,OAAO,CAAA,CAAA,ofAAA,EAYhBD,cAAAA,CAAA,QAAA,CAAA,MAAS,OAAO,CAAA,CAAA,iBAAA,CAAA,CAAA;AAQlB,MAAA,IAAA,YAAA,CAAA,KAAA,EAAY;AAAiC,QAAA,KAAA,CAAA,CAAA,YAAA,EAAA,cAAA,CAAA,CAAA,YAAA,CAAA,UAAY,SAAA,GAAA,qCAAA,GAAA,mCAAA,gBAAA,CAAA,CAAA,CAAA,iCAAA,CAAA,CAAA;AAE7C,QAAA,IAAA,YAAA,CAAA,UAAY,SAAA,EAAA;;YAAiB,IAAA,EAAM,EAAA;AAAA,YAAI,KAAA,EAAM;AAAA,WAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;;YAC3C,IAAA,EAAM,EAAA;AAAA,YAAI,KAAA,EAAM;AAAA,WAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;2CAC1B,YAAA,CAAA,KAAA,KAAY,YAAA,gBAAA,GAAA,cAAA,EAAA,qBAAA,CAAA,CAAA,CAAA,EAAA,EAAA,cAAA,CAClB,cAAA,KAAa,CAAA,CAAA,gBAAA,CAAA,CAAA;;;;AAOT,MAAA,KAAA,CAAA,CAAA,qBAAA,EAAA,qBAAA,CAAA,YAAA,CAAA,KAAY,CAAA,GAAA,WAAA,GAAA,EAAA,CAAA,0OAAA,CAAA,CAAA;AAGV,MAAA,IAAA,CAAA,YAAA,CAAA,KAAA,EAAY;;UAAG,IAAA,EAAM,EAAA;AAAA,UAAI,KAAA,EAAM;AAAA,SAAA,EAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;;;AAEzC,MAAA,KAAA,CAAA,CAAA,CAAA,EAAA,cAAA,CAAA,YAAA,CAAA,KAAA,GAAY,kBAAA,GAAA,eAAA,CAAA,CAAA,8NAAA,CAAA,CAAA;AAAA,IAAA,CAAA;;;;;;;;;;;;;ACzI7B,IAAA,OAAA,CAAQ;AAAA,MACN,KAAA,EAAO;AAAA,KACR,CAAA;;AAVM,MAAA,KAAA,CAAA,CAAA,IAAA,EAAAE,eAAAC,UAAAA,CAAA,EAAA,OAAM,cAAA,EAAA,EAAc,MAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;;;;;;;;;;;;;;;"}
|
||||
@@ -1,104 +0,0 @@
|
||||
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
|
||||
@@ -1 +0,0 @@
|
||||
{"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;;;;;;;;;;;;;;"}
|
||||
@@ -1,293 +0,0 @@
|
||||
import { ref, computed, mergeProps, createVNode, resolveDynamicComponent, unref, useSSRContext } from 'vue';
|
||||
import { ssrRenderAttrs, ssrRenderVNode, ssrInterpolate, ssrRenderComponent, ssrRenderList, ssrRenderAttr, ssrRenderClass, ssrIncludeBooleanAttr } from 'vue/server-renderer';
|
||||
import { Table2, Grid3x3, UserPlus, Loader2, Edit, Trash2, Mail, Phone, MapPin, FileText, Clock, AlertCircle } 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: "mitglieder",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
const authStore = useAuthStore();
|
||||
const isLoading = ref(true);
|
||||
const isSaving = ref(false);
|
||||
const members = ref([]);
|
||||
const showModal = ref(false);
|
||||
const editingMember = ref(null);
|
||||
const errorMessage = ref("");
|
||||
const viewMode = ref("cards");
|
||||
const formData = ref({
|
||||
firstName: "",
|
||||
lastName: "",
|
||||
email: "",
|
||||
phone: "",
|
||||
address: "",
|
||||
notes: ""
|
||||
});
|
||||
const canEdit = computed(() => {
|
||||
return authStore.role === "admin" || authStore.role === "vorstand";
|
||||
});
|
||||
const canViewContactData = computed(() => {
|
||||
const role = authStore.role;
|
||||
console.log("Current role:", role, "Can view contact:", role === "vorstand");
|
||||
return role === "vorstand";
|
||||
});
|
||||
const formatDate = (dateString) => {
|
||||
if (!dateString) return "";
|
||||
const date = new Date(dateString);
|
||||
return date.toLocaleDateString("de-DE", {
|
||||
year: "numeric",
|
||||
month: "2-digit",
|
||||
day: "2-digit",
|
||||
hour: "2-digit",
|
||||
minute: "2-digit"
|
||||
});
|
||||
};
|
||||
useHead({
|
||||
title: "Mitgliederliste - 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="flex justify-between items-center mb-6"><div><h1 class="text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-2"> Mitgliederliste </h1><div class="w-24 h-1 bg-primary-600 mb-4"></div></div><div class="flex items-center space-x-3"><button class="flex items-center px-4 py-2 bg-gray-100 hover:bg-gray-200 text-gray-700 font-semibold rounded-lg transition-colors">`);
|
||||
ssrRenderVNode(_push, createVNode(resolveDynamicComponent(viewMode.value === "cards" ? unref(Table2) : unref(Grid3x3)), {
|
||||
size: 20,
|
||||
class: "mr-2"
|
||||
}, null), _parent);
|
||||
_push(` ${ssrInterpolate(viewMode.value === "cards" ? "Tabelle" : "Karten")}</button>`);
|
||||
if (canEdit.value) {
|
||||
_push(`<button class="flex items-center px-4 py-2 bg-primary-600 hover:bg-primary-700 text-white font-semibold rounded-lg transition-colors">`);
|
||||
_push(ssrRenderComponent(unref(UserPlus), {
|
||||
size: 20,
|
||||
class: "mr-2"
|
||||
}, null, _parent));
|
||||
_push(` Mitglied hinzufügen </button>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div></div>`);
|
||||
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 if (viewMode.value === "table") {
|
||||
_push(`<div class="bg-white rounded-xl shadow-lg overflow-hidden"><div class="overflow-x-auto"><table class="min-w-full divide-y divide-gray-200"><thead class="bg-gray-50"><tr><th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Name</th><th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">E-Mail</th><th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Telefon</th><th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Status</th>`);
|
||||
if (canEdit.value) {
|
||||
_push(`<th class="px-4 py-3 text-right text-xs font-medium text-gray-500 uppercase tracking-wider">Aktionen</th>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</tr></thead><tbody class="bg-white divide-y divide-gray-200"><!--[-->`);
|
||||
ssrRenderList(members.value, (member) => {
|
||||
_push(`<tr class="hover:bg-gray-50"><td class="px-4 py-3 whitespace-nowrap"><div class="text-sm font-medium text-gray-900">${ssrInterpolate(member.name)}</div>`);
|
||||
if (member.notes) {
|
||||
_push(`<div class="text-xs text-gray-500">${ssrInterpolate(member.notes)}</div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</td><td class="px-4 py-3 whitespace-nowrap">`);
|
||||
if (canViewContactData.value) {
|
||||
_push(`<!--[-->`);
|
||||
if (member.email) {
|
||||
_push(`<a${ssrRenderAttr("href", `mailto:${member.email}`)} class="text-sm text-primary-600 hover:text-primary-800">${ssrInterpolate(member.email)}</a>`);
|
||||
} else {
|
||||
_push(`<span class="text-sm text-gray-400">-</span>`);
|
||||
}
|
||||
_push(`<!--]-->`);
|
||||
} else {
|
||||
_push(`<span class="text-sm text-gray-400">Nur für Vorstand</span>`);
|
||||
}
|
||||
_push(`</td><td class="px-4 py-3 whitespace-nowrap">`);
|
||||
if (canViewContactData.value) {
|
||||
_push(`<!--[-->`);
|
||||
if (member.phone) {
|
||||
_push(`<a${ssrRenderAttr("href", `tel:${member.phone}`)} class="text-sm text-primary-600 hover:text-primary-800">${ssrInterpolate(member.phone)}</a>`);
|
||||
} else {
|
||||
_push(`<span class="text-sm text-gray-400">-</span>`);
|
||||
}
|
||||
_push(`<!--]-->`);
|
||||
} else {
|
||||
_push(`<span class="text-sm text-gray-400">Nur für Vorstand</span>`);
|
||||
}
|
||||
_push(`</td><td class="px-4 py-3 whitespace-nowrap"><div class="flex items-center space-x-2">`);
|
||||
if (member.hasLogin) {
|
||||
_push(`<span class="px-2 py-1 bg-green-100 text-green-800 text-xs font-medium rounded-full"> Login </span>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`<span class="${ssrRenderClass([member.source === "manual" ? "bg-blue-100 text-blue-800" : "bg-purple-100 text-purple-800", "px-2 py-1 text-xs font-medium rounded-full"])}">${ssrInterpolate(member.source === "manual" ? "Manuell" : "System")}</span></div></td>`);
|
||||
if (canEdit.value) {
|
||||
_push(`<td class="px-4 py-3 whitespace-nowrap text-right text-sm font-medium">`);
|
||||
if (member.editable) {
|
||||
_push(`<div class="flex justify-end space-x-2"><button class="text-blue-600 hover:text-blue-900" title="Bearbeiten">`);
|
||||
_push(ssrRenderComponent(unref(Edit), { size: 18 }, null, _parent));
|
||||
_push(`</button><button class="text-red-600 hover:text-red-900" title="Löschen">`);
|
||||
_push(ssrRenderComponent(unref(Trash2), { size: 18 }, null, _parent));
|
||||
_push(`</button></div>`);
|
||||
} else {
|
||||
_push(`<span class="text-gray-400 text-xs">Nicht editierbar</span>`);
|
||||
}
|
||||
_push(`</td>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</tr>`);
|
||||
});
|
||||
_push(`<!--]--></tbody></table></div>`);
|
||||
if (members.value.length === 0) {
|
||||
_push(`<div class="text-center py-12 text-gray-500"> Keine Mitglieder gefunden. </div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div>`);
|
||||
} else {
|
||||
_push(`<div class="space-y-4"><!--[-->`);
|
||||
ssrRenderList(members.value, (member) => {
|
||||
_push(`<div class="bg-white p-6 rounded-xl shadow-lg border border-gray-100"><div class="flex justify-between items-start"><div class="flex-1"><div class="flex items-center mb-2"><h3 class="text-xl font-semibold text-gray-900">${ssrInterpolate(member.name)}</h3>`);
|
||||
if (member.hasLogin) {
|
||||
_push(`<span class="ml-3 px-2 py-1 bg-green-100 text-green-800 text-xs font-medium rounded-full"> Hat Login </span>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
if (member.source === "manual") {
|
||||
_push(`<span class="ml-2 px-2 py-1 bg-blue-100 text-blue-800 text-xs font-medium rounded-full"> Manuell </span>`);
|
||||
} else {
|
||||
_push(`<span class="ml-2 px-2 py-1 bg-purple-100 text-purple-800 text-xs font-medium rounded-full"> Aus Login-System </span>`);
|
||||
}
|
||||
_push(`</div><div class="grid sm:grid-cols-2 gap-3 text-gray-600">`);
|
||||
if (canViewContactData.value) {
|
||||
_push(`<!--[-->`);
|
||||
if (member.email) {
|
||||
_push(`<div class="flex items-center">`);
|
||||
_push(ssrRenderComponent(unref(Mail), {
|
||||
size: 16,
|
||||
class: "mr-2 text-primary-600"
|
||||
}, null, _parent));
|
||||
_push(`<a${ssrRenderAttr("href", `mailto:${member.email}`)} class="hover:text-primary-600">${ssrInterpolate(member.email)}</a></div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
if (member.phone) {
|
||||
_push(`<div class="flex items-center">`);
|
||||
_push(ssrRenderComponent(unref(Phone), {
|
||||
size: 16,
|
||||
class: "mr-2 text-primary-600"
|
||||
}, null, _parent));
|
||||
_push(`<a${ssrRenderAttr("href", `tel:${member.phone}`)} class="hover:text-primary-600">${ssrInterpolate(member.phone)}</a></div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`<!--]-->`);
|
||||
} else {
|
||||
_push(`<div class="col-span-2 flex items-center text-gray-500 text-sm italic">`);
|
||||
_push(ssrRenderComponent(unref(Mail), {
|
||||
size: 16,
|
||||
class: "mr-2"
|
||||
}, null, _parent));
|
||||
_push(` Kontaktdaten nur für Vorstand sichtbar </div>`);
|
||||
}
|
||||
if (member.address) {
|
||||
_push(`<div class="flex items-start col-span-2">`);
|
||||
_push(ssrRenderComponent(unref(MapPin), {
|
||||
size: 16,
|
||||
class: "mr-2 text-primary-600 mt-0.5"
|
||||
}, null, _parent));
|
||||
_push(`<span>${ssrInterpolate(member.address)}</span></div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
if (member.notes) {
|
||||
_push(`<div class="flex items-start col-span-2">`);
|
||||
_push(ssrRenderComponent(unref(FileText), {
|
||||
size: 16,
|
||||
class: "mr-2 text-primary-600 mt-0.5"
|
||||
}, null, _parent));
|
||||
_push(`<span>${ssrInterpolate(member.notes)}</span></div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
if (member.lastLogin) {
|
||||
_push(`<div class="flex items-center col-span-2 text-sm text-gray-500">`);
|
||||
_push(ssrRenderComponent(unref(Clock), {
|
||||
size: 16,
|
||||
class: "mr-2"
|
||||
}, null, _parent));
|
||||
_push(` Letzter Login: ${ssrInterpolate(formatDate(member.lastLogin))}</div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div></div>`);
|
||||
if (canEdit.value && member.editable) {
|
||||
_push(`<div class="flex space-x-2 ml-4"><button class="p-2 text-blue-600 hover:bg-blue-50 rounded-lg transition-colors" title="Bearbeiten">`);
|
||||
_push(ssrRenderComponent(unref(Edit), { size: 20 }, null, _parent));
|
||||
_push(`</button><button class="p-2 text-red-600 hover:bg-red-50 rounded-lg transition-colors" title="Löschen">`);
|
||||
_push(ssrRenderComponent(unref(Trash2), { size: 20 }, null, _parent));
|
||||
_push(`</button></div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div></div>`);
|
||||
});
|
||||
_push(`<!--]-->`);
|
||||
if (members.value.length === 0) {
|
||||
_push(`<div class="text-center py-12 text-gray-500"> Keine Mitglieder gefunden. </div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div>`);
|
||||
}
|
||||
if (showModal.value) {
|
||||
_push(`<div class="fixed inset-0 z-50 bg-black/50 flex items-center justify-center p-4"><div class="bg-white rounded-xl shadow-2xl max-w-2xl w-full p-8"><h2 class="text-2xl font-display font-bold text-gray-900 mb-6">${ssrInterpolate(editingMember.value ? "Mitglied bearbeiten" : "Mitglied hinzufügen")}</h2><form class="space-y-4"><div class="grid grid-cols-2 gap-4"><div><label class="block text-sm font-medium text-gray-700 mb-2">Vorname *</label><input${ssrRenderAttr("value", formData.value.firstName)} 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"${ssrIncludeBooleanAttr(isSaving.value) ? " disabled" : ""}></div><div><label class="block text-sm font-medium text-gray-700 mb-2">Nachname *</label><input${ssrRenderAttr("value", formData.value.lastName)} 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"${ssrIncludeBooleanAttr(isSaving.value) ? " disabled" : ""}></div></div><div><label class="block text-sm font-medium text-gray-700 mb-2">E-Mail</label><input${ssrRenderAttr("value", formData.value.email)} type="email" class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500"${ssrIncludeBooleanAttr(isSaving.value) ? " disabled" : ""}></div><div><label class="block text-sm font-medium text-gray-700 mb-2">Telefon</label><input${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"${ssrIncludeBooleanAttr(isSaving.value) ? " disabled" : ""}></div><div><label class="block text-sm font-medium text-gray-700 mb-2">Adresse</label><input${ssrRenderAttr("value", formData.value.address)} type="text" class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500"${ssrIncludeBooleanAttr(isSaving.value) ? " disabled" : ""}></div><div><label class="block text-sm font-medium text-gray-700 mb-2">Notizen</label><textarea rows="3" class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500"${ssrIncludeBooleanAttr(isSaving.value) ? " disabled" : ""}>${ssrInterpolate(formData.value.notes)}</textarea></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(`<!---->`);
|
||||
}
|
||||
_push(`<div class="flex justify-end space-x-4 pt-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" : ""}> Abbrechen </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></div></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/mitgliederbereich/mitglieder.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
//# sourceMappingURL=mitglieder-DAbmufxC.mjs.map
|
||||
File diff suppressed because one or more lines are too long
@@ -1,202 +0,0 @@
|
||||
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
|
||||
@@ -1 +0,0 @@
|
||||
{"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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"}
|
||||
@@ -1,184 +0,0 @@
|
||||
import { ref, computed, mergeProps, unref, useSSRContext } from 'vue';
|
||||
import { ssrRenderAttrs, ssrRenderComponent, ssrRenderList, ssrInterpolate, ssrRenderAttr, ssrIncludeBooleanAttr, ssrLooseContain } from 'vue/server-renderer';
|
||||
import { Plus, Loader2, Globe, User, Calendar, Edit, Trash2, Newspaper, AlertCircle } 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: "news",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
const authStore = useAuthStore();
|
||||
const isLoading = ref(true);
|
||||
const isSaving = ref(false);
|
||||
const news = ref([]);
|
||||
const showModal = ref(false);
|
||||
const editingNews = ref(null);
|
||||
const errorMessage = ref("");
|
||||
const formData = ref({
|
||||
title: "",
|
||||
content: "",
|
||||
isPublic: false
|
||||
});
|
||||
const canWrite = computed(() => {
|
||||
return authStore.role === "admin" || authStore.role === "vorstand";
|
||||
});
|
||||
const formatDate = (dateString) => {
|
||||
if (!dateString) return "";
|
||||
const date = new Date(dateString);
|
||||
return date.toLocaleDateString("de-DE", {
|
||||
year: "numeric",
|
||||
month: "long",
|
||||
day: "numeric",
|
||||
hour: "2-digit",
|
||||
minute: "2-digit"
|
||||
});
|
||||
};
|
||||
useHead({
|
||||
title: "Interne News - 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="flex justify-between items-center mb-6"><div><h1 class="text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-2"> Interne News </h1><div class="w-24 h-1 bg-primary-600 mb-4"></div></div>`);
|
||||
if (canWrite.value) {
|
||||
_push(`<button class="flex items-center px-4 py-2 bg-primary-600 hover:bg-primary-700 text-white font-semibold rounded-lg transition-colors">`);
|
||||
_push(ssrRenderComponent(unref(Plus), {
|
||||
size: 20,
|
||||
class: "mr-2"
|
||||
}, null, _parent));
|
||||
_push(` News erstellen </button>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div>`);
|
||||
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(`<div class="space-y-6"><!--[-->`);
|
||||
ssrRenderList(news.value, (item) => {
|
||||
_push(`<article class="bg-white rounded-xl shadow-lg p-6 border border-gray-100"><div class="flex justify-between items-start mb-4"><div class="flex-1"><div class="flex items-center space-x-3 mb-2"><h2 class="text-2xl font-display font-bold text-gray-900">${ssrInterpolate(item.title)}</h2>`);
|
||||
if (item.isPublic) {
|
||||
_push(`<span class="px-3 py-1 bg-blue-100 text-blue-800 text-xs font-semibold rounded-full flex items-center">`);
|
||||
_push(ssrRenderComponent(unref(Globe), {
|
||||
size: 14,
|
||||
class: "mr-1"
|
||||
}, null, _parent));
|
||||
_push(` Öffentlich </span>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div><div class="flex items-center text-sm text-gray-500 space-x-4"><div class="flex items-center">`);
|
||||
_push(ssrRenderComponent(unref(User), {
|
||||
size: 16,
|
||||
class: "mr-1"
|
||||
}, null, _parent));
|
||||
_push(` ${ssrInterpolate(item.author)}</div><div class="flex items-center">`);
|
||||
_push(ssrRenderComponent(unref(Calendar), {
|
||||
size: 16,
|
||||
class: "mr-1"
|
||||
}, null, _parent));
|
||||
_push(` ${ssrInterpolate(formatDate(item.created))}</div>`);
|
||||
if (item.updated !== item.created) {
|
||||
_push(`<div class="flex items-center">`);
|
||||
_push(ssrRenderComponent(unref(Edit), {
|
||||
size: 16,
|
||||
class: "mr-1"
|
||||
}, null, _parent));
|
||||
_push(` Aktualisiert: ${ssrInterpolate(formatDate(item.updated))}</div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div></div>`);
|
||||
if (canWrite.value) {
|
||||
_push(`<div class="flex space-x-2 ml-4"><button class="p-2 text-blue-600 hover:bg-blue-50 rounded-lg transition-colors" title="Bearbeiten">`);
|
||||
_push(ssrRenderComponent(unref(Edit), { size: 20 }, null, _parent));
|
||||
_push(`</button><button class="p-2 text-red-600 hover:bg-red-50 rounded-lg transition-colors" title="Löschen">`);
|
||||
_push(ssrRenderComponent(unref(Trash2), { size: 20 }, null, _parent));
|
||||
_push(`</button></div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div><div class="prose prose-lg max-w-none text-gray-700 whitespace-pre-wrap">${ssrInterpolate(item.content)}</div></article>`);
|
||||
});
|
||||
_push(`<!--]-->`);
|
||||
if (news.value.length === 0) {
|
||||
_push(`<div class="text-center py-12">`);
|
||||
_push(ssrRenderComponent(unref(Newspaper), {
|
||||
size: 48,
|
||||
class: "mx-auto text-gray-400 mb-4"
|
||||
}, null, _parent));
|
||||
_push(`<p class="text-gray-500 text-lg">Noch keine internen News vorhanden.</p>`);
|
||||
if (canWrite.value) {
|
||||
_push(`<p class="text-gray-400 text-sm mt-2"> Klicken Sie auf "News erstellen", um die erste News zu veröffentlichen. </p>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div>`);
|
||||
}
|
||||
if (showModal.value) {
|
||||
_push(`<div class="fixed inset-0 z-50 bg-black/50 flex items-center justify-center p-4"><div class="bg-white rounded-xl shadow-2xl max-w-3xl w-full p-8 max-h-[90vh] overflow-y-auto"><h2 class="text-2xl font-display font-bold text-gray-900 mb-6">${ssrInterpolate(editingNews.value ? "News bearbeiten" : "News erstellen")}</h2><form class="space-y-4"><div><label class="block text-sm font-medium text-gray-700 mb-2">Titel *</label><input${ssrRenderAttr("value", formData.value.title)} 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"${ssrIncludeBooleanAttr(isSaving.value) ? " disabled" : ""}></div><div><label class="block text-sm font-medium text-gray-700 mb-2">Inhalt *</label><textarea rows="12" required class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500"${ssrIncludeBooleanAttr(isSaving.value) ? " disabled" : ""}>${ssrInterpolate(formData.value.content)}</textarea></div><div class="flex items-center space-x-3 p-4 bg-blue-50 rounded-lg border border-blue-200"><input id="isPublic"${ssrIncludeBooleanAttr(Array.isArray(formData.value.isPublic) ? ssrLooseContain(formData.value.isPublic, null) : formData.value.isPublic) ? " checked" : ""} type="checkbox" class="w-5 h-5 text-primary-600 border-gray-300 rounded focus:ring-primary-500"${ssrIncludeBooleanAttr(isSaving.value) ? " disabled" : ""}><label for="isPublic" class="text-sm font-medium text-gray-900 cursor-pointer flex-1"><div class="flex items-center">`);
|
||||
_push(ssrRenderComponent(unref(Globe), {
|
||||
size: 18,
|
||||
class: "mr-2 text-blue-600"
|
||||
}, null, _parent));
|
||||
_push(`<span>Öffentliche News (auf Startseite anzeigen)</span></div><p class="text-xs text-gray-600 mt-1 ml-6"> Wenn aktiviert, wird diese News auch für nicht angemeldete Besucher auf der Startseite sichtbar. </p></label></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(`<!---->`);
|
||||
}
|
||||
_push(`<div class="flex justify-end space-x-4 pt-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" : ""}> Abbrechen </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></div></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/mitgliederbereich/news.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
//# sourceMappingURL=news-C8krCg9b.mjs.map
|
||||
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"news-C8krCg9b.mjs","sources":["../../../../pages/mitgliederbereich/news.vue"],"sourcesContent":null,"names":["_ssrRenderAttrs","_mergeProps","_ssrRenderList","_ssrInterpolate","_ssrRenderComponent","_unref","_ssrRenderAttr","_ssrIncludeBooleanAttr","_ssrLooseContain"],"mappings":"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"}
|
||||
@@ -1,94 +0,0 @@
|
||||
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
|
||||
@@ -1 +0,0 @@
|
||||
{"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;;;;;;;;;;;;;;;;;;"}
|
||||
@@ -1,99 +0,0 @@
|
||||
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
|
||||
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"profil-UUfhNGZ3.mjs","sources":["../../../../pages/mitgliederbereich/profil.vue"],"sourcesContent":null,"names":["_ssrRenderAttrs","_mergeProps","_ssrRenderAttr"],"mappings":"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"}
|
||||
@@ -1,105 +0,0 @@
|
||||
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
|
||||
@@ -1 +0,0 @@
|
||||
{"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
@@ -1 +0,0 @@
|
||||
{"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;;;;;;;;;;;;;;"}
|
||||
@@ -397,6 +397,9 @@ const unhead_k2P3m_ZDyjlr2mMYnoDPwavjsDN8hBlk9cFai0bbopU = /* @__PURE__ */ defin
|
||||
function toArray(value) {
|
||||
return Array.isArray(value) ? value : [value];
|
||||
}
|
||||
const __nuxt_page_meta$7 = {
|
||||
layout: "default"
|
||||
};
|
||||
const __nuxt_page_meta$6 = {
|
||||
layout: "default"
|
||||
};
|
||||
@@ -427,170 +430,176 @@ const _routes = [
|
||||
{
|
||||
name: "login",
|
||||
path: "/login",
|
||||
meta: __nuxt_page_meta$6 || {},
|
||||
component: () => import('./login-BdWGyHdA.mjs')
|
||||
meta: __nuxt_page_meta$7 || {},
|
||||
component: () => import('./login-P5Yg6Pmv.mjs')
|
||||
},
|
||||
{
|
||||
name: "anlagen",
|
||||
path: "/anlagen",
|
||||
component: () => import('./anlagen-tpcA4Hv2.mjs')
|
||||
component: () => import('./anlagen-CKawgUc0.mjs')
|
||||
},
|
||||
{
|
||||
name: "galerie",
|
||||
path: "/galerie",
|
||||
component: () => import('./galerie-CoMmWwEg.mjs')
|
||||
component: () => import('./galerie-C4I13RVr.mjs')
|
||||
},
|
||||
{
|
||||
name: "kontakt",
|
||||
path: "/kontakt",
|
||||
component: () => import('./kontakt-DXDMYVtx.mjs')
|
||||
component: () => import('./kontakt-CvXeOeEZ.mjs')
|
||||
},
|
||||
{
|
||||
name: "satzung",
|
||||
path: "/satzung",
|
||||
component: () => import('./satzung-FqIDL6FT.mjs')
|
||||
component: () => import('./satzung-MuMXhm-2.mjs')
|
||||
},
|
||||
{
|
||||
name: "termine",
|
||||
path: "/termine",
|
||||
component: () => import('./termine-ZiVCG4zJ.mjs')
|
||||
component: () => import('./termine--TpmWZFi.mjs')
|
||||
},
|
||||
{
|
||||
name: "vorstand",
|
||||
path: "/vorstand",
|
||||
component: () => import('./vorstand-CFLwDNhn.mjs')
|
||||
component: () => import('./vorstand-8Zq68Ugj.mjs')
|
||||
},
|
||||
{
|
||||
name: "cms",
|
||||
path: "/cms",
|
||||
meta: { ...__nuxt_page_meta$5 || {}, ...{ "middleware": "auth" } },
|
||||
component: () => import('./index-D8nn7-Uy.mjs')
|
||||
meta: { ...__nuxt_page_meta$6 || {}, ...{ "middleware": "auth" } },
|
||||
component: () => import('./index-KdWVJJR_.mjs')
|
||||
},
|
||||
{
|
||||
name: "impressum",
|
||||
path: "/impressum",
|
||||
component: () => import('./impressum-BJL_VXpe.mjs')
|
||||
component: () => import('./impressum-GfpVRr_5.mjs')
|
||||
},
|
||||
{
|
||||
name: "tt-regeln",
|
||||
path: "/tt-regeln",
|
||||
component: () => import('./tt-regeln-DyKJvBml.mjs')
|
||||
component: () => import('./tt-regeln-m0OjsIij.mjs')
|
||||
},
|
||||
{
|
||||
name: "ueber-uns",
|
||||
path: "/ueber-uns",
|
||||
component: () => import('./ueber-uns-pGQi6hRz.mjs')
|
||||
component: () => import('./ueber-uns-B3O5y-Y-.mjs')
|
||||
},
|
||||
{
|
||||
name: "geschichte",
|
||||
path: "/geschichte",
|
||||
component: () => import('./geschichte-DSCikZtf.mjs')
|
||||
component: () => import('./geschichte-DbYWx9mk.mjs')
|
||||
},
|
||||
{
|
||||
name: "cms-termine",
|
||||
path: "/cms/termine",
|
||||
meta: { ...__nuxt_page_meta$4 || {}, ...{ "middleware": "auth" } },
|
||||
component: () => import('./termine-TZyY9Wk0.mjs')
|
||||
meta: { ...__nuxt_page_meta$5 || {}, ...{ "middleware": "auth" } },
|
||||
component: () => import('./termine-D2MnyUnm.mjs')
|
||||
},
|
||||
{
|
||||
name: "cms-benutzer",
|
||||
path: "/cms/benutzer",
|
||||
meta: { "middleware": "auth" },
|
||||
component: () => import('./benutzer-CEqkQsLi.mjs')
|
||||
component: () => import('./benutzer-0MRCHBRT.mjs')
|
||||
},
|
||||
{
|
||||
name: "registrieren",
|
||||
path: "/registrieren",
|
||||
component: () => import('./registrieren-DS8LMhBE.mjs')
|
||||
component: () => import('./registrieren-DEibgk1G.mjs')
|
||||
},
|
||||
{
|
||||
name: "spielsysteme",
|
||||
path: "/spielsysteme",
|
||||
component: () => import('./spielsysteme-CdvH6qFp.mjs')
|
||||
component: () => import('./spielsysteme-CzmG1BOB.mjs')
|
||||
},
|
||||
{
|
||||
name: "mitgliedschaft",
|
||||
path: "/mitgliedschaft",
|
||||
component: () => import('./mitgliedschaft-ItL-1heT.mjs')
|
||||
component: () => import('./mitgliedschaft-C0k1hAkJ.mjs')
|
||||
},
|
||||
{
|
||||
name: "training",
|
||||
path: "/training",
|
||||
component: () => import('./index-Dnh6tx7H.mjs')
|
||||
component: () => import('./index-BiHN6eUh.mjs')
|
||||
},
|
||||
{
|
||||
name: "training-trainer",
|
||||
path: "/training/trainer",
|
||||
component: () => import('./trainer-CcVTsygv.mjs')
|
||||
component: () => import('./trainer-CNI8fhY2.mjs')
|
||||
},
|
||||
{
|
||||
name: "cms-einstellungen",
|
||||
path: "/cms/einstellungen",
|
||||
meta: { ...__nuxt_page_meta$4 || {}, ...{ "middleware": "auth" } },
|
||||
component: () => import('./einstellungen-BnXeuJnr.mjs')
|
||||
},
|
||||
{
|
||||
name: "mannschaften-damen",
|
||||
path: "/mannschaften/damen",
|
||||
component: () => import('./damen-DuM0biIS.mjs')
|
||||
component: () => import('./damen-CCTOqtoP.mjs')
|
||||
},
|
||||
{
|
||||
name: "mannschaften",
|
||||
path: "/mannschaften",
|
||||
component: () => import('./index-DUWe6TYg.mjs')
|
||||
component: () => import('./index-CZaJ5pcf.mjs')
|
||||
},
|
||||
{
|
||||
name: "passwort-vergessen",
|
||||
path: "/passwort-vergessen",
|
||||
component: () => import('./passwort-vergessen-D8jfiCTL.mjs')
|
||||
component: () => import('./passwort-vergessen-gQd7OBa3.mjs')
|
||||
},
|
||||
{
|
||||
name: "training-anfaenger",
|
||||
path: "/training/anfaenger",
|
||||
component: () => import('./anfaenger-Cj28UOue.mjs')
|
||||
component: () => import('./anfaenger-DsSIsXuF.mjs')
|
||||
},
|
||||
{
|
||||
name: "mannschaften-slug",
|
||||
path: "/mannschaften/:slug()",
|
||||
component: () => import('./_slug_-CcxmD4wa.mjs')
|
||||
component: () => import('./_slug_-CDHaEHsb.mjs')
|
||||
},
|
||||
{
|
||||
name: "mannschaften-herren",
|
||||
path: "/mannschaften/herren",
|
||||
component: () => import('./herren-Cfh4Z8oD.mjs')
|
||||
component: () => import('./herren-CU18kIOb.mjs')
|
||||
},
|
||||
{
|
||||
name: "mannschaften-jugend",
|
||||
path: "/mannschaften/jugend",
|
||||
component: () => import('./jugend-CDQZwKSx.mjs')
|
||||
component: () => import('./jugend-D2PYrcrQ.mjs')
|
||||
},
|
||||
{
|
||||
name: "mitgliederbereich-news",
|
||||
path: "/mitgliederbereich/news",
|
||||
meta: { ...__nuxt_page_meta$3 || {}, ...{ "middleware": "auth" } },
|
||||
component: () => import('./news-C8krCg9b.mjs')
|
||||
component: () => import('./news-DcEX-ozp.mjs')
|
||||
},
|
||||
{
|
||||
name: "vereinsmeisterschaften",
|
||||
path: "/vereinsmeisterschaften",
|
||||
component: () => import('./vereinsmeisterschaften-B9yng3Zq.mjs')
|
||||
component: () => import('./vereinsmeisterschaften-DdLhWIxm.mjs')
|
||||
},
|
||||
{
|
||||
name: "mitgliederbereich",
|
||||
path: "/mitgliederbereich",
|
||||
meta: { ...__nuxt_page_meta$2 || {}, ...{ "middleware": "auth" } },
|
||||
component: () => import('./index-D7JtbHaf.mjs')
|
||||
component: () => import('./index-CkGuUg5h.mjs')
|
||||
},
|
||||
{
|
||||
name: "mannschaften-spielplaene",
|
||||
path: "/mannschaften/spielplaene",
|
||||
component: () => import('./spielplaene-DVdlC_Hk.mjs')
|
||||
component: () => import('./spielplaene-DbKtlvd7.mjs')
|
||||
},
|
||||
{
|
||||
name: "mitgliederbereich-profil",
|
||||
path: "/mitgliederbereich/profil",
|
||||
meta: { ...__nuxt_page_meta$1 || {}, ...{ "middleware": "auth" } },
|
||||
component: () => import('./profil-UUfhNGZ3.mjs')
|
||||
component: () => import('./profil-Dm_3uuTL.mjs')
|
||||
},
|
||||
{
|
||||
name: "mitgliederbereich-mitglieder",
|
||||
path: "/mitgliederbereich/mitglieder",
|
||||
meta: { ...__nuxt_page_meta || {}, ...{ "middleware": "auth" } },
|
||||
component: () => import('./mitglieder-DAbmufxC.mjs')
|
||||
component: () => import('./mitglieder-BUT03wq4.mjs')
|
||||
}
|
||||
];
|
||||
const ROUTE_KEY_PARENTHESES_RE = /(:\w+)\([^)]+\)/g;
|
||||
@@ -761,7 +770,7 @@ const globalMiddleware = [
|
||||
manifest_45route_45rule
|
||||
];
|
||||
const namedMiddleware = {
|
||||
auth: () => import('./auth-DIPdM0XJ.mjs')
|
||||
auth: () => import('./auth-C5dE0f86.mjs')
|
||||
};
|
||||
const plugin$1 = /* @__PURE__ */ defineNuxtPlugin({
|
||||
name: "nuxt:router",
|
||||
@@ -2656,8 +2665,8 @@ const _sfc_main$1 = {
|
||||
const statusMessage = _error.statusMessage ?? (is404 ? "Page Not Found" : "Internal Server Error");
|
||||
const description = _error.message || _error.toString();
|
||||
const stack = void 0;
|
||||
const _Error404 = defineAsyncComponent(() => import('./error-404-DndCdOwS.mjs'));
|
||||
const _Error = defineAsyncComponent(() => import('./error-500-BP06ycvf.mjs'));
|
||||
const _Error404 = defineAsyncComponent(() => import('./error-404-X-XMZOo2.mjs'));
|
||||
const _Error = defineAsyncComponent(() => import('./error-500-DFxH_2kA.mjs'));
|
||||
const ErrorTemplate = is404 ? _Error404 : _Error;
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
_push(ssrRenderComponent(unref(ErrorTemplate), mergeProps({ statusCode: unref(statusCode), statusMessage: unref(statusMessage), description: unref(description), stack: unref(stack) }, _attrs), null, _parent));
|
||||
@@ -2738,5 +2747,5 @@ let entry;
|
||||
}
|
||||
const entry$1 = (ssrContext) => entry(ssrContext);
|
||||
|
||||
export { __nuxt_component_0$1 as _, useRoute as a, useNuxtApp as b, asyncDataDefaults as c, createError as d, entry$1 as default, defineNuxtRouteMiddleware as e, fetchDefaults as f, navigateTo as n, useAuthStore as u };
|
||||
export { __nuxt_component_0$1 as _, useNuxtApp as a, useRoute as b, asyncDataDefaults as c, createError as d, entry$1 as default, defineNuxtRouteMiddleware as e, fetchDefaults as f, navigateTo as n, useAuthStore as u };
|
||||
//# sourceMappingURL=server.mjs.map
|
||||
|
||||
@@ -1 +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","indexBAhz9QmEiLA6QGDd6cSKraFX9E0RhZLvBUZorkJgAVkMeta","termineaIqWCm431cOVikspmAA3_6UhrHiffuFLM_t95ydtEd4Meta","newsPHTXuxdDl4fgPHQQbukE_XsTEemyPOWVSYs64f8qjC4Meta","indexqVbusfljIJ04j42RIA_KP4bSP7XytQIXdqcVfR3kPUAMeta","profilyVBy_UvZ8KvchY44_0SJbB0NHOad6MC_S9C8wfDdUWEMeta","mitglieder9TWncRC_sSS_zPWzxBDlRiNjjFojXSJny_uernMe_tAMeta","__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]}
|
||||
{"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","indexBAhz9QmEiLA6QGDd6cSKraFX9E0RhZLvBUZorkJgAVkMeta","termineaIqWCm431cOVikspmAA3_6UhrHiffuFLM_t95ydtEd4Meta","einstellungen3Fhl_VQPzY4eklctozY70Drhj8cWMt_FVlyEKQh9aAAMeta","newsPHTXuxdDl4fgPHQQbukE_XsTEemyPOWVSYs64f8qjC4Meta","indexqVbusfljIJ04j42RIA_KP4bSP7XytQIXdqcVfR3kPUAMeta","profilyVBy_UvZ8KvchY44_0SJbB0NHOad6MC_S9C8wfDdUWEMeta","mitglieder9TWncRC_sSS_zPWzxBDlRiNjjFojXSJny_uernMe_tAMeta","__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]}
|
||||
@@ -1,98 +0,0 @@
|
||||
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 & 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
|
||||
@@ -1 +0,0 @@
|
||||
{"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;;;;;;;;;;;;;;;;;;;;"}
|
||||
@@ -1,141 +0,0 @@
|
||||
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
|
||||
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"spielsysteme-CdvH6qFp.mjs","sources":["../../../../pages/spielsysteme.vue"],"sourcesContent":null,"names":["_ssrRenderAttrs","_mergeProps","_ssrRenderList","_ssrInterpolate"],"mappings":"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"}
|
||||
@@ -2,10 +2,10 @@ 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.03iOjY05.mjs').then(interopDefault),
|
||||
"components/PublicNews.vue": () => import('./PublicNews-styles.nhqk16g5.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": () => import('./Hero-styles.03iOjY05.mjs').then(interopDefault),
|
||||
"components/PublicNews.vue": () => import('./PublicNews-styles.nhqk16g5.mjs').then(interopDefault),
|
||||
"components/Hero.vue?vue&type=style&index=0&scoped=779d39d7&lang.css": () => import('./Hero-styles.03iOjY05.mjs').then(interopDefault),
|
||||
"components/PublicNews.vue?vue&type=style&index=0&scoped=f894f108&lang.css": () => import('./PublicNews-styles.nhqk16g5.mjs').then(interopDefault)
|
||||
};
|
||||
|
||||
@@ -1,123 +0,0 @@
|
||||
import { ref, mergeProps, unref, useSSRContext } from 'vue';
|
||||
import { ssrRenderAttrs, ssrRenderComponent, ssrRenderList, ssrInterpolate, ssrRenderClass, ssrRenderAttr, ssrIncludeBooleanAttr, ssrLooseContain, ssrLooseEqual } from 'vue/server-renderer';
|
||||
import { Plus, Loader2, Trash2, AlertCircle } 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: "termine",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
useAuthStore();
|
||||
const isLoading = ref(true);
|
||||
const isSaving = ref(false);
|
||||
const termine = ref([]);
|
||||
const showModal = ref(false);
|
||||
const errorMessage = ref("");
|
||||
const formData = ref({
|
||||
datum: "",
|
||||
titel: "",
|
||||
beschreibung: "",
|
||||
kategorie: "Sonstiges"
|
||||
});
|
||||
const formatDate = (dateString) => {
|
||||
if (!dateString) return "";
|
||||
const date = new Date(dateString);
|
||||
return date.toLocaleDateString("de-DE", {
|
||||
year: "numeric",
|
||||
month: "2-digit",
|
||||
day: "2-digit"
|
||||
});
|
||||
};
|
||||
useHead({
|
||||
title: "Termine verwalten - 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"><div class="flex justify-between items-center mb-6"><div><h1 class="text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-2"> Termine verwalten </h1><div class="w-24 h-1 bg-primary-600 mb-4"></div></div><button class="flex items-center px-4 py-2 bg-primary-600 hover:bg-primary-700 text-white font-semibold rounded-lg transition-colors">`);
|
||||
_push(ssrRenderComponent(unref(Plus), {
|
||||
size: 20,
|
||||
class: "mr-2"
|
||||
}, null, _parent));
|
||||
_push(` Termin hinzufügen </button></div>`);
|
||||
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(`<div class="bg-white rounded-xl shadow-lg overflow-hidden"><div class="overflow-x-auto"><table class="min-w-full divide-y divide-gray-200"><thead class="bg-gray-50"><tr><th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Datum</th><th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Titel</th><th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Beschreibung</th><th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Kategorie</th><th class="px-4 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(termine.value, (termin) => {
|
||||
_push(`<tr class="hover:bg-gray-50"><td class="px-4 py-3 whitespace-nowrap text-sm text-gray-900">${ssrInterpolate(formatDate(termin.datum))}</td><td class="px-4 py-3 text-sm font-medium text-gray-900">${ssrInterpolate(termin.titel)}</td><td class="px-4 py-3 text-sm text-gray-600">${ssrInterpolate(termin.beschreibung || "-")}</td><td class="px-4 py-3 whitespace-nowrap"><span class="${ssrRenderClass([{
|
||||
"bg-blue-100 text-blue-800": termin.kategorie === "Training",
|
||||
"bg-green-100 text-green-800": termin.kategorie === "Punktspiel",
|
||||
"bg-purple-100 text-purple-800": termin.kategorie === "Turnier",
|
||||
"bg-yellow-100 text-yellow-800": termin.kategorie === "Veranstaltung",
|
||||
"bg-gray-100 text-gray-800": termin.kategorie === "Sonstiges"
|
||||
}, "px-2 py-1 text-xs font-medium rounded-full"])}">${ssrInterpolate(termin.kategorie)}</span></td><td class="px-4 py-3 whitespace-nowrap text-right text-sm font-medium"><button class="text-red-600 hover:text-red-900" title="Löschen">`);
|
||||
_push(ssrRenderComponent(unref(Trash2), { size: 18 }, null, _parent));
|
||||
_push(`</button></td></tr>`);
|
||||
});
|
||||
_push(`<!--]--></tbody></table></div>`);
|
||||
if (termine.value.length === 0) {
|
||||
_push(`<div class="text-center py-12 text-gray-500"> Keine Termine vorhanden. </div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div>`);
|
||||
}
|
||||
if (showModal.value) {
|
||||
_push(`<div class="fixed inset-0 z-50 bg-black/50 flex items-center justify-center p-4"><div class="bg-white rounded-xl shadow-2xl max-w-2xl w-full p-8"><h2 class="text-2xl font-display font-bold text-gray-900 mb-6"> Termin hinzufügen </h2><form class="space-y-4"><div class="grid grid-cols-2 gap-4"><div><label class="block text-sm font-medium text-gray-700 mb-2">Datum *</label><input${ssrRenderAttr("value", formData.value.datum)} type="date" required class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500"${ssrIncludeBooleanAttr(isSaving.value) ? " disabled" : ""}></div><div><label class="block text-sm font-medium text-gray-700 mb-2">Kategorie *</label><select required class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500"${ssrIncludeBooleanAttr(isSaving.value) ? " disabled" : ""}><option value="Training"${ssrIncludeBooleanAttr(Array.isArray(formData.value.kategorie) ? ssrLooseContain(formData.value.kategorie, "Training") : ssrLooseEqual(formData.value.kategorie, "Training")) ? " selected" : ""}>Training</option><option value="Punktspiel"${ssrIncludeBooleanAttr(Array.isArray(formData.value.kategorie) ? ssrLooseContain(formData.value.kategorie, "Punktspiel") : ssrLooseEqual(formData.value.kategorie, "Punktspiel")) ? " selected" : ""}>Punktspiel</option><option value="Turnier"${ssrIncludeBooleanAttr(Array.isArray(formData.value.kategorie) ? ssrLooseContain(formData.value.kategorie, "Turnier") : ssrLooseEqual(formData.value.kategorie, "Turnier")) ? " selected" : ""}>Turnier</option><option value="Veranstaltung"${ssrIncludeBooleanAttr(Array.isArray(formData.value.kategorie) ? ssrLooseContain(formData.value.kategorie, "Veranstaltung") : ssrLooseEqual(formData.value.kategorie, "Veranstaltung")) ? " selected" : ""}>Veranstaltung</option><option value="Sonstiges"${ssrIncludeBooleanAttr(Array.isArray(formData.value.kategorie) ? ssrLooseContain(formData.value.kategorie, "Sonstiges") : ssrLooseEqual(formData.value.kategorie, "Sonstiges")) ? " selected" : ""}>Sonstiges</option></select></div></div><div><label class="block text-sm font-medium text-gray-700 mb-2">Titel *</label><input${ssrRenderAttr("value", formData.value.titel)} 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"${ssrIncludeBooleanAttr(isSaving.value) ? " disabled" : ""}></div><div><label class="block text-sm font-medium text-gray-700 mb-2">Beschreibung</label><textarea rows="3" class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500"${ssrIncludeBooleanAttr(isSaving.value) ? " disabled" : ""}>${ssrInterpolate(formData.value.beschreibung)}</textarea></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(`<!---->`);
|
||||
}
|
||||
_push(`<div class="flex justify-end space-x-4 pt-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" : ""}> Abbrechen </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></div></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/termine.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
//# sourceMappingURL=termine-TZyY9Wk0.mjs.map
|
||||
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"termine-TZyY9Wk0.mjs","sources":["../../../../pages/cms/termine.vue"],"sourcesContent":null,"names":["_ssrRenderAttrs","_mergeProps","_ssrRenderList","_ssrInterpolate","_ssrRenderComponent","_unref","_ssrRenderAttr","_ssrIncludeBooleanAttr","_ssrLooseContain","_ssrLooseEqual"],"mappings":"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"}
|
||||
@@ -1,85 +0,0 @@
|
||||
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 & 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
|
||||
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"termine-ZiVCG4zJ.mjs","sources":["../../../../pages/termine.vue"],"sourcesContent":null,"names":["_ssrRenderAttrs","_mergeProps","_ssrInterpolate"],"mappings":"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"}
|
||||
@@ -1,43 +0,0 @@
|
||||
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 & 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
|
||||
@@ -1 +0,0 @@
|
||||
{"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;;;;;;;;;;;;"}
|
||||
@@ -1,88 +0,0 @@
|
||||
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 & 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
|
||||
@@ -1 +0,0 @@
|
||||
{"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;;;;;;;;;;;;;;"}
|
||||
@@ -1,111 +0,0 @@
|
||||
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
|
||||
@@ -1 +0,0 @@
|
||||
{"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;;;;;;;;;;;;;;;"}
|
||||
@@ -1,160 +0,0 @@
|
||||
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
|
||||
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"vereinsmeisterschaften-B9yng3Zq.mjs","sources":["../../../../pages/vereinsmeisterschaften.vue"],"sourcesContent":null,"names":["_ssrRenderAttrs","_mergeProps","_ssrRenderList","_ssrInterpolate"],"mappings":"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"}
|
||||
@@ -1,43 +0,0 @@
|
||||
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
|
||||
@@ -1 +0,0 @@
|
||||
{"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;;;;;;;;;;;;"}
|
||||
@@ -4293,7 +4293,7 @@ function _expandFromEnv(value) {
|
||||
const _inlineRuntimeConfig = {
|
||||
"app": {
|
||||
"baseURL": "/",
|
||||
"buildId": "c7b0744b-853d-4a6f-b9fa-7d1f201a383a",
|
||||
"buildId": "d5fb7e66-2645-4f98-906c-371ebb86764a",
|
||||
"buildAssetsDir": "/_nuxt/",
|
||||
"cdnURL": ""
|
||||
},
|
||||
@@ -4741,576 +4741,583 @@ const assets = {
|
||||
"/images/club_about_us.png": {
|
||||
"type": "image/png",
|
||||
"etag": "\"202e56-s4fLsHEgoAgKJeBRuI1qxPmqHV0\"",
|
||||
"mtime": "2025-10-21T14:23:13.880Z",
|
||||
"mtime": "2025-10-21T14:42:44.076Z",
|
||||
"size": 2109014,
|
||||
"path": "../public/images/club_about_us.png"
|
||||
},
|
||||
"/documents/Tischtennisregeln light.pdf": {
|
||||
"type": "application/pdf",
|
||||
"etag": "\"5177b-y/88q2+Y3RRechJMqWhse21KRdQ\"",
|
||||
"mtime": "2025-10-21T14:23:13.880Z",
|
||||
"size": 333691,
|
||||
"path": "../public/documents/Tischtennisregeln light.pdf"
|
||||
},
|
||||
"/documents/satzung.pdf": {
|
||||
"type": "application/pdf",
|
||||
"etag": "\"5c7cf-L0A3nT8D24T9sD57FFbij3QRpzw\"",
|
||||
"mtime": "2025-10-21T14:23:13.880Z",
|
||||
"size": 378831,
|
||||
"path": "../public/documents/satzung.pdf"
|
||||
},
|
||||
"/data/mannschaften.csv": {
|
||||
"type": "text/csv; charset=utf-8",
|
||||
"etag": "\"858-l94GKn8Q0I5RQnhrM0ZPJsYUmcw\"",
|
||||
"mtime": "2025-10-21T14:23:13.880Z",
|
||||
"mtime": "2025-10-21T14:42:44.076Z",
|
||||
"size": 2136,
|
||||
"path": "../public/data/mannschaften.csv"
|
||||
},
|
||||
"/data/spielsysteme.csv": {
|
||||
"type": "text/csv; charset=utf-8",
|
||||
"etag": "\"9bc-4npLrNHYClsD0TKV5vSifxitfV0\"",
|
||||
"mtime": "2025-10-21T14:23:13.880Z",
|
||||
"mtime": "2025-10-21T14:42:44.076Z",
|
||||
"size": 2492,
|
||||
"path": "../public/data/spielsysteme.csv"
|
||||
},
|
||||
"/data/termine.csv": {
|
||||
"type": "text/csv; charset=utf-8",
|
||||
"etag": "\"91-TO3ZO4MdjBcYgGXZQ1ZuM6BIMbg\"",
|
||||
"mtime": "2025-10-21T14:23:13.880Z",
|
||||
"mtime": "2025-10-21T14:42:44.076Z",
|
||||
"size": 145,
|
||||
"path": "../public/data/termine.csv"
|
||||
},
|
||||
"/data/vereinsmeisterschaften.csv": {
|
||||
"type": "text/csv; charset=utf-8",
|
||||
"etag": "\"989-X8AB+Zegy2xUbjDtbQcXhuuyBDQ\"",
|
||||
"mtime": "2025-10-21T14:23:13.880Z",
|
||||
"mtime": "2025-10-21T14:42:44.076Z",
|
||||
"size": 2441,
|
||||
"path": "../public/data/vereinsmeisterschaften.csv"
|
||||
},
|
||||
"/documents/Tischtennisregeln light.pdf": {
|
||||
"type": "application/pdf",
|
||||
"etag": "\"5177b-y/88q2+Y3RRechJMqWhse21KRdQ\"",
|
||||
"mtime": "2025-10-21T14:42:44.076Z",
|
||||
"size": 333691,
|
||||
"path": "../public/documents/Tischtennisregeln light.pdf"
|
||||
},
|
||||
"/documents/satzung.pdf": {
|
||||
"type": "application/pdf",
|
||||
"etag": "\"5c7cf-L0A3nT8D24T9sD57FFbij3QRpzw\"",
|
||||
"mtime": "2025-10-21T14:42:44.076Z",
|
||||
"size": 378831,
|
||||
"path": "../public/documents/satzung.pdf"
|
||||
},
|
||||
"/spielplaene/1. Mannschaft 2025⁄2026.pdf": {
|
||||
"type": "application/pdf",
|
||||
"etag": "\"64c6-+477M+gD/spwpWR9NO/tMJ/inCc\"",
|
||||
"mtime": "2025-10-21T14:23:13.880Z",
|
||||
"mtime": "2025-10-21T14:42:44.076Z",
|
||||
"size": 25798,
|
||||
"path": "../public/spielplaene/1. Mannschaft 2025⁄2026.pdf"
|
||||
},
|
||||
"/spielplaene/2. Mannschaft 2025⁄2026.pdf": {
|
||||
"type": "application/pdf",
|
||||
"etag": "\"5bfa-DRJMHLV15iss67lEISoGqSYmZjE\"",
|
||||
"mtime": "2025-10-21T14:23:13.880Z",
|
||||
"mtime": "2025-10-21T14:42:44.076Z",
|
||||
"size": 23546,
|
||||
"path": "../public/spielplaene/2. Mannschaft 2025⁄2026.pdf"
|
||||
},
|
||||
"/spielplaene/3. Mannschaft 2025⁄2026.pdf": {
|
||||
"type": "application/pdf",
|
||||
"etag": "\"7447-w933CPQdXhkWJ2AZOVdY0UgJnPo\"",
|
||||
"mtime": "2025-10-21T14:23:13.880Z",
|
||||
"mtime": "2025-10-21T14:42:44.076Z",
|
||||
"size": 29767,
|
||||
"path": "../public/spielplaene/3. Mannschaft 2025⁄2026.pdf"
|
||||
},
|
||||
"/spielplaene/4. Mannschaft 2025⁄2026.pdf": {
|
||||
"type": "application/pdf",
|
||||
"etag": "\"6a9b-4TPGn1yQlFUMRj7oB43SN//Np9o\"",
|
||||
"mtime": "2025-10-21T14:23:13.880Z",
|
||||
"mtime": "2025-10-21T14:42:44.076Z",
|
||||
"size": 27291,
|
||||
"path": "../public/spielplaene/4. Mannschaft 2025⁄2026.pdf"
|
||||
},
|
||||
"/spielplaene/5. Mannschaft 2025⁄2026.pdf": {
|
||||
"type": "application/pdf",
|
||||
"etag": "\"6523-5VUfCMaoiNhcwHhptHHTVJ3lSwQ\"",
|
||||
"mtime": "2025-10-21T14:23:13.880Z",
|
||||
"mtime": "2025-10-21T14:42:44.076Z",
|
||||
"size": 25891,
|
||||
"path": "../public/spielplaene/5. Mannschaft 2025⁄2026.pdf"
|
||||
},
|
||||
"/spielplaene/Jugend 11 2025⁄2026.pdf": {
|
||||
"type": "application/pdf",
|
||||
"etag": "\"52e9-3Rrk9UKUxPh80pBJ0w9oLVbe5dA\"",
|
||||
"mtime": "2025-10-21T14:23:13.880Z",
|
||||
"mtime": "2025-10-21T14:42:44.076Z",
|
||||
"size": 21225,
|
||||
"path": "../public/spielplaene/Jugend 11 2025⁄2026.pdf"
|
||||
},
|
||||
"/_nuxt/5cTtis_o.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"3364e-rQGtlvqC4GCMwvm8PP8U/ADC0tQ\"",
|
||||
"mtime": "2025-10-21T14:23:13.876Z",
|
||||
"size": 210510,
|
||||
"path": "../public/_nuxt/5cTtis_o.js"
|
||||
},
|
||||
"/_nuxt/6EY4_GXp.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"19e-CzjelZROfgCPWyXIjP0DPtd+UHQ\"",
|
||||
"mtime": "2025-10-21T14:23:13.876Z",
|
||||
"mtime": "2025-10-21T14:42:44.071Z",
|
||||
"size": 414,
|
||||
"path": "../public/_nuxt/6EY4_GXp.js"
|
||||
},
|
||||
"/_nuxt/B0zS1aUD.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"10c2-dv0Fl2k5xVTgZGSg+Mb3Lw57By0\"",
|
||||
"mtime": "2025-10-21T14:42:44.071Z",
|
||||
"size": 4290,
|
||||
"path": "../public/_nuxt/B0zS1aUD.js"
|
||||
},
|
||||
"/_nuxt/B23trXK4.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"1168-Ulrp7wDqGkKdNtiJFHTxmUmXldI\"",
|
||||
"mtime": "2025-10-21T14:23:13.876Z",
|
||||
"mtime": "2025-10-21T14:42:44.071Z",
|
||||
"size": 4456,
|
||||
"path": "../public/_nuxt/B23trXK4.js"
|
||||
},
|
||||
"/_nuxt/B3KXwwdt.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"81f-a2SnM+umqZ4dmwPE80AuhD/ofeY\"",
|
||||
"mtime": "2025-10-21T14:23:13.876Z",
|
||||
"mtime": "2025-10-21T14:42:44.071Z",
|
||||
"size": 2079,
|
||||
"path": "../public/_nuxt/B3KXwwdt.js"
|
||||
},
|
||||
"/_nuxt/B4mSF5Ac.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"185-hHs3mU4qOcQAkGQaPrUYGaG0yao\"",
|
||||
"mtime": "2025-10-21T14:23:13.876Z",
|
||||
"mtime": "2025-10-21T14:42:44.072Z",
|
||||
"size": 389,
|
||||
"path": "../public/_nuxt/B4mSF5Ac.js"
|
||||
},
|
||||
"/_nuxt/B672hUde.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"dc2-n5+Jrg++Bz3SI0aMN10cjTZGG2g\"",
|
||||
"mtime": "2025-10-21T14:42:44.072Z",
|
||||
"size": 3522,
|
||||
"path": "../public/_nuxt/B672hUde.js"
|
||||
},
|
||||
"/_nuxt/B6R2Q32I.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"201e-GGMCGamCalF6U5Sbg/B20sKxrIo\"",
|
||||
"mtime": "2025-10-21T14:23:13.876Z",
|
||||
"mtime": "2025-10-21T14:42:44.072Z",
|
||||
"size": 8222,
|
||||
"path": "../public/_nuxt/B6R2Q32I.js"
|
||||
},
|
||||
"/_nuxt/BC4PNGtJ.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"175-33lu59Ps/+kwbPv/hVeUdrq4wmI\"",
|
||||
"mtime": "2025-10-21T14:23:13.876Z",
|
||||
"mtime": "2025-10-21T14:42:44.072Z",
|
||||
"size": 373,
|
||||
"path": "../public/_nuxt/BC4PNGtJ.js"
|
||||
},
|
||||
"/_nuxt/BLmxLqU-.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"1a9f-eYz55V0eO8N4bvdty9x8JBG5qIw\"",
|
||||
"mtime": "2025-10-21T14:23:13.876Z",
|
||||
"mtime": "2025-10-21T14:42:44.072Z",
|
||||
"size": 6815,
|
||||
"path": "../public/_nuxt/BLmxLqU-.js"
|
||||
},
|
||||
"/_nuxt/BZLaJF8o.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"685-ABktMZGm1wLg51VMeeUc8FwDm3U\"",
|
||||
"mtime": "2025-10-21T14:23:13.876Z",
|
||||
"mtime": "2025-10-21T14:42:44.072Z",
|
||||
"size": 1669,
|
||||
"path": "../public/_nuxt/BZLaJF8o.js"
|
||||
},
|
||||
"/_nuxt/B_w5gbrC.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"1dc0-VemUVNnKtYX+T2aPkZsAvATr8cU\"",
|
||||
"mtime": "2025-10-21T14:23:13.876Z",
|
||||
"mtime": "2025-10-21T14:42:44.072Z",
|
||||
"size": 7616,
|
||||
"path": "../public/_nuxt/B_w5gbrC.js"
|
||||
},
|
||||
"/_nuxt/Bivc7aFF.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"2029-cRwtIdVsJWLW1S5Bl927TM/rr0o\"",
|
||||
"mtime": "2025-10-21T14:23:13.876Z",
|
||||
"mtime": "2025-10-21T14:42:44.072Z",
|
||||
"size": 8233,
|
||||
"path": "../public/_nuxt/Bivc7aFF.js"
|
||||
},
|
||||
"/_nuxt/BpS9ghZc.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"1556-fAs7WNw+3yw3iFD9Rkes1ZuBW60\"",
|
||||
"mtime": "2025-10-21T14:23:13.876Z",
|
||||
"mtime": "2025-10-21T14:42:44.072Z",
|
||||
"size": 5462,
|
||||
"path": "../public/_nuxt/BpS9ghZc.js"
|
||||
},
|
||||
"/_nuxt/BqZP274n.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"c5c-+adaLKVcGsLD+mC5x2NddJAVdgw\"",
|
||||
"mtime": "2025-10-21T14:23:13.877Z",
|
||||
"mtime": "2025-10-21T14:42:44.072Z",
|
||||
"size": 3164,
|
||||
"path": "../public/_nuxt/BqZP274n.js"
|
||||
},
|
||||
"/_nuxt/BteKZQ9T.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"1ea-kmrGdt5SPmt15EiBI7kR9gXMQM0\"",
|
||||
"mtime": "2025-10-21T14:23:13.877Z",
|
||||
"mtime": "2025-10-21T14:42:44.072Z",
|
||||
"size": 490,
|
||||
"path": "../public/_nuxt/BteKZQ9T.js"
|
||||
},
|
||||
"/_nuxt/BxR6w-Hd.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"5f0-Wm3M/7i81O9ViLRC6jPn0eQp24g\"",
|
||||
"mtime": "2025-10-21T14:23:13.877Z",
|
||||
"size": 1520,
|
||||
"path": "../public/_nuxt/BxR6w-Hd.js"
|
||||
},
|
||||
"/_nuxt/C-bqeYjt.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"3513-AcHmeXV6b+tvCtqgBG6EnnxPL8w\"",
|
||||
"mtime": "2025-10-21T14:23:13.877Z",
|
||||
"mtime": "2025-10-21T14:42:44.072Z",
|
||||
"size": 13587,
|
||||
"path": "../public/_nuxt/C-bqeYjt.js"
|
||||
},
|
||||
"/_nuxt/C1eD6HzQ.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"abb-rmFamqyRm9KsgptRPeFJlFZ7AdI\"",
|
||||
"mtime": "2025-10-21T14:23:13.877Z",
|
||||
"mtime": "2025-10-21T14:42:44.072Z",
|
||||
"size": 2747,
|
||||
"path": "../public/_nuxt/C1eD6HzQ.js"
|
||||
},
|
||||
"/_nuxt/C3627_Er.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"1860-WfaogXmfix1Il+z3+9JvyOxfUWc\"",
|
||||
"mtime": "2025-10-21T14:23:13.877Z",
|
||||
"mtime": "2025-10-21T14:42:44.072Z",
|
||||
"size": 6240,
|
||||
"path": "../public/_nuxt/C3627_Er.js"
|
||||
},
|
||||
"/_nuxt/C4R6hOY6.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"10bb-IFhPwZ6E4TaxzCyK2QdjWUb7h8s\"",
|
||||
"mtime": "2025-10-21T14:23:13.877Z",
|
||||
"size": 4283,
|
||||
"path": "../public/_nuxt/C4R6hOY6.js"
|
||||
},
|
||||
"/_nuxt/C5SyyWEb.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"2a5-06iX+CL3i0ysaqW9nu7Eg2YzDhQ\"",
|
||||
"mtime": "2025-10-21T14:23:13.877Z",
|
||||
"mtime": "2025-10-21T14:42:44.072Z",
|
||||
"size": 677,
|
||||
"path": "../public/_nuxt/C5SyyWEb.js"
|
||||
},
|
||||
"/_nuxt/C8kQt0fa.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"197-7X99z1xphxry8OnMwU7Ofs/uE0Q\"",
|
||||
"mtime": "2025-10-21T14:23:13.877Z",
|
||||
"mtime": "2025-10-21T14:42:44.072Z",
|
||||
"size": 407,
|
||||
"path": "../public/_nuxt/C8kQt0fa.js"
|
||||
},
|
||||
"/_nuxt/C9SglkVL.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"ee2-953PjDhBAep38tbBTU3/pMqFyww\"",
|
||||
"mtime": "2025-10-21T14:23:13.877Z",
|
||||
"mtime": "2025-10-21T14:42:44.072Z",
|
||||
"size": 3810,
|
||||
"path": "../public/_nuxt/C9SglkVL.js"
|
||||
},
|
||||
"/_nuxt/CASz9Fiv.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"ee9-sKp1Omp9LQhv9a6ab9xk8naHK9k\"",
|
||||
"mtime": "2025-10-21T14:23:13.877Z",
|
||||
"mtime": "2025-10-21T14:42:44.072Z",
|
||||
"size": 3817,
|
||||
"path": "../public/_nuxt/CASz9Fiv.js"
|
||||
},
|
||||
"/_nuxt/CDaMcsB4.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"1744-EVBf4KmUuGbFen1F02KGsrF+hGI\"",
|
||||
"mtime": "2025-10-21T14:23:13.877Z",
|
||||
"mtime": "2025-10-21T14:42:44.072Z",
|
||||
"size": 5956,
|
||||
"path": "../public/_nuxt/CDaMcsB4.js"
|
||||
},
|
||||
"/_nuxt/CI8YYLGa.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"d8b-SdM/XDodrfUIexPUk7MhxL0ud70\"",
|
||||
"mtime": "2025-10-21T14:23:13.877Z",
|
||||
"size": 3467,
|
||||
"path": "../public/_nuxt/CI8YYLGa.js"
|
||||
},
|
||||
"/_nuxt/CJ4iaRop.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"b10-OECled9SRrrXt0OinwRJj2Ix5YM\"",
|
||||
"mtime": "2025-10-21T14:23:13.877Z",
|
||||
"mtime": "2025-10-21T14:42:44.072Z",
|
||||
"size": 2832,
|
||||
"path": "../public/_nuxt/CJ4iaRop.js"
|
||||
},
|
||||
"/_nuxt/CLsYyjY5.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"33737-SIgQIp6xFFQI73C/d2Vrq55hDR4\"",
|
||||
"mtime": "2025-10-21T14:42:44.072Z",
|
||||
"size": 210743,
|
||||
"path": "../public/_nuxt/CLsYyjY5.js"
|
||||
},
|
||||
"/_nuxt/CTuRK0lH.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"177f-9AHJLxzT1QXHm05RkMKEx5CuaVU\"",
|
||||
"mtime": "2025-10-21T14:23:13.877Z",
|
||||
"mtime": "2025-10-21T14:42:44.072Z",
|
||||
"size": 6015,
|
||||
"path": "../public/_nuxt/CTuRK0lH.js"
|
||||
},
|
||||
"/_nuxt/CUq_0rkE.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"12d-JV4KW1fgT85/V3Ap13X4q2h9U3g\"",
|
||||
"mtime": "2025-10-21T14:23:13.877Z",
|
||||
"mtime": "2025-10-21T14:42:44.072Z",
|
||||
"size": 301,
|
||||
"path": "../public/_nuxt/CUq_0rkE.js"
|
||||
},
|
||||
"/_nuxt/CV6p3MQQ.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"57d-ajsjngy7fAY+Xb5DnVw2eb3Wjx0\"",
|
||||
"mtime": "2025-10-21T14:42:44.072Z",
|
||||
"size": 1405,
|
||||
"path": "../public/_nuxt/CV6p3MQQ.js"
|
||||
},
|
||||
"/_nuxt/CW9krljs.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"dbf-R7lqTpP/JoeELqrwiRklrTVdlP0\"",
|
||||
"mtime": "2025-10-21T14:23:13.877Z",
|
||||
"mtime": "2025-10-21T14:42:44.072Z",
|
||||
"size": 3519,
|
||||
"path": "../public/_nuxt/CW9krljs.js"
|
||||
},
|
||||
"/_nuxt/CWEkTB1z.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"198-ej4DRqc3/5nSwWU3c6wbOD3Ib9w\"",
|
||||
"mtime": "2025-10-21T14:23:13.877Z",
|
||||
"mtime": "2025-10-21T14:42:44.072Z",
|
||||
"size": 408,
|
||||
"path": "../public/_nuxt/CWEkTB1z.js"
|
||||
},
|
||||
"/_nuxt/C_U-NUAd.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"13f-zgvIssSMnG3JGf/eGC7PlZzbsiY\"",
|
||||
"mtime": "2025-10-21T14:23:13.877Z",
|
||||
"mtime": "2025-10-21T14:42:44.072Z",
|
||||
"size": 319,
|
||||
"path": "../public/_nuxt/C_U-NUAd.js"
|
||||
},
|
||||
"/_nuxt/CkzaQq3X.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"17d-+xKrHjeww4bpFFkkjUNLD/ebn5A\"",
|
||||
"mtime": "2025-10-21T14:23:13.877Z",
|
||||
"mtime": "2025-10-21T14:42:44.072Z",
|
||||
"size": 381,
|
||||
"path": "../public/_nuxt/CkzaQq3X.js"
|
||||
},
|
||||
"/_nuxt/CrCcIvVp.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"274-9U7hEMtgHqdnQopnKeJsBKqKyKw\"",
|
||||
"mtime": "2025-10-21T14:23:13.877Z",
|
||||
"mtime": "2025-10-21T14:42:44.073Z",
|
||||
"size": 628,
|
||||
"path": "../public/_nuxt/CrCcIvVp.js"
|
||||
},
|
||||
"/_nuxt/Cx4UcKGu.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"19d-5AMD0EnFEjOkM3qKDpC/NZZzwDI\"",
|
||||
"mtime": "2025-10-21T14:23:13.877Z",
|
||||
"mtime": "2025-10-21T14:42:44.073Z",
|
||||
"size": 413,
|
||||
"path": "../public/_nuxt/Cx4UcKGu.js"
|
||||
},
|
||||
"/_nuxt/Cx_3U4cr.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"3303-kA/sRWGwuhzDWqIGIpOPH/t2uxY\"",
|
||||
"mtime": "2025-10-21T14:23:13.877Z",
|
||||
"mtime": "2025-10-21T14:42:44.073Z",
|
||||
"size": 13059,
|
||||
"path": "../public/_nuxt/Cx_3U4cr.js"
|
||||
},
|
||||
"/_nuxt/Czdc6-TI.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"165-EMJ/yP2qajGIw0CL3y+L/hvMM/8\"",
|
||||
"mtime": "2025-10-21T14:23:13.877Z",
|
||||
"mtime": "2025-10-21T14:42:44.073Z",
|
||||
"size": 357,
|
||||
"path": "../public/_nuxt/Czdc6-TI.js"
|
||||
},
|
||||
"/_nuxt/CzgMfPlN.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"1d9a-uI9Gu5wonCfTrcA2TPR74Z738js\"",
|
||||
"mtime": "2025-10-21T14:23:13.877Z",
|
||||
"mtime": "2025-10-21T14:42:44.073Z",
|
||||
"size": 7578,
|
||||
"path": "../public/_nuxt/CzgMfPlN.js"
|
||||
},
|
||||
"/_nuxt/D99LnZYi.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"1bdb-/r79rlmI33Ifam5FH18djsiUTQ8\"",
|
||||
"mtime": "2025-10-21T14:23:13.877Z",
|
||||
"mtime": "2025-10-21T14:42:44.073Z",
|
||||
"size": 7131,
|
||||
"path": "../public/_nuxt/D99LnZYi.js"
|
||||
},
|
||||
"/_nuxt/DAACT36i.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"1f9-dVOk5jAwb0VlMLJevIcT+s2NTgM\"",
|
||||
"mtime": "2025-10-21T14:23:13.877Z",
|
||||
"mtime": "2025-10-21T14:42:44.073Z",
|
||||
"size": 505,
|
||||
"path": "../public/_nuxt/DAACT36i.js"
|
||||
},
|
||||
"/_nuxt/DCC-mN0A.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"faa-gR+Y5ET9eX9AUBll6ClCrUgMFfM\"",
|
||||
"mtime": "2025-10-21T14:23:13.877Z",
|
||||
"mtime": "2025-10-21T14:42:44.073Z",
|
||||
"size": 4010,
|
||||
"path": "../public/_nuxt/DCC-mN0A.js"
|
||||
},
|
||||
"/_nuxt/DDYB2ueJ.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"1bf1-tbqPDIoIIOyOPuxr7lu+9bz6I9A\"",
|
||||
"mtime": "2025-10-21T14:23:13.877Z",
|
||||
"mtime": "2025-10-21T14:42:44.073Z",
|
||||
"size": 7153,
|
||||
"path": "../public/_nuxt/DDYB2ueJ.js"
|
||||
},
|
||||
"/_nuxt/DF1dYnic.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"1822-F6/LMMvYSDyJLbWtmIcGXOjwdVI\"",
|
||||
"mtime": "2025-10-21T14:23:13.877Z",
|
||||
"mtime": "2025-10-21T14:42:44.073Z",
|
||||
"size": 6178,
|
||||
"path": "../public/_nuxt/DF1dYnic.js"
|
||||
},
|
||||
"/_nuxt/DYva3pFh.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"bf0-VZJ4omCiGedJWNFfqojHT+R0eEg\"",
|
||||
"mtime": "2025-10-21T14:23:13.877Z",
|
||||
"mtime": "2025-10-21T14:42:44.073Z",
|
||||
"size": 3056,
|
||||
"path": "../public/_nuxt/DYva3pFh.js"
|
||||
},
|
||||
"/_nuxt/DaSgy0Cl.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"11f-soKnh1qfNJj5nvt+IcgQXYvg/z4\"",
|
||||
"mtime": "2025-10-21T14:23:13.877Z",
|
||||
"mtime": "2025-10-21T14:42:44.073Z",
|
||||
"size": 287,
|
||||
"path": "../public/_nuxt/DaSgy0Cl.js"
|
||||
},
|
||||
"/_nuxt/DdHhmCne.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"22d-uKYfhsDcUsz2NrXOJmxptUGZdyE\"",
|
||||
"mtime": "2025-10-21T14:23:13.877Z",
|
||||
"mtime": "2025-10-21T14:42:44.073Z",
|
||||
"size": 557,
|
||||
"path": "../public/_nuxt/DdHhmCne.js"
|
||||
},
|
||||
"/_nuxt/DeoKPvBx.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"16eb-TpYobwJ2U3v+YsJtPupLa/phq5M\"",
|
||||
"mtime": "2025-10-21T14:23:13.877Z",
|
||||
"mtime": "2025-10-21T14:42:44.073Z",
|
||||
"size": 5867,
|
||||
"path": "../public/_nuxt/DeoKPvBx.js"
|
||||
},
|
||||
"/_nuxt/DjcJk1g8.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"201d-oQ9NMDE0anKxIZA105IRItTlM2w\"",
|
||||
"mtime": "2025-10-21T14:23:13.877Z",
|
||||
"mtime": "2025-10-21T14:42:44.073Z",
|
||||
"size": 8221,
|
||||
"path": "../public/_nuxt/DjcJk1g8.js"
|
||||
},
|
||||
"/_nuxt/DkeYb0_S.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"1ce-xiaAbRvqQ+zffTXF3Gc7rq14R0U\"",
|
||||
"mtime": "2025-10-21T14:23:13.877Z",
|
||||
"mtime": "2025-10-21T14:42:44.073Z",
|
||||
"size": 462,
|
||||
"path": "../public/_nuxt/DkeYb0_S.js"
|
||||
},
|
||||
"/_nuxt/DlAUqK2U.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"5b-eFCz/UrraTh721pgAl0VxBNR1es\"",
|
||||
"mtime": "2025-10-21T14:23:13.877Z",
|
||||
"mtime": "2025-10-21T14:42:44.073Z",
|
||||
"size": 91,
|
||||
"path": "../public/_nuxt/DlAUqK2U.js"
|
||||
},
|
||||
"/_nuxt/DqRf-l2m.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"134f-PaJ8MbYxG5MkWmiBgOq5t3qrS7Y\"",
|
||||
"mtime": "2025-10-21T14:42:44.073Z",
|
||||
"size": 4943,
|
||||
"path": "../public/_nuxt/DqRf-l2m.js"
|
||||
},
|
||||
"/_nuxt/FF_cyd6S.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"203-rairGPfunSg/yCk4txod3zRSZus\"",
|
||||
"mtime": "2025-10-21T14:23:13.877Z",
|
||||
"mtime": "2025-10-21T14:42:44.073Z",
|
||||
"size": 515,
|
||||
"path": "../public/_nuxt/FF_cyd6S.js"
|
||||
},
|
||||
"/_nuxt/Harheimer TC.CKfYAfp1.svg": {
|
||||
"type": "image/svg+xml",
|
||||
"etag": "\"1d2535-Tx2lTuuFn2hBqGZOnDan3/OdRU0\"",
|
||||
"mtime": "2025-10-21T14:23:13.877Z",
|
||||
"mtime": "2025-10-21T14:42:44.073Z",
|
||||
"size": 1910069,
|
||||
"path": "../public/_nuxt/Harheimer TC.CKfYAfp1.svg"
|
||||
},
|
||||
"/_nuxt/KxVBmS-6.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"190-F0LVEAqwB2LwyGzW0v9yzLx0v/0\"",
|
||||
"mtime": "2025-10-21T14:23:13.877Z",
|
||||
"mtime": "2025-10-21T14:42:44.073Z",
|
||||
"size": 400,
|
||||
"path": "../public/_nuxt/KxVBmS-6.js"
|
||||
},
|
||||
"/_nuxt/LPF2GIYR.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"557-80ya3yG6VaGTcTbyJrpOfIs1ttU\"",
|
||||
"mtime": "2025-10-21T14:23:13.877Z",
|
||||
"mtime": "2025-10-21T14:42:44.073Z",
|
||||
"size": 1367,
|
||||
"path": "../public/_nuxt/LPF2GIYR.js"
|
||||
},
|
||||
"/_nuxt/OEtiuumO.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"3c49-isMWKTDvc5KhmkHLIGrzljtUBO8\"",
|
||||
"mtime": "2025-10-21T14:42:44.073Z",
|
||||
"size": 15433,
|
||||
"path": "../public/_nuxt/OEtiuumO.js"
|
||||
},
|
||||
"/_nuxt/R6Iy1jPP.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"137-QCUizOitouzMVC2drCYFTAZmqPU\"",
|
||||
"mtime": "2025-10-21T14:23:13.877Z",
|
||||
"mtime": "2025-10-21T14:42:44.073Z",
|
||||
"size": 311,
|
||||
"path": "../public/_nuxt/R6Iy1jPP.js"
|
||||
},
|
||||
"/_nuxt/S5xR3JqC.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"16e9-iU8tNfwzZDCfrS7SDnGc1zdluhk\"",
|
||||
"mtime": "2025-10-21T14:23:13.877Z",
|
||||
"mtime": "2025-10-21T14:42:44.073Z",
|
||||
"size": 5865,
|
||||
"path": "../public/_nuxt/S5xR3JqC.js"
|
||||
},
|
||||
"/_nuxt/XZ6RV9KH.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"175-xr1poEaGS4yjOp907AsRAr6XHLI\"",
|
||||
"mtime": "2025-10-21T14:23:13.877Z",
|
||||
"mtime": "2025-10-21T14:42:44.073Z",
|
||||
"size": 373,
|
||||
"path": "../public/_nuxt/XZ6RV9KH.js"
|
||||
},
|
||||
"/_nuxt/YJHbYJtA.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"19f-nQw578pUen9o8yYaMA8Bwag6xho\"",
|
||||
"mtime": "2025-10-21T14:23:13.877Z",
|
||||
"mtime": "2025-10-21T14:42:44.073Z",
|
||||
"size": 415,
|
||||
"path": "../public/_nuxt/YJHbYJtA.js"
|
||||
},
|
||||
"/_nuxt/Zs8yqLLb.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"13f6-l+k49NCQQALiPeZNINPu+eV6ZnE\"",
|
||||
"mtime": "2025-10-21T14:23:13.877Z",
|
||||
"size": 5110,
|
||||
"path": "../public/_nuxt/Zs8yqLLb.js"
|
||||
},
|
||||
"/_nuxt/entry.BFpxHKmh.css": {
|
||||
"/_nuxt/entry.CuxYSkzU.css": {
|
||||
"type": "text/css; charset=utf-8",
|
||||
"etag": "\"b6eb-x1sUrgHCrNBzun/w6O+XmsNQRiw\"",
|
||||
"mtime": "2025-10-21T14:23:13.877Z",
|
||||
"size": 46827,
|
||||
"path": "../public/_nuxt/entry.BFpxHKmh.css"
|
||||
"etag": "\"b9e3-qswPp2KuJRlxS9Rn7tj5L+2WXdk\"",
|
||||
"mtime": "2025-10-21T14:42:44.073Z",
|
||||
"size": 47587,
|
||||
"path": "../public/_nuxt/entry.CuxYSkzU.css"
|
||||
},
|
||||
"/_nuxt/error-404.CbXQcqJW.css": {
|
||||
"type": "text/css; charset=utf-8",
|
||||
"etag": "\"97e-Ty5bTTSEudJkO/DsGUoIf37xYxc\"",
|
||||
"mtime": "2025-10-21T14:23:13.878Z",
|
||||
"mtime": "2025-10-21T14:42:44.073Z",
|
||||
"size": 2430,
|
||||
"path": "../public/_nuxt/error-404.CbXQcqJW.css"
|
||||
},
|
||||
"/_nuxt/error-500.L485xXhD.css": {
|
||||
"type": "text/css; charset=utf-8",
|
||||
"etag": "\"773-jNt1QdCa+iqaSZb1mv/IQWC5p6w\"",
|
||||
"mtime": "2025-10-21T14:23:13.878Z",
|
||||
"mtime": "2025-10-21T14:42:44.074Z",
|
||||
"size": 1907,
|
||||
"path": "../public/_nuxt/error-500.L485xXhD.css"
|
||||
},
|
||||
"/_nuxt/index.ByttcLyP.css": {
|
||||
"type": "text/css; charset=utf-8",
|
||||
"etag": "\"1db-P3imbnjv59PWVm0HNpwpfdEtAK4\"",
|
||||
"mtime": "2025-10-21T14:23:13.878Z",
|
||||
"mtime": "2025-10-21T14:42:44.074Z",
|
||||
"size": 475,
|
||||
"path": "../public/_nuxt/index.ByttcLyP.css"
|
||||
},
|
||||
"/_nuxt/jVj3QaoK.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"196-xWXv220Sy3kJeouwzrQ/gnXllWQ\"",
|
||||
"mtime": "2025-10-21T14:23:13.878Z",
|
||||
"mtime": "2025-10-21T14:42:44.074Z",
|
||||
"size": 406,
|
||||
"path": "../public/_nuxt/jVj3QaoK.js"
|
||||
},
|
||||
"/_nuxt/oN0_bS6A.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"1d3-DKhiaT2RUlSXk55jBttctUuTQQI\"",
|
||||
"mtime": "2025-10-21T14:23:13.878Z",
|
||||
"mtime": "2025-10-21T14:42:44.074Z",
|
||||
"size": 467,
|
||||
"path": "../public/_nuxt/oN0_bS6A.js"
|
||||
},
|
||||
"/_nuxt/pO5XAgdL.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"1caa-8s46v8ZVjnRPK/d5dpFk/XgPjHM\"",
|
||||
"mtime": "2025-10-21T14:23:13.878Z",
|
||||
"mtime": "2025-10-21T14:42:44.074Z",
|
||||
"size": 7338,
|
||||
"path": "../public/_nuxt/pO5XAgdL.js"
|
||||
},
|
||||
"/_nuxt/rgKTeSYE.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"e71-IzPUyj76F9mR9c9DaEV7x6UlmP0\"",
|
||||
"mtime": "2025-10-21T14:23:13.878Z",
|
||||
"mtime": "2025-10-21T14:42:44.074Z",
|
||||
"size": 3697,
|
||||
"path": "../public/_nuxt/rgKTeSYE.js"
|
||||
},
|
||||
"/_nuxt/sVyj_WZX.js": {
|
||||
"type": "text/javascript; charset=utf-8",
|
||||
"etag": "\"4d4-T+i1jfWN+C61xV/Shhjh8+auLuI\"",
|
||||
"mtime": "2025-10-21T14:23:13.878Z",
|
||||
"mtime": "2025-10-21T14:42:44.074Z",
|
||||
"size": 1236,
|
||||
"path": "../public/_nuxt/sVyj_WZX.js"
|
||||
},
|
||||
"/_nuxt/builds/latest.json": {
|
||||
"type": "application/json",
|
||||
"etag": "\"47-s46C4L59gMg4HI2ztoriahRlZyU\"",
|
||||
"mtime": "2025-10-21T14:23:13.869Z",
|
||||
"etag": "\"47-7UDL5x5N5geDGKsklA+LCMUMKUc\"",
|
||||
"mtime": "2025-10-21T14:42:44.065Z",
|
||||
"size": 71,
|
||||
"path": "../public/_nuxt/builds/latest.json"
|
||||
},
|
||||
"/_nuxt/builds/meta/c7b0744b-853d-4a6f-b9fa-7d1f201a383a.json": {
|
||||
"/_nuxt/builds/meta/d5fb7e66-2645-4f98-906c-371ebb86764a.json": {
|
||||
"type": "application/json",
|
||||
"etag": "\"8b-ZtS0o9k9lbwrWiD9u8rAojVStxo\"",
|
||||
"mtime": "2025-10-21T14:23:13.865Z",
|
||||
"etag": "\"8b-Mv+uhxfw7axg0wGh5CmMg7MvSFA\"",
|
||||
"mtime": "2025-10-21T14:42:44.060Z",
|
||||
"size": 139,
|
||||
"path": "../public/_nuxt/builds/meta/c7b0744b-853d-4a6f-b9fa-7d1f201a383a.json"
|
||||
"path": "../public/_nuxt/builds/meta/d5fb7e66-2645-4f98-906c-371ebb86764a.json"
|
||||
}
|
||||
};
|
||||
|
||||
@@ -5533,6 +5540,8 @@ const _lazy_pDvJ_h = () => import('../routes/api/cms/users/deactivate.post.mjs')
|
||||
const _lazy_MsbrWb = () => import('../routes/api/cms/users/list.get.mjs');
|
||||
const _lazy_zyEkIc = () => import('../routes/api/cms/users/reject.post.mjs');
|
||||
const _lazy_hmwxQi = () => import('../routes/api/cms/users/update-role.post.mjs');
|
||||
const _lazy_EZUW8q = () => import('../routes/api/config.get.mjs');
|
||||
const _lazy_TFyzhj = () => import('../routes/api/config.put.mjs');
|
||||
const _lazy_Ho2nl4 = () => import('../routes/api/contact.post.mjs');
|
||||
const _lazy_EK_x5_ = () => import('../routes/api/galerie.get.mjs');
|
||||
const _lazy_jYLuY1 = () => import('../routes/api/members.delete.mjs');
|
||||
@@ -5563,6 +5572,8 @@ const handlers = [
|
||||
{ route: '/api/cms/users/list', handler: _lazy_MsbrWb, lazy: true, middleware: false, method: "get" },
|
||||
{ route: '/api/cms/users/reject', handler: _lazy_zyEkIc, lazy: true, middleware: false, method: "post" },
|
||||
{ route: '/api/cms/users/update-role', handler: _lazy_hmwxQi, lazy: true, middleware: false, method: "post" },
|
||||
{ route: '/api/config', handler: _lazy_EZUW8q, lazy: true, middleware: false, method: "get" },
|
||||
{ route: '/api/config', handler: _lazy_TFyzhj, lazy: true, middleware: false, method: "put" },
|
||||
{ route: '/api/contact', handler: _lazy_Ho2nl4, lazy: true, middleware: false, method: "post" },
|
||||
{ route: '/api/galerie', handler: _lazy_EK_x5_, lazy: true, middleware: false, method: "get" },
|
||||
{ route: '/api/members', handler: _lazy_jYLuY1, lazy: true, middleware: false, method: "delete" },
|
||||
|
||||
@@ -272,7 +272,7 @@ async function renderInlineStyles(usedModules) {
|
||||
|
||||
const renderSSRHeadOptions = {"omitLineBreaks":true};
|
||||
|
||||
const entryFileName = "5cTtis_o.js";
|
||||
const entryFileName = "CLsYyjY5.js";
|
||||
|
||||
globalThis.__buildAssetsURL = buildAssetsURL;
|
||||
globalThis.__publicAssetsURL = publicAssetsURL;
|
||||
|
||||
@@ -117,53 +117,46 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { Check, Star, Heart, FileText, Eye } from 'lucide-vue-next'
|
||||
import { ref, computed, onMounted } from 'vue'
|
||||
import { Check, Star, Heart, FileText, Eye, User, Users } from 'lucide-vue-next'
|
||||
|
||||
const plans = [
|
||||
{
|
||||
name: 'Kinder/Jugend',
|
||||
price: '72',
|
||||
const config = ref(null)
|
||||
|
||||
const loadConfig = async () => {
|
||||
try {
|
||||
const response = await $fetch('/api/config')
|
||||
config.value = response.config
|
||||
} catch (error) {
|
||||
console.error('Fehler beim Laden der Config:', error)
|
||||
}
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
loadConfig()
|
||||
})
|
||||
|
||||
const plans = computed(() => {
|
||||
if (!config.value?.mitgliedschaft) return []
|
||||
|
||||
const icons = [Star, Check, Heart, User, Users]
|
||||
const gradients = [
|
||||
'from-blue-500 to-cyan-500',
|
||||
'from-primary-500 to-green-600',
|
||||
'from-orange-500 to-red-500',
|
||||
'from-purple-500 to-pink-500',
|
||||
'from-indigo-500 to-blue-500'
|
||||
]
|
||||
|
||||
return config.value.mitgliedschaft.map((m, index) => ({
|
||||
name: m.typ,
|
||||
description: m.beschreibung || '',
|
||||
price: m.preis.toString(),
|
||||
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',
|
||||
},
|
||||
]
|
||||
features: m.features || [],
|
||||
icon: icons[index % icons.length],
|
||||
gradient: gradients[index % gradients.length],
|
||||
popular: index === 0
|
||||
}))
|
||||
})
|
||||
</script>
|
||||
|
||||
|
||||
@@ -224,6 +224,11 @@
|
||||
class="block px-4 py-2 text-sm text-gray-300 hover:bg-primary-600 hover:text-white transition-colors">
|
||||
Mitglieder
|
||||
</NuxtLink>
|
||||
<NuxtLink to="/cms/einstellungen"
|
||||
@click="showCmsDropdown = false"
|
||||
class="block px-4 py-2 text-sm text-gray-300 hover:bg-primary-600 hover:text-white transition-colors">
|
||||
Einstellungen
|
||||
</NuxtLink>
|
||||
<NuxtLink to="/cms/benutzer"
|
||||
@click="showCmsDropdown = false"
|
||||
class="block px-4 py-2 text-sm text-gray-300 hover:bg-primary-600 hover:text-white transition-colors">
|
||||
@@ -416,6 +421,10 @@
|
||||
class="block px-4 py-2 text-sm text-yellow-300 hover:text-white hover:bg-primary-700/50 rounded-lg transition-colors">
|
||||
Mitglieder
|
||||
</NuxtLink>
|
||||
<NuxtLink to="/cms/einstellungen" @click="isMobileMenuOpen = false"
|
||||
class="block px-4 py-2 text-sm text-yellow-300 hover:text-white hover:bg-primary-700/50 rounded-lg transition-colors">
|
||||
Einstellungen
|
||||
</NuxtLink>
|
||||
<NuxtLink to="/cms/benutzer" @click="isMobileMenuOpen = false"
|
||||
class="block px-4 py-2 text-sm text-yellow-300 hover:text-white hover:bg-primary-700/50 rounded-lg transition-colors">
|
||||
Benutzerverwaltung
|
||||
|
||||
505
pages/cms/einstellungen.vue
Normal file
505
pages/cms/einstellungen.vue
Normal file
@@ -0,0 +1,505 @@
|
||||
<template>
|
||||
<div class="min-h-full py-16 bg-gray-50">
|
||||
<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">
|
||||
Einstellungen
|
||||
</h1>
|
||||
<div class="w-24 h-1 bg-primary-600 mb-8" />
|
||||
|
||||
<!-- Loading State -->
|
||||
<div v-if="isLoading" class="flex items-center justify-center py-12">
|
||||
<Loader2 :size="40" class="animate-spin text-primary-600" />
|
||||
</div>
|
||||
|
||||
<div v-else class="space-y-6">
|
||||
<!-- Tabs -->
|
||||
<div class="bg-white rounded-xl shadow-lg border border-gray-100 overflow-hidden">
|
||||
<div class="flex border-b border-gray-200">
|
||||
<button
|
||||
v-for="tab in tabs"
|
||||
:key="tab.id"
|
||||
@click="activeTab = tab.id"
|
||||
:class="[
|
||||
'flex-1 px-6 py-4 text-sm font-medium transition-colors',
|
||||
activeTab === tab.id
|
||||
? 'bg-primary-600 text-white'
|
||||
: 'bg-gray-50 text-gray-700 hover:bg-gray-100'
|
||||
]"
|
||||
>
|
||||
<component :is="tab.icon" :size="18" class="inline mr-2" />
|
||||
{{ tab.label }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<!-- Tab Content -->
|
||||
<div class="p-8">
|
||||
<!-- Trainingszeiten -->
|
||||
<div v-if="activeTab === 'training'">
|
||||
<h2 class="text-2xl font-display font-bold text-gray-900 mb-6">Trainingszeiten & Trainingsort</h2>
|
||||
|
||||
<!-- Trainingsort -->
|
||||
<div class="mb-8 p-6 bg-gray-50 rounded-lg">
|
||||
<h3 class="text-lg font-semibold text-gray-900 mb-4">Trainingsort</h3>
|
||||
<div class="grid sm:grid-cols-2 gap-4">
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Name</label>
|
||||
<input
|
||||
v-model="config.training.ort.name"
|
||||
type="text"
|
||||
class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500"
|
||||
/>
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Straße</label>
|
||||
<input
|
||||
v-model="config.training.ort.strasse"
|
||||
type="text"
|
||||
class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500"
|
||||
/>
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">PLZ</label>
|
||||
<input
|
||||
v-model="config.training.ort.plz"
|
||||
type="text"
|
||||
class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500"
|
||||
/>
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Ort</label>
|
||||
<input
|
||||
v-model="config.training.ort.ort"
|
||||
type="text"
|
||||
class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Trainingszeiten -->
|
||||
<div>
|
||||
<div class="flex justify-between items-center mb-4">
|
||||
<h3 class="text-lg font-semibold text-gray-900">Trainingszeiten</h3>
|
||||
<button
|
||||
@click="addTrainingTime"
|
||||
class="flex items-center px-3 py-1 bg-primary-600 hover:bg-primary-700 text-white text-sm rounded-lg transition-colors"
|
||||
>
|
||||
<Plus :size="16" class="mr-1" />
|
||||
Zeit hinzufügen
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="space-y-4">
|
||||
<div
|
||||
v-for="(zeit, index) in config.training.zeiten"
|
||||
:key="zeit.id"
|
||||
class="p-4 bg-gray-50 rounded-lg border border-gray-200"
|
||||
>
|
||||
<div class="grid sm:grid-cols-4 gap-4">
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Tag</label>
|
||||
<select
|
||||
v-model="zeit.tag"
|
||||
class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500"
|
||||
>
|
||||
<option>Montag</option>
|
||||
<option>Dienstag</option>
|
||||
<option>Mittwoch</option>
|
||||
<option>Donnerstag</option>
|
||||
<option>Freitag</option>
|
||||
<option>Samstag</option>
|
||||
<option>Sonntag</option>
|
||||
</select>
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Von</label>
|
||||
<input
|
||||
v-model="zeit.von"
|
||||
type="time"
|
||||
class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500"
|
||||
/>
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Bis</label>
|
||||
<input
|
||||
v-model="zeit.bis"
|
||||
type="time"
|
||||
class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500"
|
||||
/>
|
||||
</div>
|
||||
<div class="sm:col-span-2">
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Gruppe</label>
|
||||
<div class="flex space-x-2">
|
||||
<input
|
||||
v-model="zeit.gruppe"
|
||||
type="text"
|
||||
class="flex-1 px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500"
|
||||
/>
|
||||
<button
|
||||
@click="removeTrainingTime(index)"
|
||||
class="px-3 py-2 text-red-600 hover:bg-red-50 rounded-lg transition-colors"
|
||||
title="Löschen"
|
||||
>
|
||||
<Trash2 :size="18" />
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Trainer -->
|
||||
<div v-if="activeTab === 'trainer'">
|
||||
<div class="flex justify-between items-center mb-6">
|
||||
<h2 class="text-2xl font-display font-bold text-gray-900">Trainer</h2>
|
||||
<button
|
||||
@click="addTrainer"
|
||||
class="flex items-center px-4 py-2 bg-primary-600 hover:bg-primary-700 text-white font-semibold rounded-lg transition-colors"
|
||||
>
|
||||
<Plus :size="20" class="mr-2" />
|
||||
Trainer hinzufügen
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="space-y-6">
|
||||
<div
|
||||
v-for="(trainer, index) in config.trainer"
|
||||
:key="trainer.id"
|
||||
class="p-6 bg-gray-50 rounded-lg border border-gray-200"
|
||||
>
|
||||
<div class="grid sm:grid-cols-2 gap-4">
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Name</label>
|
||||
<input
|
||||
v-model="trainer.name"
|
||||
type="text"
|
||||
class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500"
|
||||
/>
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Lizenz</label>
|
||||
<input
|
||||
v-model="trainer.lizenz"
|
||||
type="text"
|
||||
class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500"
|
||||
/>
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Schwerpunkt</label>
|
||||
<input
|
||||
v-model="trainer.schwerpunkt"
|
||||
type="text"
|
||||
class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500"
|
||||
/>
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Zusatzinfo</label>
|
||||
<div class="flex space-x-2">
|
||||
<input
|
||||
v-model="trainer.zusatz"
|
||||
type="text"
|
||||
class="flex-1 px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500"
|
||||
/>
|
||||
<button
|
||||
@click="removeTrainer(index)"
|
||||
class="px-3 py-2 text-red-600 hover:bg-red-50 rounded-lg transition-colors"
|
||||
title="Löschen"
|
||||
>
|
||||
<Trash2 :size="18" />
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Mitgliedschaft -->
|
||||
<div v-if="activeTab === 'mitgliedschaft'">
|
||||
<div class="flex justify-between items-center mb-6">
|
||||
<h2 class="text-2xl font-display font-bold text-gray-900">Mitgliedschaftsoptionen</h2>
|
||||
<button
|
||||
@click="addMembership"
|
||||
class="flex items-center px-4 py-2 bg-primary-600 hover:bg-primary-700 text-white font-semibold rounded-lg transition-colors"
|
||||
>
|
||||
<Plus :size="20" class="mr-2" />
|
||||
Option hinzufügen
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="space-y-6">
|
||||
<div
|
||||
v-for="(membership, index) in config.mitgliedschaft"
|
||||
:key="membership.id"
|
||||
class="p-6 bg-gray-50 rounded-lg border border-gray-200"
|
||||
>
|
||||
<div class="grid sm:grid-cols-3 gap-4 mb-4">
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Typ</label>
|
||||
<input
|
||||
v-model="membership.typ"
|
||||
type="text"
|
||||
class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500"
|
||||
/>
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Beschreibung</label>
|
||||
<input
|
||||
v-model="membership.beschreibung"
|
||||
type="text"
|
||||
class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500"
|
||||
/>
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Preis (€/Jahr)</label>
|
||||
<div class="flex space-x-2">
|
||||
<input
|
||||
v-model.number="membership.preis"
|
||||
type="number"
|
||||
class="flex-1 px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500"
|
||||
/>
|
||||
<button
|
||||
@click="removeMembership(index)"
|
||||
class="px-3 py-2 text-red-600 hover:bg-red-50 rounded-lg transition-colors"
|
||||
title="Löschen"
|
||||
>
|
||||
<Trash2 :size="18" />
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Features -->
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Leistungen</label>
|
||||
<div class="space-y-2">
|
||||
<div
|
||||
v-for="(feature, fIndex) in membership.features"
|
||||
:key="fIndex"
|
||||
class="flex space-x-2"
|
||||
>
|
||||
<input
|
||||
v-model="membership.features[fIndex]"
|
||||
type="text"
|
||||
class="flex-1 px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500"
|
||||
/>
|
||||
<button
|
||||
@click="membership.features.splice(fIndex, 1)"
|
||||
class="px-3 py-2 text-red-600 hover:bg-red-50 rounded-lg transition-colors"
|
||||
>
|
||||
<X :size="18" />
|
||||
</button>
|
||||
</div>
|
||||
<button
|
||||
@click="membership.features.push('')"
|
||||
class="flex items-center px-3 py-1 text-primary-600 hover:bg-primary-50 rounded-lg transition-colors text-sm"
|
||||
>
|
||||
<Plus :size="16" class="mr-1" />
|
||||
Leistung hinzufügen
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Vorstand -->
|
||||
<div v-if="activeTab === 'vorstand'">
|
||||
<h2 class="text-2xl font-display font-bold text-gray-900 mb-6">Vorstandsdaten</h2>
|
||||
|
||||
<div class="space-y-8">
|
||||
<div
|
||||
v-for="(position, key) in config.vorstand"
|
||||
:key="key"
|
||||
class="p-6 bg-gray-50 rounded-lg border border-gray-200"
|
||||
>
|
||||
<h3 class="text-lg font-semibold text-gray-900 mb-4 capitalize">
|
||||
{{ key.replace(/([A-Z])/g, ' $1').trim() }}
|
||||
</h3>
|
||||
<div class="grid sm:grid-cols-2 gap-4">
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Vorname</label>
|
||||
<input
|
||||
v-model="position.vorname"
|
||||
type="text"
|
||||
class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500"
|
||||
/>
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Nachname</label>
|
||||
<input
|
||||
v-model="position.nachname"
|
||||
type="text"
|
||||
class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500"
|
||||
/>
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Telefon</label>
|
||||
<input
|
||||
v-model="position.telefon"
|
||||
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"
|
||||
/>
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">E-Mail</label>
|
||||
<input
|
||||
v-model="position.email"
|
||||
type="email"
|
||||
class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Error/Success Messages -->
|
||||
<div v-if="errorMessage" class="flex items-center p-4 rounded-lg bg-red-50 text-red-700">
|
||||
<AlertCircle :size="20" class="mr-2" />
|
||||
{{ errorMessage }}
|
||||
</div>
|
||||
|
||||
<div v-if="successMessage" class="flex items-center p-4 rounded-lg bg-green-50 text-green-700">
|
||||
<Check :size="20" class="mr-2" />
|
||||
{{ successMessage }}
|
||||
</div>
|
||||
|
||||
<!-- Save Button -->
|
||||
<div class="flex justify-end">
|
||||
<button
|
||||
@click="saveConfig"
|
||||
class="flex items-center px-8 py-3 bg-primary-600 hover:bg-primary-700 text-white font-semibold rounded-lg transition-colors shadow-lg"
|
||||
:disabled="isSaving"
|
||||
>
|
||||
<Loader2 v-if="isSaving" :size="20" class="animate-spin mr-2" />
|
||||
<Save v-else :size="20" class="mr-2" />
|
||||
<span>{{ isSaving ? 'Speichert...' : 'Änderungen speichern' }}</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, onMounted } from 'vue'
|
||||
import { Settings, Calendar, Users as UsersIcon, CreditCard, Plus, Trash2, X, Loader2, AlertCircle, Check, Save } from 'lucide-vue-next'
|
||||
|
||||
const authStore = useAuthStore()
|
||||
|
||||
const isLoading = ref(true)
|
||||
const isSaving = ref(false)
|
||||
const errorMessage = ref('')
|
||||
const successMessage = ref('')
|
||||
const activeTab = ref('training')
|
||||
|
||||
const config = ref({
|
||||
training: { ort: {}, zeiten: [] },
|
||||
trainer: [],
|
||||
mitgliedschaft: [],
|
||||
vorstand: {},
|
||||
website: {}
|
||||
})
|
||||
|
||||
const tabs = [
|
||||
{ id: 'training', label: 'Training', icon: Calendar },
|
||||
{ id: 'trainer', label: 'Trainer', icon: UsersIcon },
|
||||
{ id: 'mitgliedschaft', label: 'Mitgliedschaft', icon: CreditCard },
|
||||
{ id: 'vorstand', label: 'Vorstand', icon: UsersIcon }
|
||||
]
|
||||
|
||||
const loadConfig = async () => {
|
||||
isLoading.value = true
|
||||
try {
|
||||
const response = await $fetch('/api/config')
|
||||
config.value = response.config
|
||||
} catch (error) {
|
||||
errorMessage.value = 'Fehler beim Laden der Konfiguration.'
|
||||
} finally {
|
||||
isLoading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
const saveConfig = async () => {
|
||||
isSaving.value = true
|
||||
errorMessage.value = ''
|
||||
successMessage.value = ''
|
||||
|
||||
try {
|
||||
await $fetch('/api/config', {
|
||||
method: 'PUT',
|
||||
body: { config: config.value }
|
||||
})
|
||||
|
||||
successMessage.value = 'Konfiguration erfolgreich gespeichert!'
|
||||
setTimeout(() => {
|
||||
successMessage.value = ''
|
||||
}, 3000)
|
||||
} catch (error) {
|
||||
errorMessage.value = error.data?.message || 'Fehler beim Speichern der Konfiguration.'
|
||||
} finally {
|
||||
isSaving.value = false
|
||||
}
|
||||
}
|
||||
|
||||
const addTrainingTime = () => {
|
||||
config.value.training.zeiten.push({
|
||||
id: Date.now().toString(),
|
||||
tag: 'Montag',
|
||||
von: '19:00',
|
||||
bis: '22:00',
|
||||
gruppe: ''
|
||||
})
|
||||
}
|
||||
|
||||
const removeTrainingTime = (index) => {
|
||||
config.value.training.zeiten.splice(index, 1)
|
||||
}
|
||||
|
||||
const addTrainer = () => {
|
||||
config.value.trainer.push({
|
||||
id: Date.now().toString(),
|
||||
name: '',
|
||||
lizenz: '',
|
||||
schwerpunkt: '',
|
||||
zusatz: ''
|
||||
})
|
||||
}
|
||||
|
||||
const removeTrainer = (index) => {
|
||||
config.value.trainer.splice(index, 1)
|
||||
}
|
||||
|
||||
const addMembership = () => {
|
||||
config.value.mitgliedschaft.push({
|
||||
id: Date.now().toString(),
|
||||
typ: '',
|
||||
beschreibung: '',
|
||||
preis: 0,
|
||||
features: []
|
||||
})
|
||||
}
|
||||
|
||||
const removeMembership = (index) => {
|
||||
config.value.mitgliedschaft.splice(index, 1)
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
loadConfig()
|
||||
})
|
||||
|
||||
definePageMeta({
|
||||
middleware: 'auth',
|
||||
layout: 'default'
|
||||
})
|
||||
|
||||
useHead({
|
||||
title: 'Einstellungen - Harheimer TC',
|
||||
})
|
||||
</script>
|
||||
|
||||
@@ -16,22 +16,24 @@
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<div v-if="config">
|
||||
<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 />
|
||||
Telefon: {{ config.vorstand.vorsitzender.telefon }}<br />
|
||||
E-Mail: <a :href="`mailto:${config.vorstand.vorsitzender.email}`" class="text-primary-600 hover:underline">{{ config.vorstand.vorsitzender.email }}</a><br />
|
||||
Internet: www.harheimertc.de
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<div v-if="config">
|
||||
<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
|
||||
<span v-if="config.vorstand.vorsitzender.vorname">{{ config.vorstand.vorsitzender.vorname }} {{ config.vorstand.vorsitzender.nachname }}, Vorsitzender<br /></span>
|
||||
<span v-if="config.vorstand.stellvertreter.vorname">{{ config.vorstand.stellvertreter.vorname }} {{ config.vorstand.stellvertreter.nachname }}, Stellvertreter<br /></span>
|
||||
<span v-if="config.vorstand.kassenwart.vorname">{{ config.vorstand.kassenwart.vorname }} {{ config.vorstand.kassenwart.nachname }}, Kassenwart<br /></span>
|
||||
<span v-if="config.vorstand.schriftfuehrer.vorname">{{ config.vorstand.schriftfuehrer.vorname }} {{ config.vorstand.schriftfuehrer.nachname }}, Schriftführer<br /></span>
|
||||
<span v-if="config.vorstand.sportwart.vorname">{{ config.vorstand.sportwart.vorname }} {{ config.vorstand.sportwart.nachname }}, Sportwart<br /></span>
|
||||
<span v-if="config.vorstand.jugendwart.vorname">{{ config.vorstand.jugendwart.vorname }} {{ config.vorstand.jugendwart.nachname }}, Jugendwart</span>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@@ -68,12 +70,20 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<h2 class="text-xl font-display font-bold text-gray-900 mb-2">Verantwortlich für den Inhalt</h2>
|
||||
<div v-if="config">
|
||||
<h2 class="text-xl font-display font-bold text-gray-900 mb-2">Verantwortlich für den Inhalt nach § 55 Abs. 2 RStV</h2>
|
||||
<p class="text-gray-700">
|
||||
Roger Dichmann<br />
|
||||
Reginastr. 46<br />
|
||||
60437 Frankfurt
|
||||
{{ config.vorstand.vorsitzender.vorname }} {{ config.vorstand.vorsitzender.nachname }}<br />
|
||||
<span v-if="config.vorstand.vorsitzender.strasse">{{ config.vorstand.vorsitzender.strasse }}<br /></span>
|
||||
<span v-if="config.vorstand.vorsitzender.plz">{{ config.vorstand.vorsitzender.plz }} {{ config.vorstand.vorsitzender.ort }}</span>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div v-if="config">
|
||||
<h2 class="text-xl font-display font-bold text-gray-900 mb-2">Verantwortlich für die Website</h2>
|
||||
<p class="text-gray-700">
|
||||
{{ config.website.verantwortlicher.vorname }} {{ config.website.verantwortlicher.nachname }}<br />
|
||||
E-Mail: <a :href="`mailto:${config.website.verantwortlicher.email}`" class="text-primary-600 hover:underline">{{ config.website.verantwortlicher.email }}</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@@ -115,8 +125,24 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, onMounted } from 'vue'
|
||||
import { FileText, Eye } from 'lucide-vue-next'
|
||||
|
||||
const config = ref(null)
|
||||
|
||||
const loadConfig = async () => {
|
||||
try {
|
||||
const response = await $fetch('/api/config')
|
||||
config.value = response.config
|
||||
} catch (error) {
|
||||
console.error('Fehler beim Laden der Config:', error)
|
||||
}
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
loadConfig()
|
||||
})
|
||||
|
||||
useHead({
|
||||
title: 'Impressum - Harheimer TC',
|
||||
})
|
||||
|
||||
@@ -7,18 +7,18 @@
|
||||
<div class="w-24 h-1 bg-primary-600 mb-8" />
|
||||
|
||||
<!-- Trainingsort -->
|
||||
<div class="bg-white rounded-xl shadow-lg p-8 mb-12">
|
||||
<div v-if="config" class="bg-white rounded-xl shadow-lg p-8 mb-12">
|
||||
<div class="flex items-start space-x-4 mb-6">
|
||||
<MapPin :size="32" class="text-primary-600 flex-shrink-0" />
|
||||
<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
|
||||
{{ config.training.ort.name }}
|
||||
</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>
|
||||
<p class="text-gray-700 mb-1">{{ config.training.ort.strasse }}</p>
|
||||
<p class="text-gray-700 mb-4">{{ config.training.ort.plz }} {{ config.training.ort.ort }}</p>
|
||||
<a
|
||||
href="https://www.google.com/maps/search/?api=1&query=In+den+Schafgärten+25+60437+Frankfurt"
|
||||
:href="`https://www.google.com/maps/search/?api=1&query=${encodeURIComponent(config.training.ort.strasse + ' ' + config.training.ort.plz + ' ' + config.training.ort.ort)}`"
|
||||
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"
|
||||
>
|
||||
@@ -34,36 +34,28 @@
|
||||
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 v-if="config" class="grid gap-6 mb-12">
|
||||
<div
|
||||
v-for="(zeiten, gruppe) in groupedZeiten"
|
||||
:key="gruppe"
|
||||
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>
|
||||
<h3 class="text-xl font-display font-bold text-gray-900 mb-2">{{ gruppe }}</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
|
||||
v-for="zeit in zeiten"
|
||||
:key="zeit.id"
|
||||
class="text-lg font-semibold text-primary-600"
|
||||
>
|
||||
{{ zeit.tag }}: {{ zeit.von }} - {{ zeit.bis }} Uhr
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<Clock :size="32" class="text-primary-600" />
|
||||
</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>
|
||||
<Clock :size="32" class="text-primary-600" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mt-12 bg-primary-50 p-8 rounded-xl border border-primary-100">
|
||||
@@ -93,8 +85,38 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, computed, onMounted } from 'vue'
|
||||
import { Clock, MapPin } from 'lucide-vue-next'
|
||||
|
||||
const config = ref(null)
|
||||
|
||||
const loadConfig = async () => {
|
||||
try {
|
||||
const response = await $fetch('/api/config')
|
||||
config.value = response.config
|
||||
} catch (error) {
|
||||
console.error('Fehler beim Laden der Config:', error)
|
||||
}
|
||||
}
|
||||
|
||||
// Group training times by group
|
||||
const groupedZeiten = computed(() => {
|
||||
if (!config.value?.training?.zeiten) return {}
|
||||
|
||||
const groups = {}
|
||||
config.value.training.zeiten.forEach(zeit => {
|
||||
if (!groups[zeit.gruppe]) {
|
||||
groups[zeit.gruppe] = []
|
||||
}
|
||||
groups[zeit.gruppe].push(zeit)
|
||||
})
|
||||
return groups
|
||||
})
|
||||
|
||||
onMounted(() => {
|
||||
loadConfig()
|
||||
})
|
||||
|
||||
useHead({
|
||||
title: 'Trainingszeiten - Harheimer TC',
|
||||
})
|
||||
|
||||
@@ -10,32 +10,17 @@
|
||||
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>
|
||||
<div v-if="config" class="grid md:grid-cols-3 gap-8">
|
||||
<div
|
||||
v-for="trainer in config.trainer"
|
||||
:key="trainer.id"
|
||||
class="bg-white p-8 rounded-xl shadow-lg"
|
||||
>
|
||||
<h3 class="text-2xl font-display font-bold text-gray-900 mb-2">{{ trainer.lizenz }}</h3>
|
||||
<p class="text-gray-600 mb-4">{{ trainer.name }}</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 & Betreuung
|
||||
Lizenz: {{ trainer.lizenz }}<br />
|
||||
Schwerpunkt: {{ trainer.schwerpunkt }}<span v-if="trainer.zusatz"><br />{{ trainer.zusatz }}</span>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -45,6 +30,23 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, onMounted } from 'vue'
|
||||
|
||||
const config = ref(null)
|
||||
|
||||
const loadConfig = async () => {
|
||||
try {
|
||||
const response = await $fetch('/api/config')
|
||||
config.value = response.config
|
||||
} catch (error) {
|
||||
console.error('Fehler beim Laden der Config:', error)
|
||||
}
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
loadConfig()
|
||||
})
|
||||
|
||||
useHead({
|
||||
title: 'Trainer - Harheimer TC',
|
||||
})
|
||||
|
||||
30
server/api/config.get.js
Normal file
30
server/api/config.get.js
Normal file
@@ -0,0 +1,30 @@
|
||||
import { promises as fs } from 'fs'
|
||||
import path from 'path'
|
||||
|
||||
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)
|
||||
}
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
try {
|
||||
const configFile = getDataPath('config.json')
|
||||
const data = await fs.readFile(configFile, 'utf-8')
|
||||
const config = JSON.parse(data)
|
||||
|
||||
return {
|
||||
success: true,
|
||||
config
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Fehler beim Laden der Config:', error)
|
||||
throw createError({
|
||||
statusCode: 500,
|
||||
message: 'Fehler beim Laden der Konfiguration.'
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
64
server/api/config.put.js
Normal file
64
server/api/config.put.js
Normal file
@@ -0,0 +1,64 @@
|
||||
import { verifyToken, getUserById } from '../utils/auth.js'
|
||||
import { promises as fs } from 'fs'
|
||||
import path from 'path'
|
||||
|
||||
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)
|
||||
}
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
try {
|
||||
const token = getCookie(event, 'auth_token')
|
||||
|
||||
if (!token) {
|
||||
throw createError({
|
||||
statusCode: 401,
|
||||
message: 'Nicht authentifiziert.'
|
||||
})
|
||||
}
|
||||
|
||||
const decoded = verifyToken(token)
|
||||
|
||||
if (!decoded) {
|
||||
throw createError({
|
||||
statusCode: 401,
|
||||
message: 'Ungültiges Token.'
|
||||
})
|
||||
}
|
||||
|
||||
const user = await getUserById(decoded.id)
|
||||
|
||||
// Only admin and vorstand can edit config
|
||||
if (!user || (user.role !== 'admin' && user.role !== 'vorstand')) {
|
||||
throw createError({
|
||||
statusCode: 403,
|
||||
message: 'Keine Berechtigung zum Bearbeiten der Konfiguration.'
|
||||
})
|
||||
}
|
||||
|
||||
const body = await readBody(event)
|
||||
|
||||
if (!body.config) {
|
||||
throw createError({
|
||||
statusCode: 400,
|
||||
message: 'Konfigurationsdaten fehlen.'
|
||||
})
|
||||
}
|
||||
|
||||
const configFile = getDataPath('config.json')
|
||||
await fs.writeFile(configFile, JSON.stringify(body.config, null, 2), 'utf-8')
|
||||
|
||||
return {
|
||||
success: true,
|
||||
message: 'Konfiguration erfolgreich gespeichert.'
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Fehler beim Speichern der Config:', error)
|
||||
throw error
|
||||
}
|
||||
})
|
||||
|
||||
150
server/data/config.json
Normal file
150
server/data/config.json
Normal file
@@ -0,0 +1,150 @@
|
||||
{
|
||||
"training": {
|
||||
"ort": {
|
||||
"name": "Sporthalle der Grundschule Harheim",
|
||||
"strasse": "In den Schafgärten 25",
|
||||
"plz": "60437",
|
||||
"ort": "Frankfurt am Main"
|
||||
},
|
||||
"zeiten": [
|
||||
{
|
||||
"id": "1",
|
||||
"tag": "Dienstag",
|
||||
"von": "17:30",
|
||||
"bis": "19:30",
|
||||
"gruppe": "Schüler/Jugend (ab 6 Jahre)"
|
||||
},
|
||||
{
|
||||
"id": "2",
|
||||
"tag": "Dienstag",
|
||||
"von": "19:30",
|
||||
"bis": "22:30",
|
||||
"gruppe": "Damen und Herren"
|
||||
},
|
||||
{
|
||||
"id": "3",
|
||||
"tag": "Donnerstag",
|
||||
"von": "19:30",
|
||||
"bis": "22:30",
|
||||
"gruppe": "Damen und Herren"
|
||||
}
|
||||
]
|
||||
},
|
||||
"trainer": [
|
||||
{
|
||||
"id": "1",
|
||||
"name": "Torsten Schulz",
|
||||
"lizenz": "C-Trainer",
|
||||
"schwerpunkt": "Nachwuchsförderung",
|
||||
"zusatz": "Erwachsenen bei Wunsch zur Verfügung"
|
||||
},
|
||||
{
|
||||
"id": "2",
|
||||
"name": "Thomas Steinbrech",
|
||||
"lizenz": "Kindertrainer",
|
||||
"schwerpunkt": "Nachwuchsförderung",
|
||||
"zusatz": ""
|
||||
},
|
||||
{
|
||||
"id": "3",
|
||||
"name": "Magda Schwallbach",
|
||||
"lizenz": "Assistenztrainerin",
|
||||
"schwerpunkt": "Unterstützung & Betreuung",
|
||||
"zusatz": ""
|
||||
}
|
||||
],
|
||||
"mitgliedschaft": [
|
||||
{
|
||||
"id": "1",
|
||||
"typ": "Erwachsene",
|
||||
"preis": 120,
|
||||
"features": [
|
||||
"Unbegrenztes Training",
|
||||
"Teilnahme am Punktspielbetrieb"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "2",
|
||||
"typ": "Kinder/Jugend",
|
||||
"beschreibung": "Bis 18 Jahre",
|
||||
"preis": 72,
|
||||
"features": [
|
||||
"Unbegrenztes Training",
|
||||
"Jugendförderung"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "3",
|
||||
"typ": "Passiv",
|
||||
"beschreibung": "Unterstützen Sie Ihren Lieblingsverein",
|
||||
"preis": 30,
|
||||
"features": [
|
||||
"Unterstützung des Vereins"
|
||||
]
|
||||
}
|
||||
],
|
||||
"vorstand": {
|
||||
"vorsitzender": {
|
||||
"vorname": "Jürgen",
|
||||
"nachname": "Dichmann",
|
||||
"strasse": "",
|
||||
"plz": "",
|
||||
"ort": "",
|
||||
"telefon": "069 509637",
|
||||
"email": "j.dichmann@gmx.de"
|
||||
},
|
||||
"stellvertreter": {
|
||||
"vorname": "",
|
||||
"nachname": "",
|
||||
"strasse": "",
|
||||
"plz": "",
|
||||
"ort": "",
|
||||
"telefon": "",
|
||||
"email": ""
|
||||
},
|
||||
"kassenwart": {
|
||||
"vorname": "",
|
||||
"nachname": "",
|
||||
"strasse": "",
|
||||
"plz": "",
|
||||
"ort": "",
|
||||
"telefon": "",
|
||||
"email": ""
|
||||
},
|
||||
"schriftfuehrer": {
|
||||
"vorname": "",
|
||||
"nachname": "",
|
||||
"strasse": "",
|
||||
"plz": "",
|
||||
"ort": "",
|
||||
"telefon": "",
|
||||
"email": ""
|
||||
},
|
||||
"sportwart": {
|
||||
"vorname": "",
|
||||
"nachname": "",
|
||||
"strasse": "",
|
||||
"plz": "",
|
||||
"ort": "",
|
||||
"telefon": "",
|
||||
"email": ""
|
||||
},
|
||||
"jugendwart": {
|
||||
"vorname": "",
|
||||
"nachname": "",
|
||||
"strasse": "",
|
||||
"plz": "",
|
||||
"ort": "",
|
||||
"telefon": "",
|
||||
"email": ""
|
||||
}
|
||||
},
|
||||
"website": {
|
||||
"verantwortlicher": {
|
||||
"vorname": "Torsten",
|
||||
"nachname": "Schulz",
|
||||
"email": "tsschulz@tsschulz.de"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user