LibreChat/client/src/components/Messages/Embed.jsx

36 lines
1.1 KiB
React
Raw Normal View History

2023-03-03 09:45:20 -05:00
import React, { useState } from 'react';
2023-03-02 16:31:00 -05:00
import Clipboard from '../svg/Clipboard';
2023-03-03 09:45:20 -05:00
import CheckMark from '../svg/CheckMark';
export default function Embed({ children, language = '', code, matched }) {
const [buttonText, setButtonText] = useState('Copy code');
const isClicked = buttonText === 'Copy code';
const clickHandler = () => {
navigator.clipboard.writeText(code.trim());
setButtonText('Copied!');
setTimeout(() => {
setButtonText('Copy code');
}, 3000);
};
2023-02-23 16:32:08 -05:00
return (
<pre>
<div className="mb-4 rounded-md bg-black">
2023-03-03 09:45:20 -05:00
<div className="relative flex items-center rounded-tl-md rounded-tr-md bg-gray-800 px-4 py-2 font-sans text-xs text-gray-200">
<span className="">{language === 'javascript' && !matched ? '' : language}</span>
<button
className="ml-auto flex gap-2"
onClick={clickHandler}
disabled={!isClicked}
>
{isClicked ? <Clipboard /> : <CheckMark />}
{buttonText}
2023-02-23 16:32:08 -05:00
</button>
</div>
2023-03-03 09:45:20 -05:00
<div className="overflow-y-auto p-4">{children}</div>
2023-02-23 16:32:08 -05:00
</div>
</pre>
);
}