ui: email preview
This commit is contained in:
@@ -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';
|
||||
Reference in New Issue
Block a user