openreplay/frontend/app/components/ui/CodeBlock/CodeBlock.tsx
Andrey Babushkin fd5c0c9747
Add lokalisation (#3092)
* applied eslint

* add locales and lint the project

* removed error boundary

* updated locales

* fix min files

* fix locales
2025-03-06 17:43:15 +01:00

52 lines
1.3 KiB
TypeScript

import React, { useEffect } from 'react';
import copyFn from 'copy-to-clipboard';
import { Files } from 'lucide-react';
import { Tooltip } from 'antd';
import cn from 'classnames';
export default function CodeBlock({
code = '',
extra = '',
language = 'javascript',
copy = false,
width = undefined,
height = undefined,
}) {
useEffect(() => {
setTimeout(() => {
if (window.Prism) {
Prism.highlightAll();
}
}, 0);
}, [code, language]);
return (
<div className={'relative'}>
{extra || copy ? (
<div className={'w-full flex items-center justify-between mb-2'}>
{extra && <div className="text-sm text-disabled-text">{extra}</div>}
{copy && (
<div
className="cursor-pointer"
onClick={() => copyFn(code)}
>
<Tooltip title={t('Copy code')} placement={'bottomLeft'}>
<Files size={14} />
</Tooltip>
</div>
)}
</div>
) : null}
<pre
className={cn(
'rounded-lg relative',
width ? 'overflow-x-auto' : '',
height ? 'overflow-y-auto' : '',
)}
style={{ maxWidth: width, maxHeight: height }}
>
<code className={`language-${language}`}>{code}</code>
</pre>
</div>
);
}