diff --git a/src/lib/components/content/EmbeddedEvent.svelte b/src/lib/components/content/EmbeddedEvent.svelte
new file mode 100644
index 0000000..013f50c
--- /dev/null
+++ b/src/lib/components/content/EmbeddedEvent.svelte
@@ -0,0 +1,235 @@
+
+
+{#if loading}
+
+ Loading event...
+
+{:else if error}
+
+ Failed to load event
+
+{:else if event}
+ { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); handleClick(e as any); } }}>
+ {#if getImageUrl()}
+
+
})
+
+ {/if}
+
+
{getTitle()}
+ {#if getSubject()}
+
{getSubject()}
+ {/if}
+
{getPreview()}
+
e.stopPropagation()}>View thread →
+
+
+{/if}
+
+
diff --git a/src/lib/components/content/MarkdownRenderer.svelte b/src/lib/components/content/MarkdownRenderer.svelte
index 146fb12..24ef176 100644
--- a/src/lib/components/content/MarkdownRenderer.svelte
+++ b/src/lib/components/content/MarkdownRenderer.svelte
@@ -3,7 +3,10 @@
import { sanitizeMarkdown } from '../../services/security/sanitizer.js';
import { findNIP21Links } from '../../services/nostr/nip21-parser.js';
import { nip19 } from 'nostr-tools';
- import { onMount } from 'svelte';
+ import { onMount, tick } from 'svelte';
+ import ProfileBadge from '../layout/ProfileBadge.svelte';
+ import EmbeddedEvent from './EmbeddedEvent.svelte';
+ import { mountComponent } from './mount-component-action.js';
interface Props {
content?: string;
@@ -13,6 +16,43 @@
let rendered = $state('');
let containerElement: HTMLDivElement | null = $state(null);
+
+ // Track profile badges and embedded events to render
+ let profileBadges = $state