your personal website on atproto - mirror
blento.app
1<script lang="ts">
2 import type { Item } from '$lib/types';
3 import type { Editor } from '@tiptap/core';
4 import { textAlignClasses, textSizeClasses, verticalAlignClasses } from '.';
5 import type { ContentComponentProps } from '../types';
6 import MarkdownTextEditor from '../utils/MarkdownTextEditor.svelte';
7 import { cn } from '@foxui/core';
8
9 let { item = $bindable<Item>() }: ContentComponentProps = $props();
10
11 let editor: Editor | null = $state(null);
12</script>
13
14<!-- svelte-ignore a11y_no_static_element_interactions -->
15<!-- svelte-ignore a11y_click_events_have_key_events -->
16<div
17 class={cn(
18 'prose dark:prose-invert prose-neutral prose-sm prose-a:no-underline prose-a:text-accent-600 dark:prose-a:text-accent-400 accent:prose-a:text-accent-950 accent:prose-a:underline accent:prose-p:text-base-900 hover:bg-base-700/5 accent:hover:bg-accent-300/20 prose-p:first:mt-0 prose-p:last:mb-0 inline-flex h-full w-full max-w-none cursor-text overflow-y-scroll rounded-md p-2 text-lg transition-colors duration-150',
19 textAlignClasses[item.cardData.textAlign as string],
20 verticalAlignClasses[item.cardData.verticalAlign as string],
21 textSizeClasses[(item.cardData.textSize ?? 0) as number]
22 )}
23 onclick={() => {
24 if (editor?.isFocused) return;
25
26 editor?.commands.focus('end');
27 }}
28>
29 <MarkdownTextEditor bind:item bind:editor />
30</div>