Spaces:
Build error
Build error
import React from "react"; | |
import { ExtraProps } from "react-markdown"; | |
import { Prism as SyntaxHighlighter } from "react-syntax-highlighter"; | |
import { vscDarkPlus } from "react-syntax-highlighter/dist/esm/styles/prism"; | |
// See https://github.com/remarkjs/react-markdown?tab=readme-ov-file#use-custom-components-syntax-highlight | |
/** | |
* Component to render code blocks in markdown. | |
*/ | |
export function code({ | |
children, | |
className, | |
}: React.ClassAttributes<HTMLElement> & | |
React.HTMLAttributes<HTMLElement> & | |
ExtraProps) { | |
const match = /language-(\w+)/.exec(className || ""); // get the language | |
if (!match) { | |
const isMultiline = String(children).includes("\n"); | |
if (!isMultiline) { | |
return ( | |
<code | |
className={className} | |
style={{ | |
backgroundColor: "#2a3038", | |
padding: "0.2em 0.4em", | |
borderRadius: "4px", | |
color: "#e6edf3", | |
border: "1px solid #30363d", | |
}} | |
> | |
{children} | |
</code> | |
); | |
} | |
return ( | |
<pre | |
style={{ | |
backgroundColor: "#2a3038", | |
padding: "1em", | |
borderRadius: "4px", | |
color: "#e6edf3", | |
border: "1px solid #30363d", | |
overflow: "auto", | |
}} | |
> | |
<code className={className}>{String(children).replace(/\n$/, "")}</code> | |
</pre> | |
); | |
} | |
return ( | |
<SyntaxHighlighter | |
className="rounded-lg" | |
style={vscDarkPlus} | |
language={match?.[1]} | |
PreTag="div" | |
> | |
{String(children).replace(/\n$/, "")} | |
</SyntaxHighlighter> | |
); | |
} | |