add list support
All checks were successful
Deployment / Deploy website (push) Successful in 3m39s
Deployment / Deploy strapi (push) Successful in 2m49s

This commit is contained in:
Benjamin Palko 2025-06-20 15:54:20 -04:00
parent 8281fdc4e2
commit ac37b5dd76
4 changed files with 86 additions and 1 deletions

View file

@ -0,0 +1,22 @@
<script lang="ts">
import type { Snippet } from 'svelte';
interface Props {
children?: Snippet;
ordered?: boolean;
loose?: boolean;
start?: number;
}
const { children, ordered }: Props = $props();
</script>
{#if ordered}
<ol class="my-2">
{@render children?.()}
</ol>
{:else}
<ul class="my-2">
{@render children?.()}
</ul>
{/if}

View file

@ -0,0 +1,27 @@
<script lang="ts">
import type { Snippet } from 'svelte';
interface Props {
children?: Snippet;
task?: boolean;
checked?: boolean;
listItemIndex: number;
}
const { children, task, checked: initial = false, listItemIndex, ...rest }: Props = $props();
let checked = $derived(initial);
</script>
<li class="ml-2">
{listItemIndex + 1}. {#if task}
<input
type="checkbox"
class="mr-2"
class:hidden={!task}
{checked}
onclick={() => {
checked = !checked;
}}
/>{/if}{@render children?.()}
</li>

View file

@ -0,0 +1,30 @@
<script lang="ts">
import type { Snippet } from 'svelte';
interface Props {
children?: Snippet;
task?: boolean;
checked?: boolean;
listItemIndex?: number;
}
const { children, task, checked: initial = false }: Props = $props();
let checked = $derived(initial);
</script>
<li class="ml-2">
{#if task}
<input
type="checkbox"
class="mr-2"
class:hidden={!task}
{checked}
onclick={() => {
checked = !checked;
}}
/>
{:else}
🞄
{/if}{@render children?.()}
</li>

View file

@ -3,10 +3,13 @@
import Code from '$lib/markdown/renderers/Code.svelte'; import Code from '$lib/markdown/renderers/Code.svelte';
import Heading from '$lib/markdown/renderers/Heading.svelte'; import Heading from '$lib/markdown/renderers/Heading.svelte';
import Link from '$lib/markdown/renderers/Link.svelte'; import Link from '$lib/markdown/renderers/Link.svelte';
import List from '$lib/markdown/renderers/List.svelte';
import OrderedListItem from '$lib/markdown/renderers/OrderedListItem.svelte';
import Paragraph from '$lib/markdown/renderers/Paragraph.svelte';
import UnorderedListItem from '$lib/markdown/renderers/UnorderedListItem.svelte';
import SvelteMarkdown from '@humanspeak/svelte-markdown'; import SvelteMarkdown from '@humanspeak/svelte-markdown';
import dayjs from 'dayjs'; import dayjs from 'dayjs';
import type { PageProps } from './$types'; import type { PageProps } from './$types';
import Paragraph from '$lib/markdown/renderers/Paragraph.svelte';
let { data }: PageProps = $props(); let { data }: PageProps = $props();
@ -24,6 +27,9 @@
source={data.post.body} source={data.post.body}
renderers={{ renderers={{
link: Link, link: Link,
list: List,
orderedlistitem: OrderedListItem,
unorderedlistitem: UnorderedListItem,
code: Code, code: Code,
blockquote: BlockQuote, blockquote: BlockQuote,
heading: Heading, heading: Heading,