diff --git a/apps/mukke/apps/web/package.json b/apps/mukke/apps/web/package.json index e1cca77b8..26c8d2da1 100644 --- a/apps/mukke/apps/web/package.json +++ b/apps/mukke/apps/web/package.json @@ -36,6 +36,8 @@ "@manacore/shared-auth": "workspace:*", "@manacore/shared-auth-ui": "workspace:*", "@manacore/shared-branding": "workspace:*", + "@manacore/shared-feedback-service": "workspace:^", + "@manacore/shared-feedback-ui": "workspace:^", "@manacore/shared-i18n": "workspace:*", "@manacore/shared-icons": "workspace:*", "@manacore/shared-splitscreen": "workspace:^", diff --git a/apps/mukke/apps/web/src/lib/services/feedback.ts b/apps/mukke/apps/web/src/lib/services/feedback.ts new file mode 100644 index 000000000..143ad1ae9 --- /dev/null +++ b/apps/mukke/apps/web/src/lib/services/feedback.ts @@ -0,0 +1,18 @@ +import { browser } from '$app/environment'; +import { createFeedbackService } from '@manacore/shared-feedback-service'; +import { authStore } from '$lib/stores/auth.svelte'; + +function getAuthUrl(): string { + if (browser && typeof window !== 'undefined') { + const injectedUrl = (window as unknown as { __PUBLIC_MANA_CORE_AUTH_URL__?: string }) + .__PUBLIC_MANA_CORE_AUTH_URL__; + return injectedUrl || 'http://localhost:3001'; + } + return 'http://localhost:3001'; +} + +export const feedbackService = createFeedbackService({ + apiUrl: getAuthUrl(), + appId: 'mukke', + getAuthToken: async () => authStore.getValidToken(), +}); diff --git a/apps/mukke/apps/web/src/routes/(app)/+layout.svelte b/apps/mukke/apps/web/src/routes/(app)/+layout.svelte index a0b8150f3..cbf499632 100644 --- a/apps/mukke/apps/web/src/routes/(app)/+layout.svelte +++ b/apps/mukke/apps/web/src/routes/(app)/+layout.svelte @@ -66,6 +66,8 @@ { href: '/projects', label: 'Editor', icon: 'waveform' }, { href: '/upload', label: 'Upload', icon: 'upload' }, { href: '/settings', label: 'Settings', icon: 'settings' }, + { href: '/feedback', label: 'Feedback', icon: 'chat' }, + { href: '/help', label: 'Help', icon: 'help-circle' }, ]; const navItems = $derived(baseNavItems); diff --git a/apps/mukke/apps/web/src/routes/(app)/feedback/+page.svelte b/apps/mukke/apps/web/src/routes/(app)/feedback/+page.svelte new file mode 100644 index 000000000..7ff699b5a --- /dev/null +++ b/apps/mukke/apps/web/src/routes/(app)/feedback/+page.svelte @@ -0,0 +1,11 @@ + + + + Feedback - Mukke + + + diff --git a/apps/mukke/apps/web/src/routes/(app)/help/+page.svelte b/apps/mukke/apps/web/src/routes/(app)/help/+page.svelte new file mode 100644 index 000000000..bed75c520 --- /dev/null +++ b/apps/mukke/apps/web/src/routes/(app)/help/+page.svelte @@ -0,0 +1,59 @@ + + + + Help - Mukke + + + + + {#snippet icon()}{/snippet} + + + + + + + + + + + {#snippet icon()}{/snippet} + + + + + + + + {#snippet icon()}{/snippet} + + + + + diff --git a/apps/mukke/apps/web/src/routes/(app)/settings/+page.svelte b/apps/mukke/apps/web/src/routes/(app)/settings/+page.svelte new file mode 100644 index 000000000..10d2a3cd0 --- /dev/null +++ b/apps/mukke/apps/web/src/routes/(app)/settings/+page.svelte @@ -0,0 +1,63 @@ + + + + Settings - Mukke + + + + + + {#snippet icon()}{/snippet} + + + + + + + + + {#snippet icon()}{/snippet} + + + + + + + + {#snippet icon()}{/snippet} + + + + + + + + + + + + diff --git a/apps/mukke/apps/web/src/routes/(app)/themes/+page.svelte b/apps/mukke/apps/web/src/routes/(app)/themes/+page.svelte new file mode 100644 index 000000000..47ed9d251 --- /dev/null +++ b/apps/mukke/apps/web/src/routes/(app)/themes/+page.svelte @@ -0,0 +1,19 @@ + + + + Themes - Mukke + + + theme.setVariant(v)} + showModeSelector={true} + currentMode={theme.mode} + onModeChange={(m) => theme.setMode(m)} + showBackButton={true} + onBack={() => goto('/library')} +/>