import { ClipboardDocumentIcon } from "@heroicons/react/24/outline"; import { prismThemes } from "@/data/themes/prism"; import React, { Fragment, useMemo } from "react"; import { Highlight } from "prism-react-renderer"; import { useTheme } from "@/hooks/useTheme"; import { toast } from "react-toastify"; import { Button } from "./Button"; import Prism from "prismjs"; import clsx from "clsx"; export default function CSRSnippet({ children, language, label, showLineNumbers = false, }: { children: string; language: string; label?: string; showLineNumbers?: boolean; }) { const { theme } = useTheme(); const prismTheme = useMemo(() => { return prismThemes[theme]; }, [theme]); const copyToClipboard = () => { navigator.clipboard.writeText(children.trimEnd()); toast.success("Code copiƩ dans le presse-papier"); }; return ( <> {({ className, style, tokens, getTokenProps }) => (
{label && (
{label}
)}
              
                {tokens.map((line, lineIndex) => (
                  
                    {showLineNumbers && (
                      
                        {lineIndex + 1}
                      
                    )}
                    {line
                      .filter((token) => !token.empty)
                      .map((token, tokenIndex) => (
                        
                      ))}
                    {"\n"}
                  
                ))}
              
            
)}
); }