-
Tim Bastin authoredTim Bastin authored
CopyCode.tsx 1.47 KiB
// Copyright 2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH.
// SPDX-License-Identifier: MIT
import React, { FunctionComponent } from 'react'
import { useToast } from '../hooks/use-toast'
import Highlighter from './Highlighter'
interface Props {
codeString: string
language: 'json'
}
const CopyCode: FunctionComponent<Props> = (props) => {
const { toast } = useToast()
const handleCopy = () => {
navigator.clipboard.writeText(props.codeString)
toast({
title: 'Copied to clipboard',
description: 'The code has been copied to your clipboard.',
})
}
return (
<div
style={{
height:
14 /*padding*/ + props.codeString.split('\n').length * 21.6,
}}
className="relative w-full overflow-hidden rounded-lg border"
>
<div className="bg-card absolute bottom-0 left-0 right-0 top-0 animate-pulse" />
<button
onClick={handleCopy}
className="absolute right-1 top-1 z-10 rounded-lg bg-gray-700 p-1 px-2 text-sm text-white transition-all hover:bg-white/40"
>
Copy
</button>
<div className="relative">
<Highlighter
codeString={props.codeString}
language={props.language}
/>
</div>
</div>
)
}
export default CopyCode