ui: email preview

This commit is contained in:
Rotimi Best
2026-06-15 08:31:16 +01:00
parent b67faada08
commit 3e9d8bf3f5
2 changed files with 36 additions and 0 deletions
@@ -0,0 +1,35 @@
<script lang="ts">
import { cn } from '../../tools';
interface Props {
html: string;
class?: string;
}
let { html, class: className }: Props = $props();
let iframeElement = $state<HTMLIFrameElement | null>(null);
$effect(() => {
const doc = iframeElement?.contentDocument;
if (!doc) return;
doc.open();
doc.write(html);
doc.close();
});
</script>
<div
class={cn(
'ui:relative ui:flex ui:h-full ui:w-full ui:items-start ui:justify-center ui:overflow-auto ui:bg-zinc-100 ui:p-4',
className
)}
>
<iframe
bind:this={iframeElement}
title="Email preview"
sandbox="allow-same-origin"
class="ui:h-auto ui:w-full ui:max-w-[600px] ui:rounded-sm ui:border-0 ui:shadow-[0_4px_16px_rgba(0,0,0,0.10)]"
style="min-height: 600px"
></iframe>
</div>
@@ -0,0 +1 @@
export { default as Preview } from './email-preview.svelte';