Update package-lock.json and package.json to include 'globals' dependency and improve code formatting in various components for better readability.
Some checks failed
Code Analysis (JS/Vue) / analyze (push) Failing after 54s

This commit is contained in:
Torsten Schulz (local)
2025-12-20 10:17:16 +01:00
parent 861802b716
commit b20b89d333
72 changed files with 5338 additions and 2008 deletions

View File

@@ -4,11 +4,14 @@
<h1 class="text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-2">
Mitgliedschaft
</h1>
<div class="w-24 h-1 bg-primary-600 mb-4"></div>
<div class="w-24 h-1 bg-primary-600 mb-4" />
<!-- Mitgliedschaftspläne (ohne "Noch Fragen" Box) -->
<div class="mb-4">
<section id="membership" class="py-8 sm:py-12 bg-gradient-to-b from-gray-50 to-white">
<section
id="membership"
class="py-8 sm:py-12 bg-gradient-to-b from-gray-50 to-white"
>
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div class="text-center mb-8">
<p class="text-xl text-gray-600 max-w-3xl mx-auto">
@@ -36,12 +39,24 @@
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"
>
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" size="20" class="lucide lucide-file-text-icon mr-2">
<path d="M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z"></path>
<path d="M14 2v4a2 2 0 0 0 2 2h4"></path>
<path d="M10 9H8"></path>
<path d="M16 13H8"></path>
<path d="M16 17H8"></path>
<svg
xmlns="http://www.w3.org/2000/svg"
width="20"
height="20"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
size="20"
class="lucide lucide-file-text-icon mr-2"
>
<path d="M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z" />
<path d="M14 2v4a2 2 0 0 0 2 2h4" />
<path d="M10 9H8" />
<path d="M16 13H8" />
<path d="M16 17H8" />
</svg>
Satzung herunterladen (PDF)
</a>
@@ -50,9 +65,25 @@
href="/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"
>
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" size="20" class="lucide lucide-eye-icon mr-2">
<path d="M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z"></path>
<circle cx="12" cy="12" r="3"></circle>
<svg
xmlns="http://www.w3.org/2000/svg"
width="20"
height="20"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
size="20"
class="lucide lucide-eye-icon mr-2"
>
<path d="M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z" />
<circle
cx="12"
cy="12"
r="3"
/>
</svg>
Online ansehen
</a>
@@ -73,16 +104,35 @@
target="_blank"
class="inline-flex items-center px-4 py-2 bg-gray-100 hover:bg-gray-200 text-gray-900 font-semibold rounded-lg transition-colors"
>
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="mr-2">
<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path>
<polyline points="7,10 12,15 17,10"></polyline>
<line x1="12" y1="15" x2="12" y2="3"></line>
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="mr-2"
>
<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" />
<polyline points="7,10 12,15 17,10" />
<line
x1="12"
y1="15"
x2="12"
y2="3"
/>
</svg>
Mitgliedsantrag herunterladen
</a>
</div>
<form id="membershipForm" class="space-y-8">
<form
id="membershipForm"
class="space-y-8"
>
<!-- Persönliche Daten -->
<div class="space-y-6">
<h3 class="text-xl font-semibold text-gray-900 border-b border-gray-200 pb-2">
@@ -91,53 +141,73 @@
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
<div>
<label for="nachname" class="block text-sm font-medium text-gray-700 mb-2">
<label
for="nachname"
class="block text-sm font-medium text-gray-700 mb-2"
>
Nachname
</label>
<p class="text-xs text-gray-500 italic mb-2">Pflichtfeld</p>
<p class="text-xs text-gray-500 italic mb-2">
Pflichtfeld
</p>
<input
id="nachname"
name="nachname"
type="text"
required
class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-500 focus:border-primary-500"
/>
>
</div>
<div>
<label for="vorname" class="block text-sm font-medium text-gray-700 mb-2">
<label
for="vorname"
class="block text-sm font-medium text-gray-700 mb-2"
>
Vorname
</label>
<p class="text-xs text-gray-500 italic mb-2">Pflichtfeld</p>
<p class="text-xs text-gray-500 italic mb-2">
Pflichtfeld
</p>
<input
id="vorname"
name="vorname"
type="text"
required
class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-500 focus:border-primary-500"
/>
>
</div>
</div>
<div>
<label for="strasse" class="block text-sm font-medium text-gray-700 mb-2">
<label
for="strasse"
class="block text-sm font-medium text-gray-700 mb-2"
>
Straße und Hausnummer
</label>
<p class="text-xs text-gray-500 italic mb-2">Pflichtfeld</p>
<p class="text-xs text-gray-500 italic mb-2">
Pflichtfeld
</p>
<input
id="strasse"
name="strasse"
type="text"
required
class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-500 focus:border-primary-500"
/>
>
</div>
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
<div>
<label for="plz" class="block text-sm font-medium text-gray-700 mb-2">
<label
for="plz"
class="block text-sm font-medium text-gray-700 mb-2"
>
PLZ
</label>
<p class="text-xs text-gray-500 italic mb-2">Pflichtfeld</p>
<p class="text-xs text-gray-500 italic mb-2">
Pflichtfeld
</p>
<input
id="plz"
name="plz"
@@ -145,39 +215,52 @@
required
pattern="[0-9]{5}"
class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-500 focus:border-primary-500"
/>
>
</div>
<div>
<label for="ort" class="block text-sm font-medium text-gray-700 mb-2">
<label
for="ort"
class="block text-sm font-medium text-gray-700 mb-2"
>
Wohnort
</label>
<p class="text-xs text-gray-500 italic mb-2">Pflichtfeld</p>
<p class="text-xs text-gray-500 italic mb-2">
Pflichtfeld
</p>
<input
id="ort"
name="ort"
type="text"
required
class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-500 focus:border-primary-500"
/>
>
</div>
</div>
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
<div>
<label for="geburtsdatum" class="block text-sm font-medium text-gray-700 mb-2">
<label
for="geburtsdatum"
class="block text-sm font-medium text-gray-700 mb-2"
>
Geburtsdatum
</label>
<p class="text-xs text-gray-500 italic mb-2">Pflichtfeld</p>
<p class="text-xs text-gray-500 italic mb-2">
Pflichtfeld
</p>
<input
id="geburtsdatum"
name="geburtsdatum"
type="date"
required
class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-500 focus:border-primary-500"
/>
>
</div>
<div>
<label for="telefon_privat" class="block text-sm font-medium text-gray-700 mb-2">
<label
for="telefon_privat"
class="block text-sm font-medium text-gray-700 mb-2"
>
Telefon (privat)
</label>
<input
@@ -185,26 +268,34 @@
name="telefon_privat"
type="tel"
class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-500 focus:border-primary-500"
/>
>
</div>
</div>
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
<div>
<label for="email" class="block text-sm font-medium text-gray-700 mb-2">
<label
for="email"
class="block text-sm font-medium text-gray-700 mb-2"
>
E-Mail
</label>
<p class="text-xs text-gray-500 italic mb-2">Pflichtfeld</p>
<p class="text-xs text-gray-500 italic mb-2">
Pflichtfeld
</p>
<input
id="email"
name="email"
type="email"
required
class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-500 focus:border-primary-500"
/>
>
</div>
<div>
<label for="telefon_mobil" class="block text-sm font-medium text-gray-700 mb-2">
<label
for="telefon_mobil"
class="block text-sm font-medium text-gray-700 mb-2"
>
Telefon (Mobil)
</label>
<input
@@ -212,7 +303,7 @@
name="telefon_mobil"
type="tel"
class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-500 focus:border-primary-500"
/>
>
</div>
</div>
</div>
@@ -230,7 +321,7 @@
value="aktiv"
checked
class="mr-3 text-primary-600 focus:ring-primary-500"
/>
>
<span class="text-gray-700">Aktives Mitglied</span>
</label>
<label class="flex items-center">
@@ -239,7 +330,7 @@
type="radio"
value="passiv"
class="mr-3 text-primary-600 focus:ring-primary-500"
/>
>
<span class="text-gray-700">Passives Mitglied</span>
</label>
</div>
@@ -269,7 +360,7 @@
type="checkbox"
required
class="mr-3 mt-1 text-primary-600 focus:ring-primary-500"
/>
>
<div>
<span class="text-gray-700">
Hierzu erteile ich das beigefügte SEPA-Lastschriftmandat.
@@ -286,24 +377,34 @@
</h3>
<div>
<label for="kontoinhaber" class="block text-sm font-medium text-gray-700 mb-2">
<label
for="kontoinhaber"
class="block text-sm font-medium text-gray-700 mb-2"
>
Kontoinhaber (Vorname und Name)
</label>
<p class="text-xs text-gray-500 italic mb-2">Pflichtfeld</p>
<p class="text-xs text-gray-500 italic mb-2">
Pflichtfeld
</p>
<input
id="kontoinhaber"
name="kontoinhaber"
type="text"
required
class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-500 focus:border-primary-500"
/>
>
</div>
<div>
<label for="iban" class="block text-sm font-medium text-gray-700 mb-2">
<label
for="iban"
class="block text-sm font-medium text-gray-700 mb-2"
>
IBAN
</label>
<p class="text-xs text-gray-500 italic mb-2">Pflichtfeld</p>
<p class="text-xs text-gray-500 italic mb-2">
Pflichtfeld
</p>
<input
id="iban"
name="iban"
@@ -311,11 +412,14 @@
required
placeholder="DE89 3704 0044 0532 0130 00"
class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-500 focus:border-primary-500"
/>
>
</div>
<div>
<label for="bic" class="block text-sm font-medium text-gray-700 mb-2">
<label
for="bic"
class="block text-sm font-medium text-gray-700 mb-2"
>
BIC
</label>
<input
@@ -324,11 +428,14 @@
type="text"
placeholder="COBADEFFXXX"
class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-500 focus:border-primary-500"
/>
>
</div>
<div>
<label for="bank" class="block text-sm font-medium text-gray-700 mb-2">
<label
for="bank"
class="block text-sm font-medium text-gray-700 mb-2"
>
Kreditinstitut
</label>
<input
@@ -336,7 +443,7 @@
name="bank"
type="text"
class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-500 focus:border-primary-500"
/>
>
</div>
</div>
@@ -356,7 +463,7 @@
type="checkbox"
required
class="mr-3 mt-1 text-primary-600 focus:ring-primary-500"
/>
>
<div>
<span class="text-sm text-gray-700">
Ich bestätige das Vorstehende zur Kenntnis genommen zu haben und willige ein, dass der Harheimer Tischtennis-Club 1954 e.V. allgemeine Daten zu meiner Person (Name, Fotografien, Mannschaft, Leistungsergebnisse, Turnierteilnahmen, Lizenzen u.ä.) auf der Homepage des Vereins veröffentlichen darf.
@@ -378,7 +485,7 @@
type="checkbox"
required
class="mr-3 mt-1 text-primary-600 focus:ring-primary-500"
/>
>
<div>
<span class="text-gray-700">
Ich erkenne die Vereinssatzung (erhältlich beim Vorstand bzw. auf der Vereinshomepage) an.
@@ -390,7 +497,9 @@
<!-- Hinweise -->
<div class="bg-yellow-50 p-4 rounded-lg border border-yellow-200">
<h4 class="font-semibold text-gray-900 mb-2">Wichtige Hinweise:</h4>
<h4 class="font-semibold text-gray-900 mb-2">
Wichtige Hinweise:
</h4>
<ul class="text-sm text-gray-700 space-y-1">
<li> Die Mitgliedschaft im Harheimer Tischtennis-Club erlangt erst nach Bestätigung durch den Vorstand Wirksamkeit.</li>
<li> Die Beitragspflicht beginnt mit dem darauf folgenden Monat.</li>
@@ -401,13 +510,30 @@
<!-- Submit Button -->
<div class="flex justify-center pt-6">
<button
type="submit"
id="submitBtn"
type="submit"
class="px-8 py-3 bg-primary-600 hover:bg-primary-700 text-white font-semibold rounded-lg transition-colors flex items-center justify-center"
>
<svg v-if="isGenerating" class="animate-spin -ml-1 mr-3 h-5 w-5 text-white" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24">
<circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle>
<path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"></path>
<svg
v-if="isGenerating"
class="animate-spin -ml-1 mr-3 h-5 w-5 text-white"
xmlns="http://www.w3.org/2000/svg"
fill="none"
viewBox="0 0 24 24"
>
<circle
class="opacity-25"
cx="12"
cy="12"
r="10"
stroke="currentColor"
stroke-width="4"
/>
<path
class="opacity-75"
fill="currentColor"
d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
/>
</svg>
Beitrittsformular erstellen
</button>