diff --git a/frontend/src/components/common/CodeBlock.tsx b/frontend/src/components/common/CodeBlock.tsx index cbd9cbad..02e08e45 100644 --- a/frontend/src/components/common/CodeBlock.tsx +++ b/frontend/src/components/common/CodeBlock.tsx @@ -17,47 +17,57 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -import { Box } from "@mui/material"; +import "components/common/syntaxLanguages"; + +import { Box, useTheme } from "@mui/material"; import CopyButton from "components/common/CopyButton"; +import { useThemeMode } from "hooks/useThemeMode"; import React, { type RefObject } from "react"; +import { Light as SyntaxHighlighter } from "react-syntax-highlighter"; +import { githubGist, vs2015 } from "react-syntax-highlighter/dist/esm/styles/hljs"; interface CodeBlockProps { - preRef?: RefObject; - getText: () => string; + content: string; height?: number | string; + language?: string; onScroll?: () => void; - wordBreak?: boolean; + preRef?: RefObject; } export default function CodeBlock({ - preRef, - getText, + content, height, + language = "text", onScroll, - wordBreak, + preRef, }: CodeBlockProps): React.JSX.Element { + const { mode } = useThemeMode(); + const theme = useTheme(); + return - - {getText()} - - - - + + {content} + + {content && + + } ; } diff --git a/frontend/src/components/common/CopyButton.tsx b/frontend/src/components/common/CopyButton.tsx index 2f68feb2..1649c930 100644 --- a/frontend/src/components/common/CopyButton.tsx +++ b/frontend/src/components/common/CopyButton.tsx @@ -23,17 +23,17 @@ import { IconButton, Tooltip } from "@mui/material"; import React, { useEffect, useRef, useState } from "react"; interface CopyButtonProps { - getText: () => string; + text: string; } -export default function CopyButton({ getText }: CopyButtonProps): React.JSX.Element { +export default function CopyButton({ text }: CopyButtonProps): React.JSX.Element { const [copied, setCopied] = useState(false); const timer = useRef>(undefined); useEffect(() => () => clearTimeout(timer.current), []); const handleCopy: () => Promise = async () => { - await navigator.clipboard.writeText(getText()); + await navigator.clipboard.writeText(text); setCopied(true); clearTimeout(timer.current); timer.current = setTimeout(() => setCopied(false), 2000); diff --git a/frontend/src/components/common/RepositorySelect.tsx b/frontend/src/components/common/RepositorySelect.tsx index b80783f2..eb53bc3f 100644 --- a/frontend/src/components/common/RepositorySelect.tsx +++ b/frontend/src/components/common/RepositorySelect.tsx @@ -25,12 +25,12 @@ import type React from "react"; export default function RepositorySelect({ repositorySelect, }: { repositorySelect: SelectedRepositoryResult }): React.JSX.Element { - const { repositories, current } = useRepository(); + const { repositories, currentRepository } = useRepository(); return repository