import { useEffect, useRef } from "react"; import Prism from "prismjs"; import "prismjs/themes/prism-tomorrow.css"; import "prismjs/components/prism-bash"; import "prismjs/components/prism-javascript"; import "prismjs/components/prism-typescript"; import "prismjs/components/prism-json"; import { Button } from "@/components/ui/button"; import { Copy, Check } from "lucide-react"; import { useState } from "react"; interface CodeBlockProps { code: string; language: "bash" | "javascript" | "typescript" | "json"; showCopy?: boolean; } export function CodeBlock({ code, language, showCopy = true }: CodeBlockProps) { const codeRef = useRef(null); const [copied, setCopied] = useState(false); useEffect(() => { if (codeRef.current) { Prism.highlightElement(codeRef.current); } }, [code, language]); const handleCopy = () => { navigator.clipboard.writeText(code); setCopied(true); setTimeout(() => setCopied(false), 2000); }; return (
{showCopy && ( )}
        
          {code}
        
      
); }