flotilla/src/app/components/Reaction.svelte

31 lines
873 B
Svelte
Raw Normal View History

2025-05-12 22:10:24 +00:00
<script lang="ts">
2026-07-28 16:16:26 +00:00
import type {TrustedEvent} from "@welshman/util"
2025-05-12 22:10:24 +00:00
import {parse, isEmoji, renderAsHtml} from "@welshman/content"
2025-09-10 22:26:39 +00:00
import Heart from "@assets/icons/heart-angle.svg?dataurl"
import ThumbsDown from "@assets/icons/dislike.svg?dataurl"
2025-05-12 22:10:24 +00:00
import Icon from "@lib/components/Icon.svelte"
import ContentEmoji from "@app/components/ContentEmoji.svelte"
2026-07-28 16:16:26 +00:00
type Props = {
event: TrustedEvent
}
const {event}: Props = $props()
2025-05-12 22:10:24 +00:00
</script>
{#if event.content === "+" || event.content === ""}
<Icon icon={Heart} size={4} />
2025-05-12 22:10:24 +00:00
{:else if event.content === "-"}
<Icon icon={ThumbsDown} size={4} />
2025-05-12 22:10:24 +00:00
{:else}
<span class="text-base leading-none">
{#each parse(event) as parsed, i (i)}
{#if isEmoji(parsed)}
<ContentEmoji value={parsed.value} />
{:else}
{@html renderAsHtml(parsed)}
{/if}
{/each}
</span>
2025-05-12 22:10:24 +00:00
{/if}