chahinebrini 5d6c322129 wip: KeyboardAwareSheet migrations + Snake/Tetris UI + iron.png + useMe live-update
Sheets via neuer KeyboardAwareSheet-Composable (in Modal pattern, auto-grow
mit Tastatur, paddingBottom-Lift): EditMail, AddDomain, CreateRoom, ConnectMail.
GameOverScreen behält Spring-Slide-In, nutzt RN Keyboard.addListener für Lift.

- KeyboardAwareSheet.tsx — universal modal with sheet-grow + keyboard-padding
- react-native-keyboard-controller installiert + KeyboardProvider in Root
- Snake: time + ScoreProgressBar + useSnakeSounds (haptic, audio TODO)
- Tetris: title weg, Buttons zentriert, kein Pressable mit style-fn
- DPad-Buttons 60→48, more bg, no scale
- useMe: pub-sub listener pattern für app-weite avatar/nickname-Updates
- dm.tsx: resolveAvatar wrap (iron.png-Warning)
- Mail-error-humanizer + locales

Recovery-Doc-Update in docs/internal/RECOVERY_LOG_2026-05-10.md

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-10 23:59:25 +02:00

132 lines
5.4 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="min-h-screen bg-default font-sans pb-16 md:pb-0">
<!-- Header -->
<div class="pt-10 pb-8 text-center px-4">
<div
class="inline-flex items-center gap-2 bg-primary-950/60 border border-primary-800/40 rounded-full px-4 py-1.5 text-sm text-primary-300 mb-6">
<UIcon name="i-heroicons-identification" class="text-primary-400" />
Rechtliches
</div>
<h1 class="text-3xl md:text-5xl font-extrabold text-highlighted mb-3">
Impressum
</h1>
<p class="text-muted text-sm">
Stand: 1. Mai 2026
</p>
</div>
<!-- Inhalt -->
<article class="px-4 max-w-3xl mx-auto pb-24 text-sm text-muted leading-relaxed space-y-10">
<section id="par1">
<h2 class="text-xl font-bold text-highlighted mb-3">Angaben gemäß § 5 DDG</h2>
<div class="bg-elevated border border-default rounded-xl p-5 not-prose">
<p class="text-highlighted font-semibold text-base mb-1">Chahine Brini</p>
<p class="mb-3 text-muted">(natürliche Person, einzelkaufmännisch handelnd)</p>
<p class="mb-1"><strong class="text-highlighted">Postanschrift:</strong></p>
<p class="mb-3 text-muted">
Lärchenweg 17<br />
38368 Grasleben<br />
Deutschland
</p>
<p class="mb-1"><strong class="text-highlighted">Kontakt:</strong></p>
<p>
E-Mail: <a href="mailto:c.brini@icloud.com" class="text-primary-400 hover:underline">c.brini@icloud.com</a>
</p>
</div>
<p class="mt-3 text-xs text-muted italic">
Hinweis: Der Geschäftsbetrieb wird derzeit als Einzelkaufmann geführt.
Eine Überführung in die in Gründung befindliche Raynis GmbH" ist geplant;
die Angaben werden entsprechend aktualisiert.
</p>
</section>
<section id="par2">
<h2 class="text-xl font-bold text-highlighted mb-3">Verantwortlich für den Inhalt nach § 18 Abs. 2 MStV</h2>
<div class="bg-elevated border border-default rounded-xl p-4 not-prose">
<p class="text-highlighted font-semibold mb-1">Chahine Brini</p>
<p>Anschrift wie oben</p>
</div>
</section>
<section id="par3">
<h2 class="text-xl font-bold text-highlighted mb-3">Umsatzsteuer und unternehmensbezogene Angaben</h2>
<p class="mb-3">
Eine Umsatzsteuer-Identifikationsnummer gemäß § 27a UStG wird nach Erteilung ergänzt.
Eine Eintragung im Handelsregister besteht für den derzeitigen Anbieter nicht.
</p>
</section>
<section id="par4">
<h2 class="text-xl font-bold text-highlighted mb-3">Online-Streitbeilegung gemäß Art. 14 Abs. 1 ODR-VO</h2>
<p class="mb-3">
Die Europäische Kommission stellt eine Plattform zur Online-Streitbeilegung bereit:
<a href="https://ec.europa.eu/consumers/odr" class="text-primary-400 hover:underline" target="_blank" rel="noopener">
https://ec.europa.eu/consumers/odr
</a>
</p>
<p>
E-Mail für Verbraucheranfragen:
<a href="mailto:c.brini@icloud.com" class="text-primary-400 hover:underline">c.brini@icloud.com</a>
</p>
</section>
<section id="par5">
<h2 class="text-xl font-bold text-highlighted mb-3">Verbraucherstreitbeilegung</h2>
<p>
Wir sind nicht bereit oder verpflichtet, an Streitbeilegungsverfahren vor einer
Verbraucherschlichtungsstelle gemäß § 36 VSBG teilzunehmen.
</p>
</section>
<section id="par6">
<h2 class="text-xl font-bold text-highlighted mb-3">Haftung für Inhalte</h2>
<p class="mb-3">
Als Diensteanbieter sind wir gemäß § 7 Abs. 1 DDG für eigene Inhalte verantwortlich.
Bei Bekanntwerden von Rechtsverletzungen werden wir diese Inhalte umgehend entfernen.
</p>
</section>
<section id="par7">
<h2 class="text-xl font-bold text-highlighted mb-3">Haftung für Links</h2>
<p>
Unser Angebot enthält Links zu externen Seiten, auf deren Inhalte wir keinen Einfluss haben.
Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Links umgehend entfernen.
</p>
</section>
<section id="par8">
<h2 class="text-xl font-bold text-highlighted mb-3">Urheberrecht</h2>
<p>
Die durch den Anbieter erstellten Inhalte unterliegen dem deutschen Urheberrecht.
Downloads und Kopien sind nur für den privaten, nicht kommerziellen Gebrauch gestattet.
</p>
</section>
<section class="pt-6 border-t border-default">
<p class="text-xs text-muted mb-2">
<strong class="text-highlighted">Hosting:</strong> Hetzner Online GmbH, Falkenstein/Nürnberg, Deutschland.
</p>
<p class="text-xs text-muted mb-2">
<strong class="text-highlighted">Datenschutz:</strong>
<NuxtLink to="/datenschutz" class="text-primary-400 hover:underline">Datenschutzerklärung</NuxtLink>
</p>
<p class="text-xs text-muted"><strong class="text-highlighted">Stand:</strong> 1. Mai 2026</p>
</section>
</article>
</div>
</template>
<script setup lang="ts">
definePageMeta({ layout: "default" });
useHead({
title: 'Impressum Rebreak',
meta: [
{ name: 'description', content: 'Impressum der Rebreak-App nach § 5 DDG.' },
{ name: 'robots', content: 'index,follow' },
],
});
</script>