diff options
Diffstat (limited to 'src/routes')
| -rw-r--r-- | src/routes/+layout.svelte | 60 | ||||
| -rw-r--r-- | src/routes/+page.svelte | 14 | ||||
| -rw-r--r-- | src/routes/completed/+page.svelte | 10 |
3 files changed, 62 insertions, 22 deletions
diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 39a2e40b..d08e6828 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -29,10 +29,15 @@ import settingsSyncTimes from "$stores/settingsSyncTimes"; import Announcement from "$lib/Announcement.svelte"; import Message from "$lib/Loading/Message.svelte"; import { requestNotifications } from "$lib/Utility/notifications"; +import { executiveCopy } from "$lib/Utility/executiveMode"; import { database as userDatabase } from "$lib/Database/IDB/user"; import CommandPalette from "$lib/CommandPalette/CommandPalette.svelte"; import { defaultActions } from "$lib/CommandPalette/actions"; import { toolsAsCommandPaletteActions } from "$lib/Tools/tools"; +import aprilFools, { + aprilFoolsVisible, + hydrateAprilFools, +} from "$stores/aprilFools"; import localforage from "localforage"; import { dev } from "$app/environment"; import { injectAnalytics } from "@vercel/analytics/sveltekit"; @@ -90,6 +95,8 @@ const handleScroll = () => { }; onMount(async () => { + hydrateAprilFools(); + if (browser) { if (await localforage.getItem("redirect")) { window.location.href = (await localforage.getItem("redirect")) ?? "/"; @@ -213,41 +220,66 @@ $: { {:else} <Announcement /> + {#if aprilFoolsVisible()} + <div class="card card-centered april-fools-banner"> + <b>Executive Mode {$aprilFools ? 'enabled' : 'disabled'}.</b> + All media are now deliverables. + <Spacer /> + <button class="small-button" onclick={() => aprilFools.toggle()}> + {$aprilFools ? 'Disable' : 'Enable'} Executive Mode + </button> + </div> + {/if} + <div class="container"> <div class="card card-centered header" class:header-hidden={!isHeaderVisible}> <div> - <a href={root('/')} class="header-item">{$locale().navigation.home}</a><a + <a href={root('/')} class="header-item" + >{executiveCopy($aprilFools, $locale().navigation.home)}</a + ><a href={root('/completed')} class="header-item" > - {$locale().navigation.completed} + {executiveCopy($aprilFools, $locale().navigation.completed)} </a> <Dropdown items={[ - { name: $locale().navigation.subtitleSchedule, url: root('/schedule') }, + { + name: executiveCopy($aprilFools, $locale().navigation.subtitleSchedule), + url: root('/schedule') + }, { name: $locale().navigation.hololive, url: root('/hololive') }, { name: $locale().tools.tool.characterBirthdays.short, url: root('/birthdays') }, - { name: $locale().navigation.newReleases, url: root('/updates') } + { name: executiveCopy($aprilFools, $locale().navigation.newReleases), url: root('/updates') } ]} header={false} > - <span slot="title" class="header-item">{$locale().navigation.schedule}</span> + <span slot="title" class="header-item"> + {executiveCopy($aprilFools, $locale().navigation.schedule)} + </span> </Dropdown> - <a href={root('/tools')} class="header-item">{$locale().navigation.tools}</a> - <a href={root('/settings')} class="header-item">{$locale().navigation.settings}</a> + <a href={root('/tools')} class="header-item" + >{executiveCopy($aprilFools, $locale().navigation.tools)}</a + > + <a href={root('/settings')} class="header-item" + >{executiveCopy($aprilFools, $locale().navigation.settings)}</a + > <span class="header-item opaque separator">•</span> {#if data.user} <Dropdown items={[ - { name: $locale().navigation.myProfile, url: root(`/user/${$userIdentity.name}`) }, { - name: $locale().navigation.myBadgeWall, + name: executiveCopy($aprilFools, $locale().navigation.myProfile), + url: root(`/user/${$userIdentity.name}`) + }, + { + name: executiveCopy($aprilFools, $locale().navigation.myBadgeWall), url: root(`/user/${$userIdentity.name}/badges`) }, { - name: $locale().navigation.logOut, + name: executiveCopy($aprilFools, $locale().navigation.logOut), url: '#', preventDefault: true, onClick: async () => { @@ -263,7 +295,7 @@ $: { header={false} > <span slot="title" class="header-item"> - {$locale().navigation.profile} + {executiveCopy($aprilFools, $locale().navigation.profile)} </span> </Dropdown> {/if} @@ -279,7 +311,7 @@ $: { ); }} > - {$locale().navigation.logIn} + {executiveCopy($aprilFools, $locale().navigation.logIn)} </a> {:else if data.user} <a href={root(`/user/${$userIdentity.name}`)} class="header-item"> @@ -332,6 +364,10 @@ $: { transition: transform 0.3s ease; } + .april-fools-banner { + margin-bottom: 1rem; + } + .header-hidden { transform: translateY(-150%); } diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 268e9713..a3fcad28 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -8,6 +8,8 @@ import ListTitle from "$lib/List/ListTitle.svelte"; import HeadTitle from "$lib/Home/HeadTitle.svelte"; import { createHeightObserver } from "$lib/Utility/html.js"; import Skeleton from "$lib/Loading/Skeleton.svelte"; +import aprilFools from "$stores/aprilFools"; +import { executiveTitle } from "$lib/Utility/executiveMode"; import locale from "$stores/locale.js"; import Landing from "$lib/Landing.svelte"; import LandingHero from "$lib/LandingHero.svelte"; @@ -106,12 +108,12 @@ onDestroy(() => removeHeightObserver?.()); {#if UpcomingAnimeListComponent} <UpcomingAnimeListComponent user={data.user} /> {:else} - <ListTitle title={$locale().lists.upcoming.episodes} /> + <ListTitle title={executiveTitle($aprilFools, $locale().lists.upcoming.episodes)} /> <Skeleton card={false} count={5} height="0.9rem" list /> {/if} {:else} - <ListTitle title={$locale().lists.upcoming.episodes} /> + <ListTitle title={executiveTitle($aprilFools, $locale().lists.upcoming.episodes)} /> <Skeleton card={false} count={5} height="0.9rem" list /> {/if} @@ -123,7 +125,7 @@ onDestroy(() => removeHeightObserver?.()); <IndexColumnComponent user={data.user} userIdentity={$userIdentity} /> {:else} <details bind:open={$stateBin.dueAnimeListOpen} class="list list-due"> - <ListTitle title={$locale().lists.due.episodes} /> + <ListTitle title={executiveTitle($aprilFools, $locale().lists.due.episodes)} /> <Skeleton card={false} count={5} height="0.9rem" list /> </details> @@ -137,7 +139,7 @@ onDestroy(() => removeHeightObserver?.()); <IndexColumnComponent user={data.user} userIdentity={$userIdentity} /> {:else} <details bind:open={$stateBin.dueAnimeListOpen} class="list list-due"> - <ListTitle title={$locale().lists.due.episodes} /> + <ListTitle title={executiveTitle($aprilFools, $locale().lists.due.episodes)} /> <Skeleton card={false} count={5} height="0.9rem" list /> </details> @@ -154,12 +156,12 @@ onDestroy(() => removeHeightObserver?.()); due={true} /> {:else} - <ListTitle title={$locale().lists.due.mangaAndLightNovels} /> + <ListTitle title={executiveTitle($aprilFools, $locale().lists.due.mangaAndLightNovels)} /> <Skeleton card={false} count={5} height="0.9rem" list /> {/if} {:else} - <ListTitle title={$locale().lists.due.mangaAndLightNovels} /> + <ListTitle title={executiveTitle($aprilFools, $locale().lists.due.mangaAndLightNovels)} /> <Skeleton card={false} count={5} height="0.9rem" list /> {/if} diff --git a/src/routes/completed/+page.svelte b/src/routes/completed/+page.svelte index bcad912b..69706b8e 100644 --- a/src/routes/completed/+page.svelte +++ b/src/routes/completed/+page.svelte @@ -9,6 +9,8 @@ import HeadTitle from "$lib/Home/HeadTitle.svelte"; import { createHeightObserver } from "$lib/Utility/html.js"; import Skeleton from "$lib/Loading/Skeleton.svelte"; import locale from "$stores/locale.js"; +import aprilFools from "$stores/aprilFools"; +import { executiveTitle } from "$lib/Utility/executiveMode"; import Landing from "$lib/Landing.svelte"; import stateBin, { hydrateStateBin } from "$stores/stateBin.js"; import type { PageData } from "./$types"; @@ -84,12 +86,12 @@ onDestroy(() => removeHeightObserver?.()); {#if WatchingAnimeListComponent} <WatchingAnimeListComponent user={data.user} /> {:else} - <ListTitle title={$locale().lists.completed.anime} /> + <ListTitle title={executiveTitle($aprilFools, $locale().lists.completed.anime)} /> <Skeleton card={false} count={5} height="0.9rem" list /> {/if} {:else} - <ListTitle title={$locale().lists.completed.anime} /> + <ListTitle title={executiveTitle($aprilFools, $locale().lists.completed.anime)} /> <Skeleton card={false} count={5} height="0.9rem" list /> {/if} @@ -106,12 +108,12 @@ onDestroy(() => removeHeightObserver?.()); due={false} /> {:else} - <ListTitle title={$locale().lists.completed.mangaAndLightNovels} /> + <ListTitle title={executiveTitle($aprilFools, $locale().lists.completed.mangaAndLightNovels)} /> <Skeleton card={false} count={5} height="0.9rem" list /> {/if} {:else} - <ListTitle title={$locale().lists.completed.mangaAndLightNovels} /> + <ListTitle title={executiveTitle($aprilFools, $locale().lists.completed.mangaAndLightNovels)} /> <Skeleton card={false} count={5} height="0.9rem" list /> {/if} |