add color theme
This commit is contained in:
parent
c33ab48225
commit
ddb07a651e
6 changed files with 40 additions and 22 deletions
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "@yusurko/vigil",
|
||||
"private": true,
|
||||
"version": "0.1.0-dev40",
|
||||
"version": "0.1.0-dev41",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite dev",
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<script lang="ts">
|
||||
import { RiHome2Line } from 'svelte-remixicon';
|
||||
import { RiHome2Line, RiSettings2Line, RiSettingsLine } from 'svelte-remixicon';
|
||||
|
||||
</script>
|
||||
|
||||
|
|
@ -7,4 +7,7 @@
|
|||
<li>
|
||||
<a href="/"><RiHome2Line /> Home</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/settings"><RiSettings2Line /> Settings</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
|
|
|||
|
|
@ -39,7 +39,8 @@ export type ServerHealth = {
|
|||
post_count: number,
|
||||
user_count: number,
|
||||
me: string | null,
|
||||
csrf_token?: string
|
||||
csrf_token?: string,
|
||||
color_theme?: number
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -3,21 +3,23 @@ import type { ServerHealth, UserEntry } from "$lib/backend";
|
|||
|
||||
let health : {
|
||||
app_name: string, version: string, post_count: number,
|
||||
user_count: number, me: null | UserEntry
|
||||
user_count: number, me: null | UserEntry, color_theme: number
|
||||
} = $state({
|
||||
app_name: 'app_name',
|
||||
version: "?.?",
|
||||
post_count: NaN,
|
||||
user_count: NaN,
|
||||
me: null
|
||||
me: null,
|
||||
color_theme: 0
|
||||
});
|
||||
|
||||
|
||||
export function setHealth ({ name, version, post_count, user_count }: ServerHealth) {
|
||||
export function setHealth ({ name, version, post_count, user_count, color_theme = 0 }: ServerHealth) {
|
||||
health.app_name = name;
|
||||
health.version = version;
|
||||
health.post_count = post_count;
|
||||
health.user_count = user_count;
|
||||
health.color_theme = color_theme;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -50,3 +52,7 @@ export function activeUserCount (): number{
|
|||
export async function sleep (ms: number): Promise<void> {
|
||||
return new Promise(resolve => setTimeout(resolve, ms));
|
||||
}
|
||||
|
||||
export function getColorThemeCode (): number {
|
||||
return health.color_theme;
|
||||
}
|
||||
|
|
@ -1,4 +1,5 @@
|
|||
<script lang="ts">
|
||||
import { getColorThemeCode } from '$lib/globals.svelte';
|
||||
import { version } from '$app/environment';
|
||||
import type { Snippet } from 'svelte';
|
||||
import type { ServerHealth, UserEntry } from '$lib/backend';
|
||||
|
|
@ -17,6 +18,11 @@ let { data, children } : {
|
|||
let {me} = $derived(data);
|
||||
|
||||
const flash = getFlash(page);
|
||||
|
||||
let colorThemeCode = $derived(getColorThemeCode());
|
||||
let colorSchemeCode = $derived(Math.floor(colorThemeCode / 256));
|
||||
let colorScheme = $derived(colorSchemeCode == 1? 'dark': colorSchemeCode == 2? 'light': 'system');
|
||||
let colorThemeCls = $derived(`color-scheme-${colorScheme} color-theme-${colorThemeCode % 256}`);
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
|
|
@ -30,23 +36,26 @@ const flash = getFlash(page);
|
|||
<!-- end SEO tags -->
|
||||
</svelte:head>
|
||||
|
||||
<header>
|
||||
<h1>
|
||||
<a href="/">{appName()}</a>
|
||||
</h1>
|
||||
<!-- .metanav -->
|
||||
<MetaNav user={me} />
|
||||
</header>
|
||||
<global-wrapper class={colorThemeCls}>
|
||||
<header>
|
||||
<h1>
|
||||
<a href="/">{appName()}</a>
|
||||
</h1>
|
||||
<!-- .metanav -->
|
||||
<MetaNav user={me} />
|
||||
</header>
|
||||
|
||||
<main>
|
||||
{#if $flash}
|
||||
<FlashMessage message={$flash?.message}/>
|
||||
{/if}
|
||||
<main>
|
||||
{#if $flash}
|
||||
<FlashMessage message={$flash?.message}/>
|
||||
{/if}
|
||||
|
||||
{@render children()}
|
||||
</main>
|
||||
{@render children()}
|
||||
</main>
|
||||
|
||||
<MobileFooter />
|
||||
</global-wrapper>
|
||||
|
||||
<MobileFooter />
|
||||
|
||||
<style>
|
||||
header {
|
||||
|
|
|
|||
|
|
@ -33,7 +33,6 @@ async function loadTopGuilds (event: LoadEvent): Promise<GuildEntry[] | null> {
|
|||
const respJ = await resp.json();
|
||||
|
||||
const { has: top_guilds } : { has: GuildEntry[] } = respJ;
|
||||
console.log('top_guilds is', top_guilds);
|
||||
return top_guilds;
|
||||
} catch (e) {
|
||||
return null;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue