585c03a11e
Move OfflineSyncIndicator (logo pip) and OfflineSyncBanner from the [recipeLang] layout/page to (main)/+layout.svelte and (main)/+page.svelte. Sync is an app-wide concern, not recipe-specific, and surfacing it on the homepage gives the entry point users actually see when they install the PWA. Indicator pulls language from languageStore since (main) doesn't have data.lang from a recipe-scoped load. Drop the now-unused .banner-wrap CSS and OfflineSyncIndicator/Banner imports from the recipe routes. Auto-sync cadence: - AUTO_SYNC_INTERVAL 30 min -> 1 week. Recipes don't change often enough to justify a half-hourly background download (the user explicitly wanted this dialed back). - Internal poll tick 5 min -> 1 hour. Polling 12x an hour for a weekly event is wasted work; hourly is fine and still responsive when the weekly window opens. Bump 1.65.3 -> 1.66.0.
43 lines
964 B
Svelte
43 lines
964 B
Svelte
<script>
|
|
import Header from '$lib/components/Header.svelte'
|
|
import UserHeader from '$lib/components/UserHeader.svelte';
|
|
import LanguageSelector from '$lib/components/LanguageSelector.svelte';
|
|
import OfflineSyncIndicator from '$lib/components/OfflineSyncIndicator.svelte';
|
|
import { languageStore } from '$lib/stores/language.svelte';
|
|
let { data, children } = $props();
|
|
|
|
let user = $derived(data.session?.user);
|
|
</script>
|
|
|
|
<Header fullSymbol={true}>
|
|
{#snippet language_selector_mobile()}
|
|
<LanguageSelector />
|
|
{/snippet}
|
|
|
|
{#snippet language_selector_desktop()}
|
|
<LanguageSelector />
|
|
{/snippet}
|
|
|
|
{#snippet logo_overlay()}
|
|
<div class="logo-pip">
|
|
<OfflineSyncIndicator lang={languageStore.value} />
|
|
</div>
|
|
{/snippet}
|
|
|
|
{#snippet right_side()}
|
|
<UserHeader {user}></UserHeader>
|
|
{/snippet}
|
|
|
|
{@render children()}
|
|
</Header>
|
|
|
|
<style>
|
|
:global(.logo-pip) {
|
|
position: absolute;
|
|
top: -8px;
|
|
right: -7px;
|
|
z-index: 2;
|
|
pointer-events: auto;
|
|
}
|
|
</style>
|