diff options
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/blog/Post.svelte | 67 | ||||
| -rw-r--r-- | src/lib/blog/Post.ts | 1 | ||||
| -rw-r--r-- | src/lib/console.ts | 3 | ||||
| -rw-r--r-- | src/lib/storage.ts | 7 | ||||
| m--------- | src/lib/vendor/storage | 0 |
5 files changed, 65 insertions, 13 deletions
diff --git a/src/lib/blog/Post.svelte b/src/lib/blog/Post.svelte index a204c88..9fcc319 100644 --- a/src/lib/blog/Post.svelte +++ b/src/lib/blog/Post.svelte @@ -3,6 +3,9 @@ </script> <script lang="ts"> + import { building, dev } from '$app/environment'; + import { page } from '$app/state'; + import { parsePostMetadata, type Post } from './Post'; let { @@ -16,22 +19,53 @@ let meta = $derived(parsePostMetadata(post.metadata)); let PostComp = $derived(post.default); + + let ignorePublishedStatus = $derived( + !building && page.url.searchParams.has('ignore-unpublished'), + ); </script> <svelte:head> - <title>{meta.title} - /~mem/blog</title> + <title>{meta.title} - /~mem/blog/</title> <meta name="description" content={meta.blurb} /> </svelte:head> +{#snippet unpublished()} + <div + class="p-4 rounded-lg bg-neutral-950 border-accent-primary border-[1.8px] my-4 sticky top-4 z-50" + > + <h1 class="text-xl mb-2">Unpublished</h1> + <p class="my-1.5 leading-5"> + This article has either not yet been published or has been retracted.<br + /> + This could be due to being unfinished, factual errors, bad formulations, pending + significant corrections, or any number of other reasons. + </p> + {#if !ignorePublishedStatus && dev} + <p class="mt-1 5"> + <a + href={new URL('?ignore-unpublished=+', page.url).href} + class="quicklink">Ignore and read anyway</a + > + </p> + {:else if ignorePublishedStatus} + <p class="mt-1.5">Here be dragons.</p> + {/if} + </div> +{/snippet} + <div class="flex justify-center"> <div class="max-w-2xl w-full"> <h1 class="font-space-grotesk text-5xl mt-8 mb-4"> - <span class="text-accent-primary select-none">: </span - >{meta.title}<span class="text-accent-primary select-none">;</span> + <span class="select-none" + ><span class="text-red-400">❯ </span> less + <span class="text-red-400">'</span></span + >{meta.title}<span class="text-accent-primary select-none">';</span> </h1> - <p class="my-4 font-genericmono"> - <a href={encodeURI(`../`)} class="quicklink">../</a>{#if filename}<span - class="select-none"> ▒ </span + <p class="my-4 font-genericmono flex gap-1 md:gap-2 flex-wrap"> + <a href={encodeURI(`../`)} class="quicklink">../</a + >{#if filename && (meta.published || ignorePublishedStatus || dev)}<span + class="select-none">▒</span ><a href={encodeURI( `https://codeberg.org/dmpmem/tilde/src/branch/master/src/routes/blog/${filename}`, @@ -39,14 +73,21 @@ class="quicklink" target="_blank" rel="noopener noreferrer">src</a - >{/if}<span class="select-none"> ▒ </span>ctime: {meta.created + >{/if}<span class="select-none">▒</span>ctime: {meta.created + .toISOString() + .split('T')[0]}<span class="select-none">▒</span>mtime: {meta.updated .toISOString() - .split('T')[0]}<span class="select-none" - > ▒ </span - >mtime: {meta.updated.toISOString().split('T')[0]} + .split('T')[0]} </p> - <article id="postmd"> - <PostComp /> - </article> + {#if meta.published || ignorePublishedStatus} + {#if !meta.published} + {@render unpublished()} + {/if} + <article id="postmd"> + <PostComp /> + </article> + {:else} + {@render unpublished()} + {/if} </div> </div> diff --git a/src/lib/blog/Post.ts b/src/lib/blog/Post.ts index 440dffa..aa4c422 100644 --- a/src/lib/blog/Post.ts +++ b/src/lib/blog/Post.ts @@ -9,6 +9,7 @@ export type PostMetadata<Parsed extends boolean = false> = { id: string | number; created: Parsed extends true ? Date : string; updated: Parsed extends true ? Date : string; + published: boolean | 'unlisted'; }; export type Post<MetadataParsed extends boolean = false> = { metadata: PostMetadata<MetadataParsed>; diff --git a/src/lib/console.ts b/src/lib/console.ts index 82562cd..3e44e4b 100644 --- a/src/lib/console.ts +++ b/src/lib/console.ts @@ -115,6 +115,9 @@ margin-right: 4px; [`WARNING, NUKING IS NOW LEGAL... WORLDWIDE!!! >~<`], [`Welcome back, Anon`], [`when you suckin on her nuts`], + [`catboys,,,`], + [`\${MESSAGE_OF_THE_DAY}`], + [`i will mo your td`], [`wait.. nuking's actually kinda hot......`], [`you know what happens after a nuke? smoke %c#3`, "color: #ff0000;"], [`Fucking the industry's transfems since 20xx`], diff --git a/src/lib/storage.ts b/src/lib/storage.ts new file mode 100644 index 0000000..0a5334d --- /dev/null +++ b/src/lib/storage.ts @@ -0,0 +1,7 @@ +import { StorageManager } from '$/lib/vendor/storage' + +export const localStorage = new StorageManager('local', 'mem.estrogen.zone:'); +export const sessionStorage = new StorageManager('session', 'mem.estrogen.zone:'); +export const memoryStorage = new StorageManager('memory', 'mem.estrogen.zone:'); + +export const blogStorage = new StorageManager(localStorage, 'blog:'); diff --git a/src/lib/vendor/storage b/src/lib/vendor/storage new file mode 160000 +Subproject 21e62b1642b299bf6b60d956045e1848486a70d |