Add language tag component

- Create LanguageCorner component to display language tag
- Update MessageMarkdown to render LanguageCorner
- Pass language prop from Message to LanguageCorner
This commit is contained in:
Rankin Zheng 2023-10-11 23:51:57 +08:00 committed by bobo.yang
parent e6d5e410fc
commit 950a1328a0
2 changed files with 26 additions and 19 deletions

View File

@ -0,0 +1,24 @@
import React from 'react';
interface LanguageCornerProps {
language: string;
}
const LanguageCorner: React.FC<LanguageCornerProps> = ({ language }) => {
return (
<div style={{ position: 'absolute', top: 0, left: 0 }}>
{language && (
<div style={{
backgroundColor: '#333',
color: '#fff',
padding: '0.2rem 0.5rem',
borderRadius: '0.2rem',
fontSize: '0.8rem',
}}>
{language}
</div>
)}
</div>
);
};
export default LanguageCorner;

View File

@ -1,10 +1,11 @@
import { Button, Anchor } from "@mantine/core"; import { Button, Anchor, Stack, Group, Box } from "@mantine/core";
import React from "react"; import React from "react";
import ReactMarkdown from "react-markdown"; import ReactMarkdown from "react-markdown";
import rehypeRaw from "rehype-raw"; import rehypeRaw from "rehype-raw";
import { Prism as SyntaxHighlighter } from 'react-syntax-highlighter'; import { Prism as SyntaxHighlighter } from 'react-syntax-highlighter';
import { okaidia } from "react-syntax-highlighter/dist/esm/styles/prism"; import { okaidia } from "react-syntax-highlighter/dist/esm/styles/prism";
import CodeButtons from "./CodeButtons"; import CodeButtons from "./CodeButtons";
import LanguageCorner from "./LanguageCorner";
import { observer } from "mobx-react-lite"; import { observer } from "mobx-react-lite";
import { useMst } from "@/views/stores/RootStore"; import { useMst } from "@/views/stores/RootStore";
import { Message } from "@/views/stores/ChatStore"; import { Message } from "@/views/stores/ChatStore";
@ -19,24 +20,6 @@ const MessageMarkdown = observer((props: MessageMarkdownProps) => {
const { children } = props; const { children } = props;
const { chat } = useMst(); const { chat } = useMst();
const LanguageCorner = (props: any) => {
const { language } = props;
return (<div style={{ position: 'absolute', top: 0, left: 0 }}>
{language && (
<div style={{
backgroundColor: '#333',
color: '#fff',
padding: '0.2rem 0.5rem',
borderRadius: '0.2rem',
fontSize: '0.8rem',
}}>
{language}
</div>
)}
</div>);
};
const handleExplain = (value: string | undefined) => { const handleExplain = (value: string | undefined) => {
console.log(value); console.log(value);
switch (value) { switch (value) {