Add global auth state with composable for reactive login status

This commit is contained in:
Torsten Schulz (local)
2025-10-21 14:12:01 +02:00
parent 86f21537a8
commit 1015d37eb7
175 changed files with 1618 additions and 2157 deletions

View File

@@ -0,0 +1,87 @@
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-BzCA61rX.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 '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\xFCr 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\xFCr alle Wettk\xE4mpfe 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"> \u{1F517} Offizielle ITTF-Regeln aufrufen </a><div class="text-center"><p class="text-sm text-gray-600 font-medium"> Deutsche \xDCbersetzung auf tischtennis.de </p><p class="text-xs text-gray-500 mt-1"> Internationale Tischtennis-Regeln A &amp; B </p></div></div></div><div class="bg-white rounded-xl shadow-lg p-8 border border-gray-100 flex flex-col h-full"><div class="flex items-center mb-6"><div class="w-12 h-12 bg-gradient-to-br from-primary-500 to-primary-600 rounded-xl flex items-center justify-center mr-4">`);
_push(ssrRenderComponent(unref(FileText), {
size: 24,
class: "text-white"
}, null, _parent));
_push(`</div><div><h2 class="text-2xl font-display font-bold text-gray-900">Tischtennis-Regeln Light</h2><p class="text-gray-600">Vereinfachte \xDCbersicht</p></div></div><p class="text-gray-700 mb-6 leading-relaxed flex-grow"> Eine kompakte \xDCbersicht der wichtigsten Tischtennis-Regeln f\xFCr Einsteiger und Hobbyspieler. Diese vereinfachte Version erkl\xE4rt die Grundlagen verst\xE4ndlich und \xFCbersichtlich. </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"> \u2B07\uFE0F 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 \xDCberblick </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 \xD7 1,525m, H\xF6he: 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\xE4ger</h3><p class="text-gray-600 text-sm"> Belag: schwarz + farbig<br> (rot, gr\xFCn, 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\xF6he </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\xE4tze<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\xE4\xDFig aktualisiert und gelten f\xFCr alle internationalen Wettk\xE4mpfe. F\xFCr regionale Turniere k\xF6nnen 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"> \u{1F517} 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-BZWHc7KZ.mjs.map