39 lines
707 B
TypeScript
39 lines
707 B
TypeScript
/* eslint-disable react/no-danger */
|
|
import { toSanitizedHtml } from "@/lib/sanitize-html";
|
|
|
|
type SafeHtmlProps = {
|
|
html: string;
|
|
className?: string;
|
|
as?: "div" | "p" | "span";
|
|
};
|
|
|
|
export default function SafeHtml({
|
|
html,
|
|
className,
|
|
as = "div",
|
|
}: Readonly<SafeHtmlProps>) {
|
|
if (as === "p") {
|
|
return (
|
|
<p
|
|
className={className}
|
|
dangerouslySetInnerHTML={toSanitizedHtml(html)}
|
|
/>
|
|
);
|
|
}
|
|
|
|
if (as === "span") {
|
|
return (
|
|
<span
|
|
className={className}
|
|
dangerouslySetInnerHTML={toSanitizedHtml(html)}
|
|
/>
|
|
);
|
|
}
|
|
|
|
return (
|
|
<div
|
|
className={className}
|
|
dangerouslySetInnerHTML={toSanitizedHtml(html)}
|
|
/>
|
|
);
|
|
}
|