summaryrefslogtreecommitdiffhomepage
path: root/packages/web/src/components/MarkdownView.tsx
blob: 319ea72a6da698df548b53cadf8cc3d592a560d5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import { type JSX, splitProps, createResource } from "solid-js"
import { marked } from "marked"
import styles from "./markdownview.module.css"

interface MarkdownViewProps extends JSX.HTMLAttributes<HTMLDivElement> {
  markdown: string
}

function MarkdownView(props: MarkdownViewProps) {
  const [local, rest] = splitProps(props, ["markdown"])
  const [html] = createResource(async () => {
    return marked.parse(local.markdown)
  })

  return (
    <div innerHTML={html()} class={styles["markdown-body"]} {...rest} />
  )
}

export default MarkdownView