diff --git a/apps-archived/maerchenzauber/apps/web/src/lib/api/feedback.ts b/apps-archived/maerchenzauber/apps/web/src/lib/api/feedback.ts new file mode 100644 index 000000000..4b887ab09 --- /dev/null +++ b/apps-archived/maerchenzauber/apps/web/src/lib/api/feedback.ts @@ -0,0 +1,15 @@ +/** + * Feedback Service Instance for Maerchenzauber Web App + */ + +import { createFeedbackService } from '@manacore/shared-feedback-service'; +import { authStore } from '$lib/stores/authStore.svelte'; +import { PUBLIC_MANA_CORE_AUTH_URL } from '$env/static/public'; + +const MANA_AUTH_URL = PUBLIC_MANA_CORE_AUTH_URL || 'http://localhost:3001'; + +export const feedbackService = createFeedbackService({ + apiUrl: MANA_AUTH_URL, + appId: 'maerchenzauber', + getAuthToken: async () => authStore.getAccessToken(), +}); diff --git a/apps-archived/maerchenzauber/apps/web/src/routes/(protected)/+layout.svelte b/apps-archived/maerchenzauber/apps/web/src/routes/(protected)/+layout.svelte index c08917976..b51012de7 100644 --- a/apps-archived/maerchenzauber/apps/web/src/routes/(protected)/+layout.svelte +++ b/apps-archived/maerchenzauber/apps/web/src/routes/(protected)/+layout.svelte @@ -3,9 +3,25 @@ import { page } from '$app/stores'; import { authStore } from '$lib/stores/authStore.svelte'; import { onMount } from 'svelte'; - import Sidebar from '$lib/components/layout/Sidebar.svelte'; - import Header from '$lib/components/layout/Header.svelte'; import ToastContainer from '$lib/components/ui/ToastContainer.svelte'; + import { PillNavigation } from '@manacore/shared-ui'; + import type { PillNavItem } from '@manacore/shared-ui'; + import { getPillAppItems } from '@manacore/shared-branding'; + + // App switcher items + const appItems = getPillAppItems('maerchenzauber'); + + // User email for dropdown + let userEmail = $derived(authStore.user?.email); + + // Navigation items for Märchenzauber + const navItems: PillNavItem[] = [ + { href: '/dashboard', label: 'Dashboard', icon: 'home' }, + { href: '/stories', label: 'Geschichten', icon: 'document' }, + { href: '/characters', label: 'Charaktere', icon: 'users' }, + { href: '/discover', label: 'Entdecken', icon: 'compass' }, + { href: '/settings', label: 'Einstellungen', icon: 'settings' }, + ]; let { children } = $props(); let loading = $state(true); diff --git a/apps-archived/maerchenzauber/apps/web/src/routes/(protected)/feedback/+page.svelte b/apps-archived/maerchenzauber/apps/web/src/routes/(protected)/feedback/+page.svelte index dadae419c..c236760a7 100644 --- a/apps-archived/maerchenzauber/apps/web/src/routes/(protected)/feedback/+page.svelte +++ b/apps-archived/maerchenzauber/apps/web/src/routes/(protected)/feedback/+page.svelte @@ -1,425 +1,11 @@ - - Feedback | Märchenzauber - - -
- -
-
-

Feedback & Ideen

-

- Stimme für Features ab und teile deine Ideen -

-
- -
- - -
- -
- {#each ['all', 'feature', 'bug', 'improvement'] as filter} - - {/each} -
- - - -
- - - {#if loading} -
- {#each Array(5) as _} -
- {/each} -
- {:else if filteredItems.length === 0} -
- - - -

Noch kein Feedback

-

- Sei der Erste, der eine Idee teilt! -

-
- {:else} -
- {#each filteredItems as item (item.id)} -
- - - - -
-
-

- {item.title} -

- - {statusLabels[item.status]} - -
-

- {item.description} -

-
- - {categoryLabels[item.category]} - - - {new Date(item.createdAt).toLocaleDateString('de-DE')} - -
-
-
- {/each} -
- {/if} - - - {#if showForm} -
(showForm = false)} - onkeydown={(e) => e.key === 'Escape' && (showForm = false)} - role="button" - tabindex="0" - > -
e.stopPropagation()} - onkeydown={(e) => e.stopPropagation()} - role="dialog" - > -
-

Neue Idee einreichen

- -
- -
{ - e.preventDefault(); - handleSubmit(); - }} - class="space-y-4" - > - -
- -
- {#each ['feature', 'bug', 'improvement'] as cat} - - {/each} -
-
- - -
- - -
- - -
- - -
- - - -
-
-
- {/if} -
+ diff --git a/apps-archived/memoro/apps/web/src/lib/api/feedback.ts b/apps-archived/memoro/apps/web/src/lib/api/feedback.ts new file mode 100644 index 000000000..2509dfc8f --- /dev/null +++ b/apps-archived/memoro/apps/web/src/lib/api/feedback.ts @@ -0,0 +1,15 @@ +/** + * Feedback Service Instance for Memoro Web App + */ + +import { createFeedbackService } from '@manacore/shared-feedback-service'; +import { authStore } from '$lib/stores/auth'; +import { PUBLIC_MANA_CORE_AUTH_URL } from '$env/static/public'; + +const MANA_AUTH_URL = PUBLIC_MANA_CORE_AUTH_URL || 'http://localhost:3001'; + +export const feedbackService = createFeedbackService({ + apiUrl: MANA_AUTH_URL, + appId: 'memoro', + getAuthToken: async () => authStore.getAccessToken(), +}); diff --git a/apps-archived/memoro/apps/web/src/routes/(protected)/+layout.svelte b/apps-archived/memoro/apps/web/src/routes/(protected)/+layout.svelte index ae9268453..51bf6abc3 100644 --- a/apps-archived/memoro/apps/web/src/routes/(protected)/+layout.svelte +++ b/apps-archived/memoro/apps/web/src/routes/(protected)/+layout.svelte @@ -11,6 +11,13 @@ import { onMount } from 'svelte'; import { PillNavigation } from '@manacore/shared-ui'; import type { PillNavItem, PillDropdownItem } from '@manacore/shared-ui'; + import { getPillAppItems } from '@manacore/shared-branding'; + + // App switcher items + const appItems = getPillAppItems('memoro'); + + // User email for dropdown + let userEmail = $derived(auth.user?.email); // Navigation shortcuts (Ctrl+1-9) const navRoutes = [ @@ -179,6 +186,13 @@ {languageItems} {currentLanguageLabel} primaryColor="#F7D44C" + showAppSwitcher={true} + {appItems} + {userEmail} + settingsHref="/settings" + manaHref="/subscription" + profileHref="/profile" + allAppsHref="/apps" > {#snippet logo()} + import { AppsPage } from '@manacore/shared-ui'; + + + + Alle Apps - Memoro + + +
+ +
+ + diff --git a/apps-archived/memoro/apps/web/src/routes/(protected)/feedback/+page.svelte b/apps-archived/memoro/apps/web/src/routes/(protected)/feedback/+page.svelte new file mode 100644 index 000000000..7406c4186 --- /dev/null +++ b/apps-archived/memoro/apps/web/src/routes/(protected)/feedback/+page.svelte @@ -0,0 +1,11 @@ + + + diff --git a/apps-archived/news/apps/web/src/lib/api/feedback.ts b/apps-archived/news/apps/web/src/lib/api/feedback.ts new file mode 100644 index 000000000..3d14b71b9 --- /dev/null +++ b/apps-archived/news/apps/web/src/lib/api/feedback.ts @@ -0,0 +1,15 @@ +/** + * Feedback Service Instance for News Web App + */ + +import { createFeedbackService } from '@manacore/shared-feedback-service'; +import { authStore } from '$lib/stores/auth.svelte'; +import { PUBLIC_MANA_CORE_AUTH_URL } from '$env/static/public'; + +const MANA_AUTH_URL = PUBLIC_MANA_CORE_AUTH_URL || 'http://localhost:3001'; + +export const feedbackService = createFeedbackService({ + apiUrl: MANA_AUTH_URL, + appId: 'news', + getAuthToken: async () => authStore.getAccessToken(), +}); diff --git a/apps-archived/news/apps/web/src/routes/(protected)/feedback/+page.svelte b/apps-archived/news/apps/web/src/routes/(protected)/feedback/+page.svelte new file mode 100644 index 000000000..8b6a649b6 --- /dev/null +++ b/apps-archived/news/apps/web/src/routes/(protected)/feedback/+page.svelte @@ -0,0 +1,11 @@ + + + diff --git a/apps-archived/nutriphi/apps/web/src/lib/api/feedback.ts b/apps-archived/nutriphi/apps/web/src/lib/api/feedback.ts new file mode 100644 index 000000000..5c357be8b --- /dev/null +++ b/apps-archived/nutriphi/apps/web/src/lib/api/feedback.ts @@ -0,0 +1,15 @@ +/** + * Feedback Service Instance for Nutriphi Web App + */ + +import { createFeedbackService } from '@manacore/shared-feedback-service'; +import { authStore } from '$lib/stores/auth'; +import { PUBLIC_MANA_CORE_AUTH_URL } from '$env/static/public'; + +const MANA_AUTH_URL = PUBLIC_MANA_CORE_AUTH_URL || 'http://localhost:3001'; + +export const feedbackService = createFeedbackService({ + apiUrl: MANA_AUTH_URL, + appId: 'nutriphi', + getAuthToken: async () => authStore.getAccessToken(), +}); diff --git a/apps-archived/nutriphi/apps/web/src/routes/(protected)/+layout.svelte b/apps-archived/nutriphi/apps/web/src/routes/(protected)/+layout.svelte index 87cce06a0..e14327475 100644 --- a/apps-archived/nutriphi/apps/web/src/routes/(protected)/+layout.svelte +++ b/apps-archived/nutriphi/apps/web/src/routes/(protected)/+layout.svelte @@ -10,6 +10,13 @@ import { onMount } from 'svelte'; import { PillNavigation } from '@manacore/shared-ui'; import type { PillNavItem } from '@manacore/shared-ui'; + import { getPillAppItems } from '@manacore/shared-branding'; + + // App switcher items + const appItems = getPillAppItems('nutriphi'); + + // User email for dropdown + let userEmail = $derived(auth.user?.email); // Navigation shortcuts (Ctrl+1-7) const navRoutes = [ @@ -134,6 +141,13 @@ onCollapsedChange={handleCollapsedChange} showThemeToggle={true} primaryColor="#22c55e" + showAppSwitcher={true} + {appItems} + {userEmail} + settingsHref="/settings" + manaHref="/subscription" + profileHref="/profile" + allAppsHref="/apps" > {#snippet logo()} 🥗 diff --git a/apps-archived/nutriphi/apps/web/src/routes/(protected)/apps/+page.svelte b/apps-archived/nutriphi/apps/web/src/routes/(protected)/apps/+page.svelte new file mode 100644 index 000000000..4704a5626 --- /dev/null +++ b/apps-archived/nutriphi/apps/web/src/routes/(protected)/apps/+page.svelte @@ -0,0 +1,17 @@ + + + + Alle Apps - Nutriphi + + +
+ +
+ + diff --git a/apps-archived/nutriphi/apps/web/src/routes/(protected)/feedback/+page.svelte b/apps-archived/nutriphi/apps/web/src/routes/(protected)/feedback/+page.svelte new file mode 100644 index 000000000..097686023 --- /dev/null +++ b/apps-archived/nutriphi/apps/web/src/routes/(protected)/feedback/+page.svelte @@ -0,0 +1,11 @@ + + + diff --git a/apps-archived/uload/apps/web/src/lib/api/feedback.ts b/apps-archived/uload/apps/web/src/lib/api/feedback.ts new file mode 100644 index 000000000..eff57a51d --- /dev/null +++ b/apps-archived/uload/apps/web/src/lib/api/feedback.ts @@ -0,0 +1,15 @@ +/** + * Feedback Service Instance for uLoad Web App + */ + +import { createFeedbackService } from '@manacore/shared-feedback-service'; +import { pb } from '$lib/pocketbase'; +import { PUBLIC_MANA_CORE_AUTH_URL } from '$env/static/public'; + +const MANA_AUTH_URL = PUBLIC_MANA_CORE_AUTH_URL || 'http://localhost:3001'; + +export const feedbackService = createFeedbackService({ + apiUrl: MANA_AUTH_URL, + appId: 'uload', + getAuthToken: async () => pb.authStore.token || '', +}); diff --git a/apps-archived/uload/apps/web/src/routes/(app)/feedback/+page.svelte b/apps-archived/uload/apps/web/src/routes/(app)/feedback/+page.svelte new file mode 100644 index 000000000..6ac63af63 --- /dev/null +++ b/apps-archived/uload/apps/web/src/routes/(app)/feedback/+page.svelte @@ -0,0 +1,11 @@ + + + diff --git a/apps-archived/wisekeep/apps/web/src/lib/api/feedback.ts b/apps-archived/wisekeep/apps/web/src/lib/api/feedback.ts new file mode 100644 index 000000000..108667aa0 --- /dev/null +++ b/apps-archived/wisekeep/apps/web/src/lib/api/feedback.ts @@ -0,0 +1,15 @@ +/** + * Feedback Service Instance for Wisekeep Web App + */ + +import { createFeedbackService } from '@manacore/shared-feedback-service'; +import { authStore } from '$lib/stores/auth.svelte'; +import { PUBLIC_MANA_CORE_AUTH_URL } from '$env/static/public'; + +const MANA_AUTH_URL = PUBLIC_MANA_CORE_AUTH_URL || 'http://localhost:3001'; + +export const feedbackService = createFeedbackService({ + apiUrl: MANA_AUTH_URL, + appId: 'wisekeep', + getAuthToken: async () => authStore.getAccessToken(), +}); diff --git a/apps-archived/wisekeep/apps/web/src/routes/(protected)/feedback/+page.svelte b/apps-archived/wisekeep/apps/web/src/routes/(protected)/feedback/+page.svelte new file mode 100644 index 000000000..fdf3cdd12 --- /dev/null +++ b/apps-archived/wisekeep/apps/web/src/routes/(protected)/feedback/+page.svelte @@ -0,0 +1,11 @@ + + + diff --git a/apps/zitare/apps/web/src/lib/api/feedback.ts b/apps/zitare/apps/web/src/lib/api/feedback.ts index 2bd2db69e..6ede1ed8c 100644 --- a/apps/zitare/apps/web/src/lib/api/feedback.ts +++ b/apps/zitare/apps/web/src/lib/api/feedback.ts @@ -4,8 +4,9 @@ import { createFeedbackService } from '@manacore/shared-feedback-service'; import { authStore } from '$lib/stores/auth.svelte'; +import { PUBLIC_MANA_CORE_AUTH_URL } from '$env/static/public'; -const MANA_AUTH_URL = 'http://localhost:3001'; // TODO: Use PUBLIC_MANA_CORE_AUTH_URL from env +const MANA_AUTH_URL = PUBLIC_MANA_CORE_AUTH_URL || 'http://localhost:3001'; export const feedbackService = createFeedbackService({ apiUrl: MANA_AUTH_URL, diff --git a/apps/zitare/apps/web/src/routes/+layout.svelte b/apps/zitare/apps/web/src/routes/+layout.svelte index 5c1ebac5b..973c5d101 100644 --- a/apps/zitare/apps/web/src/routes/+layout.svelte +++ b/apps/zitare/apps/web/src/routes/+layout.svelte @@ -63,19 +63,17 @@ ); let currentLanguageLabel = $derived(getCurrentLanguageLabel(currentLocale)); - // User email for user dropdown - let userEmail = $derived(authStore.user?.email); + // User email for user dropdown (fallback to 'Menü' when not logged in) + let userEmail = $derived(authStore.user?.email || 'Menü'); // Navigation items for Zitare const navItems: PillNavItem[] = [ - { href: '/', label: 'Start', icon: 'home' }, + { href: '/', label: 'Zitate', icon: 'chat' }, { href: '/search', label: 'Suche', icon: 'search' }, - { href: '/discover', label: 'Entdecken', icon: 'compass' }, { href: '/authors', label: 'Autoren', icon: 'users' }, { href: '/favorites', label: 'Favoriten', icon: 'heart' }, { href: '/lists', label: 'Listen', icon: 'list' }, - { href: '/profile', label: 'Profil', icon: 'user' }, - { href: '/mana', label: 'Mana', icon: 'sparkles' }, + { href: '/feedback', label: 'Feedback', icon: 'chat' }, ]; // Navigation shortcuts (Ctrl+1-5) @@ -200,6 +198,7 @@ {currentLanguageLabel} showLogout={authStore.isAuthenticated} onLogout={handleLogout} + loginHref="/login" primaryColor="#f59e0b" showAppSwitcher={true} {appItems} @@ -207,6 +206,7 @@ settingsHref="/settings" manaHref="/mana" profileHref="/profile" + allAppsHref="/apps" />