diff --git a/CHANGELOG.md b/CHANGELOG.md index 6b30f42..d813e66 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Web-Install-Hinweis auf der Startseite als dezente Textzeile statt umrahmter Karte mit Emoji und Untertitel +- Store-/OG-Grafik: Schritt „Denken" zeigt eine Denkblase mit dem Haus-Motiv des App-Icons statt der Mascot-Figur - Startseite entschlackt: „Spiel starten" ist die einzige auffällige Aktion (ohne Dauer-Puls); Tägliche Challenge als dezenter Textlink darunter (ohne ⚡, Farbrahmen, Countdown); Level/Galerie/Freies Malen als einfarbige Textlinks im Footer; Statistik als eine Textzeile statt drei Emoji-Karten; Streak-Badge und schwebende Sterne entfernt — die Serie steht nur noch in Malis Begrüßung - Merke-Phase: dünner, einfarbiger Restzeit-Balken statt 80px-Countdown-Kreis mit Gelb/Rot-Warnfarben (war bei 3 s Anzeigezeit dauerhaft im Warnmodus) - App-Icon/Splash/Store-Grafik: ruhigeres, entsättigtes Hellblau `#A9DCEB` statt `#60D5FA` diff --git a/assets/icons/feature-graphic.png b/assets/icons/feature-graphic.png index 8fd1455..e160c3d 100644 Binary files a/assets/icons/feature-graphic.png and b/assets/icons/feature-graphic.png differ diff --git a/assets/icons/feature-graphic.svg b/assets/icons/feature-graphic.svg index d11f640..55f7934 100644 --- a/assets/icons/feature-graphic.svg +++ b/assets/icons/feature-graphic.svg @@ -34,21 +34,16 @@ - + - - - - - - - - - - - - + + + + + + + Denken diff --git a/components/WebInstallBanner.tsx b/components/WebInstallBanner.tsx index edc3cf6..2d2e076 100644 --- a/components/WebInstallBanner.tsx +++ b/components/WebInstallBanner.tsx @@ -1,10 +1,10 @@ import React from 'react'; -import { View, Text, StyleSheet, TouchableOpacity, Linking } from 'react-native'; +import { Text, StyleSheet, TouchableOpacity, Linking } from 'react-native'; import { useTranslation } from '@services/i18n'; import { useTheme } from '@services/ThemeContext'; import { isWeb } from '../utils/platform'; import { getPlayStoreUrl } from '../constants/ExternalLinks'; -import { Spacing, FontSize, FontWeight, FontFamily, BorderRadius } from '../constants/Layout'; +import { Spacing, FontSize, FontWeight, FontFamily } from '../constants/Layout'; /** * Nur auf Web sichtbarer Install-Hinweis oberhalb des Spiel-CTAs. @@ -15,6 +15,9 @@ import { Spacing, FontSize, FontWeight, FontFamily, BorderRadius } from '../cons * Installationen konvertiert. Dieser Banner macht die Android-App direkt im * sichtbaren Bereich zum Angebot — mit Attributions-Link, damit die Installs * in der Play Console als Web-Traffic erkennbar sind. + * + * Bewusst nur eine dezente Textzeile (kein Rahmen, kein Emoji), damit + * "Spiel starten" die einzige auffällige Aktion der Startseite bleibt. */ export default function WebInstallBanner() { const { t } = useTranslation(); @@ -31,52 +34,25 @@ export default function WebInstallBanner() { onPress={open} accessibilityRole="link" accessibilityLabel={t('webInstall.title')} - style={[styles.container, { backgroundColor: colors.surface, borderColor: colors.primary }]} + style={styles.container} > - 📲 - - - {t('webInstall.title')} - - - {t('webInstall.subtitle')} - - - › + + {t('webInstall.title')} › + ); } const styles = StyleSheet.create({ container: { - flexDirection: 'row', - alignItems: 'center', - gap: Spacing.sm, - marginTop: Spacing.sm, - paddingVertical: Spacing.sm, + alignSelf: 'center', + minHeight: 44, + justifyContent: 'center', paddingHorizontal: Spacing.md, - borderRadius: BorderRadius.lg, - borderWidth: 1.5, - }, - icon: { - fontSize: 20, - }, - textBlock: { - flex: 1, }, title: { fontSize: FontSize.sm, - fontWeight: FontWeight.bold, - fontFamily: FontFamily.bold, - }, - subtitle: { - fontSize: FontSize.xs, - fontWeight: FontWeight.regular, - fontFamily: FontFamily.regular, - marginTop: 1, - }, - chevron: { - fontSize: 22, - fontWeight: FontWeight.bold, + fontWeight: FontWeight.semibold, + fontFamily: FontFamily.semibold, }, }); diff --git a/components/__tests__/WebInstallBanner.test.tsx b/components/__tests__/WebInstallBanner.test.tsx index 204aafd..37aff1e 100644 --- a/components/__tests__/WebInstallBanner.test.tsx +++ b/components/__tests__/WebInstallBanner.test.tsx @@ -19,14 +19,12 @@ jest.mock('../../services/ThemeContext', () => ({ import WebInstallBanner from '../WebInstallBanner'; describe('WebInstallBanner', () => { - it('zeigt Titel und Untertitel', () => { + it('zeigt nur eine dezente Titelzeile', () => { const { UNSAFE_getAllByType } = render(); - const texts = UNSAFE_getAllByType(Text) - .map((n: any) => n.props.children) - .flat(); + const texts = UNSAFE_getAllByType(Text); - expect(texts).toContain('webInstall.title'); - expect(texts).toContain('webInstall.subtitle'); + expect(texts).toHaveLength(1); + expect(texts[0].props.children).toContain('webInstall.title'); }); it('öffnet den Play Store mit Banner-Attribution', async () => { diff --git a/locales/de/translations.json b/locales/de/translations.json index 7c5b019..3ff3f97 100644 --- a/locales/de/translations.json +++ b/locales/de/translations.json @@ -23,8 +23,7 @@ "privacyPolicy": "Datenschutz" }, "webInstall": { - "title": "Android-App gratis im Play Store", - "subtitle": "Auch ohne Internet spielbar" + "title": "Android-App gratis im Play Store" }, "levels": { "title": "Level auswählen", diff --git a/locales/en/translations.json b/locales/en/translations.json index 2e0cf44..d863042 100644 --- a/locales/en/translations.json +++ b/locales/en/translations.json @@ -23,8 +23,7 @@ "privacyPolicy": "Privacy Policy" }, "webInstall": { - "title": "Free Android app on Google Play", - "subtitle": "Plays without an internet connection" + "title": "Free Android app on Google Play" }, "levels": { "title": "Select Level", diff --git a/locales/es/translations.json b/locales/es/translations.json index 3cfd009..5985cd5 100644 --- a/locales/es/translations.json +++ b/locales/es/translations.json @@ -23,8 +23,7 @@ "privacyPolicy": "Política de privacidad" }, "webInstall": { - "title": "App de Android gratis en Google Play", - "subtitle": "También funciona sin conexión" + "title": "App de Android gratis en Google Play" }, "levels": { "title": "Elegir nivel", diff --git a/locales/fr/translations.json b/locales/fr/translations.json index c259dc4..71541ae 100644 --- a/locales/fr/translations.json +++ b/locales/fr/translations.json @@ -23,8 +23,7 @@ "privacyPolicy": "Politique de confidentialité" }, "webInstall": { - "title": "Appli Android gratuite sur Google Play", - "subtitle": "Fonctionne aussi sans connexion" + "title": "Appli Android gratuite sur Google Play" }, "levels": { "title": "Choisir un niveau", diff --git a/locales/it/translations.json b/locales/it/translations.json index 5bf7614..5f4bda8 100644 --- a/locales/it/translations.json +++ b/locales/it/translations.json @@ -23,8 +23,7 @@ "privacyPolicy": "Informativa sulla privacy" }, "webInstall": { - "title": "App Android gratuita su Google Play", - "subtitle": "Funziona anche senza Internet" + "title": "App Android gratuita su Google Play" }, "levels": { "title": "Scegli livello", diff --git a/locales/nl/translations.json b/locales/nl/translations.json index 8a11e89..78d5a14 100644 --- a/locales/nl/translations.json +++ b/locales/nl/translations.json @@ -23,8 +23,7 @@ "privacyPolicy": "Privacybeleid" }, "webInstall": { - "title": "Gratis Android-app in Google Play", - "subtitle": "Speelt ook zonder internet" + "title": "Gratis Android-app in Google Play" }, "levels": { "title": "Level kiezen", diff --git a/locales/pl/translations.json b/locales/pl/translations.json index e132345..ccfbbed 100644 --- a/locales/pl/translations.json +++ b/locales/pl/translations.json @@ -23,8 +23,7 @@ "privacyPolicy": "Polityka prywatności" }, "webInstall": { - "title": "Darmowa aplikacja na Androida w Google Play", - "subtitle": "Działa też bez internetu" + "title": "Darmowa aplikacja na Androida w Google Play" }, "levels": { "title": "Wybierz poziom", diff --git a/public/feature-graphic.png b/public/feature-graphic.png index 8fd1455..e160c3d 100644 Binary files a/public/feature-graphic.png and b/public/feature-graphic.png differ