From b6d55762270fa61bef9cfcfd4e01aa8184bdb10e Mon Sep 17 00:00:00 2001 From: Mckay Wrigley Date: Sat, 18 Mar 2023 02:32:30 -0600 Subject: [PATCH] light/dark code highlight --- components/Chat/Chat.tsx | 8 ++++++-- components/Chat/ChatMessage.tsx | 4 +++- components/Markdown/CodeBlock.tsx | 11 ++++++----- pages/index.tsx | 1 + 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/components/Chat/Chat.tsx b/components/Chat/Chat.tsx index c310bfc..9f0301c 100644 --- a/components/Chat/Chat.tsx +++ b/components/Chat/Chat.tsx @@ -9,11 +9,12 @@ interface Props { model: OpenAIModel; messages: Message[]; loading: boolean; + lightMode: "light" | "dark"; onSend: (message: Message) => void; onSelect: (model: OpenAIModel) => void; } -export const Chat: FC = ({ model, messages, loading, onSend, onSelect }) => { +export const Chat: FC = ({ model, messages, loading, lightMode, onSend, onSelect }) => { const messagesEndRef = useRef(null); const scrollToBottom = () => { @@ -44,7 +45,10 @@ export const Chat: FC = ({ model, messages, loading, onSend, onSelect }) {messages.map((message, index) => (
- +
))} {loading && } diff --git a/components/Chat/ChatMessage.tsx b/components/Chat/ChatMessage.tsx index 698cfb8..4441264 100644 --- a/components/Chat/ChatMessage.tsx +++ b/components/Chat/ChatMessage.tsx @@ -5,9 +5,10 @@ import { CodeBlock } from "../Markdown/CodeBlock"; interface Props { message: Message; + lightMode: "light" | "dark"; } -export const ChatMessage: FC = ({ message }) => { +export const ChatMessage: FC = ({ message, lightMode }) => { return (
= ({ message }) => { key={Math.random()} language={match[1]} value={String(children).replace(/\n$/, "")} + lightMode={lightMode} {...props} /> ) : ( diff --git a/components/Markdown/CodeBlock.tsx b/components/Markdown/CodeBlock.tsx index 35620f2..87bee39 100644 --- a/components/Markdown/CodeBlock.tsx +++ b/components/Markdown/CodeBlock.tsx @@ -1,13 +1,14 @@ import { FC, useState } from "react"; import { Prism as SyntaxHighlighter } from "react-syntax-highlighter"; -import { tomorrow } from "react-syntax-highlighter/dist/cjs/styles/prism"; +import { oneDark, oneLight } from "react-syntax-highlighter/dist/cjs/styles/prism"; interface Props { language: string; value: string; + lightMode: "light" | "dark"; } -export const CodeBlock: FC = ({ language, value }) => { +export const CodeBlock: FC = ({ language, value, lightMode }) => { const [buttonText, setButtonText] = useState("Copy"); const copyToClipboard = () => { @@ -21,16 +22,16 @@ export const CodeBlock: FC = ({ language, value }) => { }; return ( -
+
{value}