feat(i18n): add language picker and 5-language support to all auth screens

- Add svelte-i18n and @manacore/shared-i18n to Chat, Presi, Zitare
- Create LanguageSelector component for each app
- Add locale files for DE, EN, IT, FR, ES in all apps
- Update auth pages (login, register, forgot-password) to use shared translations
- Add headerControls snippet to RegisterPage and ForgotPasswordPage
- Export ZitareLogo and NutriPhiLogo from shared-branding

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Till-JS 2025-11-30 00:28:14 +01:00
parent e85ef8babe
commit eab69c512c
41 changed files with 626 additions and 142 deletions

View file

@ -56,6 +56,8 @@
darkBackground?: string;
/** App slider snippet */
appSlider?: Snippet;
/** Header controls snippet (e.g., language selector) */
headerControls?: Snippet;
/** Translations for i18n support */
translations?: Partial<ForgotPasswordTranslations>;
}
@ -70,6 +72,7 @@
lightBackground = '#f5f5f5',
darkBackground = '#121212',
appSlider,
headerControls,
translations = {},
}: Props = $props();
@ -138,6 +141,12 @@
class="flex min-h-screen flex-col justify-between"
style="background-color: {getPageBackground()}; max-width: 100vw; overflow-x: hidden;"
>
{#if headerControls}
<div style="position: absolute; top: 1rem; right: 1rem; z-index: 50; opacity: 0.6; display: flex; gap: 0.75rem;">
{@render headerControls()}
</div>
{/if}
<!-- Top Section - Logo -->
<div class="flex flex-col items-center justify-center pt-16 pb-8">
<div

View file

@ -74,6 +74,8 @@
darkBackground?: string;
/** App slider snippet */
appSlider?: Snippet;
/** Header controls snippet (e.g., language selector) */
headerControls?: Snippet;
/** Translations for i18n support */
translations?: Partial<RegisterTranslations>;
}
@ -89,6 +91,7 @@
lightBackground = '#f5f5f5',
darkBackground = '#121212',
appSlider,
headerControls,
translations = {},
}: Props = $props();
@ -220,6 +223,12 @@
class="flex min-h-screen flex-col justify-between"
style="background-color: {getPageBackground()}; max-width: 100vw; overflow-x: hidden;"
>
{#if headerControls}
<div style="position: absolute; top: 1rem; right: 1rem; z-index: 50; opacity: 0.6; display: flex; gap: 0.75rem;">
{@render headerControls()}
</div>
{/if}
<!-- Top Section - Logo -->
<div class="flex flex-col items-center justify-center pt-16 pb-8">
<div