From bda77cbcb73136c5ee2c2f9e245f6a13006cfc49 Mon Sep 17 00:00:00 2001 From: Till JS Date: Sat, 28 Mar 2026 18:27:30 +0100 Subject: [PATCH] feat(ui): add SyncIndicator to all 19 app layouts Add from @manacore/shared-ui to every app layout. Shows floating pill when browser goes offline ("Offline") and briefly when reconnecting ("Wieder online"). Auto-fades after 3 seconds. Simplified component: uses browser online/offline events instead of sync engine coupling. Works universally without any props. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../apps/web/src/routes/(app)/+layout.svelte | 3 + .../web/src/routes/(protected)/+layout.svelte | 3 + .../apps/web/src/routes/(app)/+layout.svelte | 3 + .../apps/web/src/routes/(app)/+layout.svelte | 2 + .../apps/web/src/routes/(app)/+layout.svelte | 1 + .../apps/web/src/routes/(app)/+layout.svelte | 2 + .../apps/web/src/routes/(app)/+layout.svelte | 2 + .../apps/web/src/routes/(app)/+layout.svelte | 3 + .../apps/web/src/routes/(app)/+layout.svelte | 2 + .../apps/web/src/routes/+layout.svelte | 3 + .../apps/web/src/routes/(app)/+layout.svelte | 3 + .../apps/web/src/routes/+layout.svelte | 1 + .../apps/web/src/routes/(app)/+layout.svelte | 3 + .../apps/web/src/routes/(app)/+layout.svelte | 3 + .../apps/web/src/routes/(app)/+layout.svelte | 2 + .../apps/web/src/routes/+layout.svelte | 1 + .../apps/web/src/routes/+layout.svelte | 4 + .../apps/web/src/routes/(app)/+layout.svelte | 2 + .../src/components/SyncIndicator.svelte | 127 ++++++------------ 19 files changed, 83 insertions(+), 87 deletions(-) diff --git a/apps/calendar/apps/web/src/routes/(app)/+layout.svelte b/apps/calendar/apps/web/src/routes/(app)/+layout.svelte index 4fc8e9e4f..eda0bbfcc 100644 --- a/apps/calendar/apps/web/src/routes/(app)/+layout.svelte +++ b/apps/calendar/apps/web/src/routes/(app)/+layout.svelte @@ -4,6 +4,7 @@ import { setContext } from 'svelte'; import { locale } from 'svelte-i18n'; import { PillNavigation, InputBarHelpModal, ImmersiveModeToggle } from '@manacore/shared-ui'; + import { SyncIndicator } from '@manacore/shared-ui'; import { SplitPaneContainer, setSplitPanelContext, @@ -47,6 +48,7 @@ import { format } from 'date-fns'; import { de } from 'date-fns/locale'; import type { CreatePreview } from '@manacore/shared-ui'; + import { SyncIndicator } from '@manacore/shared-ui'; import { parseEventInput, resolveEventIds, @@ -620,6 +622,7 @@ {#if authStore.isAuthenticated} {/if} +