chore: remove component v1 suffix

This commit is contained in:
Steven
2023-12-22 08:29:02 +08:00
parent 02265a6e1a
commit a3feeceace
44 changed files with 67 additions and 92 deletions

View File

@ -0,0 +1,51 @@
import { IconButton } from "@mui/joy";
import classNames from "classnames";
import copy from "copy-to-clipboard";
import hljs from "highlight.js";
import toast from "react-hot-toast";
import Icon from "../Icon";
interface Props {
language: string;
content: string;
}
const CodeBlock: React.FC<Props> = ({ language, content }: Props) => {
const formatedLanguage = language.toLowerCase() || "plaintext";
let highlightedCode = hljs.highlightAuto(content).value;
try {
const temp = hljs.highlight(content, {
language: formatedLanguage,
}).value;
highlightedCode = temp;
} catch (error) {
// Skip error and use default highlighted code.
}
const handleCopyButtonClick = () => {
copy(content);
toast.success("Copied to clipboard!");
};
return (
<pre className="w-full my-1 p-3 rounded bg-gray-100 dark:bg-zinc-600 whitespace-pre-wrap relative">
<IconButton
size="sm"
className="!absolute top-0.5 right-0.5 opacity-50"
sx={{
"--IconButton-size": "24px",
}}
onClick={handleCopyButtonClick}
>
<Icon.Copy className="w-4 h-auto" />
</IconButton>
<code
className={classNames(`language-${formatedLanguage}`, "block text-sm")}
dangerouslySetInnerHTML={{ __html: highlightedCode }}
></code>
</pre>
);
};
export default CodeBlock;